Doctoralia Doctor Appointment Availability Scraper avatar

Doctoralia Doctor Appointment Availability Scraper

Pricing

from $8.00 / 1,000 availability records

Go to Apify Store
Doctoralia Doctor Appointment Availability Scraper

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

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

24 days ago

Last modified

Share

Doctoralia Doctor Appointment Availability Scraper

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

Apify Coverage Output Billing

Table of contents

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

FieldTypeRequiredDefaultDescription
specialtystringnoDermatólogoMedical specialty to search, for example Dermatólogo, Ginecólogo, Dentista, Psicólogo.
locationstringnoCiudad de MéxicoCity or area to narrow the search. Leave empty to search the whole country.
countryenumnomxDoctoralia country site: mx, es, br, ar, co, cl, pe.
daysAheadintegerno14How many days of availability to collect from today (1 to 60).
maxDoctorsintegerno10Maximum number of doctors to collect availability for. Free plans are capped at 10.
startUrlstringno(empty)Optional. A full Doctoralia search results URL that overrides specialty and location.
enrichContactsbooleannofalsePaid 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.
enrichContactsMaxintegerno50Cap on how many results the contact add-on tries to enrich. Free accounts are capped at 3.
withLeadScorebooleannofalsePaid 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.

FieldTypeDescription
doctorNamestringDoctor display name.
specialtystringDoctor specialty as listed on Doctoralia.
citystringCity, when exposed on the profile, else null.
ratingnumberAverage review rating, or null.
reviewsCountintegerNumber of reviews, or null.
urlstringDoctoralia profile URL.
doctorIdstringDoctoralia internal doctor ID.
windowStartstringFirst day of the availability window (YYYY-MM-DD).
windowEndstringLast day of the availability window (YYYY-MM-DD).
totalFreeSlotsintegerTotal free bookable slots across all locations in the window.
locationsobject[]One entry per practice address (see below).
locations[].addressIdstringDoctoralia address ID.
locations[].calendarIdstringDoctoralia calendar ID for the address.
locations[].addressNamestringPractice or clinic name.
locations[].citystringCity of the practice.
locations[].onlineOnlybooleantrue for online-only calendars.
locations[].hasActiveCalendarbooleantrue when the address has a live booking calendar.
locations[].freeSlotsCountintegerFree slots at this address in the window.
locations[].slotsobject[]Slots, each with start (ISO 8601), booked (boolean), and bookingUrl.
aiLeadScoreintegerAI lead score 0 to 100 (only with the lead-score add-on).
aiLeadTierstringAI lead tier hot, warm, or cold (add-on).
aiLeadRationalestringAI rationale for the lead score (add-on).
enrichedEmailstringPublic contact email found by the contact add-on, or null.
enrichedContactNamestringContact person name found by the add-on, or null.
enrichedJobTitlestringContact job title found by the add-on, or null.
enrichedEmailStatusstringVerification status of the enriched email.
enrichedSourcestringSource URL where the contact was found.
enrichedConfidencenumberConfidence score for the enriched contact.
errorstringPresent 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:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "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 (result event). 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 error field and does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on 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.

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.