Google Maps Scraper — Local Business Leads & Data, No API Key avatar

Google Maps Scraper — Local Business Leads & Data, No API Key

Pricing

$1.50 / 1,000 business leads

Go to Apify Store
Google Maps Scraper — Local Business Leads & Data, No API Key

Google Maps Scraper — Local Business Leads & Data, No API Key

Scrape Google Maps business listings from a search like "restaurants in Berlin" — name, category, rating, reviews, address, hours, coordinates, Maps URL. No API key, transparent pay-per-result. (Contact enrichment — phone, website, emails, socials — launching ~July.)

Pricing

$1.50 / 1,000 business leads

Rating

0.0

(0)

Developer

Tomas Lebedinskas

Tomas Lebedinskas

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

5 days ago

Last modified

Share

Google Maps Business Leads Scraper — No API Key

Turn any Google Maps search into a clean, structured list of local business leads — no API key, no billing setup, no quota. Type a search like restaurants in Berlin or dentists, Austin TX and get one tidy JSON row per business: name, category, star rating, review count, address, open/closed status, coordinates, and the canonical Google Maps URL. Export to CSV, Excel, or Google Sheets in one click. Flat $1.50 per 1,000 leads.

Part of the Godberry local-data suite — pair it with the Google Reviews Scraper, the Yelp Scraper, and the Google Play Reviews Scraper.

What does this Actor do?

It reads the public Google Maps search results for the queries you enter and returns every business it finds as one flat data row — built for local-business lead generation and market research, not for one-off place lookups. No Google Cloud account, no Places API key, no per-call metering: you paste plain-English searches (or Maps /search URLs), choose how many results you want per query, and run.

Everything is read straight from the search-results cards in a single page per query — which is what keeps it fast and cheap. That means the default run gives you the card-level fields below; it does not open each place for phone or website (an optional contact-enrichment add-on for that is in setup — see Coming next). Each query returns up to ~120 businesses, which is Google's own cap for a single Maps search.

What you get (per business)

FieldWhat it is
nameBusiness name
categoryPrimary Google category (e.g. Fine dining restaurant)
ratingAverage star rating (e.g. 4.8) — null if Google shows no rating on the card
reviewCountNumber of Google reviews — null if none is shown
addressStreet address as shown on the card
hoursOpen/closed status line (e.g. Closed · Opens 12 PM) — a status snapshot, not a full weekly schedule
latitude / longitudeCoordinates parsed from the Maps URL (null if not present)
placeUrlCanonical Google Maps link to the listing
searchQueryThe query that surfaced this business (so multi-search runs stay traceable)
scrapedAtISO timestamp of when the row was scraped

Flat JSON — one click to CSV / Excel / Google Sheets, or pull it straight from the dataset API.

Honest about coverage: fields come from what Google renders on the results card, so a few (rating, reviewCount, latitude/longitude) can be null for businesses where Google doesn't show them. Richness varies by area and category.

Use cases

  • Build a prospect list for outreach. Pull every plumbers near Manchester or law firms in Toronto into a ready-to-import lead list for cold email or calls.
  • Map your local competition. Get every competitor in an area with their ratings and review counts to benchmark your own reputation.
  • Plan territory or franchise expansion. Pull all businesses of a type across multiple cities in one run and compare density and quality.
  • Enrich your CRM. Anchor existing records to the canonical Maps listing, category, and exact coordinates.
  • Source places for review monitoring. Find businesses, then feed their placeUrl into the Google Reviews Scraper to pull full reviews.

Input

Paste this into the JSON editor to run it as-is:

{
"searchQueries": [
"restaurants in Berlin",
"dentists, Austin TX"
],
"maxResultsPerSearch": 50,
"language": "en",
"countryCode": "us",
"proxyConfiguration": { "useApifyProxy": true }
}
FieldRequiredDescription
searchQueriesOne search per line — natural Maps searches (coffee shops in Lisbon) or a pasted /maps/search URL.
maxResultsPerSearchCap per query (1–120; Google caps a single search at ~120). Default 50.
languageUI language code (en, de, fr…). Default en.
countryCodeTwo-letter geo-bias country (us, de, gb…). Default us.
proxyConfigurationDefaults to Apify's datacenter pool, which is included on paid plans and costs nothing per GB. Tip: match the proxy country to the area you're scraping. If a territory starts getting blocked, switch Residential on — it works, but it's billed per GB.

Output (one business)

{
"searchQuery": "restaurants in Berlin",
"name": "Restaurant Facil",
"category": "Fine dining restaurant",
"rating": 4.8,
"reviewCount": 1234,
"address": "Potsdamer Str. 3",
"latitude": 52.5096,
"longitude": 13.3737,
"hours": "Closed · Opens 12 PM",
"placeUrl": "https://www.google.com/maps/place/...",
"scrapedAt": "2026-06-18T10:24:00.000Z"
}

How it works

  1. Enter searches — one query per line, or paste a Maps /search URL.
  2. Set the cap — choose how many businesses per query (up to ~120).
  3. Run — the Actor reads the public Maps results behind an Apify proxy.
  4. Export — download CSV / Excel / JSON, or pull from the dataset API.

Pricing

Pay-per-event: a flat $0.0015 per business returned — that's $1.50 per 1,000 leads. You pay only for businesses actually delivered. No subscription, no per-run base fee, and no maze of separate place / details / contact / lead charges.

You scrapeYou pay
100 leads$0.15
1,000 leads$1.50
10,000 leads$15.00

Apify platform usage (compute, and proxy if you switch to Residential) is billed separately by Apify at their standard rates, the same as for any Actor. The default datacenter proxy is included on paid plans. If a run finds no businesses, you are not charged for results.

FAQ

Do I need a Google API key or a Google Cloud account? No. Google's Places API requires a billing-enabled key and meters every call. This Actor reads the public Maps search results directly — no key, no quota, no setup.

What exactly do I get — does it include phone and website? The default run returns the card-level fields listed above (name, category, rating, review count, address, open/closed status, coordinates, Maps URL). It does not open each place, so phone and website are not in the base output. An optional contact-enrichment add-on that adds those is in setup — see Coming next.

Is scraping Google Maps legal? What about GDPR? By default this Actor collects only public business-listing data (names, categories, ratings, addresses, status, coordinates) — not personal data about private individuals. Note that the optional contact-enrichment add-on (when it ships) extracts emails and phone numbers, which can be personal data; you are responsible for using any output lawfully, including GDPR/CCPA obligations for your outreach. The default output stays business-level by design. See our privacy policy.

How many results can I get per search? Google itself caps a single Maps search at roughly 120 results, so that's the ceiling per query. To cover a dense category fully, split by city or neighbourhood (e.g. one query per district) and the per-query counts add up across the run.

A search returned fewer businesses than I expected — why? Two common reasons: (1) the area genuinely has fewer listings for that category, or (2) you hit Google's ~120-per-search cap. Narrow the query by location to pull a fuller set. Empty or thin runs are usually a too-broad or too-niche query — not a failure — and you're not charged when nothing is returned.

Does Google block scrapers? How do you stay reliable? Google fingerprints headless browsers, so this Actor runs real Chrome with pre-set consent cookies and fresh-session retries when it hits a block. It runs behind Apify's datacenter proxy by default — we tested that properly rather than assuming, and it succeeded on 5 of 5 territories (Berlin, Austin, Manchester, Rome, Sydney) with results identical to residential. For best results, set the proxy country to match the area you're targeting; if a territory does start getting blocked, switch Residential on in the proxy input. It's built on the same selector-hardened Google-Maps engine as our Google Reviews Scraper.

How fresh is the data? Every row reflects what Google Maps showed at the moment of the run (see the scrapedAt timestamp on each record). Re-run any time for a fresh pull.

What regions work? Any Google Maps locale works — set language and countryCode to match (and ideally the proxy country too). Coverage and field richness depend on what Google shows for that area.

What output formats are supported? JSON, CSV, Excel, and HTML table via the Apify dataset, plus the dataset API for programmatic pulls.

Coming next

An optional contact-enrichment add-on (phone, website, email addresses, social profiles, and a has-website / no-website filter for agency prospecting) is in final setup. When it ships it will be off by default and add a separate per-business charge — so today's flat per-lead price stays exactly as described above. Want early access? Email us.

Maintenance & support

  • Actively maintained. This Actor is built and run by Godberry Studios on the same selector-hardened Google-Maps engine as our other live scrapers, using stable-attribute selectors and fresh-session retries so routine Google layout tweaks don't break extraction.
  • Responsive support. Questions, a missing field, or a region that isn't behaving? Email hello@godberrystudios.com — we aim to reply within one business day.
  • More from Godberry Studios: Google Reviews Scraper · Yelp Scraper · Google Play Reviews Scraper