Site guides
Google Maps data: use the Places API, not a page scraper
Get place names, addresses, coordinates, hours, and ratings through Google Maps Platform APIs, understand the billing and caching rules, and know what not to scrape.
Google Maps data is available through Google Maps Platform APIs: Places, Geocoding, Routes, and related services. The APIs are the supported path for place search, details, geocoding, and coordinates. Scraping the Maps interface is a different activity with different terms and technical controls.
This page is research material, not legal advice. Google’s terms and your contract govern your use.
Start with the Places API
The Places API (New) covers:
- Text Search — find places from a query (“coffee in Leeds”).
- Nearby Search — find places around a latitude/longitude.
- Place Details — names, addresses, coordinates, hours, ratings, reviews, and more, depending on the fields you request.
- Autocomplete — query suggestions.
Requests use an API key and a field mask. The field mask matters twice: it selects the data you need, and it affects the billing tier. Request only the fields you will use.
A request shape (illustrative; replace the key and place ID):
GET https://places.googleapis.com/v1/places/PLACE_ID
X-Goog-Api-Key: YOUR_API_KEY
X-Goog-FieldMask: displayName,formattedAddress,location,regularOpeningHours
The response is JSON. Do not put the API key in client-side code; restrict it by API, referrer, or IP in the Google Cloud console where possible.
Billing and caching
Google Maps Platform is usage-billed. The exact prices and free tiers change; check the pricing page on the date you evaluate it. Two engineering consequences:
- Cache deliberately. The terms allow limited caching of place data; read the current caching rules and set a TTL that matches them.
- Request fields, not whole objects. A field mask that asks for reviews when you need an address is waste.
Do not build a permanent copy of the Places database. The terms restrict bulk extraction and redistribution; a cache is not a licence to republish.
Geocoding and coordinates
Use the Geocoding API to turn an address into coordinates, and the Places API to find businesses by name or category. For a batch of addresses:
- Normalise the address (country, postal code, street).
- Geocode once; store the coordinates and the formatted address.
- Handle ambiguous results by returning the candidates, not by guessing.
- Respect the per-second query limit.
A geocode result is not stable forever; addresses and boundaries change. Store the observation time.
What not to scrape
- Do not scrape the Maps interface to avoid API billing or terms.
- Do not bypass a login, CAPTCHA, or region restriction.
- Do not collect personal data from reviews or contributor profiles at scale.
- Do not rehost Google map tiles or place photos outside the terms.
- Do not present Google data as your own; attribution rules apply.
Google’s robots.txt and terms are the starting point, not the only rule. The terms guide covers the contract layer.
A safe pipeline
query -> Places Text/Nearby Search -> place IDs
-> Place Details with a field mask
-> validate schema
-> cache with TTL + observation time
-> deduplicate by place ID
-> display with attribution
Store the place ID as the stable key. Names and addresses change; the ID is the identifier the API uses.
Legal notes
- Contract: the Google Maps Platform Terms govern the API, caching, display, and redistribution.
- Copyright: place photos and reviews are user/content works; the API does not grant a free republishing licence.
- Personal data: reviews and contributor names can be personal data; minimise and set retention.
- Database rights: a large place database may attract database rights in the EU/UK.
- Competition/consumer law: ratings and price claims must be accurate and dated.