bodrumtaxi
v1.0.2
Published
Bodrum taxi & transfer toolkit — service info, supported locations, and estimated transfer pricing for the Bodrum peninsula.
Maintainers
Readme
Bodrum Taxi
A lightweight Node.js toolkit for Bodrum taxi & transfer information and estimated fare calculations across the Bodrum peninsula.
🌐 Website: bodrumtaxi.pages.dev
Why this package?
Planning a trip to Bodrum, Türkiye? Whether you are landing at Milas-Bodrum Airport (BJV) and need a transfer to your hotel in Yalıkavak, building a travel app, or just curious how much a ride from Bodrum Center to Turgutreis might cost — bodrumtaxi gives you a tiny, dependency-free helper to:
- Look up basic information about Bodrum taxi & transfer services.
- Get the list of popular destinations across the peninsula.
- Compute a rough fare estimate between any two supported locations.
- Use it from code (CommonJS / ESM-interop) or directly from the command line.
The package is intentionally small (under 100 lines of logic, zero dependencies), so it loads instantly and is safe to embed anywhere — serverless functions, chatbots, travel widgets, CLI tools, or static-site build steps.
Table of Contents
- Features
- Installation
- Quick Start
- API Reference
- How pricing works
- Supported locations
- CLI usage
- Examples
- Error handling
- About Bodrum
- Website languages
- Disclaimer
- Roadmap
- Contributing
- License
Features
- ✅ Zero dependencies — installs in milliseconds, ships in ~3 KB.
- ✅ Synchronous API — every function returns a plain object/array, no promises required.
- ✅ Diacritic-tolerant lookups —
"yalıkavak","Yalikavak", and"YALIKAVAK"all match. - ✅ Bidirectional distance lookup —
A → BandB → Aresolve from a single table entry. - ✅ CLI mode — runnable with
node node_modules/bodrumtaxifor a quick overview. - ✅ Transparent pricing — base fare, per-km rate and currency are exposed as exported constants.
- ✅ Node.js 14+ — works on every actively supported runtime.
Installation
npm install bodrumtaxior with Yarn / pnpm:
yarn add bodrumtaxi
pnpm add bodrumtaxiQuick Start
const bodrumtaxi = require('bodrumtaxi');
// 1. Basic service info
console.log(bodrumtaxi.info().website);
// → 'https://bodrumtaxi.pages.dev'
// 2. List services
console.log(bodrumtaxi.services());
// → [ 'Airport Transfer (Milas-Bodrum)', 'City Taxi', 'VIP Transfer', ... ]
// 3. Estimate a fare
const fare = bodrumtaxi.transferPrice('Milas-Bodrum Airport', 'Yalıkavak');
console.log(`${fare.distanceKm} km — ~${fare.estimatedPrice} ${fare.currency}`);
// → '65 km — ~1825 TRY'API Reference
All functions are synchronous and return plain JavaScript values. There are no side effects and no network calls.
info()
Returns a snapshot of the service.
bodrumtaxi.info();
// {
// name: 'Bodrum Taxi',
// website: 'https://bodrumtaxi.pages.dev',
// region: 'Bodrum, Muğla, Türkiye',
// availability: '24/7',
// description: 'Bodrum peninsula taxi and transfer services: airport transfers, ...'
// }| Field | Type | Description |
| -------------- | -------- | ------------------------------------------------------ |
| name | string | Brand name. |
| website | string | Canonical URL of the service. |
| region | string | Operational region. |
| availability | string | Operating hours (always '24/7'). |
| description | string | One-sentence summary of the offering. |
services()
Returns the list of service categories.
bodrumtaxi.services();
// [
// 'Airport Transfer (Milas-Bodrum)',
// 'City Taxi',
// 'VIP Transfer',
// 'Hotel Transfer',
// 'Boat / Marina Transfer',
// 'Intercity Transfer'
// ]Returns: string[] — six service categories, ordered from most-requested to least.
locations()
Returns every location supported by the pricing engine.
bodrumtaxi.locations();
// [
// 'Milas-Bodrum Airport',
// 'Bodrum Center',
// 'Gümbet',
// 'Bitez',
// 'Ortakent',
// 'Yalıkavak',
// 'Türkbükü',
// 'Göltürkbükü',
// 'Turgutreis',
// 'Gündoğan',
// 'Akyarlar',
// 'Yalı'
// ]Returns: string[] — canonical names. You can pass any casing or any (de)diacriticised variant to transferPrice and it will still match.
transferPrice(from, to)
Estimate the fare between two locations.
bodrumtaxi.transferPrice('Milas-Bodrum Airport', 'Yalıkavak');
// {
// from: 'Milas-Bodrum Airport',
// to: 'Yalıkavak',
// distanceKm: 65,
// estimatedPrice: 1825,
// currency: 'TRY',
// note: 'Estimated fare. For an exact quote visit https://bodrumtaxi.pages.dev'
// }Parameters
| Name | Type | Description |
| ------ | -------- | ------------------------------------------------ |
| from | string | Origin location name (case/diacritic insensitive). |
| to | string | Destination location name. |
Returns an object with:
| Field | Type | Description |
| ---------------- | -------- | ------------------------------------------------------------ |
| from | string | The origin you passed in (echoed back, untouched). |
| to | string | The destination you passed in. |
| distanceKm | number | Approximate road distance in kilometres. |
| estimatedPrice | number | BASE_FARE + (distanceKm × PER_KM) in TRY. |
| currency | string | Always 'TRY' in v1. |
| note | string | Reminder that this is an estimate, plus a link to the site. |
Failure mode — when either name cannot be resolved, the function returns:
{
error: true,
message: 'Location not found: "Mars" → "Yalıkavak". Use locations() to list supported names.'
}Calling
transferPrice('Bodrum Center', 'Bodrum Center')returns a valid result withdistanceKm: 0andestimatedPrice: 200(the base fare).
Constants
For full transparency, the pricing constants and version are exported:
const { BASE_FARE, PER_KM, CURRENCY, VERSION } = require('bodrumtaxi');
console.log(BASE_FARE); // 200
console.log(PER_KM); // 25
console.log(CURRENCY); // 'TRY'
console.log(VERSION); // '1.0.0'How pricing works
The fare formula is intentionally simple and easy to audit:
estimatedPrice = BASE_FARE + (distanceKm × PER_KM)| Constant | Value | Meaning |
| ----------- | -------- | --------------------------------------------- |
| BASE_FARE | 200 | Pickup / start charge in TRY |
| PER_KM | 25 | Per-kilometre cost in TRY |
| CURRENCY | 'TRY' | Turkish Lira |
Distances are stored in a hand-curated lookup table built from typical road routes across the Bodrum peninsula. Lookups are bidirectional — only one direction needs to be in the table for both A → B and B → A to resolve.
This is not a routing engine and does not factor in:
- Real-time traffic
- Time of day / night surcharge
- Vehicle class (sedan, minibus, VIP)
- Tolls or seasonal price changes
- Number of passengers or luggage
Treat the returned estimatedPrice as a rough order-of-magnitude figure, not a quote.
Supported locations
Approximate road distances used by the engine:
| Route | Distance | | -------------------------------------- | -------- | | Milas-Bodrum Airport → Bodrum Center | 36 km | | Milas-Bodrum Airport → Gümbet | 38 km | | Milas-Bodrum Airport → Bitez | 40 km | | Milas-Bodrum Airport → Ortakent | 42 km | | Milas-Bodrum Airport → Yalı | 45 km | | Milas-Bodrum Airport → Gündoğan | 48 km | | Milas-Bodrum Airport → Türkbükü | 50 km | | Milas-Bodrum Airport → Göltürkbükü | 52 km | | Milas-Bodrum Airport → Turgutreis | 55 km | | Milas-Bodrum Airport → Akyarlar | 60 km | | Milas-Bodrum Airport → Yalıkavak | 65 km | | Bodrum Center → Gümbet | 3 km | | Bodrum Center → Bitez | 6 km | | Bodrum Center → Ortakent | 10 km | | Bodrum Center → Yalı | 12 km | | Bodrum Center → Gündoğan | 14 km | | Bodrum Center → Türkbükü | 16 km | | Bodrum Center → Yalıkavak | 18 km | | Bodrum Center → Göltürkbükü | 18 km | | Bodrum Center → Turgutreis | 20 km | | Bodrum Center → Akyarlar | 25 km |
Need a route that is not in the table? Open an issue and we will add it in a minor release.
CLI usage
After installing the package you can invoke it directly:
node node_modules/bodrumtaxiYou will see a friendly summary like:
===================================
bodrumtaxi v1.0.0
Bodrum Taxi & Transfer
===================================
Website: https://bodrumtaxi.pages.dev
Services:
- Airport Transfer (Milas-Bodrum)
- City Taxi
- VIP Transfer
- Hotel Transfer
- Boat / Marina Transfer
- Intercity Transfer
Sample fare (Airport → Yalıkavak):
65 km, ~1825 TRY
API: info(), services(), locations(), transferPrice(from, to)Examples
Build a tiny "fare of the day" widget
const { transferPrice, locations } = require('bodrumtaxi');
const all = locations();
const from = 'Milas-Bodrum Airport';
const to = all[Math.floor(Math.random() * all.length)];
const fare = transferPrice(from, to);
if (fare.error) {
console.error(fare.message);
} else {
console.log(`Today's pick: ${from} → ${to} ≈ ${fare.estimatedPrice} ${fare.currency}`);
}List every airport-departure fare, sorted
const { transferPrice, locations } = require('bodrumtaxi');
const fares = locations()
.filter(loc => loc !== 'Milas-Bodrum Airport')
.map(to => transferPrice('Milas-Bodrum Airport', to))
.filter(f => !f.error)
.sort((a, b) => a.estimatedPrice - b.estimatedPrice);
for (const f of fares) {
console.log(`${f.to.padEnd(20)} ${f.distanceKm.toString().padStart(3)} km ~${f.estimatedPrice} ${f.currency}`);
}Use it inside an Express endpoint
const express = require('express');
const { transferPrice } = require('bodrumtaxi');
const app = express();
app.get('/fare', (req, res) => {
const { from, to } = req.query;
const result = transferPrice(from, to);
if (result.error) return res.status(400).json(result);
return res.json(result);
});
app.listen(3000);Forgiving input (diacritics & casing)
const { transferPrice } = require('bodrumtaxi');
transferPrice('milas-bodrum airport', 'YALIKAVAK').distanceKm; // 65
transferPrice('Yalıkavak', 'Milas-Bodrum Airport').distanceKm; // 65 (reverse)
transferPrice(' Bodrum Center ', 'gumbet').distanceKm; // 3Error handling
transferPrice never throws. On unrecognised input it returns an error-shaped object instead, so you can branch with a simple if:
const result = transferPrice('Atlantis', 'Bitez');
if (result.error) {
// Handle gracefully — show suggestions, log, fall back, etc.
console.warn(result.message);
} else {
// Happy path
renderQuote(result);
}This shape was chosen so the function can be used safely inside Array.prototype.map and other pipelines without try/catch noise.
About Bodrum
Bodrum is a coastal town and district in Muğla Province on Türkiye's southwestern Aegean coast. It sits across from the Greek island of Kos and is known for its castle, marina, vibrant nightlife and the surrounding peninsula villages — Yalıkavak, Türkbükü, Bitez, Gümbet, Turgutreis and more — each with its own character.
Most international visitors arrive at Milas-Bodrum Airport (IATA: BJV), located about 36 km north of Bodrum Center. From there, the most common onward transport is a pre-booked taxi or transfer, which is exactly the use case this package was built around.
Website languages
The companion website at bodrumtaxi.pages.dev is fully localised into 10 languages, reflecting the international mix of visitors to the Bodrum peninsula. You can switch languages from the selector in the site header.
| Code | Language | Native name | | ---- | ---------- | ----------- | | 🇬🇧 EN | English | English | | 🇹🇷 TR | Turkish | Türkçe | | 🇩🇪 DE | German | Deutsch | | 🇫🇷 FR | French | Français | | 🇪🇸 ES | Spanish | Español | | 🇳🇱 NL | Dutch | Nederlands | | 🇵🇱 PL | Polish | Polski | | 🇷🇴 RO | Romanian | Română | | 🇪🇪 ET | Estonian | Eesti | | 🇷🇺 RU | Russian | Русский |
Note on scope: This npm package itself ships API labels and messages in English only — localisation is handled at the website layer. If you are embedding
bodrumtaxiin a multilingual UI, translate the displayed fields (from,to,note, etc.) in your own presentation code.
Disclaimer
This package is an independent open-source utility. The fare formula and distance table are best-effort approximations and do not constitute a price quote. Real-world pricing varies with:
- Vehicle type and capacity
- Time of day and seasonal demand
- Traffic and route choice
- Tolls, luggage handling and waiting time
- Local regulations and operator pricing
For an accurate, bookable quote please visit bodrumtaxi.pages.dev.
Roadmap
Possible future additions (no commitments):
- 🌍 Additional Bodrum peninsula villages and stops.
- 💱 Currency conversion helper (
EUR,USD,GBP). - 🌙 Night-tariff and seasonal multipliers.
- 🛣️ Distance lookup as a standalone export.
- 📦 ESM build alongside CommonJS.
- 🧪 Test suite with
vitestonce the API stabilises.
If any of these would be useful to you, please open a feature request on the website.
Contributing
Bug reports, distance corrections and new locations are very welcome. Because the package is tiny, contributions usually consist of:
- Adding or correcting a row in the internal
_DISTANCEStable. - Updating the documentation table above to match.
- Bumping the patch version.
Please keep the package dependency-free — that is a deliberate design constraint.
License
Links
- 🌐 Website: bodrumtaxi.pages.dev
- 📦 npm: npmjs.com/package/bodrumtaxi
- 🧶 Yarn: yarnpkg.com/package/bodrumtaxi
