Doctolib Scraper for Practitioner Profiles, Fees and Booking Data

One Doctolib profile reads three ways: a convention sector and fee list in France, an insurance billing type in Germany, a tariff sheet in Italy. We turn all three into one feed.

Doctolib Scraper
Solutions

No public Doctolib API: a managed Doctolib export instead

A Doctolib scraping project starts with three choices: which storefronts, which specialties and places, and which layers - the profile census, fees and sectors, motives and booking status. Web scraping Doctolib at country scale runs from the sitemaps rather than the search, one profile record at a time, on the clock your question needs: monthly for a supply census or fees, daily for booking status on a fixed panel.

Doctolib throttles repeat requests fast and answers clients it distrusts with an ordinary not-found page rather than a block, so a naive crawler records live practitioners as deleted. Anti-bot handling, proxy rotation and CAPTCHA solving are part of the service, and every disappearance is confirmed before it counts as churn. Delivery is CSV, JSON, XLSX, a database drop or a Doctolib API of your own, with country, profile id and practice id on every row.

The Doctolib data catalog inside one practitioner profile

Behind every profile page sits one structured record, and it is the cleanest part of the site to extract. At profile level Doctolib data holds the display name with title, a specialty with its own id and slug or, for organizations, a practice type such as cabinet medical, centre de sante, Einzelpraxis, MVZ, centro medico or accredited private hospital, a free-text presentation, skills listed per practice, spoken languages as ISO codes, a video consultation flag beside in-person booking and a directory flag that separates bookable profiles from listing-only entries.

Practice and access. Each practice carries street, postcode, city and coordinates, floor, lift, intercom and parking, nearby transit stops with their lines, a home-visit flag and, where published, opening hours by weekday.

Money. Fees come per act with a fixed flag and a minimum and maximum price, which is what makes Doctolib price monitoring possible where fees are published: French acts and Italian tariffs. France adds the convention sector with the site's own wording on excess fees and reimbursement, Carte Vitale acceptance, a tiers payant flag and payment means - cheque, cash, card, bank transfer - and Italy adds Satispay.

Booking structure. Each profile lists its motifs de consultation, and every motive points to a reference motive id that search uses to match motives across practices, with flags for video, new-patient restrictions and age limits. Agendas tie a practitioner to a practice and to a subset of motives. Two signals can disagree - the structured accepts-new-patients flag and a free-text notice from the practitioner saying the list is closed - so we keep both.

Identifiers. French profiles print the RPPS number, an ADELI field for some paramedical professions and the SIREN business number, which join cleanly to public registers such as the Annuaire Sante. Everywhere, the stable key is the profile id plus the practice id: one practitioner at two addresses is two rows.

The Doctolib data catalog inside one practitioner profile
Searching Doctolib by specialty, city and motif de consultation

Searching Doctolib by specialty, city and motif de consultation

Patients search Doctolib by name or by keyword - a specialty, a sub-specialty or a motif de consultation - and then by place: an exact address or the around-me button, a city, or a whole departement or region. On doctolib.fr a city search continues into a 30 km ring around the city and ends with professionals who have no account.

Filters differ by country, and each one is a dimension worth keeping. France filters availability (today, or within three, seven or fourteen days), sixteen spoken languages including sign language, video consultation on specialty searches, and ten convention sector values, from secteur 1 through secteur 2 OPTAM-CO to non-contracted establishments. Germany asks one question first, statutory or private and self-pay, and marks cards with the insurance a practice takes, from private-only practices to those accepting all three. Italy splits public and private, adds a minimum star rating of 4.0 or 4.5, and searches by prestazione as well as by specialty.

The catalog behind the search is published as pages: specialty and place pages, skill pages such as gynecological ultrasound or implantology, establishment pages such as laboratories, and in Italy care-service pages by place, from acufenometria in Abruzzo to abdominal ultrasound in single towns. Result rows themselves are assembled in the browser from closed search calls, so a census is built from the sitemaps and the profile records, not by paging through search.

Doctolib data across doctolib.fr, doctolib.de and doctolib.it

Doctolib data comes from three national storefronts run by one company: doctolib.fr from Levallois-Perret, doctolib.de from Doctolib GmbH in Berlin and doctolib.it from Doctolib Srl in Milan. By the company's own count in September 2026, about 570,000 health professionals use its tools and 90 million patients its patient companion. Each storefront runs two services side by side: online booking with practitioners who pay for a subscription, and a directory of professionals without an account, who stay listed unless they object.

The record is one schema filled three ways. A French profile puts the convention sector in its sector field - secteur 1, secteur 2, OPTAM or non-contracted - and prints fees and Carte Vitale acceptance beside it. A German profile uses the same field for the billing type, statutory, private or self-pay, and leaves the fee list empty, private practices included. An Italian profile leaves the sector blank, prices each prestazione instead and embeds Google reviews where they exist, while public SSN booking runs only in Lazio and only for signed-in patients.

Addresses follow one pattern: specialty, city and profile slug, plus a pid parameter naming the practice, with a city or a UUID appended to some slugs to keep them unique. Specialty and place pages reach Paris arrondissements by postcode, German city districts, Italian regions and metropolitan cities. The sitemap index keeps separate families for profiles, practitioner pages, place pages, establishments, specialties and skills, adds care services in Italy, and Germany serves its sitemaps from a separate host.

Get a Quote
dev_w
25

Developers

customers
500+

Customers worldwide

pages
1 500 000 000+

Pages extracted

stime
15000+

Hours saved for our clients

Plans

Airplane

€199 / one-time

setup fee - included

Data limits100,000
Frequencyone-time
Run timeup to 5 days
Data storing7 days

Helicopter

€169 / mo

setup fee €499

Data limits250,000
Frequencymonthly
Run timeup to 5 days
Data storing14 days

Glasses

€229 / mo

setup fee €499

Data limits1,000,000
Frequencyweekly
Run timeup to 5 days
Data storing30 days

DNA

€549 / mo

setup fee €799

Data limits3,000,000
Frequency3 times daily
Run timesame day
Data storing90 days

Scraping Doctolib for appointment availability: why a slot moves by the minute

Most projects scraping Doctolib are after one object: the open slot, a timed opening in one practitioner's agenda for one motive at one practice. It is a live reading of access to care, and it barely holds still. Doctolib's own help pages explain much of the churn: a waiting-list job rechecks a practitioner's agenda for cancellations every ten minutes and alerts the first eight waitlisted patients at once, so a freed slot is often gone within minutes. Practitioners may move or cancel booked appointments, some keep online booking for patients they already follow, and for some specialties the platform refuses two bookings less than six days apart.

That is why Doctolib appointment availability means something only as a series on a fixed clock. Search position is noise too: in a French city search, profiles with online availability come first, but inside each group the order is random and reshuffled every hour. Waiting-time studies, access-to-care maps, sector 2 fee analysis and video supply tracking all need the full census, not the first page.

The calendar is also the layer Doctolib guards hardest. Its crawl rules close the calls that load slots, the booking funnel, the search API and the filters by sector, language, video and days to first slot.Our feed stays on the open layer - bookable or directory-only, new patients accepted, video offered, motives listed - and it does not enter the calls closed to crawlers, so exact slot times are not part of it. We never log in, book or hold a slot.

Our Blog

Reads Our Latest News & Blog

Learn how to use web scraping to solve data problems for your organization

How Artificial Intelligence Is Used In Web Scraping

How Artificial Intelligence Is Used In Web Scraping

Leveraging advances in technology, the AI-powered web scraper has skyrocketed in demand and is helping to expand capabilities by automating tedious daily tasks and speeding up data collection from thousands of websites several times over.

What is Web Scraping and What is it Used For?

What is Web Scraping and What is it Used For?

Web scraping is a method of obtaining web data by extracting it from pages of web resources with the help of a program, that is, in automatic mode. It is used to syntactically convert web pages into more usable forms.

Web Scraping for Machine Learning

Web Scraping for Machine Learning

If you specialize in machine learning, you need to feed large amounts of data to the algorithms. Web scraping is the easiest and the most efficient method of collecting the data from all over the Internet.

scrapeit logo

Who builds and runs your Doctolib data feed

ScrapeIt runs the whole job as a managed service: we design the crawler, schedule it, watch it and repair it when Doctolib changes shape, and your team receives files or an endpoint. We are not affiliated with Doctolib.

Patient records, appointments and reviews that carry an author's name never enter a Doctolib feed. A profile is the notice a practice publishes about how it receives patients; we treat it as data on the supply of care and never assemble files on individuals.

FAQ

Does Doctolib have a public API, and where is its API documentation?

There is no public API. The Doctolib API documentation sits behind a login, and what the company describes openly is integration rather than data access: HL7 and FHIR connectors for hospitals through integration engines such as Enovacom and Cloverleaf, and interfaces to practice and radiology software in Germany. None of it opens the directory or a Doctolib calendar API to outsiders. Most Doctolib API Python code on GitHub is a slot watcher or a booking bot, many written during the vaccine rush, and it calls internal routes that change without notice. We deliver a documented endpoint of our own instead.

Which fields can you extract from a Doctolib profile?

Profile id and slug, practice id, specialty and skills, practice type, address with coordinates, floor, lift and transit stops, spoken languages, the video flag, visit motives with their reference ids and restrictions, the accepts-new-patients flag beside the practitioner's own notice, then money: acts with fixed or ranged prices, convention sector, Carte Vitale and tiers payant in France, tariffs and payment means in Italy, billing type in Germany. French rows carry RPPS and SIREN for joins to national registers; elsewhere the key is profile id plus practice id.

How often does Doctolib availability change, and how often can you refresh?

Slots move within minutes: the waiting-list job rechecks agendas for cancellations every ten minutes and alerts up to eight waitlisted patients at once. The signals on open pages move more slowly - online booking switched on or off, new patients accepted, video added, a motive retired - and we sample them daily on a fixed panel or weekly across a country. Fees and sectors run on a slower clock, so monthly is enough, and a full profile census suits a monthly or quarterly run. Exact slot times sit on calls closed to crawlers and are outside what we collect; a live slot feed belongs to a partner integration on your side.

Does the Doctolib scraper cover doctolib.de and doctolib.it as well as France?

Yes, on one schema with country as a field, because the same record means different things in each market. France gives convention sectors, fees, Carte Vitale and RPPS numbers. Germany gives billing types - statutory, private, self-pay - and practice forms such as MVZ and Einzelpraxis, with no fee list. Italy gives tariffs per prestazione, opening hours and Satispay among payment means; its public SSN booking covers Lazio only and sits behind a login, so it stays out of scope, and the Google reviews on Italian profiles, reviewer names included, never enter a feed.

Is scraping Doctolib legal, and do you collect patient data?

The Doctolib site terms in France, Germany and Italy name web scraping among the forms of unlawful data extraction a visitor may not carry out, and claim database protection over the site, so we make no blanket legal claim: the scope of each project is agreed with the client's counsel before collection starts. We take only what any visitor is shown, never log in, and never book or hold a slot. No patient data, appointments or authored reviews are collected, and directory entries for professionals without an account are delivered as counts per specialty and place.

How does it Work?

Step 1 - Make a Request

You share your needs, expectations, and desired timeframe. We’ll suggest the best solution based on your request and budget.

Step 2 - Configuring Custom Web Crawlers

Our specialists configure the crawlers and extract a sample dataset for your review before proceeding with the full-scale extraction.

Step 3 - Collect and Deliver

Once you approve the sample, we launch the project and start full data collection. We gather, filter, and structure the data for easy use, delivering it on time in your preferred format.

Step 4 - Maintain and Support

Our team manages ongoing processes, monitors website changes, and supports all data extraction cycles. We can also help integrate data into your systems or create dashboards to simplify analysis.

Request a Quote

Tell us more about you and your project information.
Which sites, which fields, how often. A couple of lines is enough.

We reply within 1 business day. No obligation.

scrapiet

Scrapeit Sp. z o.o.
10/208 Legionowa str., 15-099, Bialystok, Poland
NIP: 5423457175
REGON: 523384582