Practo Doctor & Clinic Scraper avatar

Practo Doctor & Clinic Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Practo Doctor & Clinic Scraper

Practo Doctor & Clinic Scraper

Scrape doctor and clinic listings from Practo.com - India's largest healthcare platform. Get physician profiles, specialties, consultation fees, clinic addresses, and geo-coordinates for any city and specialty.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

8 days ago

Last modified

Share

Scrape doctor and clinic listings from Practo.com — India's largest healthcare platform with 100,000+ verified doctor profiles across 20+ cities and all major medical specialties. No subscription, login, or API key required.

Data Source Note: This actor originally targeted Doctolib (doctolib.fr), a French doctor-booking platform. Doctolib serves all search results via internal XHR endpoints that return 400/404 errors from non-browser clients; the main listing page HTML contains only i18n translation strings, not doctor data. Practo.com was selected as a freely accessible replacement: doctor listings embed full schema.org Physician LD+JSON blocks directly in the HTML with no authentication or anti-bot barriers.

What you can do with this actor

  • Collect doctor profiles from any Indian city and medical specialty
  • Get verified physician data including name, clinic, consultation fee, and geo-coordinates
  • Access address details: street, locality, postal code, region, and country
  • Retrieve direct profile URLs for every doctor
  • Filter by 20 cities and 20 medical specialties

Input

FieldTypeRequiredDefaultDescription
citySelectYesmumbaiIndian city to search (see dropdown)
specialtySelectYesgeneral-physicianMedical specialty to filter by
maxItemsIntegerNo50Maximum number of records to return (1–500)

City options

Mumbai, Delhi, Bangalore, Hyderabad, Chennai, Pune, Kolkata, Ahmedabad, Jaipur, Lucknow, Chandigarh, Surat, Nagpur, Indore, Bhopal, Coimbatore, Kochi, Visakhapatnam, Bhubaneswar, Guwahati

Specialty options

General Physician, Dentist, Dermatologist, Pediatrician, Cardiologist, Orthopedist, Gynecologist & Obstetrician, Ophthalmologist, ENT Specialist, Neurologist, Psychiatrist, Urologist, Gastroenterologist, Endocrinologist, Pulmonologist, Nephrologist, Oncologist, Rheumatologist, Physiotherapist, Dietitian & Nutritionist

Example input

{
"city": "mumbai",
"specialty": "cardiologist",
"maxItems": 100
}

Output

Each record corresponds to one doctor profile.

FieldTypeDescription
nameStringDoctor's full name
cityStringCity slug (e.g. mumbai)
specialtyStringSpecialty slug used in the search
profileUrlStringDirect link to the doctor's Practo profile
imageUrlStringDoctor's profile photo URL
streetAddressStringClinic street address
postalCodeStringClinic postal code
localityStringLocality / neighbourhood
regionStringState/region (e.g. Maharashtra)
countryStringCountry code (e.g. IN)
latitudeNumberClinic latitude coordinate
longitudeNumberClinic longitude coordinate
consultationFeeStringConsultation fee (e.g. 500, ₹800)
clinicNameStringName of the associated clinic
clinicUrlStringLink to the clinic's Practo page
medicalSpecialtiesArrayMedical specialties listed in the doctor's schema
scrapedAtStringISO 8601 timestamp of scrape time

Example output record

{
"name": "Dr. Ravi Kumar",
"city": "mumbai",
"specialty": "general-physician",
"profileUrl": "https://www.practo.com/mumbai/doctor/ravi-kumar-general-physician",
"imageUrl": "https://assets.practo.com/doctor/image.jpg",
"streetAddress": "123 MG Road",
"postalCode": "400001",
"locality": "Mumbai",
"region": "Maharashtra",
"country": "IN",
"latitude": 19.076,
"longitude": 72.8777,
"consultationFee": "500",
"clinicName": "Ravi Kumar Clinic",
"clinicUrl": "https://www.practo.com/mumbai/clinic/ravi-kumar-clinic",
"medicalSpecialties": ["General Practice"],
"scrapedAt": "2026-06-04T10:30:00.000000+00:00"
}

How it works

  1. The actor fetches paginated listing pages from practo.com/{city}/{specialty} (up to 15 pages)
  2. Each page contains embedded schema.org Physician LD+JSON blocks in the HTML
  3. All doctor data is extracted directly from these structured data blocks — no DOM parsing hacks needed
  4. Records are pushed to the Apify dataset after removing any null or empty fields
  5. Polite delays (1–2 s) between page requests avoid overloading the server

Performance

  • Speed: ~10–12 doctors per page, ~10–15 pages per city/specialty
  • Reliability: Automatic retry with exponential backoff on 429/5xx responses (up to 5 retries)
  • No proxy needed — Practo.com is publicly accessible without bot-detection barriers

Frequently Asked Questions

Does this actor require login or an API key? No. Practo.com doctor listings are fully public. No credentials of any kind are required.

Why Practo instead of Doctolib? Doctolib (doctolib.fr) serves all doctor search results via JavaScript-rendered XHR calls to internal endpoints that return HTTP 400/404 errors when called from a scraper. The visible HTML of Doctolib listing pages contains only i18n translation data — no doctor names, addresses, or contact information. Practo.com provides equivalent structured healthcare data embedded directly in publicly-accessible HTML as schema.org Physician blocks.

How many doctors can I scrape per run? Typical results: 10–12 doctors per page, up to 15 pages = ~150+ records per city/specialty combination. Set maxItems up to 500.

Which Indian cities are supported? 20 major cities including Mumbai, Delhi, Bangalore, Hyderabad, Chennai, Pune, Kolkata, and more.

How accurate is the consultation fee data? Fees are sourced directly from Practo's structured data and reflect the online consultation fee listed at time of scraping.

Does the data include geo-coordinates? Yes — latitude and longitude are included when available from the schema.org Physician block, enabling map-based analysis.

How fresh is the data? Data is scraped live from Practo at run time and reflects the current state of the platform.