{"description":"Searches jameda (Docplanner) for doctors and practices by specialty or free text and city: name, specialty, address, star rating, number of reviews, whether online booking exists and has free slots, and the ids that jameda.de/get-slots needs. Paid 'Anzeige' placements are dropped by default.","effect":"read","id":"jameda.de/search-doctors","keywords":["jameda","arzt","ärztin","arztsuche","facharzt","hausarzt","hautarzt","zahnarzt","termin","arzttermin","bewertung","doctor","find a doctor","appointment","medical"],"output":{"schema":{"properties":{"city":{"type":"string"},"doctors":{"items":{"properties":{"address_id":{"type":["string","null"]},"city":{"type":["string","null"]},"doctor_id":{"type":"string"},"free_slots":{"description":"The calendar currently has free slots","type":"boolean"},"kind":{"enum":["doctor","facility",null]},"name":{"type":"string"},"online_booking":{"description":"Has a jameda calendar (get-slots works)","type":"boolean"},"promoted":{"type":"boolean"},"rating":{"description":"0-5 stars","type":["number","null"]},"reviews":{"type":["integer","null"]},"specialty":{"type":["string","null"]},"street":{"type":["string","null"]},"url":{"format":"uri","type":"string"},"video_only":{"type":"boolean"}},"type":"object"},"type":"array"},"page":{"type":"integer"},"specialty":{"type":"string"}},"required":["doctors"],"type":"object"},"value":"let $ads = params.include_ads, $book = params.bookable_only in {specialty: params.specialty, city: params.city, page: params.page, doctors: steps.search.doctors[?doctor_id != `null` && ($ads || first_class != '1') && (!$book || has_slots != `null`)].{doctor_id: doctor_id, address_id: address_id, name: trim(name), kind: entity_type, specialty: specialty, street: street, city: locality || city, rating: rating && to_number(rating) || `null`, reviews: reviews && to_number(reviews) || `null`, video_only: online_only == 'true', online_booking: has_calendar != `null`, free_slots: has_slots != `null`, promoted: first_class == '1', url: url}}"},"params":{"additionalProperties":false,"properties":{"bookable_only":{"default":false,"description":"Only doctors with online booking and free slots","type":"boolean"},"city":{"description":"City, e.g. 'Berlin', 'München'","maxLength":80,"minLength":2,"type":"string"},"include_ads":{"default":false,"description":"Keep paid placements (marked promoted)","type":"boolean"},"page":{"default":1,"maximum":20,"minimum":1,"type":"integer"},"specialty":{"description":"Specialty or free text, e.g. 'Hautarzt', 'Allgemeinmediziner', 'Zahnarzt', or a doctor's name","maxLength":80,"minLength":2,"type":"string"}},"required":["specialty","city"],"type":"object"},"provenance":{"method":"browser-inspect","notes":"spikes/jameda.md. Server-rendered search; every result card carries data-* attributes and schema.org microdata. data-is-first-class=1 marks the paid placement (labelled 'Anzeige'). data-eec-has-calendar / -with-slots are present-but-empty attributes, so presence is tested with != null. No bot protection seen (CloudFront → Varnish → nginx).","recorded_at":"2026-11-07T12:10:00+01:00","recorded_by":"C4"},"requires_login":false,"schema":"https://wield.run/schema/recipe/v1.json","site":{"country":"DE","id":"jameda.de","language":"de","login_url":"https://www.jameda.de/anmelden","name":"jameda","origin":"https://www.jameda.de","origins":["https://www.jameda.de"]},"steps":[{"expect":{"content_type":"html","status":[200]},"extract":{"html_items":{"doctors":{"fields":{"address_id":{"attr":"data-address-id","selector":":scope"},"city":{"attr":"data-eec-address-cities","selector":":scope"},"doctor_id":{"attr":"data-result-id","selector":":scope"},"entity_type":{"attr":"data-test-entity-type","selector":":scope"},"first_class":{"attr":"data-is-first-class","selector":":scope"},"has_calendar":{"attr":"data-eec-has-calendar","selector":":scope"},"has_slots":{"attr":"data-eec-has-calendar-with-slots","selector":":scope"},"locality":{"attr":"content","selector":"meta[itemprop=\"addressLocality\"]"},"name":{"attr":"data-doctor-name","selector":":scope"},"online_only":{"attr":"data-is-online-only","selector":":scope"},"rating":{"attr":"data-eec-stars-rating","selector":":scope"},"reviews":{"attr":"data-eec-opinions-count","selector":":scope"},"specialty":{"attr":"data-eec-specialization-name","selector":":scope"},"street":{"attr":"content","selector":"meta[itemprop=\"streetAddress\"]"},"url":{"attr":"data-doctor-url","selector":":scope"}},"max":50,"selector":"[data-id=\"result-item\"]"}}},"id":"search","parse":"html","request":{"headers":{"Accept":"text/html"},"method":"GET","query":{"loc":"{{params.city}}","page":"{{params.page}}","q":"{{params.specialty}}"},"url":"/suchen"}}],"task":"Search doctors by specialty and city","tos":{"notes":"jameda's terms forbid automated retrieval of profile data. One user-initiated search page at a time from the user's own browser. Health-related searches are sensitive: results stay on the user's device.","reviewed":false},"verify":{"checks":["length(output.doctors) > `5`","output.doctors[0].city == 'Hamburg'","length(output.doctors[?promoted]) == `0`","length(output.doctors[?online_booking]) > `0`","starts_with(output.doctors[0].url, 'https://www.jameda.de/')"],"example_params":{"city":"Hamburg","specialty":"Allgemeinmediziner"},"max_ms":4000},"version":1}