Google Maps data API: the official API or an Apify Actor?
Google Maps has a public official API. 17 Apify Actors in this catalogue return Google Maps data over HTTP too: send the input to Apify's run-sync endpoint with your token and get the records back as JSON, from $0.40 a run plus $0.99 per 1,000 results at Store prices (plus platform usage). One answers a single request directly in server mode.
Side by side
| Google Maps Platform Places API | Google Maps Experience agent tools (formerly Grounding Lite) | Apify Actors (17) | |
|---|---|---|---|
| Access | Public, self-serve | Google Cloud API key in the X-Goog-Api-Key header | Apify API token (any account) |
| What you get | The Places API (New) supports text search, nearby search, place details, autocomplete and photos. A billing account and API key are required. | Place search with AI summaries, place IDs and Maps links, weather, routes, and resolving names or Maps URLs to place IDs. | Rows defined by each Actor's published schema; up to 103 fields per record |
| Price | SKU-based pay-as-you-go. Place Details Essentials is $5.00 per 1,000 after 10,000 free calls per month at the published first paid tier; other SKUs differ. | Essentials $7 per 1,000 requests with 10,000 free a month; Pro $14 per 1,000 with 5,000 free (allowlist) | From $0.40 a run plus $0.99 per 1,000 results (Store price, Free plan), plus platform usage |
| Limits | The old $200 monthly credit was replaced by per-SKU monthly free caps on March 1, 2025. Legacy Places API can no longer be enabled for new Cloud projects as of October 2026. | As set by the provider | Synchronous calls wait up to 300 s; longer runs go asynchronous |
| Docs | Google Maps Platform Places API | Google Maps Platform: Maps Experience agent tools | Apify API: run-sync |
Official API facts checked 2026-11-09. Google Maps content is subject to Google Maps Platform terms and attribution rules. Public business data only; not legal advice.
Which Actor for which job
All of them list $0.99 per 1,000 results on the Store, plus a start fee per run.
| Actor | Returns | Fields include | Call it |
|---|---|---|---|
| Google Maps Popular Times & Live Busyness Scraper | One record per Google Maps place: place identity and listing details, open/closed status, coordinates and local time, hourly… | businessName, placeId, featureId | run-sync · Apify |
| Google Maps Business Finder with Hours, Ratings & Location | Dataset of public Google Maps places with name, address, category, rating, review count, hours, price, attributes, coordinates… | rankInSearch, name, categoryName | run-sync · Apify |
| Google Earth Location Coordinate Finder | Google Earth location records: place name, description, precise latitude/longitude, Google place ID, terrain elevation, matched… | place_name, google_place_id, latitude | run-sync · Apify |
| Google Maps Address & Coordinate Geocoding Lookup | One row per resolved input: coordinates, formatted address, structured address parts, Place ID, Plus Code, time zone and result… | mode, inputAddress, inputLocation | run-sync · Apify |
| Google Maps Business Lead & Email Finder | Dataset of Google Maps business leads with contact details, website emails (source and MX-checked), extra phones, and social… | name, googleBusinessCategories, street | run-sync · Apify |
| Google Maps Business Lead Finder with Email & Social Links | Google Maps business listings enriched with email addresses (including a DNS-checked subset), website phone numbers, social… | title, categoryName, address | run-sync · Apify |
| Google Maps Grid-Based Market Saturation Scanner | Cover a bounding box, circle, or custom polygon with a search grid to collect every business Google Maps exposes for a query… | name, categoryName, totalScore | run-sync · Apify |
| Google Maps Hours, Open-Now Status & Holiday Schedule | Business hours records from Google Maps — place identity and contact details, structured 7-day opening hours, live open/closed… | businessName, placeId, featureId | run-sync · Apify |
| Google Maps Photo Gallery Extractor by Category | Dataset of public Google Maps media. Each row has recordType set to photo, video or streetView, plus contributor, upload date… | photoId, photoIndex, photoUrl | run-sync · Apify |
| Google Maps Radius Search Around a Coordinate | Dataset of Google Maps places inside the requested radius, each with identity, contact, rating, hours, coordinates and distance… | name, categoryName, totalScore | run-sync · Apify |
| Google Maps Related Place & Competitor Finder | One row per related place, with its explicit relation provenance (Google carousel or same-category nearby), canonical and legacy… | relationMode, relationQuery, relatedSectionType | run-sync · Apify |
| Google Maps Review & Contributor Activity Scraper | One record per Google Maps review (place and search modes), per reviewer contribution (reviewer mode) or per partner-site review… | reviewId, reviewerName, reviewerAvatarUrl | run-sync · Apify |
| Google Maps Route & Distance Matrix Scraper | Route, matrix and URL records from Google Maps directions — resolved stops, distance, duration, traffic, route alternatives… | origin, destination, originResolved | run-sync · Apify |
| Google Maps Timezone & Local Time Lookup | One record per resolved place, address, Place ID or coordinate, with the IANA timezone, current local and UTC time, UTC offset… | mode, inputAddress, inputLocation | One request · Apify |
| Google Maps Top List & Ranked Places Extractor | Ranked places from a Google Maps Top list or list/search URL, with rank, rating and optional full place details. | listSource, name, categoryName | run-sync · Apify |
| Google Maps Business Search & Reviews MCP Server | Dataset records emitted by the search, details or reviews mode. The same data is returned by the MCP tools search_businesses… | name, description, index | run-sync · Apify |
| Google Maps Restaurant Menu & Popular Dish Extractor | Restaurant menu rows with dish name, section, description, price, currency, photo, menu provenance and full Google Maps place… | businessName, placeId, featureId | run-sync · Apify |
Call Google Maps Timezone & Local Time Lookup
Server mode is on for this Actor (checked 2026-11-12): one request returns the results in the response. Set APIFY_TOKEN first; runs bill to that account.
curl (GET)
curl -H "Authorization: Bearer $APIFY_TOKEN" \
"https://dataspryva--google-maps-timezone-and-local-time-lookup.apify.actor/?mode=coordinates&location=%7B%22lat%22%3A40.7128%2C%22lng%22%3A-74.006%7D" curl (POST)
curl -X POST "https://dataspryva--google-maps-timezone-and-local-time-lookup.apify.actor/" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode":"coordinates","location":{"lat":40.7128,"lng":-74.006}}' JavaScript
// Node 18+ or any runtime with fetch. One request = one lookup; results come back in the response.
const response = await fetch("https://dataspryva--google-maps-timezone-and-local-time-lookup.apify.actor/", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.APIFY_TOKEN}`, "Content-Type": "application/json" },
body: JSON.stringify({
"mode": "coordinates",
"location": {
"lat": 40.7128,
"lng": -74.006
}
}),
});
if (!response.ok) throw new Error(`${response.status}: ${await response.text()}`);
const items = await response.json();
console.log(items.length, items[0]); Python
import os
import requests
# One request = one lookup; results come back in the response.
response = requests.post(
"https://dataspryva--google-maps-timezone-and-local-time-lookup.apify.actor/",
headers={"Authorization": f"Bearer {os.environ['APIFY_TOKEN']}"},
json={
"mode": "coordinates",
"location": {
"lat": 40.7128,
"lng": -74.006,
},
},
timeout=300,
)
response.raise_for_status()
items = response.json()
print(len(items), items[:1]) Generated from the Actor's published schema and checked, not executed.
Same data, other routes
- Google Maps MCP server: these Actors as tools in Claude, Cursor, ChatGPT, VS Code and Codex.
- Google Maps leads to Google Sheets: an n8n workflow you can import.
- Google Maps leads to HubSpot: an n8n workflow you can import.
- Google Maps competitor scan to Slack: an n8n workflow you can import.
- Every Actor with a one-request API
When a call fails
Why does the workflow or script stop with HTTP 408?
The synchronous endpoint waits at most 300 seconds. After that it answers 408 while the run keeps going in Apify. Lower the result limit, or start the run asynchronously, wait for it to finish and then read its dataset.
Source: Apify API: run Actor synchronously and get dataset items
What do 400, 401, 402 and 403 from the Apify API mean?
Read error.type in the response body. 400 is invalid Actor input. 401 (user-or-token-not-found) means a token reached Apify but it is wrong or revoked. 402 with x402-payment-required means no token reached Apify at all: the n8n credential or the Authorization: Bearer header is missing, and Apify is offering its pay-per-run x402 route for agents instead; any other 402 is an exhausted usage limit on the account that pays for the run. 403 is a token without permission for that Actor or storage.
Source: Apify API: authentication; Apify documentation: agentic payments with x402; Apify API: run Actor synchronously and get dataset items
Why does a server-mode request answer 429?
If no Actor run can take the request within 2 minutes, Apify answers 429; the first response must also arrive within 5 minutes. Retry after a short pause, and send one request at a time while you test.
How do I authenticate server-mode requests?
Send Authorization: Bearer with your Apify API token. A token query parameter also works and is stripped before the request reaches the Actor, but a header keeps the token out of logs and browser history.
Questions
Is there an official Google Maps API?
The Places API (New) supports text search, nearby search, place details, autocomplete and photos. A billing account and API key are required. SKU-based pay-as-you-go. Place Details Essentials is $5.00 per 1,000 after 10,000 free calls per month at the published first paid tier; other SKUs differ.
How much does Google Maps data cost through an Apify Actor?
The Actors listed here charge from $0.40 a run plus $0.99 per 1,000 results on the Apify Store (Free plan), checked 2026-11-12, billed to the Apify account whose token makes the call. Actor start events and platform usage can add to that.
Can I get Google Maps data as JSON in one HTTP request?
Yes. Google Maps Timezone & Local Time Lookup has server mode on: a GET or POST to the Actor's own URL returns the results in the response. Every other Actor here works through POST /v2/actors/<id>/run-sync-get-dataset-items, which waits up to 300 seconds for the run.
Can an AI agent use the same Google Maps data?
Yes. The Google Maps MCP page bundles these Actors into one Apify MCP URL for Claude, Cursor, ChatGPT, VS Code and Codex, and lists Google Maps Experience agent tools (formerly Grounding Lite).
Is it allowed to collect Google Maps data?
Google Maps content is subject to Google Maps Platform terms and attribution rules. Public business data only; not legal advice. Read Google Maps's terms before you build on the data.
Sources
- Google Maps Platform Places API documentation, checked 2026-11-09
- Google Maps Platform Places API pricing
- Google Maps Platform: Maps Experience agent tools, checked 2026-11-11
- Apify API: run Actor synchronously, checked 2026-11-11
- developers.google.com/maps/billing-and-pricing/march-2025, checked 2026-11-09
- Google Maps terms