Google Maps Directions & Routes API | Multi-Stop Navigation avatar

Google Maps Directions & Routes API | Multi-Stop Navigation

Pricing

from $1.49 / 1,000 directions

Go to Apify Store
Google Maps Directions & Routes API | Multi-Stop Navigation

Google Maps Directions & Routes API | Multi-Stop Navigation

Extract driving, walking, cycling, and transit directions from Google Maps as structured data. Get multi-stop routes (2-10 stops), turn-by-turn instructions, distance, duration, traffic estimates, and Street View thumbnails. No API key needed. Supports departure/arrival times and route preferences.

Pricing

from $1.49 / 1,000 directions

Rating

0.0

(0)

Developer

Zen Studio

Zen Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Share

Google Maps Directions Scraper | Multi-Stop Routes as Structured Data (2026)

Extract driving, walking, cycling, and transit directions from Google Maps. Supports 2-10 stops per route, returns multiple alternative routes with turn-by-turn instructions, distance, duration, traffic conditions, and Street View thumbnails.

No Google account. No API key. No browser.

Discover more ➤Apple Maps Scraper2GIS Places ScraperYandex Places ScraperYandex Reviews Scraper

How to Scrape Google Maps Directions

Enter your stops (2-10 locations), pick a travel mode, and run. The Actor geocodes place names via Google Maps autocomplete, fetches directions, and returns structured route data.

Two-Stop Route (Simple)

{
"stops": ["Berlin, Germany", "Munich, Germany"],
"travelMode": "driving"
}

Multi-Stop Route

{
"stops": [
"Berlin, Germany",
"Prague, Czech Republic",
"Vienna, Austria",
"Budapest, Hungary"
],
"travelMode": "driving"
}

Each pair of consecutive stops becomes a leg. A 4-stop route returns 3 legs per route alternative.

Walking with Wheelchair Access

{
"stops": ["Central Park, New York", "Times Square, New York"],
"travelMode": "walking",
"wheelchairAccessible": true
}

Public Transit with Filters

{
"stops": ["Alexanderplatz, Berlin", "Brandenburg Gate, Berlin"],
"travelMode": "transit",
"transitTypes": ["subway", "tram"],
"transitRoutePreference": "fewer_transfers"
}

Depart at a Specific Time

{
"stops": ["Vienna Opera", "Schoenbrunn Palace"],
"travelMode": "driving",
"timeOption": "depart_at",
"date": "2026-03-15",
"time": "09:00"
}

Date and time are interpreted in the timezone of the first stop. Use arrive_by to plan backwards from an arrival time (driving and transit only).

Overview Mode (Smaller Output)

{
"stops": ["Berlin, Germany", "Munich, Germany"],
"travelMode": "driving",
"detailLevel": "overview"
}

Returns all stops, legs, and segment instructions without turn-by-turn substeps, Street View, or polyline tokens. Same routes, much smaller response.

What Data You Get from Google Maps Directions

Each run returns one dataset item containing:

  • Multiple route alternatives -- Google typically returns 2-3 different routes per query
  • Turn-by-turn instructions -- every maneuver with human-readable text and emphasis markers
  • Distance and duration -- at route, leg, segment, and substep level (meters + formatted text)
  • Traffic estimates -- current, typical, and no-traffic durations with congestion level
  • Street View thumbnails -- per navigation step with panorama IDs
  • Waypoint data -- geocoded place names, coordinates, and place IDs for each stop
  • 30+ languages -- localized street names and instructions (en, de, fr, es, ja, zh, ar, and more)

Pricing

Pay-per-event pricing. You only pay for directions successfully fetched.

EventPrice
Actor start$0.00699
Direction result$0.00299

Cost Examples

RunsCost
10$0.10
100$1.00
1,000$9.99

Free tier: 5 runs with no credit card required.

Budget controls are built in. The Actor stops automatically when your spending limit is reached.

Input Parameters

ParameterTypeDefaultDescription
stopsstring[]required2-10 locations in order. First is origin, last is destination, rest are intermediate stops.
travelModestringdrivingdriving, transit, walking, or cycling.
timeOptionstringnownow, depart_at, or arrive_by. Arrive by supports driving and transit only.
datestringTravel date in YYYY-MM-DD format. Required when timeOption is not now.
timestringTravel time in 24h HH:MM format. Required when timeOption is not now.
avoidHighwaysbooleanfalseAvoid highways. Driving mode.
avoidTollsbooleanfalseAvoid toll roads. Driving mode.
avoidFerriesbooleanfalseAvoid ferries. Driving mode.
wheelchairAccessiblebooleanfalsePrefer accessible routes. Walking mode.
transitTypesstring[]allFilter to bus, subway, train, tram. Transit mode.
transitRoutePreferencestringbest_routebest_route, fewer_transfers, or less_walking. Transit mode.
detailLevelstringfullfull (turn-by-turn substeps, Street View, polyline) or overview (all stops and segments, without substeps or Street View).
distanceUnitstringautoauto (regional default), km, or miles.
languagestringenLanguage code for instructions. en, de, fr, es, ja, etc.

Output Example (Full)

Default detailLevel: "full" — includes turn-by-turn substeps, Street View thumbnails, emphasis markers, and polyline tokens.

{
"query": {
"stops": [
"Berlin, Germany",
"Munich, Germany"
],
"travel_mode": "driving",
"language": "en",
"avoid_highways": false,
"avoid_tolls": false,
"avoid_ferries": false,
"distance_unit": "auto"
},
"waypoints": [
{
"name": "Berlin, Germany",
"coords": {
"lat": 52.520006599999995,
"lng": 13.404954
},
"encoded_id": "ChIJAVkDPzdOqEcRcDteW0YgIQQ",
"display_name": "Berlin",
"display_names": [
"Berlin",
"Germany"
]
},
{
"name": "Munich, Germany",
"coords": {
"lat": 48.1351253,
"lng": 11.5819805
},
"encoded_id": "ChIJ2V-Mo_l1nkcRfZixfUq4DAE",
"display_name": "Munich",
"display_names": [
"Munich",
"Germany"
]
}
],
"routes": [
{
"index": 0,
"travel_mode": "driving",
"via": "A9",
"distance": {
"meters": 584762,
"text": "585 km"
},
"duration": {
"seconds": 22494,
"text": "6 hr 15 min"
},
"country": [
"DE"
],
"polyline_token": "CAEi0QEKUBXWsBwVF9Yc/6T7HFYpJh...",
"eta_messages": [
[
"You're on the fastest route."
],
[
"You should arrive around 11:34 AM.",
1
]
],
"traffic": {
"traffic_level": 3,
"congestion_zones": [
[
[
1,
974,
226
]
]
]
},
"legs": [
{
"distance": {
"meters": 584762,
"text": "585 km"
},
"duration": {
"seconds": 22496,
"text": "6 hr 15 min"
},
"traffic": {
"no_traffic": {
"seconds": 21285,
"text": "5 hr 55 min"
},
"traffic_level": 3,
"typical": {
"seconds": 19713,
"text": "5 hr 29 min"
},
"range": {
"min_seconds": 18781,
"max_seconds": 28035,
"text": "5 hr 13 min to 7 hr 47 min"
}
},
"destination": {
"name": "Munich",
"names": [
"Munich",
"Germany"
],
"end_point": {
"lat": 48.1351253,
"lng": 11.5819805
},
"timezone": "Europe/Berlin",
"timezone_abbr": "GMT+1"
},
"segments": [
{
"distance": {
"meters": 9292,
"text": "9.3 km"
},
"duration": {
"seconds": 1355,
"text": "23 min"
},
"instruction": "Get on A100 in Bezirk Charlottenburg-Wilmersdorf from B2",
"instruction_parts": [
{
"text": "Get on ",
"emphasized": false
},
{
"text": "A100",
"emphasized": true
},
{
"text": " in ",
"emphasized": false
},
{
"text": "Bezirk Charlottenburg-Wilmersdorf",
"emphasized": false
},
{
"text": " from ",
"emphasized": false
},
{
"text": "B2",
"emphasized": true
}
],
"substeps": [
{
"maneuver_type": 0,
"distance": {
"meters": 1749,
"text": "1.7 km"
},
"duration": {
"seconds": 314,
"text": "5 min"
},
"instruction": "Head toward Spandauer Str.",
"instruction_parts": [
{
"text": "Head toward ",
"emphasized": false
},
{
"text": "Spandauer Str.",
"emphasized": true
}
],
"start_point": {
"lat": 52.519947955056686,
"lng": 13.404969798377866
},
"end_point": {
"lat": 52.5200143,
"lng": 13.4049447
}
},
{
"maneuver_type": 0,
"distance": {
"meters": 166,
"text": "170 m"
},
"duration": {
"seconds": 39,
"text": "39 sec"
},
"instruction": "Turn right onto Wilhelmstraße/B2/B5",
"instruction_parts": [
{
"text": "Turn ",
"emphasized": false
},
{
"text": "right",
"emphasized": true
},
{
"text": " onto ",
"emphasized": false
},
{
"text": "Wilhelmstraße",
"emphasized": true
},
{
"text": "/",
"emphasized": false
},
{
"text": "B2",
"emphasized": true
},
{
"text": "/",
"emphasized": false
},
{
"text": "B5",
"emphasized": true
}
],
"start_point": {
"lat": 52.5166258988976,
"lng": 13.38102620691614
},
"end_point": {
"lat": 52.5166058,
"lng": 13.380732300000002
},
"streetview": {
"pano_id": "TP4jMtqDWaafVBfo0YwWrQ",
"thumbnail_url": "https://streetviewpixels-pa.googleapis.com/v1/thumbnail?panoid=TP4jMtqDWaafVBfo0YwWrQ&cb_client=maps_sv.tactile.gps&w=203&h=100&yaw=83.50145&pitch=0&thumbfov=100",
"thumbnail_size": [
203,
100
]
}
}
]
},
{
"distance": {
"meters": 569245,
"text": "569 km"
},
"duration": {
"seconds": 20474,
"text": "5 hr 41 min"
},
"instruction": "Get on Schenkendorfstraße/B2R in Schwabing-Freimann, München from A9",
"instruction_parts": [
{
"text": "Get on ",
"emphasized": false
},
{
"text": "Schenkendorfstraße",
"emphasized": true
},
{
"text": "/",
"emphasized": false
},
{
"text": "B2R",
"emphasized": true
},
{
"text": " in ",
"emphasized": false
},
{
"text": "Schwabing-Freimann, München",
"emphasized": false
},
{
"text": " from ",
"emphasized": false
},
{
"text": "A9",
"emphasized": true
}
],
"substeps": [
{
"maneuver_type": 0,
"distance": {
"meters": 438,
"text": "450 m"
},
"duration": {
"seconds": 29,
"text": "29 sec"
},
"instruction": "Merge onto A100",
"instruction_parts": [
{
"text": "Merge onto ",
"emphasized": false
},
{
"text": "A100",
"emphasized": true
}
],
"start_point": {
"lat": 52.50693146195627,
"lng": 13.282207707594479
},
"end_point": {
"lat": 52.5067585,
"lng": 13.282255399999999
},
"streetview": {
"pano_id": "mlwx1qTPlfcP8mPatY_yTg",
"thumbnail_url": "https://streetviewpixels-pa.googleapis.com/v1/thumbnail?panoid=mlwx1qTPlfcP8mPatY_yTg&cb_client=maps_sv.tactile.gps&w=203&h=100&yaw=10.174609&pitch=0&thumbfov=100",
"thumbnail_size": [
203,
100
]
}
},
{
"maneuver_type": 0,
"distance": {
"meters": 640,
"text": "650 m"
},
"duration": {
"seconds": 47,
"text": "47 sec"
},
"instruction": "At the interchange 10-Dreieck Funkturm, Use the right lane to follow signs for A115/E51 toward Magdeburg/Leipzig/Potsdam",
"instruction_parts": [
{
"text": "At the interchange ",
"emphasized": false
},
{
"text": "10-Dreieck Funkturm",
"emphasized": true
},
{
"text": ", Use the right lane to follow signs for ",
"emphasized": false
},
{
"text": "A115",
"emphasized": true
},
{
"text": "/",
"emphasized": false
},
{
"text": "E51",
"emphasized": true
},
{
"text": " toward ",
"emphasized": false
},
{
"text": "Magdeburg",
"emphasized": true
},
{
"text": "/",
"emphasized": false
},
{
"text": "Leipzig",
"emphasized": true
},
{
"text": "/",
"emphasized": false
},
{
"text": "Potsdam",
"emphasized": true
}
],
"start_point": {
"lat": 52.5030939232209,
"lng": 13.280960733910394
},
"end_point": {
"lat": 52.502926900000006,
"lng": 13.280850599999999
},
"streetview": {
"pano_id": "AKxz0C8zQWeULgyiZL9wRw",
"thumbnail_url": "https://streetviewpixels-pa.googleapis.com/v1/thumbnail?panoid=AKxz0C8zQWeULgyiZL9wRw&cb_client=maps_sv.tactile.gps&w=203&h=100&yaw=201.45728&pitch=0&thumbfov=100",
"thumbnail_size": [
203,
100
]
}
}
]
}
]
}
]
}
]
}

Output Example (Overview)

detailLevel: "overview" — all stops, legs, and segment instructions, but without turn-by-turn substeps, Street View, or polyline tokens. Same routes at a fraction of the size.

{
"query": {
"stops": [
"Berlin, Germany",
"Munich, Germany"
],
"travel_mode": "driving",
"language": "en",
"avoid_highways": false,
"avoid_tolls": false,
"avoid_ferries": false,
"distance_unit": "auto"
},
"waypoints": [
{
"name": "Berlin, Germany",
"coords": {
"lat": 52.520006599999995,
"lng": 13.404954
},
"encoded_id": "ChIJAVkDPzdOqEcRcDteW0YgIQQ",
"display_name": "Berlin",
"display_names": [
"Berlin",
"Germany"
]
},
{
"name": "Munich, Germany",
"coords": {
"lat": 48.1351253,
"lng": 11.5819805
},
"encoded_id": "ChIJ2V-Mo_l1nkcRfZixfUq4DAE",
"display_name": "Munich",
"display_names": [
"Munich",
"Germany"
]
}
],
"routes": [
{
"index": 0,
"travel_mode": "driving",
"via": "A9",
"distance": {
"meters": 584762,
"text": "585 km"
},
"duration": {
"seconds": 22494,
"text": "6 hr 15 min"
},
"country": [
"DE"
],
"legs": [
{
"distance": {
"meters": 584762,
"text": "585 km"
},
"duration": {
"seconds": 22496,
"text": "6 hr 15 min"
},
"traffic": {
"no_traffic": {
"seconds": 21287,
"text": "5 hr 55 min"
},
"traffic_level": 3,
"typical": {
"seconds": 19713,
"text": "5 hr 29 min"
},
"range": {
"min_seconds": 18715,
"max_seconds": 28232,
"text": "5 hr 12 min to 7 hr 51 min"
}
},
"destination": {
"name": "Munich",
"names": [
"Munich",
"Germany"
],
"end_point": {
"lat": 48.1351253,
"lng": 11.5819805
},
"timezone": "Europe/Berlin",
"timezone_abbr": "GMT+1"
},
"segments": [
{
"distance": {
"meters": 9292,
"text": "9.3 km"
},
"duration": {
"seconds": 1355,
"text": "23 min"
},
"instruction": "Get on A100 in Bezirk Charlottenburg-Wilmersdorf from B2"
},
{
"distance": {
"meters": 569245,
"text": "569 km"
},
"duration": {
"seconds": 20474,
"text": "5 hr 41 min"
},
"instruction": "Get on Schenkendorfstraße/B2R in Schwabing-Freimann, München from A9"
},
{
"distance": {
"meters": 6225,
"text": "6.2 km"
},
"duration": {
"seconds": 667,
"text": "11 min"
},
"instruction": "Continue on B2R. Take Ifflandstraße and Prinzregentenstraße to Tal in Altstadt-Lehel"
}
]
}
]
},
{
"index": 1,
"travel_mode": "driving",
"via": "A93 and A9",
"distance": {
"meters": 616271,
"text": "616 km"
},
"duration": {
"seconds": 23539,
"text": "6 hr 32 min"
},
"country": [
"DE"
],
"legs": [
{
"distance": {
"meters": 616271,
"text": "616 km"
},
"duration": {
"seconds": 23541,
"text": "6 hr 32 min"
},
"traffic": {
"no_traffic": {
"seconds": 22370,
"text": "6 hr 13 min"
},
"traffic_level": 3,
"typical": {
"seconds": 20527,
"text": "5 hr 42 min"
},
"range": {
"min_seconds": 19769,
"max_seconds": 29580,
"text": "5 hr 29 min to 8 hr 13 min"
}
},
"destination": {
"name": "Munich",
"names": [
"Munich",
"Germany"
],
"end_point": {
"lat": 48.1351253,
"lng": 11.5819805
},
"timezone": "Europe/Berlin",
"timezone_abbr": "GMT+1"
},
"segments": [
{
"distance": {
"meters": 9292,
"text": "9.3 km"
},
"duration": {
"seconds": 1355,
"text": "23 min"
},
"instruction": "Get on A100 in Bezirk Charlottenburg-Wilmersdorf from B2"
},
{
"distance": {
"meters": 600754,
"text": "601 km"
},
"duration": {
"seconds": 21519,
"text": "5 hr 59 min"
},
"instruction": "Get on Schenkendorfstraße/B2R in Schwabing-Freimann, München from A9 and A93"
},
{
"distance": {
"meters": 6225,
"text": "6.2 km"
},
"duration": {
"seconds": 667,
"text": "11 min"
},
"instruction": "Continue on B2R. Take Ifflandstraße and Prinzregentenstraße to Tal in Altstadt-Lehel"
}
]
}
]
},
{
"index": 2,
"travel_mode": "driving",
"via": "A13 and A9",
"distance": {
"meters": 642658,
"text": "643 km"
},
"duration": {
"seconds": 24544,
"text": "6 hr 49 min"
},
"country": [
"DE"
],
"legs": [
{
"distance": {
"meters": 642658,
"text": "643 km"
},
"duration": {
"seconds": 24547,
"text": "6 hr 49 min"
},
"traffic": {
"no_traffic": {
"seconds": 23811,
"text": "6 hr 37 min"
},
"traffic_level": 3,
"typical": {
"seconds": 21747,
"text": "6 hr 2 min"
},
"range": {
"min_seconds": 20883,
"max_seconds": 30841,
"text": "5 hr 48 min to 8 hr 34 min"
}
},
"destination": {
"name": "Munich",
"names": [
"Munich",
"Germany"
],
"end_point": {
"lat": 48.1351253,
"lng": 11.5819805
},
"timezone": "Europe/Berlin",
"timezone_abbr": "GMT+1"
},
"segments": [
{
"distance": {
"meters": 5962,
"text": "6.0 km"
},
"duration": {
"seconds": 1085,
"text": "18 min"
},
"instruction": "Take Karl-Liebknecht-Str./B2/B5, Alexanderstraße, Holzmarktstraße, Köpenicker Str. and Schlesische Str. to A100 in Bezirk Treptow-Köpenick"
},
{
"distance": {
"meters": 630471,
"text": "630 km"
},
"duration": {
"seconds": 22795,
"text": "6 hr 20 min"
},
"instruction": "Get on Schenkendorfstraße/B2R in Schwabing-Freimann, München from A13, A4, A72 and A9"
},
{
"distance": {
"meters": 6225,
"text": "6.2 km"
},
"duration": {
"seconds": 667,
"text": "11 min"
},
"instruction": "Continue on B2R. Take Ifflandstraße and Prinzregentenstraße to Tal in Altstadt-Lehel"
}
]
}
]
}
]
}

Use Cases

Logistics and Fleet Management

  • Route planning -- calculate distances and durations between warehouses, stops, and customers
  • Multi-stop optimization -- compare route alternatives for delivery sequences
  • Toll and highway avoidance -- estimate costs for routes that skip toll roads

Travel and Tourism

  • Itinerary building -- get walking times between attractions in a city
  • Transit planning -- find public transport connections with transfer counts
  • Accessibility -- plan wheelchair-accessible walking routes

Real Estate and Location Intelligence

  • Commute analysis -- measure driving/transit times from properties to offices
  • Location scoring -- compare accessibility across neighborhoods
  • Distance matrix -- build origin-destination tables for site selection

Research and Data Science

  • Transportation studies -- collect route data across cities and travel modes
  • Traffic analysis -- extract congestion levels and typical vs current travel times
  • Urban planning -- analyze pedestrian and cycling route availability

API Integration

Python

from apify_client import ApifyClient
client = ApifyClient("your_token")
run = client.actor("zen-studio~google-maps-directions").call(run_input={
"stops": ["Berlin, Germany", "Prague, Czech Republic", "Vienna, Austria"],
"travelMode": "driving",
"language": "en",
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
for route in item["routes"]:
print(f"Route {route['index']}: {route['via']}{route['distance']['text']}, {route['duration']['text']}")

JavaScript / Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'your_token' });
const run = await client.actor('zen-studio~google-maps-directions').call({
stops: ['Berlin, Germany', 'Prague, Czech Republic', 'Vienna, Austria'],
travelMode: 'driving',
language: 'en',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const item of items) {
item.routes.forEach(r => console.log(`${r.via}${r.distance.text}, ${r.duration.text}`));
}

Advanced Usage

Avoid Tolls and Highways

{
"stops": ["Zurich, Switzerland", "Milan, Italy"],
"travelMode": "driving",
"avoidHighways": true,
"avoidTolls": true,
"distanceUnit": "km"
}

Transit with Specific Types

Filter to trains and subways only, prefer fewer transfers:

{
"stops": ["Heathrow Airport, London", "Kings Cross, London"],
"travelMode": "transit",
"transitTypes": ["train", "subway"],
"transitRoutePreference": "fewer_transfers"
}

Distance in Miles

{
"stops": ["New York, NY", "Boston, MA"],
"travelMode": "driving",
"distanceUnit": "miles",
"language": "en"
}

Multi-Stop Road Trip

{
"stops": [
"Amsterdam, Netherlands",
"Brussels, Belgium",
"Luxembourg City, Luxembourg",
"Strasbourg, France",
"Zurich, Switzerland"
],
"travelMode": "driving",
"avoidTolls": true,
"distanceUnit": "km",
"language": "en"
}

Returns 4 legs (Amsterdam-Brussels, Brussels-Luxembourg, Luxembourg-Strasbourg, Strasbourg-Zurich) with 2-3 route alternatives.

Arrive by a Specific Time (Transit)

{
"stops": ["Basel, Switzerland", "Barcelona, Spain"],
"travelMode": "transit",
"timeOption": "arrive_by",
"date": "2026-03-15",
"time": "18:00"
}

Depart at a Specific Time (Driving)

{
"stops": ["Vienna Opera", "Schoenbrunn Palace"],
"travelMode": "driving",
"timeOption": "depart_at",
"date": "2026-03-15",
"time": "09:00"
}

The timezone is automatically determined from the first stop's location. arrive_by is available for driving and transit modes only.

Data Export

Export results from the Apify Console in:

  • JSON -- full nested structure with all route detail
  • CSV -- flattened for spreadsheet analysis
  • Excel -- reporting and pivot tables

FAQ

How many route alternatives does it return? Google Maps typically returns 2-3 alternative routes per query. Each has its own distance, duration, and turn-by-turn instructions.

What's the maximum number of stops? 10 stops per run. The first stop is the origin, the last is the destination, everything in between are intermediate waypoints.

Do I need a Google account or API key? No. No login, no API key, no cookies.

How accurate are the travel times? Same data as Google Maps. Driving routes include real-time traffic estimates with typical and no-traffic durations.

Does it support all countries and languages? Yes. Any location that Google Maps can resolve, in 30+ languages. Set language to get localized street names and instructions — English, German, French, Spanish, Japanese, Chinese, Arabic, Korean, and many more.

Can I schedule a departure or arrival time? Yes. Set timeOption to depart_at or arrive_by, then provide date (YYYY-MM-DD) and time (HH:MM, 24-hour). The timezone is auto-detected from the first stop's location. arrive_by works with driving and transit only.

What travel modes are available? Driving, public transit, walking, and cycling. Each mode has its own route options (e.g., avoid highways for driving, wheelchair access for walking, transit type filters for public transit).

Is there traffic data? Yes, for driving routes. Includes current duration, typical duration, no-traffic duration, congestion level, and a min/max time range.

What's in the Street View data? Each navigation substep includes a Street View panorama ID, thumbnail URL, and camera angle. Useful for visual route previews.

Is there a free tier? Yes. 5 free runs with no credit card required.

Disclaimer

Data is collected from publicly available sources and provided "as is" for informational purposes. Users are responsible for compliance with Google's terms of service and applicable regulations in their jurisdiction.


More maps and places scrapers:

ActorDescriptionPlatform
Apple Maps Scraper ProExtract place data, ratings, hours, and photos from Apple MapsApple Maps
2GIS Places ScraperExtract places, contacts, and business data from 2GIS2GIS
2GIS Reviews ScraperScrape reviews and ratings from 2GIS places2GIS
Yandex Places ScraperExtract places and business data from Yandex MapsYandex Maps
Yandex Reviews ScraperScrape reviews and ratings from Yandex MapsYandex Maps

Start Scraping Google Maps Directions Now