Practo Doctor & Clinic Scraper
Pricing
from $3.00 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
8 days ago
Last modified
Categories
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
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
city | Select | Yes | mumbai | Indian city to search (see dropdown) |
specialty | Select | Yes | general-physician | Medical specialty to filter by |
maxItems | Integer | No | 50 | Maximum 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.
| Field | Type | Description |
|---|---|---|
name | String | Doctor's full name |
city | String | City slug (e.g. mumbai) |
specialty | String | Specialty slug used in the search |
profileUrl | String | Direct link to the doctor's Practo profile |
imageUrl | String | Doctor's profile photo URL |
streetAddress | String | Clinic street address |
postalCode | String | Clinic postal code |
locality | String | Locality / neighbourhood |
region | String | State/region (e.g. Maharashtra) |
country | String | Country code (e.g. IN) |
latitude | Number | Clinic latitude coordinate |
longitude | Number | Clinic longitude coordinate |
consultationFee | String | Consultation fee (e.g. 500, ₹800) |
clinicName | String | Name of the associated clinic |
clinicUrl | String | Link to the clinic's Practo page |
medicalSpecialties | Array | Medical specialties listed in the doctor's schema |
scrapedAt | String | ISO 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
- The actor fetches paginated listing pages from
practo.com/{city}/{specialty}(up to 15 pages) - Each page contains embedded schema.org Physician LD+JSON blocks in the HTML
- All doctor data is extracted directly from these structured data blocks — no DOM parsing hacks needed
- Records are pushed to the Apify dataset after removing any null or empty fields
- 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.