Healthcare Google Maps Scraper avatar

Healthcare Google Maps Scraper

Pricing

from $5.00 / 1,000 results

Go to Apify Store
Healthcare Google Maps Scraper

Healthcare Google Maps Scraper

Scrape healthcare clinics from Google Maps with emails, phone, social media, insurance, doctor count, verified NPI numbers (US), review sentiment, online booking, and clinic type. 35+ fields per result, CRM-ready output.

Pricing

from $5.00 / 1,000 results

Rating

5.0

(1)

Developer

Mukesh Kumar

Mukesh Kumar

Maintained by Community

Actor stats

4

Bookmarked

392

Total users

138

Monthly active users

9 days ago

Last modified

Share

Healthcare & Medical Clinic Email Scraper — Google Maps Leads

Scrape healthcare businesses from Google Maps and enrich each result with emails, social media links, insurance details, doctor count, verified NPI registry numbers (US), patient review sentiment, online booking detection, metro area classification, and clinic type.

Built for healthcare marketing agencies, medical recruiters, insurance networks, and health-tech companies that need structured, CRM-ready data from Google Maps.

Why this scraper

  • Verified NPI matching (US). Each result can be matched against the official US NPI registry to return the provider's verified NPI number and authoritative specialty — government-grade data, far more reliable than scraping "Dr." mentions. The matcher is precision-first: it returns no NPI rather than a wrong one.
  • Real contact data, not just listings. Emails, phones, websites, and social profiles — emails are scored and filtered, so generic tracker and site-builder addresses are rejected.
  • Healthcare-specific enrichment. Insurance accepted, doctor/provider count, and patient-review sentiment — fields generic scrapers don't extract.
  • Fast & efficient. Each business website is fetched once and all extractors share that single load; places are scraped in parallel — lower run time and lower cost.
  • Pay only for results. Pay-per-event pricing — you're billed for records and the enrichments that actually return data, not for compute time.

What can you do with this scraper?

Turn Google Maps into a targeted healthcare lead generation database in minutes:

  • Build a dentist email list or a doctor contact database for any city or region.
  • Generate medical practice leads — dental, dermatology, physiotherapy, pediatric, and more.
  • Find a clinic email finder alternative that also returns phone, website, and social profiles.
  • Create specialty mailing lists — dermatologist, physiotherapy, or pediatrician email lists by location.
  • Prospect clinics without online booking for health-tech and SaaS sales outreach.
  • Map insurance coverage — find practices accepting specific insurance plans for network expansion.
  • Export ready-to-use B2B healthcare leads to CSV, Excel, JSON, or straight into your CRM.

What data do you get?

Each scraped business includes up to 35+ fields across these categories:

CategoryFields
Identityname, category, specialty
Locationaddress, city, state, postalCode, country, latitude, longitude
Contactphone, website, email
Social Mediainstagram, facebook, linkedin, twitter
HealthcareinsuranceAccepted, doctorCount, npi (verified NPI registry match — US)
Micro-nichehasOnlineBooking, bookingType, bookingUrl, isMetroArea, metroName, metroTier, clinicType, clinicTypeLabel, clinicConfidence
Reputationrating, reviewCount, reviewSentiment (label, score, source, googleThemes; plus topThemes/snippets when individual reviews load)
Operationalhours, isOpenNow
MetadataplaceId, mapsUrl, scrapedAt, searchTerm, searchLocation

Sample output

{
"name": "Schiffman Oral Surgery",
"category": "Oral surgeon",
"specialty": "Oral surgeon",
"address": "141 Franklin Pl Suite B",
"fullAddress": "141 Franklin Pl Suite B, Woodmere, NY 11598, United States",
"city": "Woodmere",
"state": "NY",
"country": "United States",
"postalCode": "11598",
"latitude": 40.6331226,
"longitude": -73.7089737,
"phone": "+15165691111",
"website": "https://schiffmanoms.com/",
"email": "office@schiffmanoms.com",
"instagram": null,
"facebook": "https://facebook.com/schiffmanOMS",
"linkedin": null,
"twitter": null,
"insuranceAccepted": null,
"doctorCount": null,
"npi": {
"number": "1346948130",
"type": "organization",
"name": "PURE DERMATOLOGY PLLC",
"primaryTaxonomy": "Physician/Dermatology",
"state": "TX",
"matchConfidence": "high"
},
"hasOnlineBooking": false,
"bookingType": null,
"bookingUrl": null,
"isMetroArea": false,
"metroName": null,
"metroTier": null,
"clinicType": "unknown",
"clinicTypeLabel": "Unknown",
"clinicConfidence": "low",
"rating": 5,
"reviewCount": 412,
"reviewSentiment": {
"label": "Positive",
"score": 100,
"source": "rating+themes",
"reviewsAnalysed": 0,
"googleThemes": [
{ "theme": "friendly staff", "count": 96 },
{ "theme": "kind staff", "count": 41 },
{ "theme": "gentle care", "count": 18 }
]
},
"hours": {
"Monday": "9 am\u20136 pm",
"Tuesday": "9 am\u20135 pm",
"Wednesday": "Closed",
"Thursday": "9 am\u20135 pm",
"Friday": "9 am\u20132 pm",
"Saturday": "Closed",
"Sunday": "Closed"
},
"isOpenNow": true,
"placeId": "0x89c265ac4855a48f:0xb207cdd676e49cc4",
"mapsUrl": "https://www.google.com/maps/place/Schiffman+Oral+Surgery/...",
"scrapedAt": "2026-04-07T10:56:47.935Z",
"searchTerm": "dental clinic",
"searchLocation": "New York, USA"
}

Results come with a ready-made Overview table view in the Apify Console (Name, Specialty, Address, Phone, Email, Website, Rating, Reviews, Clinic Type, Doctors, Online Booking, Metro Area) so you can scan and export the most useful fields without opening the raw JSON.

How to use

Run it from the Apify Console — open the actor, fill in the input fields below, and click Start. You can also run it via the Apify API or Apify CLI (apify call) for scheduled or programmatic runs. Results stream into a dataset you can export as JSON, CSV, or Excel.

  1. Search terms — Enter healthcare categories like dental clinic, hospital, dermatologist, physiotherapy, pediatrician.
  2. Locations — Enter cities or regions like New York, USA, London, UK, Mumbai, India.
  3. Max results — Set how many places to return (default 50, up to 500).
  4. Max concurrency — How many places to scrape in parallel (default 4, range 1–20). Higher is faster but increases proxy load and block risk; 3–5 is a good balance at the default 2 GB of run memory. If you raise concurrency, raise the run's memory with it.
  5. Toggle enrichment — Email extraction, social media, healthcare fields, and micro-niche classification are all on by default, since they are what the actor is for. Turn any of them off independently if you only want the plain Google Maps fields — you are never charged for an enrichment you disable.

Input example

The four enrich* flags below are the defaults, so you can leave them out entirely — they are shown here to make the full shape explicit.

{
"searchTerms": ["dental clinic", "dermatologist"],
"locations": ["New York, USA", "Los Angeles, USA"],
"maxResults": 100,
"maxConcurrency": 4,
"minRating": 4.0,
"enrichEmails": true,
"enrichSocials": true,
"enrichHealthcare": true,
"enrichMicroNiche": true
}

Enrichment pipeline

The scraper runs a 4-stage enrichment pipeline for each business:

1. Google Maps scraping

Extracts name, category, address, phone, website, rating, reviews, hours, coordinates, and place ID directly from Google Maps search results.

2. Healthcare enrichment

  • Specialty — Extracted from Maps category tags and "About" section attributes.
  • Insurance accepted — Scanned from Maps attributes, then falls back to the business website (/insurance, /billing, /patient-information pages).
  • Doctor count — Discovers team/staff pages linked from the business homepage and counts unique provider names (deduped from Dr./MD/DO/MBBS mentions) plus profile cards, reconciling the two signals into a count with a confidence level.
  • Review sentiment — Reads Google's aggregated review topics from the Maps Reviews tab and returns a sentiment label (Positive / Mostly positive / Mixed / Negative), a 0-100 score, and googleThemes (the top review themes with mention counts, e.g. friendly staff: 246). When the individual review list is available, it additionally runs keyword + negation analysis over the review text and adds topThemes and snippets. The source field indicates which path was used (rating+themes or full review analysis).
  • NPI registry match (US) — Matches the clinic name + city/state/ZIP against the free NPI registry (US National Library of Medicine API, same NPI source data) and returns the best match's verified NPI number, provider type (primaryTaxonomy — authoritative specialty), state, and a matchConfidence (high / medium / low). Tries an organization match first, then falls back to an individual provider for single-doctor practices registered to a person — the type field tells you which. This is government-maintained data — far more reliable than scraping "Dr." mentions. The matcher is precision-first: it only emits a match when the registered name corroborates (near-exact) or the address (ZIP/city) agrees, so it returns no NPI rather than a wrong one. Runs only for US addresses and adds no extra page loads (a single lightweight API call). Examples below.

NPI match examples

Actual results from live runs:

Google Maps nameNPI registry matchResult
Pure Dermatology - KylePURE DERMATOLOGY PLLC✅ high · organization — branch suffix "- Kyle" stripped
Kaminska Dermatology River NorthKAMINSKA DERMATOLOGY✅ high · organization — neighborhood "River North" ignored
Fondren Orthopedic GroupFONDREN ORTHOPEDIC GROUP L.L.P.✅ high · organization
Houston Cardiology Consultants - Long PointCARDIOLOGY CONSULTANTS OF HOUSTON✅ high · organization — word-order difference handled
Pranav Loyalka, MDPRANAV LOYALKA MD PA✅ high · organization — solo doctor registered as a PA
U.S. Dermatology Partners Spicewood Springs—⛔ no NPI — name is mostly a branch/location label; would only match a different practice on shared words
Houston Cardiovascular Associates—⛔ no NPI — only an East Houston branch was found; declined rather than mismatch
The Dermatology Specialists - Sunset Park—⛔ no NPI — that chain isn't in the registry under a findable org name

A ⛔ "no NPI" means the matcher couldn't find a trustworthy match — by design it returns nothing rather than a wrong NPI. Across live tests over 6 specialties and 5 states, every emitted match was correct (zero false positives).

3. Micro-niche classification

  • Online booking — Checks for booking buttons on Maps and scans the website for booking platforms (Zocdoc, Calendly, Acuity, etc.).
  • Metro area — Classifies the business location against a curated database of metro areas across USA, UK, India, UAE, Australia, and Canada with tier rankings (1-3).
  • Clinic type — Classifies as hospital, multi_specialty, group_practice, or single_doctor based on name keywords, doctor count, and specialty count. Practices the signals can't place come back as unknown, and unknown is not charged.

4. Contact enrichment

  • Email — Extracts the best contact email using domain matching and scoring. Keeps and ranks real clinic mailboxes (info@, office@, reception@, direct doctor addresses) while rejecting automated/technical addresses (noreply, postmaster, …), site-builder/tracker domains (Wix, Sentry, …), and hash-like tracking addresses. De-obfuscates spam-protected addresses (@, %40, [at]/[dot]) and prioritizes mailto: links; free web-mail (Gmail, …) is used as a last resort. Falls back to contact/about pages discovered on the homepage when none is found.
  • Social media — Extracts Instagram, Facebook, LinkedIn, and Twitter/X profile links from the business website.

Performance note: the business website is loaded once per place — emails, socials, insurance, and booking are all read from that single fetch, and sub-pages (team, insurance, contact) are visited only when they're actually linked from the homepage and a field is still missing.

Use cases

  • Healthcare marketing agencies — Build targeted clinic lead lists and medical email lists by specialty, location, and online presence.
  • Medical recruiters — Find practices by doctor count and clinic type to build a doctor contact database for recruitment outreach.
  • Insurance networks — Identify clinics accepting specific insurance plans for provider directory expansion.
  • Health-tech & medical SaaS — Find clinics without online booking for sales prospecting and B2B outreach.
  • Cold email & B2B outreach — Export healthcare leads with verified business emails to CSV/Excel or your CRM.
  • Market research — Analyze healthcare density, review sentiment, and competitive landscape by metro area.

Proxy

The actor runs through Apify Proxy by default and lets Apify pick the group automatically — any proxy group you select in the input is deliberately ignored, so the actor still runs on accounts without residential access instead of failing at startup. Automatic selection is also the cheaper option: residential traffic is billed per GB.

To keep that traffic small, the browser only ever loads Google Maps — business websites are fetched over plain, un-proxied HTTP — and images, fonts, media, Google's telemetry beacons and the map's vector tiles are all blocked before they leave the page.

Pricing

This actor uses pay-per-event pricing — you only pay for what it actually produces, not for compute time or run duration.

EventPriceCharged when
Actor start$0.00005Once per run, when the actor starts
Result$5.00 / 1,000Per business saved to the dataset
Email enrichment$5.00 / 1,000An email address is found (Extract emails, on by default)
Social media enrichment$2.00 / 1,000A social media link is found (Extract social media links, on by default)
Healthcare data enrichment$10.00 / 1,000Specialty, insurance, doctor count, review sentiment, or an NPI registry match is found (Healthcare enrichment, on by default)
Niche classification$4.00 / 1,000A clinic type is classified (Micro-niche classification, on by default) — records that come back unknown are not charged

Enrichment events charge only when the enrichment actually returns data — if a business has no website or no email is found, you aren't charged for that enrichment. Enrichments you leave disabled never charge. If you set a run charge limit in the Apify console, the actor stops the crawl as soon as any event hits that limit, so it never keeps working on results it can no longer bill you for.

Estimating a run: a base result costs $0.005, and a result with all four enrichments hitting tops out at about $0.026. In practice you land in between, because not every enrichment resolves for every business. A measured 12-result run across dental and dermatology clinics in Denver, with the default settings, billed $0.0215 per result — healthcare data on 12/12 (including a verified NPI on 9/12), socials on 8/12, a clinic type on 8/12, and an email on 6/12.

At that rate:

Run sizeTypical costResults only (all enrichments off)
50 results (default)~$1.08~$0.25
100 results~$2.15~$0.50
500 results (max)~$10.75~$2.50

Hit rates vary by specialty and country — practices without websites yield no email or socials, and NPI matching is US-only — so treat these as a guide rather than a quote.

Places are scraped in parallel (see Max concurrency) and each business's website is fetched once, so enrichment is fast — but parallelism affects speed and proxy/block risk only, not the price you pay.

Limitations

  • Google Maps may return different results based on proxy location. A cold residential IP occasionally serves an empty feed; the scraper reloads and then automatically retries the search on a fresh IP, so this self-recovers in most runs.
  • Review sentiment uses Google's aggregated review themes plus the star rating (no LLM). Google does not reliably render the full per-review list to headless/proxied sessions, so in most runs reviewsAnalysed is 0 and the score tracks the star rating rather than per-review text. googleThemes still provides real, high-signal topic counts.
  • Insurance detection relies on keyword matching and may not capture all plans.
  • NPI matching is US-only (the registry covers US providers) and is name + address based. Because it is precision-first, multi-location chains whose Google Maps name is mostly a branch/location label (e.g. "U.S. Dermatology Partners Spicewood Springs") often return no NPI rather than risk a wrong one. The matchConfidence field flags how trustworthy each match is — treat low as a candidate, not a confirmed link.
  • Doctor count is a heuristic from team-page names/cards — treat it as an estimate (see clinicConfidence).
  • Metro area classification covers major metros in USA, UK, India, UAE, Australia, and Canada.

FAQ

Can I scrape doctor and clinic emails from Google Maps? Yes — email extraction is on by default. The actor visits each business website to find the best contact email, filtering out automated and tracker addresses.

Does it provide NPI numbers? Yes, for US providers. Healthcare enrichment is on by default, so each record is matched against the US NPI registry for a verified NPI number, provider type, and a match-confidence flag.

Which countries are supported? Google Maps scraping and contact / social / booking enrichment work worldwide. NPI matching is US-only.

How much does it cost? Pay-per-event: $5 per 1,000 results plus per-enrichment fees only when data is found. On a measured run with the default settings that worked out to about $0.0215 per result — roughly $1.08 for the default 50 results, or ~$2.15 per 100. Turning the enrichments off drops it to $0.005 per result.

Can I schedule recurring runs? Yes — schedule it in the Apify Console or trigger it via the API for monitoring and lead-refresh workflows.

Is the data export-ready? Yes — results export as JSON, CSV, or Excel, and come with a ready-made table view in the Apify Console.