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

3

Bookmarked

52

Total users

4

Monthly active users

16 days ago

Last modified

Share

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 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 (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 on residential proxies.
  5. Toggle enrichment — Enable or disable email extraction, social media, healthcare fields, and micro-niche classification independently.

Input example

{
"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 PLLChigh · organization — branch suffix "- Kyle" stripped
Kaminska Dermatology River NorthKAMINSKA DERMATOLOGYhigh · organization — neighborhood "River North" ignored
Fondren Orthopedic GroupFONDREN ORTHOPEDIC GROUP L.L.P.high · organization
Houston Cardiology Consultants - Long PointCARDIOLOGY CONSULTANTS OF HOUSTONhigh · organization — word-order difference handled
Pranav Loyalka, MDPRANAV LOYALKA MD PAhigh · 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, single_doctor, or unknown based on name keywords, doctor count, and specialty count.

4. Contact enrichment

  • Email — Extracts the best email address using domain matching and scoring. Filters out generic addresses (noreply, support, etc.), site-builder/tracker domains (Wix, Sentry, …), and hash-like tracking addresses. 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 lead lists of clinics by specialty, location, and online presence.
  • Medical recruiters — Find practices by doctor count and clinic type for recruitment outreach.
  • Insurance networks — Identify clinics accepting specific insurance plans for provider directory expansion.
  • Health-tech SaaS — Find clinics without online booking for sales prospecting.
  • Market research — Analyze healthcare density, sentiment, and competitive landscape by metro area.

Proxy

This actor requires residential proxies to avoid Google Maps blocks. Apify residential proxy is configured by default. For best results, use the RESIDENTIAL proxy group.

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 (requires Extract emails)
Social media enrichment$2.00 / 1,000A social media link is found (requires Extract social media links)
Healthcare data enrichment$10.00 / 1,000Specialty, insurance, doctor count, review sentiment, or an NPI registry match is found (requires Healthcare enrichment)
Niche classification$4.00 / 1,000A clinic type is classified (requires Micro-niche classification)

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 doing further paid work once the limit is reached.

Estimating a run: a base result costs $0.005. With all four enrichments hitting, a fully enriched result tops out at about $0.026. A 100-result run therefore costs roughly $0.50 (results only) to $2.60 (all enrichments found on every record) — most runs land in between, since not every enrichment resolves for every business.

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, and search pages occasionally return an empty feed on a cold proxy — re-run if a search yields 0 results.
  • 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 — enable email extraction and the actor visits each business website to find the best contact email, filtering out generic and tracker addresses.

Does it provide NPI numbers? Yes, for US providers. Enable healthcare enrichment and 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. A 100-result run with all enrichments typically lands between ~$0.50 and ~$2.60.

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.