Google Maps Scraper API
Structured Google Maps Data
at City, Country, or Global Scale
Structured Google Maps Data at City, Country, or Global Scale
Scrape Google Maps search results, enriched place details, and paginated user reviews. Ratings, addresses, opening hours, menus, popular times, user reviews, and guided review details, all as clean JSON. No protobuf parsing, no headless browsers.
Start scraping today with 1000 free credits. No Credit Card Required
240+ Countries, 150+ Languages, Precise Geo-Targeting
Target any country, language, or region with 240+ country codes, 150+ interface languages, 84 Google domains, and lat/lng/zoom pinning via the `ll` parameter.
Get the exact Maps results your target audience sees, from a specific Shibuya neighborhood to a Chicago borough, with the right language and domain.
Three Endpoints, One Consistent Schema
Search returns a paginated list of places with 25+ parsed fields each. Place returns enriched details: menu, popular times, user reviews, rating summary, plus code. Reviews returns paginated user reviews with guided details and owner responses.
All three share a consistent response shape, all take the same localization parameters, all identifiers chain cleanly from Search → Place → Reviews.
How It Works
Select a Target

Send API Request
import requests
import json
token = "<SDO-token>"
query = "pizza+new+york"
url = f"https://api.scrape.do/plugin/google/maps/search?token={token}&q={query}"
response = requests.request("GET", url)
print(json.dumps(response.json(), indent=2))Get Structured JSON
{
"search_parameters": {
"engine": "google_maps",
"type": "search",
"q": "pizza new york",
"google_domain": "google.com",
"hl": "en",
"gl": "us"
},
"search_information": {
"local_results_state": "Results for exact spelling",
"query_displayed": "pizza new york"
},
"local_results": [
{
"position": 1,
"title": "Joe's Pizza",
"place_id": "ChIJLSsVbGBZwokRR0LlGBSvMOI",
"data_id": "0x89c259606c152b2d:0xe230af1b18e542a7",
"data_cid": "16313085445244584615",
"gps_coordinates": { "latitude": 40.7306458, "longitude": -73.9969874 },
"rating": 4.4,
"reviews": 12847,
"price": "$",
"type": "Pizza restaurant",
"address": "7 Carmine St, New York, NY 10014",
"open_state": "Open · Closes 4 AM",
"operating_hours": {
"monday": "10 AM–4 AM",
"friday": "10 AM–5 AM",
"saturday": "10 AM–5 AM"
},
"phone": "(212) 366-1182",
"website": "https://www.joespizzanyc.com/",
"service_options": { "dine_in": true, "takeout": true }
},
{
"position": 2,
"title": "NY Pizza Suprema",
"place_id": "ChIJYQ4j7YhZwokRGFmzjqS1Qxw",
"rating": 4.6,
"reviews": 8234,
"price": "$$",
"address": "413 8th Ave, New York, NY 10001"
}
]
}
Scrape.do has been a game-changer with powerful scraping tools, but what truly sets them apart is their excellent customer support.

CTO
Average Response Time
No tickets connect with expert engineers.
Success rate
Proxies
Faster gateway than the closest competitor.
Reliable, Scalable,Unstoppable Web Scraping
Frequently Asked Questions
Search returns a paginated list of places matching a query, with ratings, addresses, opening hours, and contact info. Place fetches an enriched record for one specific place, including menu, popular times, user reviews, rating summary, plus code, and editorial summary. Reviews returns paginated user reviews with full text, guided details (food/service ratings), images, and owner responses. Identifiers (place_id, data_id, data_cid) chain cleanly between them. Pick a result from Search, pass its ID to Place or Reviews.
Google Maps data isn't in the initial HTML. It loads through internal APIs that return protobuf-over-JSON. Scraping it directly means reverse-engineering those endpoints, managing sessions, handling tile-based pagination, and staying ahead of internal API changes. This API does all of that and returns clean JSON. You send a query, you get back structured data. No browser automation, no protobuf parsers, no HTML scraping.
Yes. The ll parameter pins a Maps search to a specific latitude, longitude, and zoom level. @40.7580,-73.9855,15z locks results to Times Square, New York. Without ll, Google uses IP-based geolocation from the proxy network. You can also combine ll with gl, hl, and google_domain for coherent regional targeting.
All 150+ Google interface languages via the hl parameter, from major world languages (en, tr, de, ja, ar) to regional dialects. When hl is non-English, localized fields come back in the requested language. operating_hours day names, guided review details keys (cuisine instead of food for hl=fr), and review extracted_snippet all return in the requested language. Reviews also include both the original text and a translation inline.
Use start=20, start=40, etc. Each page carries up to 20 results. Google Maps tops out at about 120 results per query (6 pages). position values adjust across pages, so page 2 starts at position 21 and page 3 at 41.
First-page response includes a pagination.next_page_token. Pass that as next_page_token on the next request. Continue until pagination is absent. That's the last page. Default page size is 10 reviews, max 20 via the num parameter. The first page also carries place_info and a topics array; subsequent pages omit those.
These are transient. Google occasionally returns an empty data shell. Retry the same request once and it almost always succeeds. Only treat repeated failures as a real "no results" state.
Yes. The first-page response includes a topics[] array with keywords Google identified across the place's reviews. Pass a topic's id as topic_id on a follow-up request to filter reviews to just that topic. Separately, query=breakfast filters reviews to those matching a keyword. The two parameters are mutually exclusive.
Not strictly. The Reviews endpoint takes any valid data_id or place_id, regardless of source. If you already have IDs from Google's own Places API, from Maps URLs you've scraped, or from a legacy database, you can call Reviews directly. The Search → Reviews flow is the common path, not a requirement.
For hotels, yes. Reviews from Google appear alongside reviews aggregated from Priceline, Tripadvisor, Booking.com, and Trip.com. Check the source field on each review. Third-party reviews have limited user profile data (no contributor_id, no local_guide) but their ratings, text, and dates come through intact.
The Google Maps API documentation covers all three endpoints, with full parameter tables, response schemas, supported Google domains, localization details, and filtering/sorting deep-dives for reviews.


