Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories

How to Scrape Google Maps for Local Business Leads

Turn any Google Maps search into a clean, exportable list of local businesses, with names, categories, addresses, ratings and coordinates, without writing code or touching the official API. Phone numbers and websites are the part to plan around: Google rarely prints them on the search results the scraper reads.

What you can pull from Google Maps

Google Maps is the single largest public directory of local businesses, and the search results alone tell you what each business is, where it is and how people rate it. The catch is that Maps shows you a few results at a time and gives you no built-in "export" button. A scraper walks the search results for you and returns structured rows you can drop straight into a CRM or spreadsheet.

Using the Google Maps Scraper, each business record typically includes:

  • name — the business name
  • category — primary listing category (e.g. "Dentist", "Plumber")
  • address — the street address as the results card shows it
  • phone — only when Google prints it on the results card, which is rare: in the actor's own check of 334 search rows, none had one
  • website — the same story, on 9 of those 334 rows
  • rating and reviewCount — average star rating and number of reviews; the count is missing on about one row in four
  • lat / lng — coordinates for mapping or routing
  • placeId — Google's hex feature ID, in the 0x…:0x… form rather than the ChIJ… place ID that Google's own API uses; cid carries the same place as a number, and either one de-dupes your rows

That is enough to build and rank a prospect list: category and location tell you who fits, and rating and review count tell you who to contact first. The phone number usually takes a second step. Open the placeUrl of the places you shortlist, or look them up with the Yelp Scraper, whose rows carry the phone Yelp holds for a business.

Step by step: run the scraper

You don't need a server, a proxy account, or a Google Cloud project. The whole thing runs in your browser on Apify's cloud.

  • 1. Open the actor. Go to the Google Maps Scraper page and click Try for free. You'll need a free Apify account.
  • 2. Enter your search query. Type what you'd type into Google Maps yourself — a service plus a location, like coffee shops in Austin TX or dentists Manchester UK. Be specific about the city or neighborhood; "dentists" alone is too broad to be useful for outreach.
  • 3. Set how many results you want. Pick a results limit per query. Start small (say 20-50) on your first run so you can confirm the output looks right before scaling up.
  • 4. Run it. Click Start. The actor loads the Maps results and collects each listing. Progress shows in the run log.
  • 5. Export. When the run finishes, open the Output / Dataset tab and download as CSV, Excel, or JSON. CSV imports cleanly into Google Sheets, Excel, HubSpot, Pipedrive, or any CRM.

If you want to target several areas at once, run the same service term across multiple city queries (one query per row) and combine the datasets afterward — that's how you build a regional prospect list instead of a single-city one.

A realistic input and output example

A minimal input for a local lead pull looks like this:

  • Search query: roofing contractors in Denver CO
  • Max results: 100

A single row in the resulting dataset would look roughly like:

  • name: Mile High Roofing
  • category: Roofing contractor
  • address: 1234 Example St
  • phone: null, the usual case
  • website: null
  • rating: 4.6   reviewCount: 211
  • lat / lng: 39.7392, -104.9903
  • placeId: 0x…:0x…

Multiply that by a hundred rows and you have a ranked prospect list. Sort by review count to find established businesses. Don't read an empty website as a business with no site, since Google leaves it off almost every card; check before you pitch someone a new one.

When and why to use this

Maps scraping fits any workflow that starts with "find local businesses that match a profile." Common uses:

  • Cold outreach lists for agencies, SaaS, and B2B services targeting a specific trade and metro.
  • Territory planning — pull every competitor or potential client in a radius using the lat/lng fields.
  • Market research — count how many businesses of a type exist in a city and how they rate.
  • Data enrichment — start with names, addresses and coordinates, then add phones and websites in a second step.

The leads are most valuable when you enrich them. Once you have websites, you can layer on reputation data — for example, pull a prospect's review history with the Trustpilot Reviews Scraper or Yelp businesses and reviews guide to gauge how they're perceived before you reach out. If your prospects are consumer brands, their Instagram profile data can tell you how active they are on social and whether they're a fit for the service you're selling.

How it compares to the official API

Versus the Google Places API. Google's official API is the "correct" way to query place data programmatically, but it's built for developers: you create a Google Cloud project, manage an API key with billing attached, and write code to page through results and assemble the fields. For a non-developer who just needs a CSV of leads, that's a lot of overhead. The scraper trades that for a fill-in-the-box interface and a download button.

On freshness. Every row is read from Google Maps during your run, so it is as current as the listing, and it covers exactly the search you typed.

On cost and risk. This actor runs keyless, with no Google API key and no proxy account to configure. You pay per result, so results that don't come back aren't charged; judge it on a small test run before you commit to a large pull.

On responsible use. Treat the output as business contact data for legitimate outreach. Respect anti-spam rules (CAN-SPAM, GDPR, local marketing regulations) and don't harvest or contact personal data you have no lawful basis to use. A scraper makes collection easy; staying compliant is still on you.

FAQ

Do I need a Google API key? No. The actor is keyless — you don't create a Google Cloud project or manage billing with Google. You only need a free Apify account.

Can I scrape multiple cities or categories in one go? Yes. Run the actor with several queries (for example the same service across a list of cities) and merge the datasets afterward. Keep each query specific so results stay relevant.

Will I get email addresses? No. Google Maps doesn't show email, and the search rows rarely carry a phone or website either. Contact details are a separate step: open the placeUrl of the places you shortlist, then find the email on the business's own site.

How fresh is the data? It reflects what's on Google Maps at the time of the run — there's no cached middle layer — so it's as current as the public listing.

What does it cost? You pay per result, so results that don't come back aren't charged, and the Google Maps Scraper page shows the current price. Always do a small test run first to confirm the output matches what you expect before scaling up.

← All web scraping guides