Doctoralia Doctor Appointment Availability Scraper
Pricing
from $8.00 / 1,000 availability records
Doctoralia Doctor Appointment Availability Scraper
Extract real doctor appointment availability from Doctoralia across Latin America. For each doctor and practice location get the bookable slots (date and time), whether each is free or taken, the booking URL, specialty and address over the date window you choose.
Pricing
from $8.00 / 1,000 availability records
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
24 days ago
Last modified
Categories
Share
Doctoralia Doctor Appointment Availability Scraper
Here is one real result, with every field the actor returns (the per-location slots array is trimmed here to a few entries; the actor returns every bookable slot in the window):
{"doctorName": "Dra. Valeria Bolbarán Scholz","specialty": "Dentista","city": null,"rating": 1,"reviewsCount": 1,"url": "https://www.doctoralia.es/valeria-bolbaran-scholz/dentista/majadahonda","doctorId": "101479","windowStart": "2026-08-14","windowEnd": "2026-08-28","totalFreeSlots": 240,"locations": [{"addressId": "61731","calendarId": "164080","addressName": "Clinica dental Dra Valeria Bolbaran","city": "Majadahonda","onlineOnly": false,"hasActiveCalendar": true,"freeSlotsCount": 240,"slots": [{"start": "2026-08-14T10:00:00+02:00","booked": false,"bookingUrl": "https://www.doctoralia.es/booking/seleccionar-fecha/101479/61731/2026-08-14T10:00:00+02:00"},{"start": "2026-08-14T10:20:00+02:00","booked": false,"bookingUrl": "https://www.doctoralia.es/booking/seleccionar-fecha/101479/61731/2026-08-14T10:20:00+02:00"}]}]}
The most complete Doctoralia appointment availability scraper available. It returns every bookable slot Doctoralia exposes per doctor and per practice location (date, time, free or taken, booking URL), plus the doctor profile fields (specialty, rating, reviews, city), and gives you specialty, city, country and date-window filters to target exactly the doctors whose availability you need.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor searches Doctoralia for a specialty in the country and city you choose, opens each matching doctor, and reads their real appointment calendar for the date window you set. For every doctor it returns one record with the profile basics and a locations array: one entry per practice address, each with its calendar status and the list of bookable slots (start time, whether it is booked or free, and the direct booking URL). Missing source values are returned as null so you can sort and filter without extra parsing.
Coverage spans the Doctoralia country sites for Mexico, Spain, Brazil, Argentina, Colombia, Chile and Peru. Optional paid add-ons can find a public contact email and name per doctor, and score each doctor as a B2B outreach lead.
Quickstart
Open the actor, paste this into the input, and press Run. It returns availability for 10 dermatologists in Mexico City over the next 14 days.
{"specialty": "Dermatólogo","location": "Ciudad de México","country": "mx","daysAhead": 14,"maxDoctors": 10}
Leave location empty to search the whole country. Paste a full Doctoralia search URL into startUrl to override the specialty and location fields.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
specialty | string | no | Dermatólogo | Medical specialty to search, for example Dermatólogo, Ginecólogo, Dentista, Psicólogo. |
location | string | no | Ciudad de México | City or area to narrow the search. Leave empty to search the whole country. |
country | enum | no | mx | Doctoralia country site: mx, es, br, ar, co, cl, pe. |
daysAhead | integer | no | 14 | How many days of availability to collect from today (1 to 60). |
maxDoctors | integer | no | 10 | Maximum number of doctors to collect availability for. Free plans are capped at 10. |
startUrl | string | no | (empty) | Optional. A full Doctoralia search results URL that overrides specialty and location. |
enrichContacts | boolean | no | false | Paid add-on. For each result without an email, attempt to find a public business contact email and contact name. Billed per attempt plus an extra charge only when an email is found. |
enrichContactsMax | integer | no | 50 | Cap on how many results the contact add-on tries to enrich. Free accounts are capped at 3. |
withLeadScore | boolean | no | false | Paid add-on. Use AI to qualify each doctor as a B2B lead (0 to 100 score, hot/warm/cold tier, rationale). Charged per doctor scored. |
Output reference
One dataset item per doctor. Types: string, integer, number, boolean, object[], or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
doctorName | string | Doctor display name. |
specialty | string | Doctor specialty as listed on Doctoralia. |
city | string | City, when exposed on the profile, else null. |
rating | number | Average review rating, or null. |
reviewsCount | integer | Number of reviews, or null. |
url | string | Doctoralia profile URL. |
doctorId | string | Doctoralia internal doctor ID. |
windowStart | string | First day of the availability window (YYYY-MM-DD). |
windowEnd | string | Last day of the availability window (YYYY-MM-DD). |
totalFreeSlots | integer | Total free bookable slots across all locations in the window. |
locations | object[] | One entry per practice address (see below). |
locations[].addressId | string | Doctoralia address ID. |
locations[].calendarId | string | Doctoralia calendar ID for the address. |
locations[].addressName | string | Practice or clinic name. |
locations[].city | string | City of the practice. |
locations[].onlineOnly | boolean | true for online-only calendars. |
locations[].hasActiveCalendar | boolean | true when the address has a live booking calendar. |
locations[].freeSlotsCount | integer | Free slots at this address in the window. |
locations[].slots | object[] | Slots, each with start (ISO 8601), booked (boolean), and bookingUrl. |
aiLeadScore | integer | AI lead score 0 to 100 (only with the lead-score add-on). |
aiLeadTier | string | AI lead tier hot, warm, or cold (add-on). |
aiLeadRationale | string | AI rationale for the lead score (add-on). |
enrichedEmail | string | Public contact email found by the contact add-on, or null. |
enrichedContactName | string | Contact person name found by the add-on, or null. |
enrichedJobTitle | string | Contact job title found by the add-on, or null. |
enrichedEmailStatus | string | Verification status of the enriched email. |
enrichedSource | string | Source URL where the contact was found. |
enrichedConfidence | number | Confidence score for the enriched contact. |
error | string | Present only on a failed run: a single item with a populated error field is written instead. |
Example output record
Real record from a live run (input {"specialty":"Dentista","country":"es","daysAhead":14,"maxDoctors":10}), slots trimmed:
{"doctorName": "Dra. Valeria Bolbarán Scholz","specialty": "Dentista","city": null,"rating": 1,"reviewsCount": 1,"url": "https://www.doctoralia.es/valeria-bolbaran-scholz/dentista/majadahonda","doctorId": "101479","windowStart": "2026-08-14","windowEnd": "2026-08-28","totalFreeSlots": 240,"locations": [{"addressId": "61731","calendarId": "164080","addressName": "Clinica dental Dra Valeria Bolbaran","city": "Majadahonda","onlineOnly": false,"hasActiveCalendar": true,"freeSlotsCount": 240,"slots": [{ "start": "2026-08-14T10:00:00+02:00", "booked": false, "bookingUrl": "https://www.doctoralia.es/booking/seleccionar-fecha/101479/61731/2026-08-14T10:00:00+02:00" },{ "start": "2026-08-14T10:20:00+02:00", "booked": false, "bookingUrl": "https://www.doctoralia.es/booking/seleccionar-fecha/101479/61731/2026-08-14T10:20:00+02:00" }]}]}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~doctoralia-appointments-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"specialty":"Dermatólogo","location":"Ciudad de México","country":"mx","daysAhead":14,"maxDoctors":10}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~doctoralia-appointments-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"specialty":"Dentista","country":"es","daysAhead":30,"maxDoctors":50}'
Apify CLI:
apify call scrapers_lat/doctoralia-appointments-scraper \--input '{"specialty":"Psicólogo","country":"ar","maxDoctors":10}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per doctor returned (
resultevent). See the pricing tab for the current per-result price. - Paid add-ons. Contact enrichment and AI lead scoring are optional and billed separately per the events described above. They are disabled by default.
- No charge on failure. If a run errors before any doctor is collected, the actor writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 doctors per run (and 3 contact enrichments). Upgrade for higher
maxDoctors.
FAQ and troubleshooting
A run returned 0 records. Why?
The specialty and location combination matched no doctors, or none had an open calendar. Try a broader specialty, remove the city, or widen daysAhead. Zero-result runs are not charged.
Why is totalFreeSlots 0 for some doctors?
The doctor has a Doctoralia profile but no bookable slots in your window. The record still ships with the profile fields and an empty or inactive calendar.
Which countries are supported?
Mexico, Spain, Brazil, Argentina, Colombia, Chile and Peru, selected with the country field.
How do I target one exact search?
Paste the full Doctoralia search results URL into startUrl. It overrides specialty and location.
Do the add-ons run on free plans? Contact enrichment is capped at 3 results on free accounts, and AI lead scoring requires a paid plan. Both are off by default.
Is this an official Doctoralia tool? No. This actor is independent and has no affiliation with Doctoralia or Docplanner. It reads only data that is publicly available on Doctoralia. Use it in accordance with the Doctoralia terms of service.
Related scrapers
- Doctoralia Doctors Scraper: full doctor profiles, specialties, reviews and contact details.
- Doctoralia Clinics Scraper: clinic and practice listings on Doctoralia.
- Healthgrades Doctors Scraper: US doctor profiles and ratings.
- NPPES NPI Registry Scraper: US healthcare provider NPI records.
- Medicare Doctors & Clinicians Scraper: US Medicare clinician directory.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with Doctoralia or Docplanner. Accesses only publicly available Doctoralia data. Use in accordance with the Doctoralia terms of service.
