OrbTop

Practo India Doctor Directory Scraper

LEAD GENERATIONAUTOMATIONOTHER

Practo Doctor Scraper — India Healthcare Directory

Scrape doctor profiles from Practo.com, India's largest healthcare platform. Extract 20+ fields per doctor including specialties, qualifications, years of experience, clinic address, consultation fees, ratings, and medical council registration numbers — filtered by city and specialty.

Covers 50+ Indian cities and 50+ medical specialties. Practo indexes over 500,000 doctor profiles. The scraper runs a two-level crawl: listing pages for speed, individual profile pages for richer data.


What Data Does This Scraper Extract?

With detail pages enabled (default), each record contains:

Field Type Description
doctorName string Full name of the doctor
specialty string Primary medical specialty (e.g. "Dentist")
subspecialties array Additional specializations from the profile
qualifications array Degrees and credentials (e.g. ["MBBS", "MDS"])
experienceYears number Years of clinical experience
clinicName string Primary clinic or hospital name
clinicAddress string Full street address of the practice
city string City where the doctor practices
locality string Neighborhood or locality within the city
consultationFee number Consultation fee in INR
ratingValue number Aggregate patient rating (out of 100)
reviewCount number Total number of patient reviews
recommendationPercent number Percentage of patients who recommend this doctor
patientStoriesCount number Number of patient stories submitted
services array Medical services offered (e.g. root canal, scaling)
awards array Professional awards and recognitions
registrationNumber string Medical council registration number
onlineConsultation boolean Whether the doctor offers video consultations
profilePhotoUrl string URL to the doctor's profile photo
profileUrl string Full URL to the doctor's Practo profile
scrapedAt string ISO timestamp of when the record was scraped

With detail pages disabled (scrapeDetails: false), the scraper saves listing-level fields only: name, specialty, experience, clinic name, locality, city, fee, recommendation percent, patient stories, and profile URL. Runs significantly faster.


Practo Scraper Input Parameters

Parameter Type Default Description
city string bangalore Indian city to search. Examples: mumbai, delhi, hyderabad, chennai, pune
specialty string (all doctors) Medical specialty filter. Examples: dentist, dermatologist, gynecologist, cardiologist, orthopedic-surgeon
maxItems integer 50 Maximum number of doctor profiles to return
maxPages integer 10 Maximum number of listing pages to crawl (10 doctors per page)
scrapeDetails boolean true Fetch full profile pages for qualifications, services, awards, and registration data

Leave specialty empty to scrape all doctors in a city without a specialty filter.


Sample Output

{
  "doctorName": "Dr. Venkatesh M J",
  "specialty": "Dentist",
  "subspecialties": ["Cosmetic Dentist", "Oral and Maxillofacial Surgeon"],
  "qualifications": ["BDS", "MDS"],
  "experienceYears": 18,
  "clinicName": "Smile Care Dental Clinic",
  "clinicAddress": "12, 2nd Cross, Indiranagar, Bangalore, Karnataka",
  "city": "Bangalore",
  "locality": "Indiranagar",
  "consultationFee": 400,
  "ratingValue": 98,
  "reviewCount": 312,
  "recommendationPercent": 98,
  "patientStoriesCount": 312,
  "services": ["Root Canal Treatment", "Dental Implants", "Teeth Whitening", "Braces"],
  "awards": ["Best Dentist Award - IDA Bangalore 2021"],
  "registrationNumber": "KAR-12345",
  "onlineConsultation": false,
  "profilePhotoUrl": "https://assets.practo.com/practice_photo/venkatesh-mj.jpg",
  "profileUrl": "https://www.practo.com/bangalore/doctor/venkatesh-m-j-dentist",
  "scrapedAt": "2026-04-20T09:14:32.000Z"
}

How to Use the Practo Doctor Scraper

Quick Start

  1. Open the actor on Apify and click Try for free
  2. Set city to your target city (e.g. mumbai)
  3. Set specialty to your target specialty (e.g. cardiologist) — or leave blank for all doctors
  4. Set maxItems to control dataset size
  5. Leave scrapeDetails enabled for full profile data
  6. Click Start and download results as JSON or CSV

Example Inputs

Scrape 100 dermatologists in Mumbai:

{
  "city": "mumbai",
  "specialty": "dermatologist",
  "maxItems": 100,
  "maxPages": 10,
  "scrapeDetails": true
}

Fast listing-only scrape (no detail pages) for all doctors in Delhi:

{
  "city": "delhi",
  "specialty": "",
  "maxItems": 500,
  "maxPages": 50,
  "scrapeDetails": false
}

Scrape gynecologists across Hyderabad:

{
  "city": "hyderabad",
  "specialty": "gynecologist",
  "maxItems": 200,
  "maxPages": 20,
  "scrapeDetails": true
}

Via the Apify API

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });

const run = await client.actor('jungle_synthesizer/practo-doctor-scraper').call({
  city: 'bangalore',
  specialty: 'dentist',
  maxItems: 100,
  scrapeDetails: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Supported Cities

The scraper works with any city that Practo covers. Common options:

bangalore · mumbai · delhi · hyderabad · chennai · pune · kolkata · ahmedabad · jaipur · lucknow · chandigarh · kochi · coimbatore · nagpur · bhopal

Use the city slug as it appears in Practo URLs (lowercase, hyphen-separated for multi-word cities, e.g. new-delhi).

Supported Specialties

dentist · dermatologist · gynecologist · cardiologist · orthopedic-surgeon · pediatrician · neurologist · ophthalmologist · ent-specialist · psychiatrist · urologist · gastroenterologist · endocrinologist · pulmonologist · oncologist

Leave specialty empty to scrape all available doctors in a city.


Use Cases

  • Lead generation for medical device and pharma companies — build contact lists of doctors filtered by specialty and city
  • Healthcare market research — analyze consultation fee ranges, doctor density by specialty, and geographic distribution across Indian cities
  • Doctor credentialing and verification — cross-reference medical council registration numbers with independent sources
  • Healthcare directory products — populate or supplement your own India doctor directory with Practo data
  • Competitive benchmarking — track how clinics and hospitals are represented on India's largest healthcare booking platform
  • Telemedicine and health-tech prospecting — identify doctors offering online consultations for partnership outreach

Pricing

This actor uses pay-per-result pricing. You are charged per doctor profile saved to the dataset.

  • With detail pages (scrapeDetails: true): each profile triggers two HTTP requests (listing + detail page). Runs slower but returns 20+ fields.
  • Without detail pages (scrapeDetails: false): one request per 10 doctors (full listing page). Faster and cheaper per record, but returns fewer fields.

Run a small test (maxItems: 10) to estimate cost before running large batches.


Proxy and Rate Limit Notes

  • No proxy required. Practo's public pages are served without Cloudflare or CAPTCHA. Standard datacenter IPs work without residential proxies.
  • Rate limiting: Practo runs on Akamai CDN which enforces moderate rate limits. The scraper caps concurrency at 5 requests and includes automatic rate-limit handling.
  • robots.txt: Practo's robots.txt permits crawling of doctor profiles and listing pages.
  • Memory: 512 MB default. Sufficient for most runs. Increase to 1 GB for very large runs (1,000+ profiles with detail pages).

FAQ

How do I scrape all doctors in a city without filtering by specialty? Leave the specialty field empty. The actor will crawl /bangalore/doctors (or your chosen city) which returns all available doctors.

How many doctor profiles does Practo have? Practo indexes over 500,000 doctor profiles across India. Coverage varies by city — Bangalore, Mumbai, and Delhi have the densest listings.

Can I scrape multiple cities in one run? The actor takes one city per run. Run it multiple times with different city inputs, or use the Apify scheduler to queue runs for each city.

What is the difference between scrapeDetails: true and scrapeDetails: false? With detail pages enabled, the actor visits each doctor's individual profile page to extract qualifications, subspecialties, services, awards, registration numbers, and full clinic addresses from JSON-LD structured data. Without detail pages, only the 10 fields visible on the listing card are returned.

How current is the data? The scraper returns whatever Practo shows at the time of the run. Practo profiles update in near real-time when doctors make changes. Run the actor on a schedule to keep your dataset fresh.

Is it legal to scrape Practo? This actor scrapes publicly accessible pages that Practo serves to all visitors without login. The data collected (doctor names, specialties, fees, and clinic addresses) is publicly listed by the doctors themselves for patient discovery. Review Practo's terms of service and your jurisdiction's data protection regulations before using scraped data commercially.


Need custom features or a different specialty/city scope? Get in touch.