Google Maps  Scraper avatar

Google Maps Scraper

Pricing

from $2.00 / 1,000 result scrapes

Go to Apify Store
Google Maps  Scraper

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

Data Pilot

Maintained by Community

Actor 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

  • 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:

  1. Input Parsing โ€“ Accept a search keyword and a max results count
  2. API Request โ€“ Query the Photon geocoding API with the keyword and OSM category filters
  3. Response Parsing โ€“ Extract GeoJSON features from the API response
  4. Name & Category Extraction โ€“ Pull the place name and infer a category from its OSM tag
  5. Address Construction โ€“ Assemble a formatted address from house number, street, city, postcode, and country
  6. Contact Extraction โ€“ Pull phone and website fields when present in the OSM tags
  7. Maps Link Generation โ€“ Build a Google Maps search URL using coordinates or a text-based fallback
  8. Query-Match Filtering โ€“ Skip any result whose name exactly matches the search query
  9. Deduplication โ€“ Remove duplicate titles within the same result set
  10. 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:

FieldTypeDefaultDescription
keywords / keywordstring"restaurants"Search term used to find matching places.
maxResultsinteger40Maximum 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:

FieldTypeDescription
search_querystringThe keyword used for this search
titlestringThe business/place name
categorystringInferred category from the place's OSM tag (e.g., "Restaurant", "Cafe")
phonestringPhone number, if present in the underlying OSM data
websitestringWebsite URL, if present in the underlying OSM data
addressstringFormatted address, or a fallback note if address details are incomplete
latitudefloat/nullLatitude coordinate
longitudefloat/nullLongitude coordinate
maps_urlstringAn auto-generated Google Maps search link for this place
scraped_atstringISO 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: phone and website are 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_cffi with Chrome impersonation for reliable access to the Photon API
  • Async: asyncio with an executor bridge for running the impersonated client asynchronously
  • URL Handling: urllib.parse for building text-based Google Maps search fallback links
  • Date Handling: datetime with 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_url field 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.
  • 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 phone and website to 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

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