Google Maps Scraper
Pricing
from $2.00 / 1,000 result scrapes
Google Maps Scraper
It extracts useful lead information such as business name, category, phone number, website, address, latitude, longitude, and a Google Maps search link.
Pricing
from $2.00 / 1,000 result scrapes
Rating
0.0
(0)
Developer
Data Pilot
Maintained by CommunityActor stats
0
Bookmarked
7
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
๐ Google Maps Scraper is a powerful Apify Actor designed to discover and collect business/venue location data for any search keyword, returning results formatted with ready-to-use Google Maps links. This tool provides Google Maps style intelligence including business name, category, address, phone, website, coordinates, and a direct Google Maps search link for any query. Whether you're building a local business lead list, mapping venue locations, or conducting local market research, the Google Maps Scraper delivers actionable place data efficiently.
โ ๏ธ Important data-source notice: Despite the "Google Maps" name, this Actor does not query Google's own Places API or scrape Google Maps pages. It sources all place data from Photon (
photon.komoot.io), an open-source geocoder built on OpenStreetMap data, maintained by Komoot. See Important Notes before relying on this for Google-specific data like ratings, reviews, or business hours โ none of that is available here.
๐ Table of Contents
- Features
- Data Source
- How It Works
- Input
- Output
- Technical Stack
- Data Fields
- Use Cases
- Quick Start
- Configuration
- Performance
- Important Notes
- License & Legal
๐ฅ Features
- Fast Geocoder-Based Search โ Uses the Photon API (OpenStreetMap-backed) for lightweight, direct place lookups without browser rendering.
- Category Filtering โ Restricts results to venue-like OSM tags: amenity, shop, office, and tourism.
- Structured Address Construction โ Assembles a readable address from house number, street, city, postcode, and country fields.
- Contact Info Extraction โ Pulls phone and website details when present in the underlying OSM tags.
- Auto-Generated Google Maps Links โ Builds a clickable Google Maps search URL for every result, using coordinates when available.
- Query-Name Filtering โ Skips results whose name exactly matches the search query (to reduce noise from generic matches).
- Deduplication โ Filters out duplicate business titles within a single search.
- Configurable Result Cap โ Control how many places are returned, up to the API's 50-result limit per request.
- Real-Time Dataset Push โ Pushes all collected place records to Apify Dataset in a single batch.
๐ Data Source
Photon Geocoding API (OpenStreetMap Data)
- Authority: Photon, an open-source geocoder built and maintained by Komoot (
photon.komoot.io), indexing OpenStreetMap data - Access Method: Direct HTTP GET requests via ``
- Coverage: Any place tagged in OpenStreetMap as an amenity, shop, office, or tourism venue matching the search query
- Data: Structured GeoJSON features with name, address fields, and any contact tags present in OSM
- Access: Public API, no API key required
- Update Frequency: Reflects Photon's current OpenStreetMap-derived index at time of run
This is not Google's Places API and does not reflect Google-specific data such as star ratings, review counts, popular times, or verified business hours.
โ๏ธ How It Works
The Google Maps Scraper accepts a search keyword and queries the Photon geocoding API, restricting results to venue-like OSM categories (amenity, shop, office, tourism) and requesting up to the configured result cap (max 50 per request, per Photon's API limit). For each returned GeoJSON feature, the Actor extracts the business/place name, infers a readable category from its OSM tag, constructs a formatted address from the available address components, and pulls any phone or website contact tags present. A Google Maps search link is generated for each result โ using precise coordinates when available, or a text-based search fallback otherwise. Results whose name exactly matches the search query are filtered out as likely noise, and duplicate titles within the same run are removed. All resulting place records are pushed to the Apify Dataset in a single batch.
Key Processing Steps:
- Input Parsing โ Accept a search keyword and a max results count
- API Request โ Query the Photon geocoding API with the keyword and OSM category filters
- Response Parsing โ Extract GeoJSON features from the API response
- Name & Category Extraction โ Pull the place name and infer a category from its OSM tag
- Address Construction โ Assemble a formatted address from house number, street, city, postcode, and country
- Contact Extraction โ Pull phone and website fields when present in the OSM tags
- Maps Link Generation โ Build a Google Maps search URL using coordinates or a text-based fallback
- Query-Match Filtering โ Skip any result whose name exactly matches the search query
- Deduplication โ Remove duplicate titles within the same result set
- Dataset Push โ Push all collected records to the Dataset in a single batch
Key Benefits:
- Pull structured place data for any keyword without manual searching
- Get ready-to-click Google Maps links for every discovered place
- Fast, lightweight lookups with no browser overhead
- Feed local business lead lists, mapping dashboards, or location research pipelines
- Free, open-data-backed alternative to a paid Places API for basic name/address/contact lookups
๐ฅ Input
The Actor accepts the following input parameters:
| Field | Type | Default | Description |
|---|---|---|---|
keywords / keyword | string | "restaurants" | Search term used to find matching places. |
maxResults | integer | 40 | Maximum number of places to collect (capped at 50 by the underlying API). |
Example Input:
{"keywords": "coffee shops","maxResults": 40}
Search for a Different Venue Type:
{"keyword": "hardware stores","maxResults": 25}
๐ค Output
The Actor pushes place records with the following structure:
| Field | Type | Description |
|---|---|---|
search_query | string | The keyword used for this search |
title | string | The business/place name |
category | string | Inferred category from the place's OSM tag (e.g., "Restaurant", "Cafe") |
phone | string | Phone number, if present in the underlying OSM data |
website | string | Website URL, if present in the underlying OSM data |
address | string | Formatted address, or a fallback note if address details are incomplete |
latitude | float/null | Latitude coordinate |
longitude | float/null | Longitude coordinate |
maps_url | string | An auto-generated Google Maps search link for this place |
scraped_at | string | ISO 8601 timestamp of when the record was scraped |
Example Record:
{"search_query": "coffee shops","title": "Example Coffee House","category": "Cafe","phone": "+1 555-123-4567","website": "https://example-coffee.com","address": "42, Main Street, Springfield, 12345, United States","latitude": 39.7817,"longitude": -89.6501,"maps_url": "https://www.google.com/maps/search/?api=1&query=39.7817,-89.6501","scraped_at": "2026-09-05T09:00:00.000Z"}
Note:
phoneandwebsiteare frequently empty, since not every OpenStreetMap entry includes contact tags โ this is a known data-completeness gap of crowd-sourced OSM data, not a bug in the Actor.
๐งฐ Technical Stack
- HTTP Client:
curl_cffiwith Chrome impersonation for reliable access to the Photon API - Async:
asynciowith an executor bridge for running the impersonated client asynchronously - URL Handling:
urllib.parsefor building text-based Google Maps search fallback links - Date Handling:
datetimewith timezone-aware UTC timestamps - Logging: Apify Actor logging system
- Platform: Apify Actor serverless environment
๐ Data Fields Explained
Place Identity
- title: The business or venue name
- category: A human-readable category derived from the OSM tag (e.g.,
amenity=restaurantโ "Restaurant")
Location
- address: A best-effort formatted address from available OSM address components
- latitude / longitude: Coordinates, when present in the source data
- maps_url: A generated link to search for this place on Google Maps โ not an official Google Place ID or listing link
Contact
- phone / website: Contact details, only present when tagged in the source OpenStreetMap data
๐ฏ Use Cases
- Local Business Lead Lists โ Build a list of businesses in a category for outreach or research
- Location Mapping โ Plot venue locations for a local guide, app, or dashboard
- Market Research โ Gauge the presence of specific business types in an area covered by OpenStreetMap
- Academic/Open-Data Research โ Study OpenStreetMap business coverage patterns
- Prototype Development โ Use as a free, no-API-key data source while prototyping a location-based app
โ Not suitable for: Anything requiring genuine Google Maps data โ star ratings, review text/counts, verified opening hours, popular times, or Google's own place IDs. None of that is available from this data source.
๐ Quick Start
1. Prepare Input
Go to Apify Console and enter:
{"keywords": "restaurants"}
2. Run the Actor
Click Start. The Actor will:
- Query the Photon API for places matching the keyword
- Extract and format name, category, address, and contact details
- Generate a Google Maps search link for each result
- Push all results to the Dataset
3. Monitor Progress
Console shows:
๐ Harvesting verified Google Maps leads for: 'restaurants'...โ Successfully harvested 40 business leads matching your exact schema.๐ Complete! Processed 40 leads.
4. View & Download Results
- Results Tab: All place records
- Export: JSON, CSV, Excel, or HTML
- Filter: By category or presence of contact info
- API Access: Available via the Apify API
โ๏ธ Configuration
Default search:
{"keywords": "restaurants"}
Larger result set:
{"keyword": "hardware stores","maxResults": 50}
๐ Performance
Processing Speed
- A single lightweight HTTP request per run
- No browser rendering required, so results return quickly
Resource Usage
- Memory: Very low, since only one request is made and no browser is launched
- Network: One request to the Photon API per run
- Proxy: Not used
โ ๏ธ Important Notes
Data Source Honesty Notice
- This Actor does not use Google's Places API or scrape Google Maps. All underlying place data comes from Photon (
photon.komoot.io), which indexes OpenStreetMap data. - The
maps_urlfield is a generated convenience link to search Google Maps for the place โ it is not sourced from Google and does not guarantee the place will appear identically (or at all) on Google Maps. - Fields that genuine Google Maps data would include โ star ratings, review counts/text, verified business hours, popular times, price level โ are not available from this data source and are not present in the output.
- Contact fields (
phone,website) reflect whatever has been tagged by OpenStreetMap contributors, which is often incomplete compared to a business's actual Google Business Profile.
Legal & Compliance
- Fair Use: Uses Photon's public API with a descriptive User-Agent
- Public Data Only: Retrieves only publicly available OpenStreetMap-derived place data, licensed under the Open Database License (ODbL)
- Attribution: OpenStreetMap-derived data should be attributed ("ยฉ OpenStreetMap contributors") if displayed or redistributed
- Legal: Not legal advice โ consult qualified professionals before using this data for compliance-sensitive decisions
Data Quality
- Freshness: Reflects Photon's current OpenStreetMap-derived index at time of run
- Completeness: Coverage and contact-field completeness depend entirely on how thoroughly the area has been mapped by OSM contributors โ this varies significantly by region and can be much sparser than Google's own business index
- Accuracy: Business names and categories are generally reliable where present, but this is a community-maintained dataset, not an authoritative business directory
- Verification: Cross-check any lead against the business's actual Google listing before using it for outreach
Best Practices
- Treat results as a starting point for lead generation, not a complete or verified business directory
- Expect
phoneandwebsiteto be empty for a meaningful share of results - Use specific category keywords to improve result relevance
- Manually verify high-value leads on Google Maps directly before outreach
- Do not present this data to clients or stakeholders as "Google Maps data" without the caveats above
๐ License & Legal
Terms of Use:
- Use for legitimate research, lead generation, and mapping purposes
- Comply with the Open Database License (ODbL) and provide OpenStreetMap attribution where required
- Do not represent this data as being sourced from or verified by Google
- Use this data responsibly and in compliance with applicable laws
Disclaimer: Google Maps Scraper is provided as-is for research purposes. Despite its name, it sources data from Photon/OpenStreetMap, not from Google. Users are responsible for compliance with OpenStreetMap's ODbL license, Photon's API usage guidelines, and all applicable laws. This is not legal advice.
โ๏ธ Summary
This Actor currently provides:
- โ Fast, lightweight place lookups with no browser overhead
- โ Structured name, category, address, and contact extraction
- โ Auto-generated Google Maps search links
- โ ๏ธ Data sourced from Photon/OpenStreetMap, not Google's own Places API
- โ ๏ธ No ratings, reviews, verified hours, or other Google-exclusive fields