Practo Scraper — Doctors, Clinics, Fees & Phone Numbers
Pricing
from $1.60 / 1,000 results
Practo Scraper — Doctors, Clinics, Fees & Phone Numbers
Practo.com scraper for India: export doctors, clinics and hospitals with speciality, degrees, experience, consultation fee, recommendation %, patient stories, clinic address, locality, coordinates, timings and phone. Optional registration number, memberships and all clinics. No login.
Pricing
from $1.60 / 1,000 results
Rating
0.0
(0)
Developer
Logiover
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Practo Scraper — Doctors, Clinics, Fees & Phone Numbers from practo.com
Disclaimer: Practo Scraper is an independent tool. It is not affiliated with, endorsed by or sponsored by Practo Technologies Pvt. Ltd. "Practo" is a trademark of its owner and is used here only to describe the public website this Actor reads. The Actor collects publicly visible listing and profile information; you are responsible for how you use it.
Practo Scraper exports doctors, clinics and hospitals from practo.com — India's most used doctor-discovery and appointment site — with exactly the information a patient sees when they search "best dentist near me in Bangalore" or "gynecologist in Andheri West": the doctor's name, speciality, degrees with college and year, years of experience, consultation fee, recommendation percentage and number of patient stories, the clinic or hospital with full address, locality, PIN code, latitude/longitude and opening hours, the next available appointment slot and the clinic's contact number with the doctor's extension. It works as a Practo API alternative (Practo offers no public data API), a Practo doctor list downloader and a healthcare lead-generation tool: scrape practo.com by city, speciality and locality, apply Practo's own filters (gender, experience, fee) and export to CSV, Excel, JSON or straight into Google Sheets — no login, no cookies, no browser, no Practo account.
People use it for searches such as list of dentists in Bangalore with phone numbers, doctor database India Excel download, Practo data scraping, Practo doctors data export, clinic list with contact number Mumbai, hospital list Delhi with beds and NABH, doctor ka phone number, dentist ka contact number, डॉक्टर की सूची फोन नंबर के साथ, क्लिनिक का पता और नंबर, अस्पताल की सूची शहर के अनुसार. Switch on "Include full profile details" and every doctor also gets the medical registration number, council and year (e.g. Karnataka State Dental Council, Maharashtra Medical Council), trainings and certifications, professional memberships, awards, work history, languages spoken and every clinic they practise in; clinics and hospitals get website, emergency number, beds, ambulances, amenities, accepted insurance, payment modes and accreditations such as NABH. One run handles one search or tens of thousands of doctors across many cities — Practo's 500-results-per-search window is split automatically, and every doctor is de-duplicated by Practo's own doctor ID.
Table of contents
- At a glance
- What you get
- Who uses Practo data and how
- Cookbook: ready-to-run inputs
- How to run it in Apify Console
- How to run it through the API
- Input reference
- Data dictionary
- Real output sample
- Scale and speed
- What you pay
- Integrations
- Performance tips
- Troubleshooting and status messages
- Honest limits
- Practo Scraper compared with the alternatives
- FAQ
- Glossary
- Legal and compliance
- Changelog
- Support
At a glance
| Source | practo.com (India): doctor listings, clinic listings, hospital listings, doctor / clinic / hospital profiles |
| Search by | cities × specialities × localities, Practo's filters (gender, years of experience, fee range, sort order) — or paste any Practo URL |
| One row per | doctor (de-duplicated by Practo doctor ID) or clinic / hospital (by Practo establishment ID) |
| Doctor columns | 38 from the listing, 17 more with full profile details, 5 search-context columns |
| Clinic / hospital columns | 31 from the listing, 16 more with full profile details, 5 search-context columns |
| Phone numbers | the "Contact Clinic" number shown on each doctor card, with the doctor's extension (99.7 % of 12,494 doctors); every clinic / hospital row carries its own number |
| Speed (measured) | 20 doctors in 7 s end-to-end · 1,000 with phones in 75 s · 1,000 with full profiles in 117 s · 4,877 without phones in 114 s |
| Depth (measured) | 12,494 unique doctors in one run, 0 duplicates (24 Oct 2026) |
| Login, cookies, browser | none |
| Export | JSON, CSV, Excel, XML, HTML, JSONL — or API, webhooks, Google Sheets, Make, Zapier, n8n |
| Price | pay per result: $2.50 per 1,000 rows on the Free plan, down to $1.60 per 1,000 on higher Apify plans |
What you get
Every row has a recordType — doctor, clinic or hospital — and a stable Practo ID (doctorId / establishmentId). The full list of columns with types, meanings, measured fill rates and examples is in the Data dictionary.
Doctor rows carry the doctor (name, url, photoUrl), the speciality and training (specialization, all specialities, experienceYears, qualifications, education with college and year), fees and reputation (consultationFee in ₹, recommendationPercent, patientStories), the contact number behind "Contact Clinic" with the doctor's extension (phone, phoneExtension), the clinic on the card with full location (clinicName, clinicType, clinicAddress, clinicLocality, clinicCity, clinicPostalCode, latitude, longitude, clinicUrl), opening hours as text and as structured blocks (clinicTimings, clinicHours), otherClinicsCount, the next free appointment slot (nextAvailableAt), maxWaitMinutes, bookOnline, services and the doctor's own about text.
With "Include full profile details" a doctor row also gets the medical registration (registrationNumber, registrationCouncil, registrationYear, registrationVerified, all registrations), specialistExperienceYears, certifications, memberships, awards, workExperience, languages, the main clinic's clinicState, clinicLandmark and the doctor's own hours there (doctorTimings), and clinics — every clinic on the profile with address, coordinates, the doctor's fee and timings there, the clinic's hours and rating. In this mode the main clinic's fee, address, hours and coordinates come from the live profile record.
Clinic and hospital rows carry name, type, multi-speciality flag, full address with locality, PIN code and coordinates, phone, the fee range of its doctors, number of doctors and specialities, star rating and ratingVotes, year established, opening hours, 24×7 flag, booking type, chain size (otherCentersCount, groupUrl), description, image and the doctors shown on the card (each with ID, speciality, experience, recommendation %, patient stories and profile link). With details: state, landmark, website, emergencyPhone, bedCount, ambulanceCount, amenities, wheelchairAccessible, insuranceProviders, paymentModes, accreditations (NABH …), specialities, awards, tagline, timingsDetailed, listedOnPractoSince.
Every row also records the search that found it (searchCity, searchSpeciality, searchLocality when localities were used, searchUrl) and scrapedAt. Values Practo does not publish are null — never a placeholder: Practo's "no fee" 0 and its 0,0 "no location" coordinates are written as null.
Who uses Practo data and how
1. Pharma and medical-device sales. Territory lists of prescribers: Orthopedist, Cardiologist, Diabetologist in Pune, Nagpur, Nashik, experienceYears ≥ 10, sorted by patientStories, loaded into the CRM with clinic, PIN code and phone; monthly re-runs show who joined or left.
2. Dental supply distributors. Dentistry is Practo's largest speciality (814 dentists in Bangalore). Group by clinicId to find multi-doctor clinics and call them with the doctor's extension.
3. Diagnostic labs. General physicians, gynecologists and paediatricians around each collection centre (latitude/longitude), ranked by patientStories.
4. Insurance and TPA network teams. Hospitals with insuranceProviders, accreditations (NABH), bedCount, ambulanceCount and emergencyPhone: who already accepts which insurer, which NABH hospitals are not yet empanelled.
5. Healthtech founders and investors. Market sizing: doctors per speciality per city, fee distribution, share taking online bookings — the denominator for every deck slide.
6. Clinic chains and hospital groups. Competition in a locality before opening a branch: count, fees, recommendation %, timings; weekly schedules show new entrants and fee changes.
7. Medical recruiters. Shortlist by registrationCouncil, specialistExperienceYears, languages, workExperience and certifications.
8. Doctor-marketing agencies. Benchmark a client against nearby peers on recommendationPercent, patientStories, services listed and profile completeness.
9. Public-health researchers. Access maps from coordinates, PIN codes and fees: PIN codes without a paediatrician, fee gaps between localities, hospitals open 24×7.
10. Data journalists. The cost of a gynecologist visit across eight metros, with each doctor's profile link as the source.
11. Medical-tourism facilitators. Multispeciality hospitals with accreditations, specialities, beds, website and phone in Delhi, Mumbai, Chennai and Hyderabad.
12. Corporate wellness teams. Clinics near each office (locality search) with timings and fees for an employee "doctors near you" list.
13. Credential screening. Match a doctor's stated registration with the number, council and year on their Practo profile before checking the council's own register.
14. Pharmacy and real-estate planners. Clinic density per PIN code, weighted by patient stories, to place a pharmacy or medical complex.
15. CRM and data teams. A master table keyed by doctorId, refreshed on a schedule and upserted into BigQuery, Snowflake or Postgres.
16. AI agents. A doctor-finder assistant calls the Actor through Apify's MCP server with a small input and answers with names, fees, next slots and links.
Cookbook: ready-to-run inputs
Paste any of these into the JSON tab of the input form (or send them as the API body). Fields you leave out take their defaults.
1. Dentists in one city (the prefilled example — about 7 seconds)
{ "cities": ["Bangalore"], "specialities": ["Dentist"], "maxItems": 20 }
2. Every doctor Practo lists in a city
{ "cities": ["Hyderabad"], "specialities": [], "maxItems": 0 }
maxItems: 0 = no limit; the search is split automatically past Practo's 500-doctor window.
3. Several specialities across several cities
{"cities": ["Mumbai", "Pune", "Thane", "Navi Mumbai"],"specialities": ["Gynecologist", "Pediatrician", "Dermatologist"],"maxItems": 5000}
12 searches (every city × every speciality); each doctor is written once.
4. Female gynecologists with at least 10 years of experience
{ "cities": ["Delhi"], "specialities": ["Gynecologist"], "gender": "female", "minExperienceYears": 10, "maxItems": 1000 }
5. Affordable general physicians (fee up to ₹500)
{ "cities": ["Chennai"], "specialities": ["General Physician"], "maxFee": 500, "maxItems": 1000 }
6. One neighbourhood
{ "cities": ["Bangalore"], "specialities": ["Dentist", "Dermatologist"], "localities": ["HSR Layout", "Koramangala"], "maxItems": 500 }
Practo's locality pages include neighbouring localities; clinicLocality shows the real one.
7. The most-reviewed doctors first
{ "cities": ["Kolkata"], "specialities": ["Orthopedist"], "sortBy": "patient_stories", "maxItems": 100 }
8. Credentials export — registration numbers, councils, memberships
{ "cities": ["Bangalore"], "specialities": ["Cardiologist", "Neurologist"], "includeDetails": true, "maxItems": 500 }
9. Clinic list with phone numbers
{ "searchType": "clinics", "cities": ["Mumbai"], "specialities": ["Dental"], "maxItems": 2000 }
For clinics and hospitals "specialities" takes a type: Dental, Eye, Skin, Gynecology, Pediatric, ENT …
10. Hospitals with beds, NABH accreditation and accepted insurance
{ "searchType": "hospitals", "cities": ["Delhi", "Gurgaon", "Noida"], "includeDetails": true, "maxItems": 3000 }
11. Paste Practo search pages (filters in the URL are kept)
{"startUrls": [{ "url": "https://www.practo.com/delhi/dermatologist/rohini?filters%5Bdoctor_gender%5D=female" },{ "url": "https://www.practo.com/hyderabad/clinics/eye-clinics" }],"maxItems": 1000}
12. Single profiles by URL (doctor, clinic or hospital)
{"startUrls": [{ "url": "https://www.practo.com/bangalore/doctor/dr-abhilash-pasare-dentist" },{ "url": "https://www.practo.com/bangalore/hospital/motherhood-hospital-indiranagar" }]}
Profile URLs always return the full profile and the phone number.
13. Fastest bulk export (no phone lookups)
{ "cities": ["Bangalore", "Delhi"], "specialities": [], "maxItems": 0, "includePhone": false }
No per-doctor phone request: listing data only — all 4,877 Bangalore doctors took 114 s in our test.
14. A national doctor database (many cities, everything)
{"cities": ["Bangalore", "Delhi", "Hyderabad", "Chennai", "Mumbai", "Pune", "Gurgaon", "Kolkata", "Noida", "Ahmedabad", "Jaipur", "Lucknow"],"specialities": [],"maxItems": 0}
About 20,000 doctors — roughly 25 minutes with phones at the measured speed, inside the default 1-hour timeout.
How to run it in Apify Console
- On the Input tab choose What to scrape (Doctors, Clinics or Hospitals) and type one or more Cities (Bengaluru, New Delhi, Gurugram and Kochi are understood too).
- Add Specialities (Dentist, Gynecologist …) or leave them empty for every doctor of the city; optionally add Localities, the Doctor filters or Practo URLs.
- Set Max results (0 = everything) and decide on Include clinic phone number (on by default) and Include full profile details.
- Click Start. Rows appear in Output within seconds; the status line shows progress ("Saved 640/1,000 doctors · 70 listing pages · 640 phones · 40 s").
- Download from Export (CSV, Excel, JSON …) or open a prepared view: Doctors, Doctor's clinic & timings, Registration & credentials, Clinics & hospitals, Hospital & clinic details.
How to run it through the API
Start a run and wait for the result in one call (good for up to a few thousand rows):
curl -X POST "https://api.apify.com/v2/acts/logiover~practo-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN&format=json" \-H "Content-Type: application/json" \-d '{"cities":["Bangalore"],"specialities":["Dentist"],"maxItems":100}'
For big runs, start asynchronously and read the dataset when the run has finished:
# startcurl -X POST "https://api.apify.com/v2/acts/logiover~practo-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"cities":["Delhi","Gurgaon","Noida"],"specialities":[],"maxItems":0}'# poll GET https://api.apify.com/v2/actor-runs/RUN_ID?token=YOUR_TOKEN until status is SUCCEEDED# CSV with chosen columnscurl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_TOKEN&format=csv&fields=name,specialization,consultationFee,phone,phoneExtension,clinicName,clinicLocality,clinicCity,url"
The run's key-value store also holds a SUMMARY record with the outcome, how many doctors Practo listed for each search, how many were collected, phone and profile counts and the network statistics.
Input reference
| Field | Type | Default | What it does |
|---|---|---|---|
searchType | doctors | clinics | hospitals | doctors | Which Practo listing to read. Doctors = one row per doctor; Clinics / Hospitals = one row per establishment. |
cities | list of text | ["Bangalore"] | Indian cities as Practo spells them (Bangalore, Mumbai, Delhi, Hyderabad, Chennai, Pune, Kolkata, Gurgaon, Noida …); Bengaluru, New Delhi, Gurugram, Bombay, Madras, Calcutta, Kochi, Trivandrum, Vizag, Mysuru are translated. |
specialities | list of text | [] (all) | Doctor specialities (Dentist, Gynecologist, Dermatologist, General Physician, Pediatrician, ENT …) or Practo slugs; for clinics / hospitals a type (Dental, Eye, Skin, Gynecology …). Empty = everything. |
localities | list of text | [] | Neighbourhoods (HSR Layout, Andheri West, Banjara Hills). Each is a separate Practo search combined with each city and speciality. |
startUrls | list of URLs | [] | practo.com listing pages (with Practo's filters in the query string), clinic / hospital listings, or doctor / clinic / hospital profiles. When given, cities / specialities / localities are not used. |
gender | any | female | male | any | Practo's gender filter (doctors). |
minExperienceYears | integer 0–60 | 0 | Only doctors with at least this many years of experience. |
minFee / maxFee | integer ₹ 0–100,000 | 0 / 0 | Consultation-fee range; 0 = no limit on that side. |
sortBy | relevance | patient_stories | experience | fee_low_to_high | fee_high_to_low | relevance | Practo's sort options. |
maxItems | integer | 1000 | Maximum rows across all searches; 0 = no limit. |
includePhone | boolean | true | Look up the "Contact Clinic" number and extension for each doctor (one small request per doctor). Clinic / hospital rows always include their phone. |
includeDetails | boolean | false | Read every row's full profile (one extra request per row): registration, certifications, memberships, awards, work history, languages, all clinics; for establishments website, emergency number, beds, ambulances, amenities, insurance, payment modes, accreditations, specialities. |
maxConcurrency | integer 2–48 | 24 | Requests in flight. The default is tuned; lower it only if you share a proxy with other jobs. |
proxyConfiguration | proxy object | no proxy | Optional. See Performance tips — the built-in route (direct connection, fresh datacenter IPs on refusal, capped Indian residential rescue) needs no setting. |
How searches are combined. For doctors: every city × every speciality × every locality is one Practo search. A search bigger than Practo's 500-doctor window is split into parts that fit — consultation-fee bands, then gender, then years of experience for speciality searches; gender and years of experience for the all-doctors listing (Practo ignores the fee filter there). Each doctor is written once per run, no matter how many searches or parts it appears in. When you ask for fewer rows than one window, you get Practo's own order (relevance or the sort you picked); for bigger requests the first 500 rows still follow Practo's order and the rest come part by part.
Data dictionary
Fill rates are measured on real platform runs on 24 Oct 2026: doctor listing columns on 12,494 doctors from Bangalore, Delhi, Hyderabad and Chennai (run of 24 Oct 2026); doctor profile columns on 1,000 doctors from Mumbai with full details; clinic columns on 1,000 Bangalore clinics with details; hospital columns on 1,000 hospitals from Delhi, Mumbai and Bangalore with details. A fill rate below 100 % means Practo itself does not show the value for some rows (no fee published, no summary written, no extension because the clinic has one doctor …) — the Actor never invents a value.
Doctor columns (listing)
| Column (type) | Meaning | Fill, 12,494 doctors | Example |
|---|---|---|---|
recordType (text) | Always doctor for doctor rows. | 100 % | doctor |
doctorId (number) | Practo's doctor ID — stable key, de-duplication. | 100 % | 8197 |
name (text) | Name with title, as on Practo. | 100 % | Dr. Jigyasa Wadhwa |
url (text) | Public Practo profile page. | 100 % | https://www.practo.com/delhi/docto… |
specialization (text) | The card's headline speciality. | 100 % | General Physician |
specialities (array) | All (sub-)specialities on the card. | 100 % | |
experienceYears (number) | Years of experience overall. | 100 % | 16 |
qualifications (text) | Degrees as one string. | 100 % | BHMS |
education (array) | {degree, college, year} list. | 100 % | |
consultationFee (number) | Clinic-visit fee at the clinic on the card, ₹; null = not published. | 98.9 % | 950 |
currency (text) | Currency of the fee (INR). | 100 % | INR |
recommendationPercent (number) | Patients who recommend the doctor, %. | 80.9 % | 100 |
patientStories (number) | Patient stories (feedback) count. | 100 % | 83 |
phone (text) | "Contact Clinic" number (Practo routing number, E.164). | 99.7 % | +918047284137 |
phoneExtension (text) | Extension that reaches this doctor. | 62.9 % | 014 |
clinicName (text) | Clinic / hospital on the card. | 100 % | Wadhwa Healing Touch Homoeopathic … |
clinicType (text) | Clinic or Hospital. | 100 % | Clinic |
clinicId (number) | Practo's ID of that clinic. | 100 % | 1118873 |
clinicUrl (text) | The clinic's Practo page. | 100 % | https://www.practo.com/delhi/clini… |
clinicLocality (text) | Neighbourhood of the clinic. | 100 % | Krishna Nagar |
clinicCity (text) | City of the clinic. | 100 % | Delhi |
clinicAddress (text) | Street address of the clinic. | 100 % | E-15/29, 1st Floor, Mandir Marg |
clinicPostalCode (text) | 6-digit PIN code. | 99.5 % | 110091 |
clinicCountry (text) | Country (India). | 100 % | India |
latitude (number) | Clinic latitude (WGS 84). | 99.8 % | 12.987771280409834 |
longitude (number) | Clinic longitude (WGS 84). | 99.8 % | 77.7322174551292 |
clinicTimings (text) | Clinic hours as text (24 h). | 100 % | Mon-Sun 10:00-17:00 |
clinicHours (array) | {days, opens, closes} blocks. | 100 % | |
otherClinicsCount (number) | The "+ N more" clinics on the card. | 100 % | 0 |
nextAvailableAt (text) | Next free slot (ISO 8601, UTC). | 91.6 % | 2026-10-26T11:30:00.000Z |
maxWaitMinutes (number) | Max. waiting time, minutes. | 42.2 % | 30 |
bookOnline (boolean) | Card offers online booking. | 100 % | false |
servicesCount (number) | Services / treatments listed. | 100 % | 16 |
services (array) | Services (full list with details). | 77.1 % | |
about (text) | The doctor's profile summary. | 80.5 % | Senior Consultant-Fertility, IVF &… |
photoUrl (text) | Profile photo. | 98.7 % | https://images1-fabric.practo.com/… |
relationId (number) | ID of this doctor at this clinic. | 100 % | 537583 |
profileSlug (text) | Slug of the profile URL. | 100 % | dr-jigyasha-wadhwa-homeopath |
Doctor columns added by "Include full profile details"
| Column (type) | Meaning | Fill, 1,000 doctors | Example |
|---|---|---|---|
profileId (text) | Practo's internal profile UUID. | 100 % | 90fd326a-91c0-48eb-9b19-237340f7420a |
registrationNumber (text) | Council registration number. | 100 % | 2015052931 |
registrationCouncil (text) | Medical / dental council. | 100 % | Maharashtra Medical Council |
registrationYear (number) | Year of registration. | 99.9 % | 2015 |
registrationVerified (boolean) | Practo's "Medical Registration Verified" flag. | 100 % | true |
registrations (array) | All registrations. | 100 % | |
specialistExperienceYears (number) | Years as a specialist. | 100 % | 8 |
certifications (array) | Trainings / certifications. | 18 % | |
memberships (array) | Professional memberships. | 64.6 % | |
awards (array) | Awards {title, year, details}. | 43.6 % | |
workExperience (array) | Work history {organization, role, from, to}. | 65.9 % | |
languages (array) | Languages the doctor speaks. | 97.3 % | |
clinicState (text) | State of the main clinic. | 100 % | Maharashtra |
clinicLandmark (text) | Landmark of the main clinic. | 90.3 % | Vijaya Bank |
doctorTimings (text) | The doctor's own hours at the main clinic. | 97.7 % | Mon-Sun 00:00-23:59 |
clinicsCount (number) | Practo's number of clinics for the doctor. | 100 % | 1 |
clinics (array) | Every clinic on the profile with address, coordinates, fee, timings, rating. | 100 % |
Search context columns (all row types)
| Column (type) | Meaning | Fill, 12,494 doctors | Example |
|---|---|---|---|
searchCity (text) | City slug of the search that found the row. | 100 % | delhi |
searchSpeciality (text) | Speciality / type slug (doctors = all). | 100 % | doctors |
searchLocality (—) | Locality slug (only in runs with localities). | — | |
searchUrl (text) | Practo page of that search. | 100 % | https://www.practo.com/delhi/doctors |
scrapedAt (text) | When the row was read (ISO 8601, UTC). | 100 % | 2026-10-24T23:15:35.563Z |
Clinic and hospital columns (listing)
| Column (type) | Meaning | Fill, 1,000 clinics | Fill, 1,000 hospitals | Example |
|---|---|---|---|---|
recordType (text) | clinic or hospital. | 100 % | 100 % | clinic |
establishmentId (number) | Practo's establishment ID — stable key. | 100 % | 100 % | 1225048 |
name (text) | Name of the clinic / hospital. | 100 % | 100 % | Lifeforce Homeopathy Clinic |
url (text) | Public Practo page. | 100 % | 100 % | https://www.practo.com/bangalore/c… |
type (text) | Clinic or Hospital. | 100 % | 100 % | Clinic |
multiSpeciality (boolean) | Card says "Multi-speciality". | 99.4 % | 97.1 % | true |
locality (text) | Neighbourhood. | 100 % | 100 % | Malleswaram |
city (text) | City. | 100 % | 100 % | Bangalore |
address (text) | Street address. | 100 % | 99.9 % | Medical Center, Building No.94, Gr… |
postalCode (text) | PIN code. | 100 % | 93.8 % | 560003 |
country (text) | Country. | 100 % | 100 % | India |
latitude (number) | Latitude. | 99.5 % | 98.4 % | 13.02027220191 |
longitude (number) | Longitude. | 99.5 % | 98.4 % | 77.704671577134 |
phone (text) | Number behind "Call Clinic" / "Call Hospital". | 99.8 % | 100 % | +917969204660 |
phoneExtension (text) | Extension, where Practo uses one. | 27.5 % | 65.6 % | 079 |
consultationFeeMin (number) | Lowest consultation fee among its doctors, ₹. | 94.8 % | 62.1 % | 500 |
consultationFeeMax (number) | Highest consultation fee among its doctors, ₹. | 98.4 % | 97.5 % | 200 |
currency (text) | INR. | 100 % | 100 % | INR |
doctorsCount (number) | Doctors listed (type search: of that type). | 100 % | 100 % | 1 |
specialitiesCount (number) | Number of specialities (card text or profile list). | 100 % | 100 % | 1 |
rating (number) | Star rating shown on Practo. | 79.1 % | 82.1 % | 5 |
ratingVotes (number) | Votes / patient stories behind the rating. | 93.1 % | 97 % | 425 |
yearEstablished (number) | Year established, when published. | 8.8 % | 22.1 % | 2016 |
timings (text) | Opening hours as Practo prints them on the card. | 100 % | 100 % | TUE - SAT 11:00AM - 8:00PM, SUN 09… |
open24x7 (boolean) | Open 24×7 flag. | 100 % | 100 % | false |
bookingType (text) | Instant booking or request. | 98.7 % | 99 % | instant booking |
otherCentersCount (number) | Other centres of the same chain ("+8 centers"). | 7 % | 21.9 % | 7 |
groupUrl (text) | Practo page listing the chain's centres. | 7 % | 21.9 % | https://www.practo.com/bangalore/c… |
description (text) | About text. | 100 % | 100 % | Life Force is the world leader in … |
imageUrl (text) | Main photo. | 96.2 % | 85.5 % | https://imagesx.practo.com/establi… |
doctors (array) | Doctors on the card with ID, speciality, experience, recommendation %, stories, link. | 99.2 % | 99.9 % |
Clinic and hospital columns added by "Include full profile details"
| Column (type) | Meaning | Fill, 1,000 clinics | Fill, 1,000 hospitals | Example |
|---|---|---|---|---|
state (text) | State. | 100 % | 99.8 % | Karnataka |
landmark (text) | Landmark. | 86.5 % | 85.9 % | munnekollal |
website (text) | Website published on the profile. | 23 % | 46.3 % | http://www.speechtherapyindia.in |
emergencyPhone (text) | Emergency number. | 0.9 % | 62.5 % | +918041129548 |
bedCount (number) | Number of beds. | 1.5 % | 67.5 % | 1 |
ambulanceCount (number) | Number of ambulances. | 0.7 % | 46.2 % | 0 |
amenities (array) | Amenities (Bloodbank, Pharmacy, Parking …). | 28.2 % | 67.9 % | |
wheelchairAccessible (boolean) | Wheelchair accessibility flag. | 100 % | 99.8 % | false |
insuranceProviders (array) | Insurers shown on the profile. | 28.3 % | 74.5 % | |
paymentModes (array) | Accepted payment modes. | 52.9 % | 43.3 % | |
accreditations (array) | Accreditation bodies (NABH …). | 11.8 % | 32.3 % | |
specialities (array) | Specialities of the establishment. | 99.4 % | 96.9 % | |
awards (array) | Awards: {title, year}. | 26.8 % | 30.7 % | |
tagline (text) | Tagline. | 24.7 % | 32.2 % | Hair and Skin speciality Clinic |
timingsDetailed (text) | Opening hours, 24-hour clock, per day group. | 100 % | 99.8 % | Tue-Sat 11:00-20:00; Sun 09:00-18:00 |
listedOnPractoSince (text) | Created on Practo (ISO 8601). | 100 % | 99.8 % | 2018-10-11T07:54:50.000Z |
Real output sample
Copied from runs on the Apify platform — unmasked, exactly what Practo shows publicly. In the JSON below long lists are cut to two items and long texts shortened ("…"); the dataset has them in full.
Six doctors from the 12,494-doctor run (listing data with phone):
| name | specialization | experienceYears | consultationFee | recommendationPercent | patientStories | phone | phoneExtension | clinicLocality | clinicCity |
|---|---|---|---|---|---|---|---|---|---|
| Dr. Kapil Garg | Dentist | 21 | 500 | 98 | 435 | +917317161343 | 002 | Pitampura | Delhi |
| Dr. Tejeswini Deepak | Internal Medicine | 29 | 1000 | 90 | 153 | +918047361440 | Koramangala 5 Block | Bangalore | |
| Dr. B Kanaga Durga | General Physician | 26 | 700 | 100 | 8 | +914471967194 | 018 | Karapakkam | Chennai |
| Dr. Shalini Thakur | Dentist | 17 | 1360 | 100 | 3 | +911140848524 | Sampangiramnagar | Bangalore | |
| Dr. Dharmesh Khatri | Orthopedist | 23 | 800 | 96 | 25 | +917317117211 | 004 | Janakpuri | Delhi |
| Dr. Velukuru Sai Vivek | Oncologist | 13 | 1000 | 78 | 9 | +918045688032 | 034 | Whitefield | Bangalore |
One doctor row with "Include full profile details" (all columns except clinicHours, which holds the same hours as clinicTimings as structured blocks):
{"recordType": "doctor","doctorId": 691422,"name": "Dr. Talha Meeran","url": "https://www.practo.com/mumbai/doctor/talha-meeran-cardiologist","specialization": "Cardiologist","specialities": ["Cardiologist"],"experienceYears": 19,"qualifications": "MBBS, Diplomate of American Board of Internal Medicine (Internal Medicine), Fellowship in Cardiovascular Medicine, Diplomate in Cardiovascular Disease","education": [{"degree": "MBBS","college": "Topiwala National Medical College & BYL Nair Charitable Hospital","year": 2007},{"degree": "Diplomate of American Board of Internal Medicine (Internal Medicine)","college": "american board of medicine","year": 2014},"… 2 more"],"consultationFee": 2000,"currency": "INR","recommendationPercent": 100,"patientStories": 1,"phone": "+917971172207","phoneExtension": "124","clinicName": "Sir H.N. Reliance Foundation Hospital","clinicType": "Hospital","clinicId": 862484,"clinicUrl": "https://www.practo.com/mumbai/hospital/sir-hn-reliance-foundation-hospital-charni-road","clinicLocality": "Girgaon","clinicCity": "Mumbai","clinicAddress": "Sir H. N. Reliance Foundation Hospital Prarthana Samaj, Raja Ram Mohan Roy Road, Girgaon","clinicPostalCode": "400004","clinicCountry": "India","latitude": 18.958851359667154,"longitude": 72.8200491190601,"clinicTimings": "Mon-Sat 00:00-23:59","otherClinicsCount": 1,"nextAvailableAt": "2026-10-26T05:30:00.000Z","maxWaitMinutes": 30,"bookOnline": true,"servicesCount": 6,"services": ["2D - Echocardiography (2D-Echo)","Holter Monitoring","… 4 more"],"about": "Dr. Talha Meeran is one of the very few American Board-Certified Advanced Heart Failure Cardiologist in the country. He has trained at elite institutes such as …","photoUrl": "https://images1-fabric.practo.com/doctor/691422/dr-talha-meeran-69707fd208af4.png","relationId": 888190,"profileSlug": "talha-meeran-cardiologist","profileId": "3ac6d4cf-38b2-4a08-ad9c-ce818453f9bd","registrationNumber": "2009031275","registrationCouncil": "Maharashtra Medical Council","registrationYear": 2009,"registrationVerified": true,"registrations": [{"number": "2009031275","council": "Maharashtra Medical Council","year": 2009,"verified": true},{"number": "19-30719","council": "Medical Council of India (MCI)","year": 2009,"verified": true}],"specialistExperienceYears": 9,"certifications": [{"title": "Fellowship in Heart Failure and Transplant Cardiology","institution": "Allegheny General Hospital","year": 2018}],"memberships": ["American College of Cardiology","International Society of Heart and Lung Transplant","… 2 more"],"awards": [{"title": "Best Poster for Fellow in Training at the national American College of Cardiology meeting, Chicago, USA","year": 2016,"details": null},{"title": "Profiles of Excellence Award at the Maryland ACP meeting, Baltimore, USA","year": 2014,"details": null},"… 1 more"],"workExperience": [{"organization": "Allegheny General Hospital, Pittsburgh, USA","role": "Cardiology & Advance Heart Failure, Cardiac Transplant Fellowship","from": "2014-07-01","to": "2018-06-01"}],"languages": ["English"],"clinicState": "Maharashtra","clinicLandmark": "Closest to Charni Road railway station","doctorTimings": "Mon-Sat 11:00-14:00, 15:00-16:00","clinicsCount": 2,"clinics": [{"clinicId": 862484,"relationId": 888190,"name": "Sir H.N. Reliance Foundation Hospital","type": "Hospital","url": "https://www.practo.com/mumbai/hospital/sir-hn-reliance-foundation-hospital-charni-road","locality": "Girgaon","city": "Mumbai","state": "Maharashtra","address": "Sir H. N. Reliance Foundation Hospital Prarthana Samaj, Raja Ram Mohan Roy Road, Girgaon","landmark": "Closest to Charni Road railway station","latitude": 18.958851359667154,"longitude": 72.8200491190601,"consultationFee": 2000,"doctorTimings": "Mon-Sat 11:00-14:00, 15:00-16:00","clinicTimings": "Mon-Sat 00:00-23:59","clinicRating": 4,"bookOnline": true}],"searchCity": "mumbai","searchSpeciality": "cardiologist","searchUrl": "https://www.practo.com/mumbai/cardiologist","scrapedAt": "2026-10-24T23:21:58.692Z"}
Five hospitals with full details (from the 1,000-hospital run):
| name | city | locality | phone | bedCount | accreditations | rating | ratingVotes | website |
|---|---|---|---|---|---|---|---|---|
| Motherhood Hospital | Bangalore | Whitefield | +918045002247 | 50 | NABH | 4.5 | 1016 | |
| Max Smart Super Speciality Hospital | Delhi | Saket | +917971262015 | 650 | NABH | 3 | 718 | |
| Kokilaben Dhirubhai Ambani Hospital | Mumbai | Andheri West | +912071173175 | 750 | NABH | 3.5 | 225 | http://www.kokilabenhospital.com/ |
| Sri Sai Hospitals | Bangalore | Attibele | +918047096382 | 100 | NABH | 4 | 30 | |
| Pooja Maternity Nursing Home & Ent Center | Mumbai | Ghatkopar West | +912048552186 | 15 | NABH, ISO | 4.5 | 116 | http://www.mypooja.in |
CSV / Excel columns of a doctor run, in order: recordType, doctorId, name, url, specialization, specialities, experienceYears, qualifications, education, consultationFee, currency, recommendationPercent, patientStories, phone, phoneExtension, clinicName, clinicType, clinicId, clinicUrl, clinicLocality, clinicCity, clinicAddress, clinicPostalCode, clinicCountry, latitude, longitude, clinicTimings, clinicHours, otherClinicsCount, nextAvailableAt, maxWaitMinutes, bookOnline, servicesCount, services, about, photoUrl, relationId, profileSlug, searchCity, searchSpeciality, searchUrl, scrapedAt. Lists become numbered columns in CSV / Excel (education/0/degree …) and stay arrays in JSON.
Scale and speed
All numbers below were measured on the Apify platform with the default 1 GB memory and no proxy setting, on the dates shown (UTC).
| Date | Input | Result | Time | Notes |
|---|---|---|---|---|
| 24 Oct 2026 | Prefilled example: Bangalore, Dentist, 20 results | 20 doctors, 20 with phone | 7.1 s end-to-end, first row after 2.9 s | what Apify's daily check runs |
| 24 Oct 2026 | All defaults (Bangalore, all doctors, 1,000 results, phones on) | 1,000 doctors, 0 duplicates, 1,000 with phone | 74.7 s, first row after 2.7 s | split by gender × experience |
| 24 Oct 2026 | Bangalore, all doctors, no limit, phones off | 4,877 doctors, 0 duplicates | 114 s | Practo prints 4,912 |
| 24 Oct 2026 | Mumbai, 8 specialities, 1,000 results, full profile details | 1,000 doctors, 1,000 full profiles, 998 with phone | 116.6 s | registration number on 100 % of profiles |
| 24 Oct 2026 | Bangalore clinics, 1,000 results, full profile details | 1,000 clinics, 1,000 full profiles | 103.1 s | Practo lists 10,000+ clinics in Bangalore |
| 24 Oct 2026 | Hospitals in Delhi, Mumbai, Bangalore, 1,000 results, full profile details | 1,000 hospitals, 998 full profiles | 172.5 s | Practo lists 946 / 1,157 / 1,490 hospitals |
| 24 Oct 2026 | Bangalore, Delhi, Hyderabad, Chennai — all doctors, no limit, phones on | 12,494 doctors, 0 duplicates, 12,459 with phone | 918 s (15 min 18 s) | status Succeeded / COMPLETED; reproduced with the final build: 12,494 doctors in 796 s |
| 24 Oct 2026 | Prefilled example with the direct connection forced to fail | 20 doctors | 26.7 s | served by fresh datacenter IPs |
Depth. The largest run read every doctor Practo lists in Bangalore, Delhi, Hyderabad and Chennai: 12,494 unique doctors, 0 duplicates, status Succeeded (24 Oct 2026, 918 s, phones included). Practo prints 12,331 doctors for those four all-doctors listings; the split also reaches doctors the printed counts leave out, so the run returned slightly more. Every row is a distinct Practo doctor ID.
Throughput. About 48,000 doctors per hour with phones; without phones (includePhone: false) all 4,877 Bangalore doctors took 114 s (about 150,000 per hour). In the 12,494-doctor run Practo refused 2–3 % of direct requests and 9–10 % of fresh datacenter IPs; each refused request was retried at once on another IP.
When Practo refuses the connection. With the direct connection forced to fail (test switch) the prefilled run still finished in 27 s through datacenter IPs; if those fail too, a capped Indian residential route takes over — so Apify's daily quality check keeps getting data.
What you pay
Practo Scraper is priced per result — you pay for rows in your dataset, not for compute time or proxies. Every doctor, clinic or hospital row is one result; phone look-ups and full profile details are included in the price.
| Apify plan | Price per 1,000 results | 1,000 results | 10,000 results | 100,000 results |
|---|---|---|---|---|
| Free | $2.50 | $2.50 | $25.00 | $250.00 |
| Bronze (Starter) | $2.20 | $2.20 | $22.00 | $220.00 |
| Silver (Scale) | $1.90 | $1.90 | $19.00 | $190.00 |
| Gold (Business) and above | $1.60 | $1.60 | $16.00 | $160.00 |
Maximum cost per run. Every pay-per-result run on Apify has a maximum cost per run (you can set it under Run options; when you set none, Apify applies its default). Practo Scraper reads that limit when it starts, works out how many results it can afford and stops cleanly at that number with the message "Saved N rows — this run's maximum cost ($X) covers N results at the current price. Raise 'Maximum cost per run' to get more." The run still ends as Succeeded, everything saved so far stays in the dataset, and you are never charged above your limit. For exports of tens of thousands of doctors, raise the maximum cost per run before you start (for example to $30 for ~12,000 doctors on the Free plan).
Re-runs. Each run reads Practo live (no cache). If the platform moves a run to another server mid-way, rows already saved are not written or charged twice.
Integrations
curl — see How to run it through the API.
Node.js (apify-client)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('logiover/practo-scraper').call({cities: ['Bangalore', 'Mumbai'],specialities: ['Dentist'],maxItems: 500,includePhone: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();for (const d of items) console.log(d.name, d.consultationFee, d.phone, d.phoneExtension, d.clinicLocality);
Python (apify-client)
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("logiover/practo-scraper").call(run_input={"searchType": "hospitals","cities": ["Delhi"],"includeDetails": True,"maxItems": 300,})for h in client.dataset(run["defaultDatasetId"]).iterate_items():print(h["name"], h.get("bedCount"), h.get("accreditations"), h["phone"])
Google Sheets — use Apify's Google Sheets integration (Actor → Integrations → Google Sheets) to append each run's rows to a sheet, or in Sheets =IMPORTDATA("https://api.apify.com/v2/datasets/DATASET_ID/items?format=csv&token=YOUR_TOKEN&fields=name,specialization,consultationFee,phone,clinicName,clinicLocality,url").
Airtable — the Apify ↔ Airtable integration (or Make / Zapier) upserts rows by doctorId into a base used by the sales team.
Make / Zapier / n8n — "Watch Actor runs" / "Finished Actor Run" trigger → get dataset items → your CRM (HubSpot, Zoho, Salesforce, Pipedrive), keyed by doctorId; n8n's Apify node does the same.
Webhooks — add a webhook for Actor run succeeded that posts the dataset ID to your endpoint; your service then downloads …/items?format=json.
Schedules — run the same input daily or weekly (cron 0 6 * * 1) and compare doctorId, consultationFee, nextAvailableAt and phone between runs to monitor fees and availability.
AI agents and MCP — through Apify's MCP server an agent (Claude, ChatGPT, Cursor, your own LangChain / LlamaIndex agent) can call logiover/practo-scraper as a tool with a small input (maxItems 10–50) and answer questions such as "find three female dermatologists in Koramangala under ₹800 with slots tomorrow".
Warehouses — load the JSON / CSV export into BigQuery, Snowflake, Redshift or Postgres (Pandas: pd.read_csv(<dataset CSV URL>)); doctorId / establishmentId are stable keys and scrapedAt dates each snapshot.
Performance tips
- Leave the proxy setting empty. The Actor reads Practo over a direct connection and moves a request to a fresh Apify datacenter IP the moment Practo refuses one (Practo's firewall refuses some IPs with "Access Denied" or a 2 KB interstitial page). If both are refused, up to 400 requests go through Indian residential IPs so the run still completes. A proxy you set becomes the first route of every request, which is slower and — for residential — costs you more.
- Switch off phone look-ups for pure bulk exports. With
includePhone: falseall 4,877 Bangalore doctors took 114 s (about 150,000 per hour) against about 48,000 per hour with phones; you can look up phones later for the doctors you keep. - Full profile details cost one request per row. 1,000 doctors with details took 117 s instead of 75 s. Ask for details when you need registration numbers, memberships, languages or all clinics.
- Small
maxItems= Practo's own order (relevance or your sort); big requests are split and stay complete. - Timeout. The default run timeout is one hour — roughly 48,000 doctors with phones at the measured speed. For bigger exports raise it; the Actor watches the timeout itself and finishes with everything collected so far (status PARTIAL with the reason).
- Memory. 1 GB is plenty; the measured peak for 1,000 doctors with full details was 149 MB.
Troubleshooting and status messages
Every run ends with one of these status messages; its key-value store holds a SUMMARY record (outcome, Practo's count and rows collected per search, phones, profiles, pages not read, last error, network statistics).
| Status message (shortened) | Run | What to do |
|---|---|---|
| Saved N doctors in S s — reached "Max results" (N) (X with phone …). Practo lists: /bangalore/dentist 814 … | Succeeded | Raise Max results (0 = no limit) for more. |
| Saved N doctors … — every listing page was read | Succeeded | Everything that matched was collected. |
| PARTIAL: … the run timeout came first — raise the timeout to collect the rest | Succeeded | The run stopped itself before its timeout and kept every row; raise the timeout. |
| PARTIAL: … K listing page(s) could not be read after retries — re-run to fill the gap | Succeeded | Rare; each page gets 6 attempts on 3 routes plus 2 more passes. Re-run the affected city / speciality. |
| Saved N rows — this run's maximum cost ($X) covers N results … | Succeeded | Raise Maximum cost per run (What you pay). |
| No doctors matched on Practo — every search answered with 0 results … | Succeeded (EMPTY_RESULT) | Loosen the filters or pick a bigger city. |
| Practo has no listing for /kochi/dentist … Check the city / speciality spelling | Failed (INVALID_INPUT) | Use Practo's spelling (Kochi = Ernakulam). With several searches the unknown ones go to SUMMARY → notes and the rest run. |
| No results: Practo could not be reached … This is an access failure, not an empty result | Failed (BLOCKED / FETCH_FAILED) | Every route was refused; retry later (never happened in our tests). |
| "Minimum fee" (₹X) is higher than "Maximum fee" (₹Y) · Nothing to search … · None of the start URLs is a practo.com page … | Failed (INVALID_INPUT) | Fix the input as the message says. |
Normal log lines: "Practo is refusing the direct connection (HTTP 403); using fresh datacenter IPs for 60 s" · "Residential (India) rescue route ready" · "Practo ignores the fee filter on /x/doctors; splitting by the next filter instead" · "150 listing pages in a row brought no new doctor — stopping this search" (a safety stop that keeps the rows).
Honest limits
- Phone numbers are Practo's call-routing numbers that forward to the clinic (the extension reaches the doctor at multi-doctor clinics) — the number Practo publishes to patients, not a personal mobile. A doctor card's number and the clinic page's number can differ; both reach the clinic. 99.7 % of doctors in our 12,494-doctor run had one.
- 500 doctors per Practo search. Practo serves 50 pages × 10 doctors of any doctor search and then empty pages. The Actor splits bigger searches automatically; because Practo counts its default (expanded) listing differently from filtered searches, a complete split can return slightly more doctors than the count Practo prints (for example 899 doctors for Kolkata where Practo prints 771 — all 899 practise in Kolkata) or a little fewer (doctors with no gender or experience on file can only be reached through the first 500 of the default order).
- 10,000 clinics or hospitals per search. Practo's clinic and hospital listings stop at 1,000 pages; for Bangalore Practo shows exactly that cap (10,000 clinics). Add clinic types (Dental, Eye, Skin …) or localities to reach the rest.
- Fee filter on the all-doctors listing. Practo ignores the fee filter on
/<city>/doctors; the Actor applies your fee range to the rows itself in that case. With specialities, Practo's own fee filter is used (it matches any of the doctor's clinics). - Profile clinics.
clinicsCountis Practo's number of clinics for the doctor;clinicslists the ones the profile page shows, which can be fewer, and a listing card can show a clinic the profile page leaves out. - No review texts, no booking, no patient data — only the counts Practo shows. Built and tested for Indian cities.
- Live data. Fees, slots and numbers change; every row carries
scrapedAt. The listing card comes from Practo's search index and can lag behind the live profile (we saw a card fee of 0 where the profile shows ₹1000, and an address written "F/104" on the card and "104/F" on the profile) — with full details the main clinic's fee, address, hours and coordinates come from the live profile. - Coordinates. Practo stores "no location" as 0,0 or as a map corner; those (24 of 12,494 doctors in our run) are written as
null, never as fake coordinates.
Practo Scraper compared with the alternatives
| Practo Scraper | Copying from practo.com by hand | Buying a doctor database | Official medical-council registers | |
|---|---|---|---|---|
| Fresh data | yes — read live at run time | yes, but slow | depends on the vendor | yes |
| Fees, ratings, patient stories | yes | yes | rarely | no |
| Clinic address, locality, PIN, coordinates, hours | yes | partly (no coordinates) | sometimes | no |
| Contact number | Practo's published clinic number + extension | yes, one by one | yes (source unknown) | no |
| Registration number and council | with full details | yes, one by one | sometimes | yes (authoritative) |
| Scale | tens of thousands of rows per run | one page at a time | fixed file | one doctor at a time |
| Format | JSON, CSV, Excel, API | manual spreadsheet | spreadsheet | web page |
| Cost model | per result, no subscription | your time | one-off licence | free |
Practo itself offers no public data API or bulk export; the medical councils' registers are the authority for registration status, and this Actor's registration columns are what the doctor's Practo profile shows.
FAQ
Does Practo have an official API for doctor data?
No public one — Practo's APIs serve its own apps and partners. Practo Scraper reads the public listing and profile data the website shows: a practical Practo API alternative.
How do I download a list of doctors from Practo to Excel?
Run {"cities":["Bangalore"],"specialities":["Dentist"]}, open Output and click Export → Excel or CSV. One row per doctor.
Can I get doctors' phone numbers from Practo?
Yes — the number behind Contact Clinic on each doctor card plus the doctor's extension (phone, phoneExtension). They are Practo's call-routing numbers to the clinic; personal mobile numbers are not published by Practo and not exported.
How many doctors are on Practo per city?
Practo's all-doctors listings on 24 Oct 2026: Bangalore 4,912, Delhi 2,802, Hyderabad 2,638, Chennai 1,980, Mumbai 1,923, Pune 1,618, Gurgaon 1,469, Kolkata 771, Noida 728, Navi Mumbai 634, Ghaziabad 453, Thane 345, Lucknow 324, Jaipur 319.
How do I scrape all dentists in Bangalore?
{"cities":["Bangalore"],"specialities":["Dentist"],"maxItems":0} — Practo lists 814; the search is split by fee band beyond the 500 window and all are collected.
Can I scrape Practo without logging in?
Yes. No account, cookie or browser is used.
Does it get the medical registration number?
With Include full profile details: number, council, year and Practo's verified flag — present on 100 % of the 1,000 Mumbai doctors we tested.
What is "Patient Stories"?
Practo's count of patient feedback for a doctor (patientStories); the share who recommend the doctor is recommendationPercent.
Can I filter by fee, gender or experience?
Yes: minFee, maxFee, gender, minExperienceYears — Practo's own filters (on the all-doctors listing Practo ignores the fee filter, so the Actor applies it to the rows).
Can I scrape clinics and hospitals?
Yes — What to scrape: Clinics / Hospitals. Phone, address, PIN, coordinates, fee range, doctors, rating, timings; with details website, emergency number, beds, ambulances, insurance, NABH and more.
How do I get hospitals with NABH and bed count?
{"searchType":"hospitals","cities":["Delhi"],"includeDetails":true,"maxItems":0} and filter accreditations for NABH.
Which insurance does a hospital accept on Practo?
With details, insuranceProviders lists the insurers shown on the hospital's profile (e.g. Star Health Insurance, HDFC Ergo, ICICI Lombard).
Can I scrape one locality, e.g. Andheri West?
Yes: "localities": ["Andheri West"]. Practo also shows nearby doctors; clinicLocality tells you where each one sits.
Can I paste a Practo search URL?
Yes — listings (with Practo's filters in the URL), clinic / hospital listings and doctor / clinic / hospital profiles.
How fast is it?
20 doctors in 7 s, 1,000 with phones in 75 s, 1,000 with full profiles in 117 s, and 12,494 doctors from four cities with phone numbers in 15 min 18 s (Apify platform, 24 Oct 2026).
How many results can one run return?
As many as Practo lists for your searches — our largest run returned 12,494 unique doctors with 0 duplicates.
Why do I get more doctors than Practo's count?
Practo's printed count is its default listing; filtered searches also return doctors that count leaves out (e.g. ones without online booking). All are real doctors of that city.
Will I get duplicates?
No — one row per doctorId (or establishmentId) per run, even across specialities, localities and cities.
Which clinic is in the row when a doctor has several?
The one Practo's card showed for your search, plus otherClinicsCount; with details clinics lists all clinics on the profile.
Is the fee in rupees?
Yes, a whole number in INR. Practo stores "no fee published" as 0; the Actor writes null then (about 1 % of doctors).
What does nextAvailableAt mean?
The next free appointment slot Practo shows, in UTC (IST = UTC+05:30); empty when nothing is bookable.
Can I scrape Practo reviews?
Counts only (patientStories, recommendationPercent; rating, ratingVotes for establishments) — no review texts.
Can I schedule a daily export?
Yes, with Apify Schedules; compare rows by doctorId between runs.
How do I export only some columns?
Add fields=name,phone,phoneExtension,clinicName,clinicCity to the dataset URL, or pick a prepared view.
How much does it cost to scrape 10,000 doctors?
$25 on the Free plan, $16 on Gold and above — phones and profile details included.
Why did my run stop before Max results?
Fewer doctors matched (every listing page was read), the maximum cost per run was reached, or the timeout came first (PARTIAL). SUMMARY shows Practo's count per search.
Why does a city return "Practo has no listing"?
Practo has its own city slugs (Kochi = Ernakulam, Gurugram = Gurgaon). Common ones are translated; check the city's URL on practo.com for others.
Do I need a proxy?
No — the built-in route (direct, fresh datacenter IPs on refusal, capped Indian residential rescue) handles Practo's firewall.
Can I use the data for cold calling?
How you contact doctors is your responsibility: TRAI's commercial-communication rules and the DPDP Act 2023 apply in India — see Legal and compliance.
Can an AI agent use this Actor?
Yes, via Apify's MCP server or API; keep maxItems at 10–50 for conversational answers.
What is Practo's 500-doctor limit?
Practo serves at most 50 pages × 10 doctors per search; the Actor splits bigger searches automatically.
Glossary
| Term | Meaning |
|---|---|
| Practo | India-based healthcare platform for finding doctors, booking clinic visits and online consultations (practo.com). |
| Speciality / sub-speciality | Practo's doctor categories (Dentist, Gynecologist/Obstetrician, Ear-Nose-Throat (ENT) Specialist …) — विशेषज्ञता (visheshagyata). |
| Patient Stories | Practo's count of patient feedback for a doctor; "recommend" percentage = share of patients who recommend the doctor. |
| Consultation fee | Fee for one clinic visit, in ₹ — परामर्श शुल्क (paramarsh shulk). |
| Contact Clinic number | Practo's call-routing number for the clinic, with an extension for the doctor. |
| Prime | Practo's label for doctors and clinics in its Prime programme (shown as "Prime" next to "Verified details" on profiles). |
| Registration (MCI / NMC / State council) | A doctor's licence entry with a state medical or dental council; Practo shows number, council and year — पंजीकरण संख्या (panjikaran sankhya). |
| NABH | National Accreditation Board for Hospitals & Healthcare Providers — India's hospital accreditation. |
| MBBS / MD / MS | Bachelor of Medicine and Bachelor of Surgery; Doctor of Medicine; Master of Surgery. |
| BDS / MDS | Bachelor / Master of Dental Surgery. |
| BAMS / BHMS / BUMS | Ayurveda, Homoeopathy and Unani medicine degrees (AYUSH systems). |
| Clinic / hospital | क्लिनिक / अस्पताल (aspataal). |
| Doctor list | डॉक्टर की सूची (doctor ki soochi). |
| Locality | Neighbourhood within a city (HSR Layout, Andheri West) — इलाका (ilaaka). |
| PIN code | India's 6-digit postal code (clinicPostalCode). |
Legal and compliance
Practo Scraper collects information that Practo publishes openly to every visitor: doctors' professional profiles, clinic and hospital listings, fees, timings, ratings counts and the public contact numbers of clinics. It does not log in, does not bypass paywalls, does not collect patient data or review texts and does not book appointments.
Doctors' names, registration details and work contact numbers are personal data under India's Digital Personal Data Protection Act, 2023 (DPDP Act), and under the GDPR if you are in the EU or process the data there. You decide why and how you use the dataset, so you are responsible for having a lawful purpose, keeping the data accurate and secure, honouring requests to stop contacting someone and deleting data you no longer need. If you call or message doctors for marketing, follow TRAI's telecom commercial-communication rules (do-not-disturb preferences, registered headers and templates for SMS). Respect practo.com's terms of use and do not use the data to impersonate Practo or the doctors. Public availability is not consent for every use; if in doubt, ask a lawyer.
This Actor is not affiliated with Practo Technologies Pvt. Ltd.
Changelog
1.0 — 25 October 2026
- Doctor listings by city × speciality × locality, with Practo's gender, experience, fee and sort filters.
- Automatic splitting beyond Practo's 500-doctor window (fee bands for speciality searches, gender × experience for the all-doctors listing, self-correcting when Practo ignores a filter) and de-duplication by doctor ID.
- Clinic and hospital listings (10,000 per search) with phone, fee range, doctors, rating and timings.
- "Contact Clinic" phone numbers with the doctor's extension.
- Full profile details: registration number / council / year, certifications, memberships, awards, work history, languages, all clinics; for establishments website, emergency phone, beds, ambulances, amenities, insurance, payment modes, accreditations.
- Practo URLs (listings with filters, doctor / clinic / hospital profiles) as input.
- Built-in route ladder (direct → fresh datacenter IPs → capped Indian residential rescue), pay-per-result budget guard, migration-safe (no double charges), SUMMARY record.
Support
Questions, a field you need, a city that does not match, or a bug? Open an issue on the Actor's Issues tab or write to us through Apify — we reply within 24 hours. Include the run ID so we can look at the SUMMARY record of your run.