Google Maps Geocoding Scraper
Pricing
from $3.00 / 1,000 results
Google Maps Geocoding Scraper
Bidirectional geocoding via Google Maps: convert addresses to coordinates (forward) or coordinates to addresses (reverse). Batch input supported with structured address components, place IDs, plus codes, and place categories.
Pricing
from $3.00 / 1,000 results
Rating
5.0
(1)
Developer
Crawler Bros
Maintained by CommunityActor stats
0
Bookmarked
29
Total users
8
Monthly active users
a day ago
Last modified
Categories
Share
Bidirectional geocoding via Google Maps. Convert street addresses into latitude/longitude coordinates (forward geocoding), or convert coordinates back into a human-readable address (reverse geocoding). Supports batch input, multiple languages, and country bias for ambiguous queries. It works without a login, cookies, or an API key.
What this actor does
- Forward geocoding — given an address, returns the resolved coordinates, place ID, structured address components, plus code, and a stable Google Maps URL.
- Reverse geocoding — given a
{lat, lng}pair, returns the nearest matched place name and address. When Google answers a coordinate with a dropped pin instead of a named place, the resolved record carries the locality Google prints for it (city / region / country) plus the exact coordinate — never an invented street address.
Only resolved Google Maps results are written to the dataset. Inputs that Google cannot resolve are reported in the actor log/status and do not create placeholder or error rows.
Input
| Field | Type | Description |
|---|---|---|
mode | enum (forward | reverse) | Which direction to geocode. Default: forward. |
address | string | A single address (forward mode). |
addresses | array of strings | Batch of addresses (forward mode). |
location | object {lat, lng} | A single coordinate (reverse mode). |
locations | array of {lat, lng} | Batch of coordinates (reverse mode). |
language | enum | Interface language (en, es, fr, de, it, pt, ja, ko, zh, ar, ru). Default: en. |
country | string | Optional ISO 3166-1 alpha-2 code (e.g. US, GB) used to bias results when an address is ambiguous. |
proxyConfiguration | proxy | Optional. Direct access is tried first; unresolved items use the bounded hardcoded Apify US RESIDENTIAL recovery path unless direct-only mode is explicitly requested. |
Examples
Example: forward geocode one address
{"mode": "forward","address": "1600 Amphitheatre Parkway, Mountain View, CA","language": "en"}
Example: forward geocode a batch
{"mode": "forward","addresses": ["Eiffel Tower, Paris","Big Ben, London","Tokyo Tower, Tokyo"],"language": "en"}
Example: reverse geocode one coordinate
{"mode": "reverse","location": {"lat": 40.7579, "lng": -73.9855}}
Example: reverse geocode a batch
{"mode": "reverse","locations": [{"lat": 48.8584, "lng": 2.2945},{"lat": 35.6586, "lng": 139.7454},{"lat": -33.8568, "lng": 151.2153}]}
Output per location
Each dataset record contains a subset of these fields (empty fields are omitted):
| Field | Type | Description |
|---|---|---|
recordType | string | Actor row discriminator (geocode). |
mode | string | "forward" or "reverse". |
inputAddress | string | Original address (forward mode only). |
inputLocation | object | Original coordinates (reverse mode only). |
resolved | boolean | Whether Google resolved the input to a place. |
name | string | Place name (h1 on the place page); often blank for pure street addresses. |
formattedAddress | string | Full address as Google formats it. |
location | object | {lat, lng} of the resolved place. |
placeId | string | Canonical Google Place ID beginning with ChIJ, when Google exposes one. |
featureId | string | Legacy feature/CID token (0x…:0x…), when Google exposes one. |
plusCode | string | Open Location Code if present. |
addressComponents | object | Structured {streetNumber, street, city, state, postalCode, country, countryCode}. |
categoryName | string | Google's category label when the resolved place is a business. |
googleMapsUrl | string | Stable /maps/place/ URL. |
sourceUrl | string | Resolved Maps page URL used as the source context; omitted when unavailable. |
scrapedAt | string | UTC ISO-8601 timestamp. |
Example output
{"recordType": "geocode","mode": "forward","inputAddress": "1600 Amphitheatre Parkway, Mountain View, CA","resolved": true,"name": "Google Building 41","formattedAddress": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA","location": {"lat": 37.4224864, "lng": -122.0855962},"featureId": "0x808fba02f1822489:0x37a9269fbae1c4f7","plusCode": "CWC8+W4 Mountain View, California","addressComponents": {"streetNumber": "1600","street": "Amphitheatre Pkwy","city": "Mountain View","state": "CA","postalCode": "94043","country": "USA","countryCode": "US"},"categoryName": "Corporate office","googleMapsUrl": "https://www.google.com/maps/place/...","sourceUrl": "https://www.google.com/maps/place/...","scrapedAt": "2026-06-16T12:00:00+00:00"}
FAQ
Q: Do I need an API key? No. This scraper uses the public Google Maps web interface — no API key, no quota, no billing.
Q: How many results does it return per input?
One record per input. If an address is ambiguous, Google picks the highest-confidence match (the same one you would see at the top of maps.google.com).
Q: How accurate are the coordinates?
Coordinates are extracted directly from Google's resolved /maps/place/… URL with full precision (often 7 decimal places, sub-centimetre accuracy).
Q: Why does my batch of 10 addresses take 1–2 minutes? The scraper navigates a real browser for each address with a small polite delay between requests to avoid rate-limiting. Throughput is roughly 5–8 addresses per minute.
Q: Should I use a proxy?
The actor tries direct access first, then retries unresolved items through its hardcoded Apify US RESIDENTIAL path. This keeps the cookieless path resilient without treating a blocked or consent-only render as a real unresolved result. Set {"useApifyProxy": false} only for a direct-only diagnostic.
Q: What languages are supported?
The language input controls the Google Maps interface language and the format of the returned address (e.g. street names, country names in the target language). Currently exposed: English, Spanish, French, German, Italian, Portuguese, Japanese, Korean, Chinese, Arabic, Russian.
Q: Can I bias results to a specific country?
Yes. Set country to an ISO 3166-1 alpha-2 code (e.g. US, GB, FR). The scraper appends the country name to ambiguous queries (e.g. Big Ben → Big Ben, UK).
Q: What happens for unresolvable inputs? The actor logs each unresolved input and names them in the run status, and leaves the dataset unchanged for that item. It never creates a placeholder or error row. Google answers an address it cannot place with nearby results rather than a "no match" page — a real business, with a real street address, unrelated to the input — so a forward lookup is only resolved when Google's own answer repeats a distinctive word of the address you asked for — reading the matched place's own-script name when the interface language renders the answer in another script. A substitute is reported as unresolved instead of being emitted as the answer.
Use cases
- Convert a CSV of customer addresses to coordinates for mapping.
- Enrich event logs with city/state/country from raw GPS pings.
- Validate user-submitted addresses against Google's canonical form.
- Reverse-geocode IoT device locations or photo EXIF coordinates.
- Compare address-component parsing across multiple countries.
Data source
This actor scrapes Google Maps directly. It does not call the Google Maps Geocoding API, so no Google Cloud project, billing account, or API key is required.
You are responsible for using these results lawfully and in line with Google's terms.
🗺️ Complete Google Maps Scraper Suite
This actor is part of a comprehensive Google Maps data extraction toolkit by crawlerbros. All actors run cookielessly on the free Apify plan with bounded direct, retry, and residential recovery paths, and return clean, structured data.
| Actor | What it does |
|---|---|
| 🏢 Google Maps Business Scraper | Extract business data — name, address, phone, website, rating, reviews, hours, amenities |
| ⭐ Google Maps Reviews Scraper | Scrape reviews with reviewer Local Guide level, photos, mentioned items, owner replies |
| 📸 Google Maps Photos Scraper | Extract all photos from any place — max-resolution URLs, contributor info, categories |
| 🕐 Google Maps Business Hours Scraper | Full 7-day hours, timezone, current local time, next open/close, holiday hours |
| 📊 Google Maps Popular Times Scraper | Busy hours histogram for all 7 days + current busyness + typical visit time |
| 📧 Google Maps Email Extractor | Find business emails + social media links by crawling websites |
| 🗺️ Google Maps Area Scanner | Geographic grid scanning — bypass the 120-place limit with bounding box / circle / polygon |
| 💼 Google Maps Leads Scraper | B2B lead generation with email + phone enrichment, US states + global countries |
| 🤖 Google Maps MCP Server | Unified MCP server combining search + reviews for AI assistants |
| 🧭 Google Maps Directions Scraper | A→B routing — distance, duration, traffic, route alternatives for driving/walking/transit |
| 🔗 Google Maps Similar Places Scraper | "People also search for" / related place discovery — competitor & alternative finder |
| 🍽️ Google Maps Menu Scraper | Restaurant menu items, prices, descriptions, photos |
| 📌 Google Maps Nearby Scraper | Find places near a coordinate point — lightweight POI search by category |
| 📋 Google Maps Place List Scraper | Extract Google's curated "Top X in Y" lists — best hotels/restaurants/things to do |
| 🌍 Google Maps Timezone Scraper | IANA timezone + current local time from coordinates |