WebMD Doctor Scraper 🩺 avatar

WebMD Doctor Scraper 🩺

Pricing

Pay per usage

Go to Apify Store
WebMD Doctor Scraper 🩺

WebMD Doctor Scraper 🩺

Efficiently extract detailed doctor profiles, practice locations, and medical ratings from WebMD. This lightweight actor is optimized for speed and data accuracy. To ensure smooth operation and prevent blocking, using residential proxies is highly recommended.

Pricing

Pay per usage

Rating

5.0

(1)

Developer

Shahid Irfan

Shahid Irfan

Maintained by Community

Actor stats

0

Bookmarked

9

Total users

5

Monthly active users

12 days ago

Last modified

Share

WebMD Doctor Directory Scraper

Extract doctor directory data from WebMD fast and at scale. Collect provider listings with profile links, ratings, location details, and rich metadata in a single run. Built for lead generation, market research, and healthcare directory analysis.

Features

  • Fast listing collection - gathers records from directory result pages without opening each doctor profile
  • Result cap control - stops as soon as your results_wanted target is reached
  • Automatic pagination - continues across pages until target count or max_pages limit
  • Rich dataset fields - returns provider, specialty, rating, geo, and location metadata
  • Duplicate prevention - avoids duplicate providers across paginated results
  • Proxy-ready operation - supports Apify Proxy configuration for reliable production runs

Use Cases

Healthcare Lead Generation

Build targeted doctor lead lists by specialty, state, and city. Export clean provider data for outreach and CRM enrichment.

Local Market Research

Analyze provider density, rating distribution, and specialty coverage in a specific geography. Compare city-level availability for planning and business decisions.

Directory Intelligence

Track listing trends over time by running scheduled collections. Monitor rating changes, active providers, and category movement.

Data Enrichment Pipelines

Use exported records as a source dataset for internal analytics, BI dashboards, or downstream matching workflows.

Competitive Monitoring

Compare provider visibility and quality signals across locations and specialties to support strategic positioning.


Input Parameters

ParameterTypeRequiredDefaultDescription
startUrlsArray of StringNo-One or more directory URLs to start from. When provided, these override specialty/state/city inputs.
specialtyStringNo"family-medicine"Medical specialty slug, for example family-medicine, pediatrics, cardiology.
stateStringNo""State slug filter, for example california, texas, new-york.
cityStringNo""City slug filter, for example los-angeles, houston.
locationStringNo""Legacy location input. Use when you need compatibility with older tasks.
results_wantedIntegerNo50Maximum number of doctor records to return. Run stops at this number.
max_pagesIntegerNo10Maximum number of listing pages to visit.
proxyConfigurationObjectNo{ "useApifyProxy": true }Proxy setup for reliable large-scale collection.

Output Data

Each dataset item can include the following fields.

FieldTypeDescription
providerIdStringUnique provider identifier.
profileRecordIdStringListing record identifier from source.
npiStringNational Provider Identifier when available.
nameStringFull provider name.
firstNameStringFirst name.
middleNameStringMiddle name when available.
lastNameStringLast name.
suffixStringName suffix such as Dr. when available.
degreeStringDegree abbreviation when available.
genderStringGender label when available.
specialtyStringPrimary specialty.
specialtiesArray of StringSpecialty list from listing data.
specialtyIdsArraySpecialty ID list from source.
profileTypeStringProfile tier/type label.
addressStringFull formatted address.
address_streetStringStreet address.
address_cityStringCity.
address_stateStringState code.
address_zipStringZIP code.
stateFullNameStringFull state name when available.
stateSlugStringState slug.
citySlugStringCity slug.
phoneStringPhone number when available in listing data.
websiteStringWebsite URL when available in listing data.
appointmentUrlStringAppointment URL when available.
ratingNumberOverall rating value when available.
rating_1NumberFirst rating component.
rating_2NumberSecond rating component.
rating_3NumberThird rating component.
rating_4NumberFourth rating component.
reviewCountNumberNumber of reviews.
bioStringProvider summary text.
bio_textStringCleaned plain-text summary.
graduationYearNumberGraduation year when available.
educationArray of StringParsed education values when available.
insuranceArray of StringInsurance values when available.
awardsArrayAwards when available.
campaignTextStringCampaign label when available.
campaignLogoStringCampaign logo URL when available.
imageStringProvider image URL.
urlStringProvider profile URL.
locationIdStringSource location ID.
locationEntityIdStringSource location entity ID.
locationMedicalGroupStringMedical group name when available.
acceptsMedicareBooleanMedicare acceptance when available.
acceptsMedicaidBooleanMedicaid acceptance when available.
acceptsNewPatientsBooleanNew patient acceptance when available.
distanceMilesNumberDistance metric from source listing when available.
latitudeNumberLatitude when available.
longitudeNumberLongitude when available.
sourceStringSource domain label.

Note: Fields are only included when data exists in listing results.


Usage Examples

Basic Specialty Collection

Collect the first 50 family medicine providers.

{
"specialty": "family-medicine",
"results_wanted": 50
}

State + City Targeting

Collect pediatric providers in a specific city.

{
"specialty": "pediatrics",
"state": "texas",
"city": "houston",
"results_wanted": 120,
"max_pages": 8
}

Direct URL Start

Use a known directory URL and cap output size.

{
"startUrls": [
"https://doctor.webmd.com/providers/specialty/internal-medicine/california"
],
"results_wanted": 200,
"max_pages": 12,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Sample Output

{
"providerId": "BE87CA87-62E6-4511-8F21-4E449510B6AF",
"profileRecordId": "769783",
"npi": "1245245786",
"name": "Zhanna Mikulik",
"firstName": "Zhanna",
"lastName": "Mikulik",
"suffix": "Dr.",
"degree": "MD",
"gender": "Female",
"specialty": "Family Medicine",
"specialties": ["Family Medicine"],
"specialtyIds": [29259, 29320],
"profileType": "Basic",
"address": "6700 University Blvd, Dublin, OH, 43016",
"address_city": "Dublin",
"address_state": "OH",
"address_zip": "43016",
"rating": 3,
"rating_1": 3,
"rating_2": 3,
"rating_3": 3.125,
"rating_4": 2.75,
"reviewCount": 12,
"bio": "Named to Castle Connolly's Regional Top Doctors list",
"campaignText": "dr-com-standard",
"campaignLogo": "https://www.doctor.com/images/logo-dark.png",
"image": "https://a.doctor.com/img?p=providers/75995%20LOGO%20-Zhanna-Mikulik&w=200",
"url": "https://doctor.webmd.com/doctor/zhanna-mikulik-be87ca87-62e6-4511-8f21-4e449510b6af-overview",
"locationId": "A13262620",
"locationEntityId": "13262620",
"acceptsNewPatients": true,
"distanceMiles": 768.74,
"latitude": 40.098618,
"longitude": 83.169402,
"source": "webmd.com"
}

Tips for Best Results

Pick Good Starting Scope

  • Use both specialty and state for tighter, more relevant datasets.
  • Add city when you need local precision.

Control Volume

  • Start with results_wanted between 25 and 100 for test runs.
  • Increase results_wanted and max_pages only after validating output shape.

Keep Runs Reliable

  • Use Apify Proxy, especially for larger collections.
  • Prefer residential proxy groups for long production runs.

Improve Data Coverage

  • Some optional fields are not present for every listing.
  • Use larger sample sizes to increase chance of optional field coverage.

Proxy Configuration

For reliable runs, use Apify Proxy:

{
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Integrations

Connect your dataset with:

  • Google Sheets - analyze and share records quickly
  • Airtable - create searchable healthcare lead tables
  • Make - automate enrichment and downstream workflows
  • Zapier - trigger CRM and notification actions
  • Webhooks - push run data to custom endpoints

Export Formats

  • JSON - application workflows and APIs
  • CSV - spreadsheet analysis
  • Excel - business reporting
  • XML - system integration pipelines

Frequently Asked Questions

Does the run stop exactly at my requested result count?

Yes. The actor enforces results_wanted and stops when that target is reached.

Can I scrape by city only?

Yes. Provide city with a matching state for best results.

Why are some fields missing in some records?

Listing availability varies by provider. Optional fields appear only when source data includes them.

Can I collect large datasets?

Yes. Increase results_wanted and max_pages, and use proxy settings for reliability.

Can I start from a custom listing URL?

Yes. Use startUrls to begin from any valid WebMD directory URL.

Is this suitable for recurring monitoring?

Yes. Schedule runs and compare datasets over time for trend tracking.


Support

For issues or feature requests, use the Actor page issue tracker or Apify Console support channels.

Resources


This actor is intended for legitimate data collection. You are responsible for complying with applicable laws, platform terms, and usage policies in your jurisdiction.