Doctor Scraper - Google Maps Doctors, $0.005/Place, No Login avatar

Doctor Scraper - Google Maps Doctors, $0.005/Place, No Login

Pricing

$5.00 / 1,000 doctor scrapeds

Go to Apify Store
Doctor Scraper - Google Maps Doctors, $0.005/Place, No Login

Doctor Scraper - Google Maps Doctors, $0.005/Place, No Login

Scrape doctors and medical practices from Google Maps by city or search term: name, address, phone, website, rating, reviews, accepting-patients status and full category list. No login, no API key, pure HTTP. $0.005 per place, the cheapest option in the Store for this target.

Pricing

$5.00 / 1,000 doctor scrapeds

Rating

5.0

(1)

Developer

Gio

Gio

Maintained by Community

Actor stats

0

Bookmarked

22

Total users

3

Monthly active users

20 days ago

Last modified

Share

Scrape doctors, physicians and medical practices straight from Google Maps, by city, ZIP code or search term, with no login, no API key and no browser on your side.

Why use this scraper

Medical device sales teams, pharma reps, healthcare software vendors and medical marketing agencies all start the same way: a list of practices in a territory, with a working phone number and a website to qualify the lead. Google Maps has that data for almost every clinic and private practice in the world, but pulling it by hand, city by city, does not scale past a handful of territories.

This actor automates that pull. You give it a search term and a location (or a list of pre-built queries for bulk runs), and it returns structured records with name, address, phone, website, rating, review count, opening status, accessibility and payment attributes, and whether the listing signals it is accepting new patients. It runs over plain HTTP, no Playwright, no browser fingerprint to maintain, which keeps it fast and keeps the price down.

Overview

The actor queries Google Maps search for your term and location (or your own custom queries), paginates through the results, and parses each place card into a flat JSON record. A typical run for one city and one niche ("family doctor in Chicago, IL") returns 20 to 60 places in under a minute, depending on maxPages. Output lands in the default dataset, one record per place, ready to export as CSV, JSON or Excel from the Apify console or pull straight into a CRM via the API.

Cost is $0.005 per place scraped, pay-per-result: a 60-place run costs $0.30, a 1,000-place batch across many cities costs $5.

Supported inputs

  • Search term + location - the simple mode. Set searchTerm (e.g. "family doctor", "pediatrician", "doctors accepting new patients") and location (city, state, ZIP or neighborhood). The actor builds the Google Maps query for you.
  • Custom queries list - the bulk mode. Fill queries with an array of complete Google Maps search strings (one per city, ZIP or niche) and the actor runs each one in sequence, ignoring searchTerm/location. This is how you cover 50 ZIP codes or 20 cities in one run.
  • Country and language - country sets the Google Maps gl parameter (two-letter code: us, br, uk, ca, au, mx, in, de, fr...) and language sets hl, so results and labels come back in the right market and language.
  • Pagination depth and retries - maxPages (1 to 5, default 2) controls how many result pages the actor pulls per query; Google Maps caps a single query around 20 unique places per page before it needs a narrower query to go deeper. maxRetries (1 to 6, default 3) controls retry attempts if an individual request gets blocked upstream.

Use cases

  • Medical device and pharma sales - build a territory list of practices by specialty and city, with phone and website to start outreach the same day.
  • Healthcare software and EHR vendors - find independent practices (not hospital-owned chains) by filtering on category and address pattern, for demo outreach.
  • Telehealth onboarding teams - identify doctors by niche and region to recruit as telehealth providers, using the review count and rating as a quick quality signal.
  • Market research and competitive mapping - count practices per specialty in a metro area, compare review volume and ratings across neighborhoods, track how many are "claimed" listings versus unclaimed.
  • Medical marketing agencies - prospect practices with low review counts or no website, which are the ones most likely to need marketing help.

How it works

The actor sends the search term and location straight to Google Maps' search endpoint and reads the place results from the response Google Maps itself returns, the same structured data the map view renders from. It does not open a browser or render any page: it reads the server's own response and maps each field (name, address, coordinates, category, attributes, rating) into the output schema below. That is also why it stays fast and cheap per place compared to approaches that render a full browser per result.

Input configuration

Mode 1: simple search term + location

{
"searchTerm": "family doctor",
"location": "Chicago, IL",
"country": "us",
"language": "en",
"maxPages": 3
}

Mode 2: niche search, accepting new patients

{
"searchTerm": "doctors accepting new patients",
"location": "Austin, TX",
"country": "us",
"maxPages": 2,
"maxRetries": 4
}

Mode 3: bulk custom queries across cities

{
"queries": [
"pediatrician in Brooklyn, NY",
"family doctor in Queens, NY",
"pediatrician in Miami, FL"
],
"country": "us",
"language": "en",
"maxPages": 2
}

Output sample

Real output from a run against "family doctor in Chicago, IL":

{
"rank": 1,
"name": "Michigan Avenue Primary Care",
"address": "180 N Michigan Ave Ste 1720, Chicago, IL 60601",
"phone": "+13129943000",
"website": "michiganavenueprimarycare.com",
"websiteLink": "https://www.michiganavenueprimarycare.com/",
"rating": 4.6,
"reviewsCount": 1940,
"latitude": 41.8855186,
"longitude": -87.6249029,
"categories": ["General practitioner", "Urgent care center"],
"primaryCategory": "General practitioner",
"claimed": true,
"workStatus": "Open · Closes 4 PM",
"placeId": "ChIJk22ADKQsDogRseb1F38GGrs",
"attributes": {
"Service options": ["Onsite services"],
"Accessibility": ["Wheelchair accessible entrance", "Wheelchair accessible restroom"],
"Payments": ["Credit cards", "Debit cards", "NFC mobile payments"]
},
"query": "family doctor in Chicago, IL",
"niche": "doctor"
}

A second real record from the same run, a smaller practice with a different category mix:

{
"rank": 3,
"name": "M. Chávez, MD, SC",
"address": "1509 N Western Ave Unit A, Chicago, IL 60622",
"phone": "+17732273303",
"website": "mchavezmd.com",
"rating": 4.7,
"reviewsCount": 387,
"categories": ["Family practice physician", "Sports medicine physician"],
"primaryCategory": "Family practice physician",
"claimed": true,
"workStatus": "Open · Closes 4 PM"
}

Key output fields

FieldTypeDescription
nameStringPractice or doctor name as listed on Google Maps
addressStringFull street address
phoneStringPhone number in E.164 format
websiteStringDomain, without protocol
websiteLinkStringFull clickable website URL
ratingNumberAverage Google rating (0 to 5)
reviewsCountNumberNumber of Google reviews
categoriesArrayAll categories Google assigns the listing
primaryCategoryStringThe main category
claimedBooleanWhether the business owner claimed the listing
workStatusStringCurrent open/closed status and next change time
placeIdStringGoogle's unique place identifier
latitude / longitudeNumberCoordinates for mapping
attributesObjectService options, accessibility, payments, amenities, as Google Maps exposes them
query / nicheStringWhich input query and niche produced this record

Pricing

EventPrice
Doctor/place scraped$0.005

Pay-per-result, no platform usage charge on top. A run of 60 places costs $0.30; 1,000 places across multiple cities costs $5.

What makes this richer than the competition

Two other publishers cover the same Google Maps healthcare target:

  • mukeshrana90/healthcare-google-maps-scraper (136 users/30d) charges $0.008 per result plus separate charge events for email enrichment and social media enrichment, so a fully enriched record runs well above $0.008.
  • samstorm/dentist-lead-scraper (13 users/30d) charges $0.075 per enriched result in the Free tier.

This actor charges $0.005 per place flat, no enrichment upsell, no login and no API key required on your side, and still returns accessibility, payment and amenity attributes that most basic Maps scrapers skip. For buyers who need raw coverage at the lowest cost per place, this is the cheapest option in the Store for this target.

Notes & limitations

  • Results depend on what Google Maps itself has published for a listing: if a practice has no attributes or no claimed profile, those fields come back empty, not invented.
  • A single query returns roughly 20 unique places per page before Google Maps stops paginating; to cover a whole metro area, split the search into several queries (per ZIP code or neighborhood) using the queries array instead of raising maxPages alone.
  • "Accepting new patients" is inferred only when it appears explicitly in the listing's own text or attributes; absence of the phrase does not mean the practice is closed to new patients, just that Google Maps does not say either way.
  • No email address is scraped. Email enrichment is not part of this actor.

FAQ

Does this need a Google API key? No. It reads Google Maps' own search response directly, no key, no OAuth.

Can I search for a specific specialty, not just "doctor"? Yes. Set searchTerm to any specialty, e.g. "pediatrician", "dermatologist", "orthopedic surgeon".

How do I cover an entire state or country? Use the queries array with one entry per city or ZIP code you want to cover, rather than relying on a single broad query.

Does it work outside the US? Yes, set country and language to the target market, e.g. country: "br", language: "pt" for Brazil.

Why do some records have no website field? Because the practice has no website listed on Google Maps. The actor never invents a value; empty fields reflect what Google Maps actually has.

Does maxPages guarantee that many pages of results? No, Google Maps stops returning new places once it runs out, typically around 20 unique places per query regardless of maxPages. Use more targeted queries to get more total results.

For AI Agents & LLM Apps

This actor is callable from any MCP-compatible AI assistant through the Apify MCP server, and directly from code through the Apify API.

Via MCP (mcp.apify.com): add the Apify MCP server to your AI assistant (Claude, ChatGPT, or any MCP client) and call the gio21/doctor-scraper actor by name with a searchTerm and location. The assistant gets back structured JSON it can reason over directly.

Via API (run-sync-get-dataset-items), for a synchronous call that returns the dataset items in the same request:

curl "https://api.apify.com/v2/acts/gio21~doctor-scraper/run-sync-get-dataset-items?token=<APIFY_TOKEN>" \
-X POST \
-H "Content-Type: application/json" \
-d '{"searchTerm": "family doctor", "location": "Chicago, IL", "country": "us", "maxPages": 2}'

Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Google or Google Maps. All trademarks mentioned are the property of their respective owners.

SEO Keywords

doctor scraper, google maps doctor scraper, scrape doctors google maps, medical practice leads, physician lead generation, healthcare leads scraper, doctor contact scraper, clinic scraper google maps