Google Maps Scraper - Phones, Websites & Ratings avatar

Google Maps Scraper - Phones, Websites & Ratings

Pricing

from $1.50 / 1,000 places

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

Google Maps Scraper - Phones, Websites & Ratings

Extract businesses from Google Maps: name, address, phone, website, rating, review count, opening hours, categories, coordinates and place ID. Big areas are split automatically to get past the 120-results limit. Free filters, no API key.

Pricing

from $1.50 / 1,000 places

Rating

0.0

(0)

Developer

Dataspace

Dataspace

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Google Maps Scraper

Extract businesses from Google Maps in minutes: name, category, address (street, city, postal code, state, country), phone, website, rating, review count, opening hours, coordinates, place ID and more. Search any city, region or country — big areas are split automatically, so you are not stuck at the ~120 places Google shows for one search.

  • ✅ Gets past the 120-results limit — enter a location and the area is searched piece by piece, center first
  • ✅ Free filters — minimum rating, only places with / without a website, categories, skip closed places
  • ✅ Lead-friendly fields — split address, international + plain phone number, website domain, "unclaimed on Google" flag
  • ✅ Fast and light — no browser, results stream in from the first second
  • ✅ No duplicates — a place found by several search terms is saved and charged once
  • ✅ Same input names as the popular Google Maps scrapers — switching takes a minute
  • ✅ $1.50 per 1,000 places, platform usage included

What data do you get?

FieldExample
title, categoryName, categoriesMozart's Coffee Roasters · Coffee shop · [Coffee shop, Bakery, Cafe, …]
address, street, city, postalCode, state, countryCode, neighborhood3825 Lake Austin Blvd · Austin · 78703 · Texas · US
phone, phoneUnformatted+1 512-477-2900 · +15124772900
website, domainhttps://mozartscoffee.com/ · mozartscoffee.com
totalScore, reviewsCount4.5 · 10946
priceLevel$10–20 — typical price per person, when Google shows one
openingHoursMonday 7 AM–12 AM, …
locationlat 30.2955, lng -97.7840
permanentlyClosed, temporarilyClosedfalse · false
claimThisBusinesstrue when the owner has not claimed the listing on Google — a great sales signal
description, additionalInfoShort Google description; accessibility, service options, amenities
reserveTableUrlBooking link (restaurants), when Google shows one
imageUrl, imagesCountMain photo and number of photos
placeId, cid, fid, kgmid, urlStable IDs and a Google Maps link for every place
searchString, rank, scrapedAtWhich search found it, its position, and when

The dataset has three ready-made views: Places, Leads (contact info) and All fields. Export to Excel, CSV, JSON, HTML or XML with one click.

How to use

  1. Enter one or more search terms, e.g. dentist, coffee shop, car repair.
  2. Enter a location, e.g. Austin, TX, USA, Berlin or Ontario, Canada.
  3. Set Max places per search term and, if you want, the free filters.
  4. Click Start. Places appear in the table as they are found.

Example input

{
"searchStringsArray": ["dentist", "orthodontist"],
"locationQuery": "Chicago, IL, USA",
"maxCrawledPlacesPerSearch": 500,
"language": "en",
"placeMinimumStars": "four",
"website": "allPlaces",
"skipClosedPlaces": true
}

Example output (real result, shortened)

{
"title": "Mozart's Coffee Roasters",
"categoryName": "Coffee shop",
"categories": ["Coffee shop", "Bakery", "Cafe", "Event venue", "Tourist attraction"],
"address": "3825 Lake Austin Blvd, Austin, TX 78703, United States",
"street": "3825 Lake Austin Blvd",
"city": "Austin",
"postalCode": "78703",
"state": "Texas",
"countryCode": "US",
"phone": "+1 512-477-2900",
"phoneUnformatted": "+15124772900",
"website": "https://mozartscoffee.com/",
"domain": "mozartscoffee.com",
"location": { "lat": 30.2954696, "lng": -97.7839512 },
"totalScore": 4.5,
"reviewsCount": 10946,
"priceLevel": null,
"permanentlyClosed": false,
"temporarilyClosed": false,
"claimThisBusiness": false,
"openingHours": [{ "day": "Monday", "hours": "7 AM–12 AM" }, { "day": "Tuesday", "hours": "7 AM–12 AM" }],
"additionalInfo": { "Accessibility": ["Wheelchair-accessible car park", "Wheelchair-accessible entrance"] },
"placeId": "ChIJTWZhRFW1RIYRrdGa7DPzT7w",
"cid": "13569331606629044653",
"url": "https://www.google.com/maps/search/?api=1&query=Mozart%27s+Coffee+Roasters&query_place_id=ChIJTWZhRFW1RIYRrdGa7DPzT7w",
"searchString": "coffee shop in Austin, TX, USA",
"rank": 6
}

Getting more than 120 places

Google Maps shows at most about 120 places for one search, however far you scroll. When you fill in Location, this scraper looks up the area on Google Maps and, whenever a part of the map still has more places, splits it into four smaller parts and searches each one. It starts in the center and works outwards, so a small limit gives you the most central places and a large limit covers the whole area.

If you put the place into the search term instead (pizza in Chicago) or use a Google Maps URL, you get the ~120 places Google shows for that search.

Free filters

FilterWhat it does
Only these categoriesKeeps places whose Google category contains one of your words, e.g. dentist
Minimum rating2 to 4.5 stars
WebsiteAll places, only with a website, or only without a website (prospects for web agencies)
Skip closed placesLeaves out permanently and temporarily closed places

Filters cost nothing extra: you only pay for places that are saved.

Pricing

Pay per result: $1.50 per 1,000 places, plus a tiny start fee of $0.00005 per run. Platform usage (compute and proxies) is included — you are not charged anything else. Filters are free.

ExampleCost
200 dentists in one city$0.30
5,000 restaurants across a state$7.50
20,000 leads per month$30

Set a maximum cost for a run and the Actor stops when it is reached.

Use it via API

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("dataspace/google-maps-scraper").call(run_input={
"searchStringsArray": ["plumber"],
"locationQuery": "Manchester, UK",
"maxCrawledPlacesPerSearch": 300,
})
for place in client.dataset(run["defaultDatasetId"]).iterate_items():
print(place["title"], place["phone"], place["website"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('dataspace/google-maps-scraper').call({
searchStringsArray: ['plumber'],
locationQuery: 'Manchester, UK',
maxCrawledPlacesPerSearch: 300,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, 'places');

Integrations and AI agents

  • Google Sheets, Excel, CSV — export from the dataset or connect the Google Sheets integration.
  • Make, Zapier, n8n, webhooks — start runs and receive results in your workflows.
  • AI agents (MCP) — add this Actor as a tool through the Apify MCP server and let your agent search Google Maps.
  • Schedules — run it daily or weekly to track new businesses in an area.

Switching from another Google Maps scraper

The main input fields have the same names as in the most popular Google Maps scrapers: searchStringsArray, locationQuery, maxCrawledPlacesPerSearch, language, categoryFilterWords, placeMinimumStars, website, skipClosedPlaces. Most existing inputs work as they are, and output fields such as title, totalScore, reviewsCount, placeId, phone, website, street, city and postalCode use familiar names too.

Tips

  • Use specific terms: vegan restaurant returns more relevant places than food.
  • Several related terms (dentist, dental clinic, orthodontist) find more businesses; duplicates are removed automatically.
  • For a whole country, use one run per region or state — results stay focused and you can follow progress.
  • Set Language to get categories and opening hours in that language.

FAQ

Is it legal to scrape Google Maps? The Actor only collects publicly visible business information (names, addresses, phone numbers, websites, ratings) without logging in and without bypassing any CAPTCHA. It does not collect reviews, reviewer names, owner names or e-mail addresses. You are responsible for using the data in line with laws such as GDPR and with Google's terms — see the Disclaimer.

Why did I get fewer places than my limit? Google has fewer matching places in that area, or your filters removed some. Try more search terms or a larger area.

Does it get e-mails or reviews? No. It returns business data that Google Maps shows publicly. It does not collect reviews or personal data.

How fast is it? Usually a few hundred places per minute, depending on the area and Google's response time.

Missing a feature? Open an issue on the Issues tab — feedback is welcome.

More scrapers by dataspace

Like it? If this Actor saves you time, please leave a review on the Reviews tab — it helps others find it. Found a problem? Open an issue and it will be fixed quickly.

Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by or sponsored by Google LLC. Google and Google Maps are trademarks of Google LLC and are mentioned only to describe the publicly available data source. It collects only publicly visible business information from Google Maps — without logging in, without solving CAPTCHAs and without collecting reviews, reviewer names, owner names or e-mail addresses. You are responsible for making sure that your use of the data complies with applicable laws (including data protection laws such as GDPR and anti-spam rules for marketing) and with Google's terms.