Healthline Medical Provider Directory Scraper avatar

Healthline Medical Provider Directory Scraper

Pricing

from $8.00 / 1,000 medical providers

Go to Apify Store
Healthline Medical Provider Directory Scraper

Healthline Medical Provider Directory Scraper

Export Healthline doctors by specialty and city: NPI, phone, address, insurance accepted, telehealth and ratings. A doctor database at USD 10 per 1,000.

Pricing

from $8.00 / 1,000 medical providers

Rating

0.0

(0)

Developer

Muhammad Afzal

Muhammad Afzal

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 hours ago

Last modified

Categories

Share

Healthline Medical Provider Directory Scraper exports US doctors from Healthline FindCare by specialty and city: name, NPI, specialties, practice phone and address, rating, insurance accepted, languages, telehealth and new-patient status. It is built for healthcare marketers, provider-data and network teams, and researchers who need a doctor list without copying profiles by hand, and costs USD 10 per 1,000 providers on the FREE tier (USD 8 per 1,000 on GOLD).

It reads public listing and profile pages only. It collects no patient reviews, patient data or clinical records.

What data does the Healthline Medical Provider Directory Scraper return?

Each dataset row is one unique provider, deduplicated by NPI (or profile URL when no NPI is shown).

FieldWhat it contains
name, profileUrlProvider name with credentials and the Healthline profile link
npiTen-digit National Provider Identifier from the profile, or null
specialty, specialtiesPrimary specialty and every listed specialty
phonePractice phone shown by Healthline (can be a referral number)
streetAddress, city, state, postalCodePrimary practice address
practiceNamePractice or office name (profile pages)
rating, reviewCountAggregate rating on a 1–5 scale (null when unrated) and review count
acceptingNewPatients, offersTelehealthtrue or false when stated, otherwise null
yearsOfExperienceYears in practice when stated
insuranceAccepted, languages, hospitalAffiliationsLists from the profile; empty arrays when absent
imageUrlProfile photo URL
sourceUrl, detailsFetched, scrapedAtListing the provider came from, whether the profile was parsed, timestamp

The OUTPUT record shows the outcome (DATA, PARTIAL, EMPTY, NOT_FOUND, REJECTED, BLOCKED or FAILED), stop reason, listing pages read, requests, warnings and charged events.

How do I build a list of doctors by specialty and city?

Give a Healthline specialty slug, a two-letter state and a city. The Actor opens that FindCare listing, follows its pagination, and (by default) visits each provider profile for phone, insurance and availability details.

{
"specialty": "cardiology",
"state": "ny",
"city": "New York",
"maxResults": 5,
"includeDetails": true
}

The slug is the part after /find-care/specialty/ in a Healthline URL, for example cardiology, dermatology, dentistry or primary-care-doctors. You can instead pass up to 20 listing or provider URLs in startUrls; they override the specialty and location fields.

Listing-only export, faster and without profile requests:

{
"startUrls": [{ "url": "https://care.healthline.com/find-care/specialty/dermatology/ca/los-angeles" }],
"includeDetails": false,
"maxResults": 70,
"maxPages": 2
}

One provider profile:

{
"startUrls": [{ "url": "https://care.healthline.com/find-care/provider/dr-carol-chen-1750452140" }],
"maxResults": 1
}

Does it include NPI numbers, insurance and telehealth?

Yes, when Healthline shows them. The NPI comes from the profile URL or page; insurance plans, languages, telehealth and new-patient status come from the profile, so they need includeDetails: true. In listing-only mode those fields stay null or empty and detailsFetched is false. Treat every value as Healthline's claim, not a credential check.

When should I use it, and when not?

Use it when you need a US doctor database for one specialty and metro: outreach lists for medical-device or pharma field teams, provider-network gap analysis, directory enrichment by NPI, or insurance-acceptance research.

Use another Actor when:

Use it from an AI assistant

Healthline Medical Provider Directory Scraper works from Claude, ChatGPT, Cursor or any MCP client through Apify's MCP server. Add it with https://mcp.apify.com/?tools=muhammadafzal/healthline-medical-providers-directory-scraper, then ask, for example: "Find 20 dermatologists in Los Angeles who accept new patients and list their NPI, phone and accepted insurance."

Run it with the API

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('muhammadafzal/healthline-medical-providers-directory-scraper').call({
specialty: 'cardiology',
state: 'ny',
city: 'new-york',
maxResults: 5,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((p) => `${p.name} ${p.npi} ${p.phone}`));

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("muhammadafzal/healthline-medical-providers-directory-scraper").call(
run_input={"specialty": "dermatology", "state": "ca", "city": "Los Angeles", "maxResults": 20}
)
for doctor in client.dataset(run.default_dataset_id).iterate_items():
print(doctor["name"], doctor["npi"], doctor["acceptingNewPatients"])

What does the output look like?

Two cardiologists from the default New York run on 2026-10-26 (insurance lists shortened):

[
{
"name": "Dr. Carol Chen, MD",
"profileUrl": "https://care.healthline.com/find-care/provider/dr-carol-chen-1750452140",
"npi": "1750452140",
"specialty": "Cardiology",
"specialties": ["Cardiology"],
"phone": "(929) 298-9478",
"streetAddress": "160 E 53rd St",
"city": "New York",
"state": "NY",
"postalCode": "10022",
"rating": null,
"reviewCount": 0,
"acceptingNewPatients": true,
"offersTelehealth": true,
"yearsOfExperience": 27,
"practiceName": "Rockefeller Outpatient Pavilion",
"insuranceAccepted": ["Aetna", "Cigna", "EmblemHealth", "UnitedHealthCare"],
"languages": ["English", "Spanish"],
"detailsFetched": true,
"sourceUrl": "https://care.healthline.com/find-care/specialty/cardiology/ny/new-york",
"scrapedAt": "2026-10-26T07:22:41.010Z"
},
{
"name": "Dr. Ioanna Kosmidou, MD",
"npi": "1801067376",
"specialty": "Clinical Cardiac Electrophysiology",
"phone": "(929) 343-3533",
"city": "New York",
"state": "NY",
"acceptingNewPatients": true,
"offersTelehealth": true,
"yearsOfExperience": null,
"insuranceAccepted": ["Aetna", "Cigna", "Healthfirst", "UnitedHealthCare"],
"hospitalAffiliations": ["New York-Presbyterian Hospital"],
"detailsFetched": true
}
]

Pricing: how much does a doctor list cost?

The Actor uses pay-per-event pricing. Platform usage is included, and profile enrichment adds no second charge.

EventFREEBRONZESILVERGOLD / PLATINUM / DIAMOND
Medical provider (one dataset row)USD 0.01USD 0.00975USD 0.0095USD 0.008
Actor start (per started GB of allocated memory)USD 0.00625USD 0.006094USD 0.005938USD 0.005

Worked totals on the FREE tier at the default 256 MB memory (one start event):

  • Default run, 5 providers: 5 × USD 0.01 + USD 0.00625 = USD 0.05625
  • 30 providers with details: 30 × USD 0.01 + USD 0.00625 = USD 0.30625

The start fee is charged even when a run returns no providers. The smallest accepted total-charge limit is USD 0.02.

How long does a run take, and what are the limits?

  • Five-second spacing. The Actor waits at least 5 seconds between requests, following Healthline's crawl delay. The default 5-provider run took 44 seconds on 2026-10-26.
  • Detail runs need one profile request per provider, so the default 180-second runtime budget delivers about 30 providers. Raise maxRuntimeSecs (up to 900) or use listing-only mode for larger lists.
  • Transfer ceiling of 64 MiB per run. Pages averaged about 0.6 MB in that run, so detail runs stop near 100 providers; split bigger jobs.
  • Bounds: maxResults 1–500, maxPages 1–20, startUrls up to 20. Search-query URLs are not accepted.
  • Access: if Healthline denies a request, the Actor retries through alternative US access routes it manages. If all are denied, the run ends BLOCKED and keeps any providers already delivered.

FAQ

Does it collect patient reviews?

No. It returns only the aggregate rating and review count, never review text or reviewer identities.

Is the NPI verified?

No. It is the ten-digit number Healthline attaches to the profile. Check the official NPPES NPI Registry before relying on it for credentialing.

Why is a provider's city different from the city I searched?

Healthline geographic listings include nearby practices, so a New York search can return Brooklyn or Queens offices.

Can I scrape a single doctor's profile?

Yes. Put the provider URL in startUrls and set maxResults to 1.

Does it return email addresses?

No. Healthline profiles do not publish provider emails, and the Actor does not guess them.

What happens if a profile page fails?

The provider is still delivered from the listing data with detailsFetched: false, and the warning appears in OUTPUT.

Healthcare data from the same developer:

Healthline Medical Provider Directory Scraper reads public professional directory pages, follows the site's robots rules and crawl delay, and is not affiliated with Healthline. Use the data only for lawful business purposes, respect Healthline's terms and applicable privacy and marketing rules, and confirm insurance and appointment details with the practice. It is not medical advice or a credential check.

Last verified: 2026-10-26