logo

Google Maps API

Scrape Google Maps search results and place details as structured JSON

Google Maps API

The Google Maps API is a specialized plugin that searches Google Maps, extracts structured data from place details pages, and returns paginated user reviews, all as clean JSON. Instead of rendering Google Maps in a headless browser and parsing protobuf, you send a query and get back ratings, addresses, opening hours, contact info, menus, popular times, reviews, and more.

Credit Usage: Each successful request costs 10 credits, same for Search, Place, and Reviews. For bulk processing, use the Async API with plugins.

Key Features

  • Structured JSON Output: Get 25+ parsed fields per place including place_id, data_id, coordinates, rating, reviews count, opening hours, menu, popular times, and service options.
  • Worldwide Coverage: Target any regional Google domain from google.com to google.co.jp, google.de, google.com.tr, and more. 150+ interface languages and 240+ country codes supported.
  • Precise Geo-Targeting: Constrain Maps searches to a specific area with the ll=@lat,lng,zoom parameter. Without it, Google uses IP-based geolocation.
  • Full Place Details: Dedicated /place endpoint returns enriched fields not in search results: menu, popular_times, user_reviews, plus_code, rating_summary, summary, and a full images array.
  • Paginated Reviews: Fetch up to 20 reviews per request with sorting (newest, highest, lowest), topic filters, keyword search, and guided review details (food/service/atmosphere for restaurants, bed comfort/location/rooms for hotels).
  • Localized Reviews: Non-English locales return both the original review text and a translation inline, plus guided-review details keys in the requested language.
  • Owner Responses & Third-Party Sources: Business replies are returned inline. Hotels include reviews from Priceline, Tripadvisor, Booking.com, and Trip.com alongside Google reviews.
  • Pagination: Navigate through up to 6 pages of Maps search results, or paginate reviews with next_page_token.
  • No Blocks or CAPTCHAs: All anti-bot measures are handled automatically by Scrape.do.

Endpoints

EndpointMethodOutputDescriptionDetails
/plugin/google/maps/searchGETJSONSearch Google Maps and get a paginated list of places with ratings, addresses, and contact infomore
/plugin/google/maps/placeGETJSONFetch enriched details for a single place (menu, popular times, user reviews, images)more
/plugin/google/maps/reviewsGETJSONPaginated user reviews with ratings, text, images, guided details, topics, and owner responsesmore

Credit Costs

EndpointCredits per Request
/plugin/google/maps/search10
/plugin/google/maps/place10
/plugin/google/maps/reviews10

Authentication

All requests require your Scrape.do API token passed via the token query parameter:

https://api.scrape.do/plugin/google/maps/search?token=YOUR_TOKEN&q=pizza+new+york

Response Format

Responses are returned as JSON. Array fields always return [] when empty (never null). Object fields return null when absent.

Parameter keys are case-insensitive. You can use q, Q, hl, HL, etc.


Handling Transient Empty Results

Google occasionally returns an empty result shell for a query even when the underlying place data exists. The plugin surfaces this as 502 no results or, less commonly, an empty results array. These are almost always transient.

For paginated crawls, treat 502 no results as a retry-once condition rather than a permanent empty. A single retry is usually enough to recover. Only treat a repeated failure as a true "no results" state.


Error Handling

All endpoints return errors in a consistent JSON format:

{
  "error": "error_code",
  "message": "Human readable error message"
}

Common Error Codes

StatusErrorDescription
400token is requiredMissing authentication token
400q (search query) is requiredMissing q parameter (Search endpoint)
400place_id or data_cid is requiredNeither identifier provided (Place endpoint)
400data_id or place_id is requiredNeither identifier provided (Reviews endpoint)
400sort_by must be one of: newestFirst, ratingHigh, ratingLowInvalid Reviews sort_by value
400topic_id and query parameters can't be used togetherMutually exclusive Reviews filters both supplied
400num must be an integer between 1 and 20Reviews num outside the accepted range
400invalid ll parameterBad location format; expected @lat,lng,zoom
400invalid start parameterStart must be a non-negative multiple of 20
502no resultsGoogle returned zero results for this query. Retry once before treating as final
502request failedTransient upstream failure. Safe to retry
502failed to extract search data URL / failed to extract place data URLUpstream shell did not contain the expected data URL. Retry
502reviews request failedReviews endpoint: transient upstream failure. Retry
502failed to extract data_id from placeReviews endpoint: could not resolve place_id to a data_id. Retry or pass data_id directly
500failed to parse search results / failed to parse place results / failed to parse reviewsParser error on the Google response

On this page