Google Maps Places Scraper

live$0.0015/placeSignal Detection

Last updated November 9, 2026

Search Google Maps and get one row per place: name, phone, website, address, coordinates, categories, rating, review count, hours, and attributes. Look up known place IDs too. Repeats and places outside your country filter are free.

Features

  • One row per place with phone, website, address, coordinates, rating, hours, and attributes.
  • Search by term and location, or look up known place IDs and Maps URLs.
  • Repeats and places outside your country filter are not charged.
  • Each search ends with a free summary row, so an empty search says why.
  • Pay per event: Place row at $0.0015.

Input

search_termsarrayoptional

What to search on Google Maps, such as dentist in Austin, TX. One search per entry. Each search returns up to about 120 to 200 places, so split a large area into neighborhoods.

locationsarrayoptional

Optional. Each search term is run once per location, as "term in location". Leave empty when your searches already name the place.

placesarrayoptional

Optional. Look up places you already know: a ChIJ place ID, or a Google Maps place URL. Each costs one place row.

max_places_per_searchstringoptional

Whole number from 1 to 500. Default 20. Google stops most searches between 120 and 200 places.

only_countrystringoptional

Optional 2 letter country code, such as DE. Places in other countries are dropped and not charged. A search for Berlin can otherwise return Berlin, New Jersey, on later pages.

dedupestringoptional

yes or no. Default yes: a place found twice in a run is returned and charged once.

languagestringoptional

Language code for names and categories, such as en or de. Default en.

results_countrystringoptional

2 letter code Google uses to tailor results. Default us. It does not limit results to that country; use only_country for that.

max_charge_usdstringoptional

Optional. The run stops before a charge that would pass this amount. Summary rows are always returned.

Output schema

json
{
  "row_type": "string",
  "input": "string",
  "rank": "integer",
  "name": "string",
  "place_id": "string",
  "cid": "string",
  "feature_id": "string",
  "google_maps_url": "string",
  "website": "string",
  "website_domain": "string",
  "phone": "string",
  "phone_international": "string",
  "address": "string",
  "street": "string",
  "neighborhood": "string",
  "city": "string",
  "postal_code": "string",
  "state": "string",
  "country_code": "string",
  "latitude": "number",
  "longitude": "number",
  "time_zone": "string",
  "primary_category": "string",
  "categories": "array",
  "rating": "number",
  "review_count": "integer",
  "reviews_url": "string",
  "description": "string",
  "attributes": "array",
  "hours_text": "string",
  "open_status_text": "string",
  "photo_url": "string",
  "places_found": "integer",
  "places_returned": "integer",
  "places_skipped": "integer",
  "pages_read": "integer",
  "row_status": "string",
  "error_reason": "string",
  "billable_events_json": "string",
  "scraped_at": "string"
}

Pricing

$0.0015per place
EventFree plan price
Place row$0.0015
Actor Start$0.004

Pay per event on the Apify platform. Paid Apify plans pay less per event. No subscription, no seat license.

On the Apify free plan the actor stops at $1.50 of charges a month, about 1,000 places. Any paid Apify plan removes the cap.

Limits

  • Google ends most searches between 120 and 200 places. For a larger area, split it into neighborhoods or nearby cities.
  • No popular times, review text, menus, or photos beyond one. Popular times were absent on all 4 busy places tested with this route, logged out.
  • No price level: the field was empty on the places tested.
  • No owner name, owner account, or review author data. No emails: this actor does not read websites.
  • A service area business can have no address. Its row has an empty country_code, and only_country keeps it.
  • A search that keeps no place ends with a free summary row: after 1 page before the run has returned any place, or 3 pages after. A place only found on a later page can be missed by a narrow only_country.
  • Result order can change between runs, because the proxy pool mixes exit countries.
  • results_country tailors results but does not limit them. Use only_country to limit them.
  • Google's terms restrict automated collection and bulk export of Maps content. Read them and decide what your use allows.

Available on