Find doctors and clinics
A census of every doctor and clinic in a French city, from map listings cross-checked against the practitioner registry and facility directory, with gaps named.
- Starts
- Specialty and city named
- Steps
- 6
- Checks and gates
- 0
- A person decides
- Never, runs alone
Trigger · Event
Specialty and city named
A specialty and a target city are named, and the census runs across that city for that specialty.
Claude runs the rest autonomously
- 1
AI pins the specialty in both registries.
The specialty gets its exact practitioner activity code and its facility category, since a solo practice and a clinic sit in two different registries.
- 2
AI collects every map listing.
SerperSerper
Every map listing for the specialty across the whole city is gathered, not the undercounted, lopsided handful one search from one spot returns.
- 3
AI counts each location once.
Listings sharing an address and phone become one location, not one row per name, since a cabinet often lists several practitioners under one map pin.
- 4
AI lists every registered practice.
INSEE SireneINSEE Sirene
Every active solo or group practice registered under that code in the city is listed, with no search result cap cutting it short.
- 5
AI lists every registered clinic.
Santé (FR)Santé (FR)
Every registered clinic, health center or larger facility in the city is listed, catching what the practitioner registry structurally can't.
- 6
AI flags what the map missed.
Anything registered in either registry but never found on the map is flagged as a gap to check by hand, not silently dropped.
Mapping every doctor or clinic in a city usually means someone running one search, scrolling the first page of map results, and calling it done, with no way to know how many practices never made it online at all. Nothing on that first page says a gap exists.
A tiled map census closes most of that gap on its own. The rest comes from two independent public registries in France, one for individual and group practitioners and one for clinics and larger facilities, each catching a type of provider the other structurally can't. Cross-referencing all three turns "probably most of them" into a list of the doctors and clinics in a city with the remaining gap named.
What you get
A deduplicated, complete roster of every doctor and health facility in one city, cross-checked against two independent public registries so the count is defensible, not a guess.
How the agent lists every doctor and clinic in a city
The run starts from a specialty and a city. Before any search, the specialty is pinned twice: to the practitioner registry's exact activity code (the code for generalist doctors, not a neighboring specialty), and to the facility directory's matching category, for the larger structures that register there instead. Getting either one wrong silently changes what the registry steps count as complete.
The map side runs through Serper. The city is tiled into a grid of search anchors, every anchor is paged to exhaustion, and every hit is recorded with its name, address, phone and website in one running list.
The registry side is two queries against open data, neither of which needs a key:
- INSEE Sirene for every active establishment under the activity code, scoped to the city by commune code instead of by matching the city's name as a string.
- Santé (FR) for every registered clinic, health center or larger structure in the same city.
Why one map search undercounts doctors
One anchored search caps out around twenty results and skews toward its own anchor point, and it raises no error when it does. Real coverage means paving the city in a grid and paging every anchor, which is slower, and is the only way the count stops silently undercounting.
Deduplicating by address and phone, never by name alone, keeps the count honest at the low end. A shared cabinet routinely lists three or four practitioners under one map pin, several doctors sharing a secretariat or an associate the listing hasn't caught up with, and matching on name turns that one location into three or four rows.
Why the census checks two health registries
A solo generalist practice registers under the practitioner registry's activity code; a clinic or health center is a facility-directory entry, with no match in the practitioner registry at all. Query only one, and every provider of the other type disappears from the count with no error to say so.
The registries are the regulatory record, with no bias toward an online presence and no result cap, which makes them a completeness benchmark more than a source of names. Every addressable registry entry is matched against the deduplicated map list by address, and anything registered but never found on the map is flagged for manual verification instead of being discarded. Some flags are real practices with no online booking or listing; some are stale registrations for a practice that has since closed. The flag is what makes that difference checkable.
In one real run, a city's practitioner registry counted roughly ten times more active entries under one specialty's code than the census found distinct listings for. Most of that gap was addresses the census had already found under a different practitioner's name at the same cabinet, but a real slice were practices with genuinely no online presence, plus individual practitioners whose address is suppressed from public diffusion. Those still count toward the registry total but can't be matched by address, which is why the report says how many there were.
Each run reports the distinct locations found by the census, the active entries across both registries with the number of suppressed addresses, how many registry entries matched a census hit, and the gap list with registered addresses for follow-up.
Other specialties, and outside France
Swapping the activity code and the facility category maps another specialty, dentists or physiotherapists as readily as generalist doctors. Both registries here are French, so the process as written covers cities in France. The census-plus-two-registries pattern carries over to any country with equivalent open health-data registries.
The prompt
The real prompt behind the steps above, detailed enough that an agent with the same tools can run it as written. The Run buttons copy the full version, which also carries the steps for connecting those tools.
# Census every doctor and clinic in a city
You have access to a local/maps search tool and two French public
health-data lookups: a practitioner registry and a facility directory.
Run this for **[a specialty — e.g. "generalist doctors", "dentists" —
and a target city]**.
## 1. Pin the specialty in both registries
A solo or group medical practice and a clinic or health center live in
two different repositories. Before running anything, resolve the
target specialty to:
- the practitioner registry's exact activity code (e.g. the code for
generalist doctors, not a neighboring specialty), and
- the facility directory's matching category, for the larger
structures that register there instead.
Getting either one wrong silently changes what step 4 and step 5 count
as exhaustive.
## 2. Collect every map listing
- Tile the target city into a grid of search anchors rather than
running one query from the city center — a single anchored search
caps out around twenty results and biases toward its own anchor
point, undercounting silently with no error raised.
- Page every anchor to exhaustion, not just the first page.
- Record name, address, phone, and website for every hit in one
running list.
## 3. Count each location once, by address and phone, not by name
Collapse the raw list on address and phone number. A single cabinet
very often lists multiple practitioners under one map pin — several
doctors sharing a secretariat, or an associate not yet reflected in
the listing — and deduping by name alone will double- or
triple-count that location.
## 4. List every registered practice
Query the national practitioner registry for every **active**
establishment under the resolved activity code, scoped to the same
city (by commune code, not city-name string-matching). This is the
regulatory record, not a search index — no bias toward an online
presence, and no result cap.
Note going in: a real share of individual-practitioner entries will
have their address suppressed in the public registry (opted out of
public diffusion) — those count toward the total but can't be
address-matched in step 6.
## 5. List every registered clinic
Query the national health-facility directory for every registered
clinic, health center, or larger structure in the same city. This is
a separate repository from individual practitioners — it catches
group facilities the practitioner registry structurally does not
cover, the same way step 4 catches solo practices the facility
directory does not.
## 6. Flag what the map missed
Match each addressable entry from both registries against the
deduped map list by address. Anything registered but never surfaced
by the census gets flagged as a gap — for manual verification, not
silently discarded. Some of these will be real (a practice with no
online booking or listing); some will be stale registrations for a
practice that has since closed. The flag is what makes that
distinction checkable instead of invisible.
## Output
Report: total distinct locations found by census, total active
entries across both registries (and how many practitioner addresses
were suppressed), how many registry entries matched a census hit, and
the final gap list with registered addresses for manual follow-up.
Why run it with Tulina
A prompt helps one person. A process moves a team.
Pasted into a chat, the prompt above works once, for whoever pasted it. In Tulina, "Find doctors and clinics" becomes a process the team shares, that keeps its history, runs on its own, and stays inside the same security perimeter as the tools it calls.
The whole team works on the same one
PersonalTeamOrganisation
A process lives where it belongs: yours, your team's or the whole organisation's. Whoever runs it can improve it, and everyone starts from the best version instead of explaining the job again.
Every edit is a version
v1v2v3
Each change is a new version with the previous one kept, so a bad edit is undone by restoring an earlier one. Every run records the version it followed, and what a run teaches goes back into the process.
It runs without you
schedulewebhookon demand
A hosted agent runs the process on Tulina's own infrastructure, on a schedule or when an event arrives, and keeps going when you close the chat. Nothing to host. Every run is tracked to its outcome.
Inside the same security perimeter
vaultrolesrun log
Credentials stay in the vault, never in the prompt. Roles decide who may run what, every call is logged, and a step a person has to approve waits for that person.
Questions about listing doctors and clinics with AI
Also on Serper
Other processes that run mainly on Serper. The tools they share with this one are lit.
Outreach based on government data
Every candidate's website is verified before a credit is spent, tiered by signal strength, then written one grounded opener that is checked for repetition.
- Shares
- INSEE Sirene, Serper
New target list7 steps →
Find local points of sale
Every target city is searched three different ways for shops that fit your positioning, each one ranked on fit and reviews before the first email goes out.
- Shares
- Serper
Target city list created5 steps →
Qualify accounts by number of local merchants
Multi-location businesses qualified on a real location count: a published figure checked for scope and date, then a map count confirmed by a second source.
- Shares
- Serper
List created4 steps →