This quarter, Simple Routing donated to the OpenStreetMap Foundation and the Nature Conservancy. Learn more about our give back program and values.

A Google Directions API alternative for $10/month

Directions, distance matrices and route optimization on open-source engines, at a flat monthly price.

No per-element billing, no usage-based invoice to forecast. Built on OSRM, Valhalla and VROOM with OpenStreetMap data.

✅ 100 requests/day free, no card 🇪🇺 Hosted in the EU

Get Free API Key

See pricing ↓

What It Costs: Google Routes API vs Simple Routing

Google's Routes API is billed per request (Compute Routes) or per element (Compute Route Matrix), on a sliding scale. Simple Routing is a flat monthly plan with a daily request allowance.

Directions

Requests per day Google Compute Routes (Essentials) Simple Routing
1,000 $100/mo $10/mo
10,000 $1,250/mo $10/mo
100,000 $6,550/mo $100/mo

Distance matrix (5×5 matrices, 25 elements each)

Requests per day Google Compute Route Matrix (Essentials) Simple Routing
1,000 $2,800/mo $10/mo
10,000 $10,500/mo $10/mo
100,000 $36,150/mo $100/mo

Google list prices as of October 9, 2026 — source.

Matrices Are Billed Per Call, Not Per Element

This is where the bills diverge fastest. Google's billing docs put it this way: "Compute Route Matrix requests are billed per ELEMENT returned from the request", where elements are origins multiplied by destinations.

A 50×50 matrix here

1 request against your daily allowance. Same as a single route.

A 50×50 matrix on per-element pricing

2,500 elements billed. Four of those a day uses up a 10,000-element monthly free cap in one day.

What You Give Up

Google Maps Platform does things this service doesn't. If any of these matter to you, stay where you are.

Migrating a Directions Request

The request is a different shape, but it's still one GET. The two things that trip people up: coordinates are longitude,latitude (Google is latitude,longitude), and the key goes in a header.

# Before: Google Directions API
curl "https://maps.googleapis.com/maps/api/directions/json?origin=40.7506,-73.9935&destination=40.6413,-73.7781&key=GOOGLE_API_KEY"

# After: Simple Routing (standard OSRM route service)
curl "https://api.simplerouting.io/osrm/route/v1/driving/-73.9935,40.7506;-73.7781,40.6413?overview=full&steps=true" \
  -H "Authorization: Bearer YOUR_API_KEY"

The response geometry is an encoded polyline at precision 5, the same format Google uses for overview_polyline.points, so your existing decoder keeps working. Drawing it on a Leaflet map and linking out to Google Maps for navigation:

// npm install @mapbox/polyline
const res = await fetch(
  "https://api.simplerouting.io/osrm/route/v1/driving/-73.9935,40.7506;-73.7781,40.6413?overview=full",
  { headers: { Authorization: "Bearer YOUR_API_KEY" } }
);
const route = (await res.json()).routes[0];

// route.duration is seconds, route.distance is meters
const latLngs = polyline.decode(route.geometry);  // [[lat, lng], ...]
const line = L.polyline(latLngs).addTo(map);
map.fitBounds(line.getBounds());

// "Open in Google Maps" deep link for turn-by-turn on the driver's phone
const link = "https://www.google.com/maps/dir/?api=1"
  + "&origin=40.7506,-73.9935&destination=40.6413,-73.7781&travelmode=driving";

On MapLibre, pass polyline.toGeoJSON(route.geometry) to a GeoJSON source instead. Full request and response reference is in the API docs.

Try It: Live Route Demo

# Get directions from Penn Station to JFK Airport
curl "https://api.simplerouting.io/osrm/route/v1/driving/-73.9935,40.7506;-73.7781,40.6413?overview=full" \
  -H "Authorization: Bearer 988b35cc-6183-4922-bbc0-857e1a1d318d"
Response

    

This is a live demo with a real API key (feel free to steal it).

No Lock-In

Standard open-source APIs

The endpoints are the stock OSRM, Valhalla and VROOM HTTP APIs. Nothing proprietary to rewrite if you leave.

Self-host anytime

The engines and the map data are open. Point your base URL at your own OSRM server and your code keeps running.

Not for you if…

Pricing

Free
$0/forever
  • 100 requests/dayiMax 5 req/s
    • Counted per call, not per element
  • Distance matrix, maplines, turn by turn, isochrone APIs
    • OSRM and Valhalla
  • Fleet optimization API
    • VROOM
  • Bicycle, car, HGV profiles iCar only for OSRM
  • North America & Europe coverage
  • No credit card required
Get Free API Key
Scale
$100/month
  • 200,000 requests/dayiMax 20 req/s
    • Counted per call, not per element
  • Distance matrix, maplines, turn by turn, isochrone APIs
    • OSRM and Valhalla
  • Fleet optimization API
    • VROOM
  • Bicycle, car, HGV profiles iCar only for OSRM
  • North America & Europe coverage
  • Cancel anytime
Get Started

No overages — your plan is your bill.

Hitting the limits, want more countries, or need a bespoke solution? Email [email protected] — we'll figure it out.

🎓
Education, non-profit, or open source? We offer discounted rates — email [email protected] to connect.

Global Stats

4.0M+
Requests served
99.99%
Uptime
240+
Developers building on the platform

Check it against your own routes

100 requests a day, free, no credit card required.

Get Free API Key

See pricing