🩺 Jameda Scraper - German Doctor Leads & Contacts avatar

🩺 Jameda Scraper - German Doctor Leads & Contacts

Pricing

from $30.00 / 1,000 doctors

Go to Apify Store
🩺 Jameda Scraper - German Doctor Leads & Contacts

🩺 Jameda Scraper - German Doctor Leads & Contacts

Scrape German doctor profiles from jameda.de — Germany's #1 medical directory with 1.6M+ professionals. Extract name, specialty, address, phone, ratings. Perfect for healthtech, B2B medical lead-gen, market research.

Pricing

from $30.00 / 1,000 doctors

Rating

0.0

(0)

Developer

Ben

Ben

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

7 days ago

Last modified

Share

🩺 Jameda Scraper — German Doctor Leads, Practice Contacts & Market Data

Extract structured doctor profiles from jameda.de — Germany's #1 medical directory with 1.6M+ medical professionals. Search by specialty, city and district, and get back clean records with name, title prefix, specialty and sub-specialties, full practice address, phone numbers in international format, insurance types, languages and review counts. It's built for healthtech, B2B medical lead generation and market research, and it bypasses jameda's anti-bot with TLS impersonation plus a German residential proxy — no headless browser needed. Export to JSON/CSV/Excel, run on a schedule, call via API, or connect to Make, Zapier or n8n.

🩺 What is the Jameda Scraper?

It turns any jameda.de search into a structured contact dataset. Give it a medical specialty (Fachgebiet) and a German city — optionally a district — or paste exact jameda listing URLs, and the actor paginates the results, parses each doctor card, and (by default) visits every profile to pull the full practice details. Under the hood it uses curl-cffi Chrome TLS impersonation, a homepage warm-up, automatic re-warmup on blocks and a German residential proxy, because jameda blocks datacenter and non-German IPs at the network level. The result: a ready-to-use list of medical practices with contact and credential data for outreach, provider databases or analysis.

What data does it extract?

For every doctor card on the listing pages:

  • Name and title prefix (name, title_prefix — e.g. Dr. med., Prof.)
  • Specialty and sub-specialties (specialty, sub_specialties)
  • Sponsored flag (is_sponsored) and review count (review_count)
  • Profile slug & URL (slug, url) plus your search context (search_specialty, search_city) and scraped_at

With fetchDetails: true (the default, strongly recommended) each profile is visited and the record is enriched with: practice name (practice_name), full address (address) parsed into street, plz, city and district, all phone numbers (phones) plus a normalized primary phone in +49… format (primary_phone), insurance types (insurance_types), languages (languages), optional website and opening hours text.

The listing page alone is sparse (name + specialty + review count), so keep fetchDetails: true for usable B2B data. Patient reviews and the star rating value (rendered client-side) are intentionally not scraped; the review count is captured.

⬇️ Input

Run it two ways — search a specialty + city, or pass exact jameda URLs:

FieldDescription
specialtyMedical specialty slug (Fachgebiet), e.g. zahnarzt, hautarzt, orthopaede, frauenarzt, kinderarzt, kardiologe
cityGerman city slug, lowercase, e.g. berlin, muenchen, hamburg, koeln, frankfurt
districtOptional district within the city, e.g. mitte, kreuzberg
startUrlsDirect jameda.de listing URLs (overrides specialty + city + district)
fetchDetailsVisit each profile for address, phones, insurance, languages (default true, recommended)
maxResultsMax doctors to scrape (0 = unlimited, default 50, max 5000)
delaySecondsPolite delay between requests (1–10, default 2.0 — jameda is rate-limit strict)
proxyConfigurationRequired: German residential proxy (default)

Example input

{
"specialty": "zahnarzt",
"city": "berlin",
"district": "mitte",
"fetchDetails": true,
"maxResults": 50,
"delaySeconds": 2.0
}

⬆️ Output

Every doctor is one clean row (view as a table, or export JSON / CSV / Excel):

{
"slug": "kurdin-alsolivany",
"url": "https://www.jameda.de/kurdin-alsolivany/zahnarzt/berlin",
"name": "Kurdin Alsolivany",
"title_prefix": "Dr. med. dent.",
"specialty": "Zahnärztin",
"sub_specialties": ["Parodontologie", "Ästhetische Zahnmedizin", "Implantologie"],
"is_sponsored": false,
"review_count": 173,
"search_specialty": "zahnarzt",
"search_city": "berlin",
"scraped_at": "2026-06-26T16:00:00+00:00",
"practice_name": "Zahnarztpraxis Dr. Kurdin Alsolivany",
"address": "Schönhauser Str. 17, 1.OG, Steglitz, 12157 Berlin",
"street": "Schönhauser Str. 17",
"plz": "12157",
"city": "Berlin",
"district": "Steglitz",
"phones": ["030 7957784", "030 79782088"],
"primary_phone": "+49307957784",
"insurance_types": ["Gesetzliche Krankenkassen", "Selbstzahler"],
"languages": ["Deutsch", "Englisch"]
}

practice_name, address, street, plz, city, district, phones, primary_phone, insurance_types and languages are only present when fetchDetails: true.

💡 Use cases

  • 🎯 Medical B2B lead generation: build targeted lists of practices by specialty and city for medical equipment, software, consulting or services outreach.
  • 🏥 HealthTech provider databases: populate booking platforms, EMR integrations or "find a doctor" tools with structured practice data per region.
  • 📊 Market & density research: analyze specialty distribution, practice density and review counts across German cities and districts.
  • 🗂️ CRM & data enrichment: enrich healthcare contacts with verified practice names, addresses, phones and insurance acceptance.

❓ FAQ

How do I scrape doctors from jameda.de? Enter a specialty slug (e.g. zahnarzt) and a city slug (e.g. berlin), optionally a district, then Run. With the default fetchDetails: true you get full practice profiles with address, phones and insurance.

Why is a German residential proxy required? jameda.de blocks datacenter and non-German IPs at the network level, returning instant 403s. The German residential proxy is preconfigured by default so requests come from an accepted IP.

Why should I keep fetchDetails on? The listing page only contains name, specialty and review count. fetchDetails: true (the default) visits each profile to add address, phone numbers, insurance types and languages — the data that makes the dataset useful.

Can I get phone numbers? Yes — with fetchDetails on, each record includes all listed phones plus a normalized primary_phone in international +49… format.

Can I get doctor email addresses? No — jameda hides email behind a contact form and does not publish addresses publicly. Phone and practice address are the available contact channels.

Are patient reviews or star ratings included? Only the review count is captured. Full review text is not scraped, and the star-rating value is rendered client-side in React, so it is not part of the output.

Do I need an API key? No API key for jameda is required. You just need an Apify account; the German residential proxy is built into the default input.

How many doctors can it return, and how do I avoid blocks? Up to your maxResults cap (0 = unlimited, max 5000). Keep delaySeconds at 2.0 or higher — jameda is rate-limit strict — and the actor auto-retries with session re-warmup on blocks.

Can I run it on a schedule or via API? Yes — schedule recurring runs in Apify, call it via the API/SDK, or connect it to Make, Zapier or n8n for automated pipelines.

Is scraping jameda legal? It extracts publicly listed practice profile data only. Treat contact data as business data, handle it in a GDPR-compliant way for any outreach, and follow applicable laws and jameda's terms. Patient reviews are not scraped.

🔗 You might also like


Keywords: jameda scraper, German doctor directory, medical practice data, doctor contact scraper, healthtech leads, medical B2B lead generation, German doctors data, practice address phone, specialty doctor scraper, healthcare market research, provider database Germany, find a doctor data, medical directory scraper, German B2B leads, doctor practice contacts.