Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
Doctoralia Scraper icon

Doctoralia Scraper

Scrape Doctoralia doctors and clinics by speciality and city in 12 countries. Name, speciality, clinic, address, rating and published price. No contact data.

59 runs on Apify $0.0019 per listing ($1.9 / 1,000)
Run this in the cloudRun on Apify →

Developer & Research Tools

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust speciality, city, country (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.0019 per listing = $1.9 per 1,000

You are charged forWhenPrice
Listing returnedOne practitioner or clinic listing returned in the dataset. Diagnostic rows and the labelled sample row are not charged.$0.0019

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-09-20, and they are what you are actually charged.

Inputs

FieldWhat it doesType
specialityThe speciality as Doctoralia spells it on that country's site, one per line. Spanish sites use "dentista", "psicologo", "pediatra"; Poland uses "stomatolog"; Turkey uses "dis-hekimi". If the exact slug does not exist the Actor falls back to the site's own search, so a close spelling still works.array
cityCity to search in, for example "madrid", "sao-paulo", "milano". Leave empty to search the whole country.string
countryWhich Doctoralia country site to read. Each one is a separate directory with its own practitioners and its own speciality names.string
maxItemsHard cap on rows across every search in this run. You are charged per row returned.integer
startUrlsOptional. Paste Doctoralia listing pages instead of filling the fields above, for example https://www.doctoralia.es/dentista/madrid or https://www.miodottore.it/dentista/milano. Single profile pages are not supported.array
insuranceOptional. Return only practitioners Doctoralia lists under one insurer, using that insurer's slug from the site, for example "adeslas" or "sanitas" in Spain. Leave empty for everyone.string
includeClinicsDoctoralia mixes clinics into most speciality listings. Leave this on to get both; turn it off for individual practitioners only.boolean

What you get

A structured dataset — each result includes fields like:

nameentityTypespecialityclinicNamestreetcityregioncountryratingreviewCountconsultationServiceconsultationPriceonlineBookingonlineConsultationOnlylatitudelongitudeprofileUrl

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in Developer & Research Tools

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

GitHub Scraper iconDeveloper & Research Tools

GitHub Scraper

Search GitHub repos and users: stars, forks, language, topics, licence, plus user bio, company and followers. No token needed. $0.90 per 1,000 rows.

18 use cases

Stack Overflow / Stack Exchange Scraper iconDeveloper & Research Tools

Stack Overflow / Stack Exchange Scraper

Search Stack Overflow and Stack Exchange by keyword or tag. Score, answer count, views, reputation and body text. $2 per 1,000 questions.

2 use cases

Package Registry Scraper (npm + PyPI) iconDeveloper & Research Tools

Package Registry Scraper (npm + PyPI)

Get npm and PyPI package metadata as JSON. Version, license, author, repo, keywords and npm monthly downloads. $2 per 1,000 packages.

2 use cases

arXiv Scraper iconDeveloper & Research Tools

arXiv Scraper

Search arXiv papers by title, author, abstract or category. Get full abstracts, authors, categories, DOI, dates and PDF links. $2 per 1,000 papers.

2 use cases

OpenAlex Scholarly Works Scraper iconDeveloper & Research Tools

OpenAlex Scholarly Works Scraper

Search 250M+ OpenAlex papers with no API key. Get titles, authors, venue, year, citations, DOI, OA links and full abstracts. $2.00 per 1,000 papers.

2 use cases

Crossref Scholarly Works Scraper iconDeveloper & Research Tools

Crossref Scholarly Works Scraper

Search 150M+ papers on Crossref: DOI, title, authors, journal, publisher, date, citations and abstract. No API key. $1.00 per 1,000 works.

2 use cases

See all Developer & Research Tools →

Doctoralia Scraper: doctors and clinics by speciality and city in 12 countries, with ratings and prices

Give it a speciality and a city, or paste Doctoralia listing pages, and it returns one row per practitioner or clinic: name, speciality, clinic, street address, coordinates, rating, review count and the consultation price where one is published. It covers twelve country sites, including the ones that do not live where you would guess, such as doctoraliar.com for Argentina. There are no phone numbers, no email addresses and no review text in the output, on purpose, so if what you need is a call list, this is the wrong purchase, and running it longer will not change that.

InputA speciality and a city on one of 12 country sites, or Doctoralia listing URLs
OutputOne row per practitioner or clinic
Ceiling2,000 rows per run
Account neededNone
Price$1.90 per 1,000 listings, flat on every plan

🔍 What Doctoralia Scraper does

It reads the speciality-and-city listing pages a signed-out visitor sees. Those pages carry no tel: link, no mailto: and no phone or email markup (317 cards across all twelve sites, zero of each), and the scraper does not go looking for contact details anywhere else. Every row also passes a filter that strips anything shaped like an email address, a phone number or a national ID before it is written, and the run log says when it removed something.

Patient reviews stay where they are. Doctoralia publishes them with the patient's first name attached, and they are somebody else's words about their own medical care. You get the star rating and the review count.

Speciality names are in the local language. dentysta returns nothing in Poland, because the word Doctoralia uses there is stomatolog. If your spelling does not match a real listing page, it falls back once to the site's own search, so a near miss usually still works, but the exact slug is faster and goes deeper.

maxItems is shared across your searches rather than spent in order. Six cities with a cap of 90 give you fifteen from each, and a search that runs dry hands its share to the others. Deep pages repeat: past the end of a listing Doctoralia keeps answering with cards it has already shown, so the run stops at the first page that adds nobody new, and you are not billed for laps.

📥 What you give it

{
  "speciality": ["dentista"],
  "city": "madrid",
  "country": "es",
  "maxItems": 50
}

Or paste listing pages: {"startUrls": ["https://www.doctoralia.com.br/dentista/sao-paulo", "https://www.miodottore.it/dentista/milano"], "maxItems": 90}. With no speciality and no listing URL, the run writes one free sample row and stops.

FieldWhen left outWhat it is
specialitynoneThe speciality as that country's site spells it, one per line.
citythe whole countryA city slug such as madrid, sao-paulo or milano.
countryesOne of the 12 site codes below. Any other value is refused before the run starts.
maxItems501 to 2,000 rows across every search in the run.
startUrlsnoneListing pages instead of the fields, such as https://www.doctoralia.es/dentista/madrid. Single profile pages are not supported.
insurancenoneOne insurer's slug from the site, such as adeslas or sanitas in Spain, to return only professionals listed under that insurer. A slug the site does not know ends that search with LISTING_NOT_FOUND instead of returning everyone.
includeClinicsonDoctoralia mixes clinics into most listings. Turn this off for individual practitioners only.
proxyConfigurationnot neededOptional. Only for sending the requests through servers of your own, which are used exactly as given.
CountrycountrySiteSpeciality slugs look like
Spainesdoctoralia.esdentista, psicologo, pediatra
Brazilbrdoctoralia.com.brdentista, ginecologista
Mexicomxdoctoralia.com.mxpsicologo, dentista
Colombiacodoctoralia.coodontologo, psicologo
Chilecldoctoralia.cldentista, psicologo
Argentinaardoctoraliar.compsicologo, odontologo
Perupedoctoralia.pedentista, psicologo
Portugalptdoctoralia.com.ptdentista, psicologo
Italyitmiodottore.itdentista, ginecologo
Polandplznanylekarz.plstomatolog, psycholog
Czechiaczznamylekar.czzubar, psycholog
Turkeytrdoktortakvimi.comdis-hekimi, psikolog

The quickest way to the right slug: search once on the site and copy the two words out of the address bar. doctoralia.es/dentista/madrid means speciality dentista, city madrid.

📤 What you get back

A real clinic row from a run on 27 September 2026:

{
  "entityType": "clinic",
  "id": "49550",
  "locationId": "45881",
  "name": "Clínica Dental Villota de Jorge",
  "speciality": "Odontología, Odontopediatría",
  "subSpecialities": [],
  "specialityIds": ["50", "51"],
  "clinicName": null,
  "street": "C/ Ginzo de Limia, 5, bajo 2",
  "city": "Madrid",
  "region": null,
  "country": "Spain",
  "latitude": 40.475441,
  "longitude": -3.70366,
  "rating": 5,
  "reviewCount": 222,
  "consultationService": "Primera visita Odontología",
  "consultationPrice": "20 €",
  "consultationPriceAmount": 20,
  "consultationPriceCurrency": "€",
  "consultationPriceIsFrom": false,
  "consultationPriceIsFree": false,
  "insuranceFilter": null,
  "onlineConsultationOnly": false,
  "onlineBooking": true,
  "slotsAvailable": true,
  "hasPhoto": true,
  "profileUrl": "https://www.doctoralia.es/clinicas/clinica-dental-villota-de-jorge",
  "countryCode": "es",
  "searchSpeciality": "dentista",
  "searchCity": "madrid",
  "sourceUrl": "https://www.doctoralia.es/dentista/madrid",
  "page": 1,
  "position": 5,
  "scrapedAt": "2026-09-27T01:34:39.232Z",
  "listingHeading": "Dentistas en Madrid"
}
FieldWhat it is
entityType, id, locationIdpractitioner or clinic, Doctoralia's id, and the id of the address shown.
name, clinicNameThe professional's or clinic's name, and the clinic a practitioner works at. Empty on a clinic's own row.
speciality, subSpecialities, specialityIdsAs the site lists them.
street, city, region, country, latitude, longitudeThe first address Doctoralia shows for the listing.
rating, reviewCountDoctoralia's star rating, and how many reviews stand behind it.
consultationService, consultationPrice, consultationPriceAmount, consultationPriceCurrency, consultationPriceIsFrom, consultationPriceIsFreeThe service and its price exactly as printed, since da 90 € and 90 € are not the same offer, then the number pulled out of it, whether it was a starting price, and whether the visit is free.
insuranceFilterThe insurer slug you filtered on, echoed back.
onlineConsultationOnly, onlineBooking, slotsAvailable, hasPhotoThe flags the listing card shows.
profileUrl, countryCode, sourceUrl, listingHeadingThe profile page, the site, the listing the row came from, and that page's heading, handy for checking the site answered the city you asked for.
searchSpeciality, searchCity, page, position, scrapedAtWhat you typed (null when you pasted URLs), where the row sat, and when it was read.

🧾 Reading the output

RowHow to spot itCharged
A listingno _sample and no _diagnostic fieldyes
The sample row_sample: true and charged: false. Only when there is no speciality and no listing URLno
A diagnostic_diagnostic: true, ok: false, charged: false, and an errorCodeno

Real listings carry no charged field. The sample row looks like a real practitioner and carries ok: true, so drop rows with _sample or _diagnostic rather than filtering on ok.

errorCodeWhat it means
NO_RESULTSThe listing came back empty. The site answers an unknown term with an empty page rather than an error, so check the spelling for that country.
LISTING_NOT_FOUNDDoctoralia has no such listing page: that speciality, city or insurer does not exist on that country site.
PROFILE_URL_NOT_SUPPORTEDYou pasted a single profile page. Paste the listing it appears on instead.
BAD_URLNot a Doctoralia listing address.
FETCH_FAILEDA page did not load. Worth one re-run a few minutes later.

▶️ How to run it

1. Open Doctoralia Scraper and click Try for free. 2. Pick the Country site. 3. Type the local word for the speciality into Speciality, and a city into City, or leave the city empty for the whole country. 4. Set Maximum rows. 5. Click Start, then download the dataset as JSON, CSV or Excel.

The form arrives with dentista, madrid, Spain and 50 already filled in, so a run started without editing it is a real search.

💰 How much does it cost?

$1.90 per 1,000 listings, flat on every Apify plan. That is $0.0019 a row.

Not charged: the sample row and every diagnostic row, whether for an empty input, a speciality the site does not know, an address it cannot read or a page that failed to load. A listing is never returned twice in a run. If you set a maximum cost for the run, it stops when that is reached.

💡 What people use it for

  • Mapping where the dentists or psychologists of a city practise, from the coordinates.
  • Comparing published first-visit prices across cities or countries for one speciality.
  • Building a list of clinics that take one insurer, with insurance.
  • Checking which practices offer online booking or online-only consultations.

🚧 What it does not do

  • No phone numbers or emails, on any country site, with any input.
  • No review text. The star rating and the count only.
  • Turkey publishes no consultation prices on its listing pages. Zero of fifteen rows from doktortakvimi.com

carried a price, where Italy and Poland carried fifteen of fifteen.

  • Sub-specialities depend on the country. Turkey runs them into one string in speciality and leaves

subSpecialities mostly empty.

  • One address per row. A professional at three clinics appears once, with the first address Doctoralia shows. The

others are on their profile page, which this does not open.

  • "Price not specified" is common, and it is real data: consultationPrice keeps the site's wording and

consultationPriceAmount is null.

  • Ratings are Doctoralia's. A five from two reviews and a five from three hundred are both a five, which is why

reviewCount is there.

🧭 Which directory scraper do you need?

If you wantUse
Doctors and clinics on Doctoralia, with ratings and consultation pricesThis one
Any clinic or practice on Google Maps, with coordinates and its place IDGoogle Maps Scraper
Places on Apple Maps, with phone, website and opening hoursApple Maps Scraper
US businesses from Yellow Pages, by trade and cityYellow Pages US Scraper

❓ Questions people ask

Do I need a Doctoralia account or an API key? No. It reads the same signed-out pages anyone can open.

Can I get every dentist in a country? Leave city empty and the search runs nationally. Expect a lot of rows, so set maxItems to what you want to pay for.

Can I filter by insurer? Yes, where the country site supports it. Put the slug in insurance, for example dkv-seguros in Spain, and it is echoed back in insuranceFilter on every row. If the site has no listing for that insurer, the search stops with LISTING_NOT_FOUND and nothing is charged.

Why did I get fewer rows than maxItems? The search ran out of professionals, or the listing started repeating. The cap is a ceiling, not a target, and you only pay for rows you received.

How many rows come from one page? Between eighteen and thirty-four, depending on the country and how deep the page is.

🆘 If something breaks

Open the Issues tab on the actor page. Send the input you used and the run ID, and the errorCode on any diagnostic row.