B2B Google Maps Lead Scraper avatar

B2B Google Maps Lead Scraper

Pricing

from $0.01 / 1,000 results

Go to Apify Store
B2B Google Maps Lead Scraper

B2B Google Maps Lead Scraper

Scrape B2B leads from Google Maps with phone, email, social links, ratings, reviews, and coordinates. Network-interception powered, proxy-ready, streaming output.

Pricing

from $0.01 / 1,000 results

Rating

0.0

(0)

Developer

Riad Hossain

Riad Hossain

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Categories

Share

Extract verified B2B leads from Google Maps — business name, phone, website, emails, social profiles, ratings, reviews, and GPS coordinates — in a single high-throughput Actor. Network-interception first, with graceful DOM fallback when Google changes its UI.

What you get

For every business matching your query, the Actor returns a structured record:

FieldAlways returnedNotes
business_nameFull business name
categoryPrimary Google Maps category (Dental clinic, Plumber, etc.)
addressFull + parsed street / city / state / postal_code / country
phoneDirect phone line when public
websiteBusiness homepage URL
rating & review_countGoogle Maps aggregate
location.lat / lngGPS coordinates
place_idGoogle Maps ChIJ... identifier — useful for de-duplication
emailsextract_depth: fullGeneric (info@, contact@) and personal inboxes, classified
social_linksextract_depth: fullFacebook, LinkedIn, Instagram, Twitter

All results are streamed directly to the dataset — no in-memory batching, so you can pull 5,000 leads in one run without exhausting RAM.

Why this scraper is faster than DOM-only scrapers

Google Maps renders hundreds of DOM nodes per card, and Google rewrites the DOM tree on every UI redesign — selectors break weekly. Instead of fighting the DOM, this Actor intercepts the internal /maps/rpc/ JSON endpoints that Google itself uses to populate the page. The result:

  • 3–5× faster than selector-based scrapers on the same query
  • Resistant to UI redesigns — the RPC schema is far more stable than the DOM
  • Falls back to DOM parsing automatically when interception yields nothing, so the Actor keeps working even if Google changes its protocol

How much does it cost to scrape Google Maps?

Pricing is pay-per-event — you only pay for what you scrape.

EventFree tierPaid tierTriggered when
place-scraped$0.004$0.003One business card is fully scraped
contact-scraped$0.002$0.002Phone or website is present on the listing
lead-enriched$0.10$0.005Email or social link extracted (only with extract_depth: full)

Typical budgets:

  • 1,000 places, basic depth → ~$4
  • 1,000 places, full enrichment with emails → ~$5–$10 (depending on how many listings publish emails)
  • 10,000 places, basic depth → ~$40

Apify also bills a flat apify-default-dataset-item event (~$0.0001) per row written to the dataset.

Tutorial: scrape 100 dental clinics in Houston

  1. Open the Actor → click Try for free (Apify gives you $5 monthly free credit).
  2. Fill in the input form:
    • Search queries: ["dental clinics"]
    • Location: Houston TX
    • Max results: 100
    • Extract depth: basic (fast) or full (adds emails + socials)
    • Enrichment: toggle extract_emails / extract_socials if you picked full
    • Proxy: leave default (Apify's residential proxy is used automatically)
  3. Click Start and watch the live log + dataset fill in real time.
  4. Export the dataset as JSON, CSV, Excel, or HTML table.

Sample input (JSON)

{
"search_queries": ["dental clinics", "orthodontists"],
"location": "Houston TX",
"max_results": 100,
"extract_depth": "full",
"enrichment": { "extract_emails": true, "extract_socials": true },
"filters": { "min_rating": 4.0, "min_reviews": 20, "has_website": true }
}

Sample output (one lead)

{
"place_id": "ChIJh2YNot3AQiYRvK_QxGTBm0Q",
"business_name": "Bright Smile Dental Houston",
"category": "Dental clinic",
"address": {
"full": "7700 Main St, Houston, TX 77025, USA",
"street": "7700 Main St",
"city": "Houston",
"state": "TX",
"postal_code": "77025",
"country": "USA"
},
"contact": {
"phone": "+1-713-555-0142",
"website": "https://www.brightsmilehouston.com",
"emails": [
{ "email": "hello@brightsmilehouston.com", "type": "generic" }
],
"social_links": {
"facebook": "https://facebook.com/brightsmilehouston",
"instagram": "https://instagram.com/brightsmilehouston"
}
},
"metrics": { "rating": 4.7, "review_count": 213 },
"location": { "lat": 29.7189, "lng": -95.3912 },
"scraped_at": "2026-08-28T12:04:33.401Z"
}

Tips for best results

  • Always enable Apify's proxy (proxy_config.use_apify_proxy: true) for production runs. Google rate-limits unproxied Maps scraping within ~50 results.
  • Use extract_depth: 'full' only when you actually need emails — it adds 1–3 seconds per lead because the Actor visits each business's homepage.
  • Batch by city, not by state. ["dental clinics"] + "Houston TX" gives you ~500 unique leads; ["dental clinics"] + "Texas" caps at the same ~500 because Google de-duplicates by proximity.
  • Add filters to cut noise: min_rating: 4.0 and min_reviews: 20 will drop brand-new and one-star businesses from your dataset.
  • For >1,000 leads, split into multiple queries (by neighborhood or category) and run them as separate Apify tasks.

FAQ

Will Google block me?

Apify's residential proxy rotates IPs on every request, so blocking is rare. If a particular query returns zero results, the Actor automatically retries once with a different proxy session.

Can I scrape reviews too?

Not in this version — only the aggregate rating and review_count. A reviews-scraping endpoint is on the roadmap.

How current is the data?

Google Maps listings update daily; the Actor returns whatever Google has live at the moment of scraping. The scraped_at field gives you an ISO-8601 timestamp per lead.

Scraping publicly available business contact info for B2B outreach is generally permitted in most jurisdictions, but you should consult your legal counsel and respect Google's Terms of Service. The Actor includes built-in filters to skip listings without websites (signals a business that does not want to be contacted digitally).

I need >50,000 leads — can this scale?

Yes. Run the Actor with max_results: 5000 per query, split into ~10 separate Apify runs in parallel. Each run uses its own proxy session, so they don't interfere.

Support

Found a bug or want a feature? Open an issue on the Actor's Apify Console page → Issues tab, or contact the author via Apify Store. We respond within 24 hours on business days.

Use cases

  • B2B sales prospecting — build lists of qualified leads (e.g. all dental clinics in Texas with 4+ star ratings and 50+ reviews)
  • Market research — analyze competitor density, rating distribution, and category saturation by region
  • SEO outreach — find local businesses with weak websites (no SSL, broken links) and pitch web dev services
  • Lead enrichment — append emails and social profiles to an existing list of business names
  • Recruiting — find independent businesses (restaurants, salons, clinics) and reach out about hiring needs

License & source

The Actor is closed-source on the Apify Store but uses an MIT-licensed core. For development documentation, see DEVELOPERS.md (available in the source distribution).