Apple Maps Directions API - Navigation, ETA & Turn-by-Turn
Pricing
from $40.00 / 1,000 lookups
Apple Maps Directions API - Navigation, ETA & Turn-by-Turn
Get driving, walking, and cycling directions between any locations via Apple Maps. Returns multiple route alternatives with distance, ETA, live traffic, turn-by-turn steps, road names, incidents, environmental zones, and polyline coordinates with elevation. No Apple account needed. $0.09 per lookup.
Pricing
from $40.00 / 1,000 lookups
Rating
0.0
(0)
Developer

Zen Studio
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 hours ago
Last modified
Categories
Share
Apple Maps Directions API | Driving, Walking & Cycling Routes (2026)
Get turn-by-turn directions between any two locations using Apple Maps. Returns multiple route alternatives with distance, duration, live traffic, road names, incidents, environmental zones, and full polyline coordinates with elevation.

Supports driving, walking, and cycling. Add up to 15 intermediate stops. Set departure or arrival times for traffic-aware routing.
No Apple account needed. No browser. One request per run.
How It Works
Enter an origin and destination. The Actor resolves locations via Apple Maps, fetches all available routes, and returns structured direction data.
Basic Route
{"origin": "Times Square, New York","destination": "JFK Airport, New York"}
Returns 2-3 route alternatives with the fastest route labeled. Each route includes distance, duration, traffic conditions, and turn-by-turn steps.
With Stops
Add intermediate waypoints. The route visits them in order.
{"origin": "San Francisco, CA","destination": "Los Angeles, CA","stops": ["San Jose, CA", "Monterey, CA", "Santa Barbara, CA"]}
Stop limits: 15 for driving, 2 for walking/cycling.
Walking & Cycling
{"origin": "Brooklyn Bridge, New York","destination": "Central Park, New York","transport": "walking","avoidStairs": true,"avoidHills": true}
Walking and cycling routes include elevation data per coordinate.
Traffic-Aware Routing
Set a departure or arrival time to get routes optimized for predicted traffic.
{"origin": "Midtown Manhattan, New York","destination": "JFK Airport, New York","departAt": "2026-03-01T08:00:00-05:00"}
Each route returns three duration values:
- durationSeconds -- estimated with current/predicted traffic
- historicalDurationSeconds -- average based on historical data
- freeflowDurationSeconds -- speed-limit travel time, no traffic
Leave both departAt and arriveBy empty to use current traffic conditions.
Country and Language Matter
These aren't cosmetic. They affect routing data, road names, and restriction zones.
A route through France with countryCode: "US" vs "FR" can return different road names and toll information. With language: "fr-FR", instructions read "Tournez à droite sur Rue de Rivoli" instead of "Turn right onto Rue de Rivoli".
Set both to match the country your route is in.
{"origin": "Paris, France","destination": "Lyon, France","countryCode": "FR","language": "fr-FR"}
Pricing
Pay-per-event pricing. You pay per direction lookup.
| Plan | Per Lookup |
|---|---|
| Regular | $0.09 |
| Bronze | $0.08 |
| Silver | $0.06 |
| Gold | $0.04 |
Cost Examples (Regular Plan)
| Lookups | Cost |
|---|---|
| 10 | $0.90 |
| 50 | $4.50 |
| 100 | $9.00 |
Free tier: 5 runs, no credit card required.
Budget controls built in. Set a maximum spend and the Actor stops when the limit is reached.
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
origin | string | -- | Starting point. Place name, address, or coordinates (lat, lng). Required. |
destination | string | -- | End point. Same formats as origin. Required. |
stops | array | -- | Intermediate waypoints in order. Up to 15 (driving) or 2 (walking/cycling). |
transport | string | driving | Transport mode: driving, walking, or cycling. |
departAt | string | -- | ISO 8601 departure time for traffic-aware routing. |
arriveBy | string | -- | ISO 8601 arrival time. Mutually exclusive with departAt. |
avoidHighways | boolean | false | Avoid highways and motorways. Driving only. |
avoidTolls | boolean | false | Avoid toll roads and congestion charges. Driving only. |
avoidStairs | boolean | false | Avoid stairs and steep steps. Walking only. |
avoidBusyRoads | boolean | false | Prefer quieter roads. Walking and cycling. |
avoidHills | boolean | false | Prefer flatter routes. Walking and cycling. |
countryCode | string | US | Affects routing data and restriction zones. Match to route country. |
language | string | en-US | Language for instructions, road names, and place names. |
Output Example
A route from Times Square to JFK Airport (driving) returns:
{"origin": "Times Square, New York","destination": "JFK Airport, New York","transport": "driving","isNavigable": true,"routeCount": 3,"routes": [{"identifier": 0,"type": "MAIN_ROUTE","transportType": "AUTOMOBILE","drivingSide": "RIGHT_SIDE","label": "Fastest","trafficDescription": "Traffic is very heavy.","distanceMeters": 31146,"durationSeconds": 3476,"historicalDurationSeconds": 3381,"freeflowDurationSeconds": 1848,"routeNames": ["Grand Central Pkwy E"],"features": {"avoidsTolls": false,"avoidsHighways": false},"advisories": ["Tolls required","Congestion charge"],"incidents": [],"restrictionZones": [],"legs": [{"distanceMeters": 31146,"durationSeconds": 3476,"historicTravelTimeSeconds": 3381,"staticTravelTimeSeconds": 1848,"transportType": "AUTOMOBILE","drivingSide": "RIGHT_SIDE","name": "Grand Central Pkwy E","originWaypointMuid": "2251069063936124486","destinationWaypointMuid": "2285278383068840766","steps": [{"stepID": 0,"maneuverType": "START_ROUTE","roadName": "Broadway","instruction": null,"distanceCm": 0,"expectedTimeSeconds": 0,"endsOnFreeway": false,"toFreeway": false},{"stepID": 1,"maneuverType": "LEFT_TURN","roadName": "W 40th St","instruction": "Turn left onto W 40th St","distanceCm": 13213,"expectedTimeSeconds": 92,"endsOnFreeway": false,"toFreeway": false,"junctionType": "JCTTYPE_NORMAL","junctionElements": [{ "angle": -90, "usage": "EXIT" },{ "angle": 90 }]},{"stepID": 2,"maneuverType": "RIGHT_TURN","roadName": "5th Ave","instruction": "Turn right onto 5th Ave","distanceCm": 49152,"expectedTimeSeconds": 564,"endsOnFreeway": false,"toFreeway": false,"junctionType": "JCTTYPE_NORMAL","junctionElements": [{ "angle": -90 },{ "angle": 0 },{ "angle": 90, "usage": "EXIT" }]},{"stepID": 3,"maneuverType": "LEFT_TURN","roadName": "E 36th St","instruction": "Turn left onto E 36th St","distanceCm": 31417,"expectedTimeSeconds": 92,"endsOnFreeway": false,"toFreeway": false,"junctionType": "JCTTYPE_NORMAL","junctionElements": [{ "angle": -90, "usage": "EXIT" },{ "angle": 0 },{ "angle": 90 }]}],"polyline": [{ "lat": 40.7554921, "lng": -73.9865663, "elevationCm": 1716 },{ "lat": 40.754379, "lng": -73.98691 },{ "lat": 40.7543351, "lng": -73.9869238, "elevationCm": 1676 }],"roadNames": [{ "name": "Van Wyck Expy", "locale": "en", "startOffsetCm": 2242832, "endOffsetCm": 3114614 },{ "name": "Grand Central Pkwy E", "locale": "en", "startOffsetCm": 1271651, "endOffsetCm": 2163634 },{ "name": "Brooklyn-Queens Expy E", "locale": "en", "startOffsetCm": 1107451, "endOffsetCm": 1228669 }]}]}],"fetchedAt": "2026-02-26T13:17:53.505639+00:00"}
Output is trimmed for readability — showing the first route with 4 of 17 steps and a clipped polyline. A full response includes all 3 route alternatives, every turn-by-turn step, and the complete polyline with hundreds of coordinates.
API Integration
Python
from apify_client import ApifyClientclient = ApifyClient("your_token")run = client.actor("zen-studio~apple-maps-directions-api").call(run_input={"origin": "Times Square, New York","destination": "JFK Airport, New York","transport": "driving",})for item in client.dataset(run["defaultDatasetId"]).iterate_items():for route in item["routes"]:miles = route["distanceMeters"] / 1609.34mins = route["durationSeconds"] // 60print(f"{route['label']} — {miles:.1f} mi, {mins} min via {', '.join(route['routeNames'])}")
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'your_token' });const run = await client.actor('zen-studio~apple-maps-directions-api').call({origin: 'Times Square, New York',destination: 'JFK Airport, New York',transport: 'driving',});const { items } = await client.dataset(run.defaultDatasetId).listItems();for (const item of items) {for (const route of item.routes) {const miles = (route.distanceMeters / 1609.34).toFixed(1);const mins = Math.floor(route.durationSeconds / 60);console.log(`${route.label} — ${miles} mi, ${mins} min via ${route.routeNames.join(', ')}`);}}
Advanced Usage
Compare Transport Modes
Run the Actor multiple times with different transport values to compare driving, walking, and cycling for the same route.
Multi-Stop Road Trip
Plan a road trip with up to 15 stops:
{"origin": "San Francisco, CA","destination": "Las Vegas, NV","stops": ["Monterey, CA","San Luis Obispo, CA","Santa Barbara, CA","Los Angeles, CA"],"transport": "driving"}
Each stop adds a leg to the route. The response includes per-leg distance, duration, and steps.
Avoid Preferences
Combine avoid flags to tailor routes:
{"origin": "Boston, MA","destination": "Washington, DC","transport": "driving","avoidHighways": true,"avoidTolls": true}
This returns scenic routes on secondary roads without toll charges.
What's in the Data
| Field | Description |
|---|---|
distanceMeters | Total route distance |
durationSeconds | Estimated travel time with current traffic |
historicalDurationSeconds | Average travel time based on historical data |
freeflowDurationSeconds | Travel time at speed limit, no traffic |
trafficDescription | Human-readable traffic summary |
routeNames | Highway/road names for the route (e.g., A81, I-95) |
incidents | Construction, hazards, lane closures with positions |
restrictionZones | Environmental zones, congestion zones with bounding boxes |
advisories | Low emission zone warnings, route advisories |
steps | Turn-by-turn instructions with maneuver type, road name, distance |
polyline | Full path coordinates with elevation (cm) |
signposts | Highway shields and exit signs per step |
features | What the route avoids (tolls, highways) |
Data Export
Export results from the Apify Console in:
- JSON -- programmatic analysis, route visualization
- CSV -- spreadsheets, quick analysis
- Excel -- reporting, comparison tables
- XML -- legacy system integration
FAQ
How many routes does it return? Apple Maps typically returns 2-3 route alternatives per request. The fastest route is labeled.
Do I need an Apple account? No. No login, no cookies, no authentication required.
How fresh is the data? Routes and traffic conditions are fetched in real time from Apple Maps. You get whatever Apple Maps currently shows.
What location formats work? Place names ("Times Square, New York"), full addresses ("1600 Amphitheatre Parkway, Mountain View, CA"), and coordinates ("48.858, 2.294"). Be specific with place names for best results.
What are the three duration values?
durationSeconds reflects current/predicted traffic. historicalDurationSeconds is the historical average. freeflowDurationSeconds is travel time at speed limits with zero traffic.
What are restriction zones? Environmental zones (low emission zones) and congestion charge zones along the route. Each includes a type, bounding box, and human-readable description. Common in European cities.
Does it include elevation?
Yes. The polyline coordinates include elevationCm (elevation in centimeters) for all transport modes.
Is there a free tier? Yes. 5 free runs, no credit card required.
What happens when I hit my budget limit? The Actor stops and keeps all data from the current run. Nothing is lost.
Disclaimer
Data is collected from publicly available sources and provided "as is" for informational purposes. Users are responsible for compliance with Apple's terms of service and applicable regulations in their jurisdiction.
Related Actors
More maps, places, and directions scrapers:
| Actor | Description | Platform |
|---|---|---|
| Apple Maps Scraper Pro | Extract 30+ fields per place from Apple Maps -- phone, ratings, hours, amenities, photos | Apple Maps |
| 2GIS Places Scraper | Extract places, contacts, and business data from 2GIS | 2GIS |
| 2GIS Reviews Scraper | Scrape reviews and ratings from 2GIS places | 2GIS |
| Yandex Places Scraper | Extract places and business data from Yandex Maps | Yandex Maps |
| Yandex Reviews Scraper | Scrape reviews and ratings from Yandex Maps | Yandex Maps |