Google Maps Scraper - Business Leads, Phones & Websites avatar

Google Maps Scraper - Business Leads, Phones & Websites

Under maintenance

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Google Maps Scraper - Business Leads, Phones & Websites

Google Maps Scraper - Business Leads, Phones & Websites

Under maintenance

Scrape Google Maps business listings at scale — names, addresses, phones, websites, ratings, reviews, popular times, menus & prices, hotel and ticket data & 71 fields. Search by keyword + location, paste Maps URLs, or look up a Place ID. Fast, browserless, no ~120-result limit.

Pricing

from $2.00 / 1,000 results

Rating

4.8

(31)

Developer

Zebu Data

Zebu Data

Maintained by Community

Actor stats

73

Bookmarked

472

Total users

28

Monthly active users

14 hours 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 71 fields per place — name, full address, phone, website, rating, star-rating breakdown, popular times, price, menus, hotel details, ticket prices, 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.
  • 📊 71 data fields per place — contact details, ratings and star-rating breakdown, popular times (including live busyness), price ranges, menus and services with prices, hotel stars and amenities, ticket prices for attractions, top reviews, 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 place71~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 (71 in total). Fields marked in italics apply only to certain kinds of places and are empty for others. In the Output tab, the Overview shows every field ordered by importance — these category-specific fields come last, with the kinds of places they apply to in the column name.

FieldTypeDescription
titlestringBusiness name
category / categoriesstring / arrayPrimary category and all categories
category_idsarrayLanguage-independent category IDs (e.g. pizza_restaurant) — handy for filtering
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)
reviews_urlstringLink to the place's reviews page
top_reviewsarrayUp to 8 reviews from the place page: author, rating, date, text, owner response
price_range / price_breakdownstring / objectPrice range and its breakdown
full_addressstringFull formatted address
neighborhood / street_address / city / zipcode / state / countrystringAddress components
country_code / time_zonestringISO country code and time zone (e.g. US, America/New_York)
latitude / longitudenumberCoordinates
located_in / floorstringThe mall, airport or building the place is in, and its floor — places inside another place
phone / phone_internationalstringPhone (local format and E.164)
websitestringBusiness website
plus_code / plus_code_urlstringGoogle Plus Code
place_id / cid / google_id / kgmidstringGoogle place identifiers (kgmid = Knowledge Graph ID)
aboutobjectService options, highlights, accessibility, amenities, atmosphere, payments, etc.
business_attributesarrayOwner attributes (e.g. "Identifies as women-owned")
description / owner_descriptionstringGoogle's short description, and the business's own "From the business" text
review_summary / review_tagsarray / objectHighlighted review snippets and keyword tags with counts
people_also_search_forarrayRelated places
open_timearrayOpening hours per day
more_hoursobjectExtra schedules such as delivery, takeout or happy hours — mostly restaurants
popular_times_monday … popular_times_sundayobjectTypical hourly busyness per day
popular_times_liveobjectLive busyness at scrape time, when Google has live data
typical_time_spentstringHow long people typically stay (e.g. "People typically spend 20 min to 2 hr here")
current_status / permanently_closed / temporarily_closedstring / booleanOpen/closed status
photos_count / imagesnumber / arrayPhoto count and image URLs
owner_updatesarrayPosts from the business: text, date, button
menu / menu_urlarray / stringMenu items or services with prices, and the menu page link — restaurants, salons, repair services…
order_and_booking_linksarray"Order online" / "Book online" buttons and partner links — restaurants, salons…
hotel_stars / hotel_amenities / hotel_check_in / hotel_check_outnumber / object / stringHotel class, amenities (available or not), check-in and check-out time — hotels only
ticket_offersarrayTicket prices from the official site and resellers, one offer per provider — attractions & museums
tour_offersarrayTours and activities with price and rating — attractions & museums
places_insidearrayShops and facilities inside the place: name, category, rating, floor — malls, airports, museums…

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": "place_id:ChIJnyOF-alfwokR7sHwDUkuKoY", // the keyword, URL or place_id you searched
"title": "Arepa Lady",
"category": "Colombian restaurant",
"categories": ["Colombian restaurant", "Restaurant"],
"category_ids": ["colombian_restaurant", "restaurant"],
"claimed": true,
"rating": 4.6,
"review_count": 1426,
"reviews_distribution": {"1_star": 57, "2_star": 15, "3_star": 75, "4_star": 217, "5_star": 1062},
"reviews_url": "https://search.google.com/local/reviews?placeid=ChIJnyOF-alfwokR7sHwDU...",
"price_range": "$20–30",
"price_range_votes": 36,
"price_breakdown": {"$10–20": "35%", "$20–30": "42%", "$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",
"country_code": "US",
"latitude": 40.7494972,
"longitude": -73.8882711,
"time_zone": "America/New_York",
"located_in": "", // only for places inside a mall, airport or building, e.g. "Dubai Mall"
"floor": "", // e.g. "L2" — only together with located_in
"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",
"kgmid": "/g/1q67g1mll",
"business_attributes": ["LGBTQ+ friendly"],
"description": "Brick-&-mortar outpost of a popular food cart known for turning out South American cornmeal cakes.",
"owner_description": "", // the business's own "From the business" text, when the owner wrote one
"about": {
"service_options": ["Has outdoor seating", "Has no-contact delivery", "Offers delivery", "Offers takeout"],
"highlights": ["Has fast service", "Serves local specialty"],
"popular_for": ["Popular for breakfast", "Popular for lunch", "Popular for dinner", "Good for solo dining"]
// ... more groups: accessibility, offerings, dining_options, amenities, atmosphere, crowd, planning, payments
},
"photos_count": 1006,
"images": [
"https://lh3.googleusercontent.com/gps-cs-s/ANWiy9SJneJpzTTXB...",
// ... up to 20 image URLs
],
"review_summary": ["Small menu, prices were moderate, food was delicious and the service was decent", "A great place to visit with tasty food, friendly staff, and affordable pricing."],
"review_tags": {"arepas": 127, "cheese arepa": 34, "outdoor seating": 3, "Arepa de Choclo Con Carne Desmechada": 26, "arepa rellena": 14},
"top_reviews": [
{ "author": "Carol Tsang", "rating": 4, "date": "2026-02-07", "text": "We came on a Friday night for dinner. The arepas were nice fresh and ...", "owner_response": "" }
// ... up to 8 reviews shown on the place page
],
"people_also_search_for": [
{ "Arepas Cafe": { "rating": 4.5, "rating_counts": 1901, "url": "https://www.google.com/maps/place/...data=..." } }
],
"current_status": "Closed · Opens 11 AM",
"permanently_closed": false,
"temporarily_closed": false,
"open_time": [ {"Sunday": "11 AM–10 PM"}, {"Monday": "12–10 PM"} /* ... through Sunday */ ],
"more_hours": {}, // restaurants: e.g. { "Delivery": [ { "Monday": "12–9:30 PM" }, ... ], "Happy hours": [...] }
"popular_times_monday": {"12 PM": "26% busy", "1 PM": "34% busy", "2 PM": "44% busy" /* ... hourly */ },
// popular_times_tuesday … popular_times_sunday have the same hourly shape
"popular_times_live": {}, // live busyness at scrape time, when Google has it: { "status": "A little busy", "busy_percent": 57 }
"typical_time_spent": "People typically spend 20 min to 2 hr here",
"owner_updates": [], // posts from the business: [ { "text": "...", "date": "2026-10-16", "button_text": "Call now", "button_url": "tel:+1..." } ]
"menu": [ // restaurants, salons, repair services…: menu items or services, price when listed
{ "section": "Arepa", "name": "Arepa De Chocolo", "description": "", "price": "$10.50" },
{ "section": "Arepa", "name": "Arepa De Queso", "description": "", "price": "$10.50" },
// ...
],
"menu_url": "",
"order_and_booking_links": [
{ "label": "Order online", "url": "https://www.google.com/searchviewer/..." }
],
"hotel_stars": "", // hotels only (see the hotel example below)
"hotel_amenities": {}, // hotels only
"hotel_check_in": "", // hotels only
"hotel_check_out": "", // hotels only
"ticket_offers": [], // attractions & museums (see the attraction example below)
"tour_offers": [], // attractions & museums
"places_inside": [] // malls, airports, museums…: shops and facilities inside the place
}

Hotels and attractions also fill their own fields (real data, trimmed):

{
"title": "Holiday Inn Brooklyn Downtown by IHG",
"hotel_stars": 3,
"hotel_amenities": { "Free Wi-Fi": true, "Paid breakfast": true, "Paid parking": true, "Accessible": true, "Indoor pool": true, "Air-conditioned": true /* ... */ },
"hotel_check_in": "3:00 PM",
"hotel_check_out": "11:00 AM"
}
{
"title": "Tokyo Tower",
"typical_time_spent": "People typically spend 45 min to 2.5 hr here",
"popular_times_live": { "status": "A little busy", "busy_percent": 57 },
"ticket_offers": [
{ "provider": "Tokyo Tower", "title": "東京タワー メインデッキ 150m", "price": "$9.49", "official": true, "url": "https://ticket.tokyotower.co.jp/" },
{ "provider": "Klook", "title": "Tokyo Tower Main Deck (150m) Admission Ticket", "price": "$9.39", "official": false, "url": "https://www.klook.com/en-US/activity/4911-..." }
// ... one offer per provider (Trip.com, KKday, GetYourGuide, ...)
],
"tour_offers": [
{ "provider": "Tourzd", "title": "Tokyo Tower", "price": "$57", "rating": 4.9, "reviews": 43076, "url": "https://www.tourzd.com/..." }
],
"places_inside": [
{ "name": "Tokyo Tower Main Deck", "category": "Observation deck", "rating": 4.3, "reviews": 204, "floor": "Floor 1", "google_id": "0x60188b00226ff6e3:0xd342750c03c422d" }
]
}

Fields that don't apply to a given place come back empty — for example popular_times_* for places without busyness data, price_range for places with no price info, and category-specific fields such as menu (restaurants & services), hotel_* (hotels) or ticket_offers (attractions).

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.