Google Maps Data Scraper avatar

Google Maps Data Scraper

Pricing

$30.00/month + usage

Go to Apify Store
Google Maps Data Scraper

Google Maps Data Scraper

Scrape Google Maps business listings at scale — names, addresses, phones, websites, ratings, reviews, popular times, price, categories, coordinates & 48 fields. Search by keyword + location, paste Maps URLs, or look up a Place ID. Fast, browserless, no ~120-result limit.

Pricing

$30.00/month + usage

Rating

4.1

(31)

Developer

ВAH

ВAH

Maintained by Community

Actor stats

72

Bookmarked

400

Total users

3

Monthly active users

4 days ago

Last modified

Share

Google Maps Data Scraper

Google Maps Data Scraper extracts business listings from Google Maps at scale — fast, without a browser, and with no ~120-results-per-search limit.

What does Google Maps Data Scraper do?

Google Maps Data Scraper collects detailed business and place data from Google Maps and returns it as structured JSON, CSV, or Excel. It works as an unofficial Google Maps API alternative: give it a search keyword + location (for example, restaurants in New York City), paste Google Maps URLs, or look up a specific place by its Google Place ID, and it returns up to 48 fields per place — name, full address, phone, website, rating, reviews breakdown, popular times, price, categories, coordinates, Place ID, and more.

It runs on direct HTTP requests (no headless browser), so it is fast and cheap to run, and it covers the whole target area instead of stopping at Google's usual ~120-results-per-search cap.

Why use Google Maps Data Scraper?

  • 🗺️ Break the ~120-results limit — an adaptive area grid scans the whole city, so you get hundreds or thousands of places per search, not just the first ~120.
  • 📍 Accurate to the city — results are filtered to the location's real boundary (polygon), so a search for "New York City" doesn't drift into neighboring New Jersey.
  • 📊 48 data fields per place — contact details, ratings, reviews breakdown (when Google exposes it), popular times, price ranges, service options/amenities, photos, and more.
  • Fast & browserless — pure API-style requests, no Chromium, with concurrent enrichment.
  • 🔍 Two ways to search — by keyword + location, or by pasting Google Maps URLs.
  • 🌍 74 languages — choose the language of the returned data.
FeatureThis ActorTypical alternatives
Coverage per searchWhole area (adaptive grid)Often capped at ~120
MethodDirect HTTP (no browser)Browser-based (slower)
Location accuracyCity polygon — no spilloverBounding box / drift
Fields per place48~10–30
InputKeyword + location or Maps URLsVaries
Languages74Varies

Common use cases: building lead lists (with phone, website, and unclaimed-business flags), local market and competitor research, location analytics with popular times and ratings, and powering data-driven apps.

What data can you extract?

Each place returns the following fields (48 in total):

FieldTypeDescription
titlestringBusiness name
category / categoriesstring / arrayPrimary category and all categories
claimedbooleanWhether the business is claimed by its owner (unclaimed = a sales lead)
rating / review_countnumberAverage rating and number of reviews
reviews_distributionobjectCount of reviews per star (1–5), when Google provides it (often empty — Google has largely moved this out of its public place data)
price_range / price_breakdownstring / objectPrice range and its breakdown
full_addressstringFull formatted address
neighborhood / street_address / city / zipcode / state / countrystringAddress components
latitude / longitudenumberCoordinates
phone / phone_internationalstringPhone (local format and E.164)
websitestringBusiness website
plus_code / plus_code_urlstringGoogle Plus Code
place_id / cid / google_idstringGoogle place identifiers
aboutobjectService options, highlights, accessibility, amenities, atmosphere, payments, etc.
business_attributesarrayOwner attributes (e.g. "Identifies as women-owned")
descriptionstringShort editorial description
review_summary / review_tagsarray / objectHighlighted review snippets and keyword tags with counts
people_also_search_forarrayRelated places
open_timearrayOpening hours per day
popular_times_mondaypopular_times_sundayobjectHourly busyness per day
current_status / permanently_closed / temporarily_closedstring / booleanOpen/closed status
photos_count / imagesnumber / arrayPhoto count and image URLs

How to scrape Google Maps

  1. Open the Actor on Apify Store and click Try for free.
  2. Enter search keywords (e.g. restaurants, coffee shops) and a Location (e.g. New York City) — or paste Google Maps URLs, or a Place ID as place_id:ChIJ....
  3. Set options (optional) — choose the Language and the max result pages (each page ≈ 20 places).
  4. Click Start — the Actor geocodes the location, scans the area, and collects each place's details.
  5. Download your data as JSON, CSV, Excel, or via the Apify API.

How much does it cost?

Apify usage is billed in compute units (memory × time). Because this Actor is browserless — it uses direct HTTP requests instead of a headless Chromium browser — it consumes far less compute than browser-based Google Maps scrapers, which keeps your cost per result low. You can Try it for free on the Apify free plan; see the Pricing section on this Actor's page for the current per-result price.

Input

ParameterTypeDefaultDescription
keywordsarray["restaurants"]What to search for on Google Maps. Each keyword is searched separately.
locationstring"New York City"City/area to search within. Results stay inside its real boundary.
urlsarray[]Optional. Google Maps URLs — a search URL scrapes its results; a place URL or ?cid=... URL returns that one place.
languageselectEnglish (United States)Language of the returned data (74 options).
maxCrawlPagesinteger10Max result pages (≈ 20 places each; 10 ≈ 200, 50 ≈ 1,000). Applies per keyword and per URL, not to the whole run (e.g. 3 keywords × 10 pages ≈ up to 600 places).

Configure everything visually on the Input tab — no code required.

Output

Each result is one place. Example (real data, some arrays trimmed):

{
"search_string": "restaurants",
"title": "Arepa Lady",
"category": "Colombian restaurant",
"categories": ["Colombian restaurant", "Restaurant"],
"claimed": true,
"rating": 4.6,
"review_count": 1396,
"reviews_distribution": { "1_star": 55, "2_star": 14, "3_star": 74, "4_star": 216, "5_star": 1037 },
"price_range": "$20–30",
"price_range_votes": 23,
"price_breakdown": { "$10–20": "30%", "$20–30": "48%", "$30–40": "7%" },
"full_address": "Arepa Lady, 77-17 37th Ave, Jackson Heights, NY 11372",
"neighborhood": "Jackson Heights",
"street_address": "77-17 37th Ave",
"city": "Jackson Heights",
"zipcode": "11372",
"state": "New York",
"country": "US",
"latitude": 40.7494972,
"longitude": -73.8882711,
"phone": "(917) 745-1111",
"phone_international": "+19177451111",
"website": "https://www.thearepalady.com/",
"plus_code": "P4X6+QM Jackson Heights, Queens, NY",
"plus_code_url": "https://plus.codes/P4X6+QM Jackson Heights, Queens, NY",
"url": "https://www.google.com/maps/place/Arepa+Lady/data=...",
"google_id": "0x89c25fa9f985239f:0x862a2e490df0c1ee",
"cid": "9667590441405563374",
"place_id": "ChIJnyOF-alfwokR7sHwDUkuKoY",
"business_attributes": ["LGBTQ+ friendly"],
"description": "Brick-&-mortar outpost of a popular food cart known for South American cornmeal cakes.",
"about": {
"service_options": ["Has outdoor seating", "Offers delivery", "Offers takeout", "Serves dine-in"],
"offerings": ["Serves alcohol", "Serves beer", "Serves coffee", "Serves vegan dishes"],
"atmosphere": ["Casual", "Cozy", "Trendy"]
// ... more groups: highlights, popular_for, accessibility, amenities, crowd, planning, payments, children, parking
},
"photos_count": 956,
"images": [
"https://lh3.googleusercontent.com/gps-cs-s/APNQkAG...",
"https://lh3.googleusercontent.com/gps-cs-s/APNQkAE..."
// ... up to 20 image URLs
],
"review_summary": [
"A great place to visit with tasty food, friendly staff, and affordable pricing.",
"The food was good, however the price is a bit high considering the serving size"
],
"review_tags": { "arepas": 125, "sweet corn arepa": 44, "cheese arepa": 42, "plantains": 23, "cash only": 19 },
"people_also_search_for": [
{ "Arepas Burger": { "rating": 4.4, "rating_counts": 1137, "url": "https://www.google.com/maps/place/Arepas+Burger/data=..." } }
],
"current_status": "Open · Closes 10 PM",
"permanently_closed": false,
"temporarily_closed": false,
"open_time": [ { "Monday": "12–10 PM" }, { "Tuesday": "12–10 PM" } /* ... through Sunday */ ],
"popular_times_monday": { "12 PM": "27% busy", "5 PM": "73% busy", "6 PM": "73% busy" /* ... hourly */ }
// popular_times_tuesday … popular_times_sunday have the same hourly shape
}

Fields that don't apply to a given place come back empty (e.g. popular_times_* is empty for places without busyness data, price_range is empty for places with no price info, and reviews_distribution is empty for most places — Google has largely stopped exposing the per-star breakdown in its public place data, so it is returned on a best-effort basis only).

Tips

  • Use a specific location. A city (e.g. New York City) gives accurate, well-bounded results; a broad region (e.g. United States) is too large to cover well.
  • Tune maxCrawlPages to your needs. It applies per keyword and per URL (≈ value × 20 places each), not to the whole run. Start small to preview, then raise it for full coverage — higher values take longer and cost more.
  • Keywords vs URLs. Use keyword + location for area sweeps; use Maps URLs to target a specific view you already have.
  • Result counts vary slightly between runs — Google returns slightly different sets depending on the request, which is normal; the data for any given place stays consistent.
  • Schedule & integrate. Run it on a schedule and push results to Google Sheets, S3, webhooks, or your database via Apify integrations.

FAQ and support

As many as the area contains, up to your maxCrawlPages cap. The adaptive grid scans the whole location, so you are not limited to Google's usual ~120 results per single search.

Can I scrape a specific place or a Maps URL?

Yes. Paste Google Maps URLs into the urls field:

Can I look up a place by its Google Place ID?

Yes. Enter it in the keywords field with a place_id: prefix (the same ChIJ... ID you get from the Google Places API) and the Actor returns that exact place's full details — e.g. place_id:ChIJvx7i_BlawokRidb5WfdvqRM (this one opens Eataly in New York). You can look up any Place ID with Google's Place ID Finder.

Scraping publicly available data is generally legal, but how you use it matters — see the disclaimer below.

Our Actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our Actors, when used for ethical purposes by Apify users, are safe. However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

Support

Questions, issues, or need a custom feature? Reach out through the Actor's Issues tab on Apify and we'll help.