German property as JSON, with Kaltmiete and Warmmiete as two different fields
Immowelt.de API scraper - German real estate data: apartments and houses for sale API returns live Immowelt.de API scraper - German real estate data: apartments and houses for sale data as clean JSON for immowelt.de api scraper - german real estate data: apartments and houses for sale The primary endpoint, search, returns matching records including legacy id, title, contract, property type and price.
3 active endpoints, on 0 and 1 credit tiers.
- POST/immowelt/v1/search
- POST/immowelt/v1/detail
- POST/immowelt/v1/location
What Immowelt.de API scraper - German real estate data: apartments and houses for sale endpoints does ReefAPI ship?
3 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
Immowelt.de API scraper - German real estate data: apartments and houses for sale API
3 of 3 endpoints, ready to run
Search Immowelt.de property listings in any German city, district, postcode area or federal state - for sale, to rent or foreclosure auction - with structured filters: price (EUR), number of rooms, living space (m2), plot size (m2), property type and subtype (penthouse, loft, detached house, villa...), new-build only, and features such as garden, cellar or lift. Results are 30 per page and can be sorted by price, date or size. Each row carries the numeric price, rooms, living space, plot, address (city/district/postcode), energy class, publication date, photos and the listing agency. `location` takes plain German free text ('Berlin', 'Muenchen', 'Koeln') and is resolved to Immowelt's own geo-id, or you can pass a geo-id ('AD08DE8634') straight through.
{ "engine": "immowelt", "action": "search", "request": { "location": "Berlin" }, "ok": true, "data": { "total": 9143, "count": 30, "page": 1, "page_size": 30, "max_pages": 305, "location": { "query": "Berlin", "geo_id": "AD08DE8634", "city": "Berlin", "region": "Berlin", "city_slug": "berlin-10115", "url": "https://www.immowelt.de/suche/kaufen/wohnung/berlin/berlin-10115/ad08de8634", "matched": true }, "filters_applied": {}, "results": [ { "id": "256Q14GY2JL7", "legacy_id": "1215b46c-9e03-4081-bc72-67209544ff9f", "url": "https://www.immowelt.de/expose/1215b46c-9e03-4081-bc72-67209544ff9f", "title": "Sehr gepflegte 2-Zimmer-Wohnung mit ansprechenden Wohnraum und nützlichem Kellerraum", "contract": "BUY", "property_type": "APARTMENT", "price": { "amount_eur": 170000, "kind": "asking_price", "label": null, "formatted": "170.000 €", "per_sqm": "3.778 €/m²", "total_eur": null }, "rooms": 2, "living_space_m2": 45, "plot_area_m2": null, "energy_class": "D", "address": { "city": "Treptow-Köpenick", "district": "Köpenick", "zip_code": "12557", "country": "DEU", "is_address_published": false }, "geo_ids": [ "AD09DE483", "AD08DE8634", "AD06DE326" ], "key_facts": [ "2 Zimmer", "45 m²" ], "description_preview": "Diese charmante und gepflegte Etagenwohnung bietet eine ideale Gelegenheit für Immobilieninvestoren oder Eigennutzer. Mit einer Wohnfläche von 45 m² präsentiert sich diese Immobilie in einem hervorra...", "published_at": "2025-12-01T09:01:14.95Z", "updated_at": "2026-03-02T12:10:04.121Z", "status": "Published", "reference": "IK-PS-110", "tags": { "is_new": false, "has_floor_plan": false, "has_virtual_tour": false, "has_video": false, "has_brokerage_fee": false }, "primary_photo_url": "https://mms.immowelt.de/3/2/9/9/329954f0-f004-47bc-ba98-2b821cb41256.jpg", "photo_count": 14, "agent": { "agency_name": "Immobilien Konzept", "publisher_type": "AGENCY", "is_private_owner": false, "imprint_url": "https://www.immowelt.de/profil/02d166243f7d43cc95210d5429f9cadd#impressum", "website": "http://www.immobilienkonzept-amberg.de/", "business_address": "Schrannenplatz 6, 92224 Amberg", "badge": "Diamond Partner", "logo_url": "https://mms.immowelt.de/7/8/6/6/786679f5-8a31-4898-aa71-6a38a9bdac47.jpg", "contact_person": null, "phone_numbers": null }, "facts": [ { "type": "numberOfRooms", "label": "Zimmer", "value": "2 Zimmer" }, { "type": "livingSpace", "label": "m²", "value": "45 m²" } ] }, { "id": "25QZ8UNS4212", "legacy_id": "243c9f62-e7f4-450b-99cd-c29c75fd5a83", "url": "https://www.immowelt.de/expose/243c9f62-e7f4-450b-99cd-c29c75fd5a83", "title": "Energieeffizient & mit Balkon: Vermietete 1-Zimmerwohnung in beliebter Kiezlage", "contract": "BUY", "property_type": "APARTMENT", "price": { "amount_eur": 166900, "kind": "asking_price", "label": null, "formatted": "166.900 €", "per_sqm": "3.890 €/m²", "total_eur": null }, "rooms": 1, "living_space_m2": 42.9, "plot_area_m2": null, "energy_class": "C", "address": { "city": "Berlin", "district": "Friedrichshain", "zip_code": "10247", "country": "DEU", "is_address_published": true }, "geo_ids": [ "AD09DE476", "AD08DE8634", "AD06DE326" ], "key_facts": [ "1 Zimmer", "42,9 m²", "3. Geschoss" ], "description_preview": ". 3. OG . 1 Zimmer, ca. 42 m² . Energieeffizienzklasse C . Wannenbad . Balkon . Vermietet . Provisionsfrei Profitieren Sie von attraktiven steuerlichen Vorteilen Ihrer Kapitalanlage: Steuerfreier Ver...", "published_at": "2026-09-29T10:17:20.02Z", "updated_at": "2026-09-29T10:17:27.346Z", "status": "Published", "reference": "1150-25", "tags": { "is_new": true, "has_floor_plan": false, "has_virtual_tour": false, "has_video": true, "has_brokerage_fee": false }, "primary_photo_url": "https://mms.immowelt.de/0/6/a/b/06abdf06-5b0d-4e18-b785-0b1b3f5381c7.jpg", "photo_count": 16, "agent": { "agency_name": "Accentro GmbH", "publisher_type": "AGENCY", "is_private_owner": false, "imprint_url": "https://www.immowelt.de/profil/fa260f013904402192a7dc8bbd7d8b20#impressum", "website": "http://www.accentro.de/", "business_address": "Kantstraße 44/45, 10625 Berlin", "badge": "immowelt Partner", "logo_url": "https://mms.immowelt.de/d/3/9/c/d39cb3f3-d2ee-4478-90eb-988db45ec7e6.jpg", "contact_person": null, "phone_numbers": null }, "facts": [ { "type": "numberOfRooms", "label": "Zimmer", "value": "1 Zimmer" }, { "type": "livingSpace", "label": "m²", "value": "42,9 m²" }, { "type": "numberOfFloors", "label": "Geschoss", "value": "3. Geschoss" } ] }, { "id": "26W1NRNFNU8B", "legacy_id": "884bed59-77fb-4db2-aea5-202a1157f076", "url": "https://www.immowelt.de/expose/884bed59-77fb-4db2-aea5-202a1157f076", "title": "Einziehen & wohlfühlen: 3-Zimmer-Wohnung mit 2 Loggien in Top-Lage!", "contract": "BUY", "property_type": "APARTMENT", "price": { "amount_eur": 449901, "kind": "asking_price", "label": null, "formatted": "449.901 €", "per_sqm": "5.740 €/m²", "total_eur": null }, "rooms": 3, "living_space_m2": 78.38, "plot_area_m2": null, "energy_class": "D", "address": { "city": "Berlin", "district": "Steglitz", "zip_code": "12163", "country": "DEU", "is_address_published": false }, "geo_ids": [ "AD09DE480", "AD08DE8634", "AD06DE326" ], "key_facts": [ "3 Zimmer", "78,4 m²", "3. Geschoss" ], "description_preview": "Wohnen mit Charakter und Geschichte Willkommen in einem Zuhause mit Seele: Das idyllisch gelegene, denkmalgeschützte Wohnensemble der \"MGK\" (Markel-, Gritzner-, und Kreuznacher Straße) wurde im Jahr ...", "published_at": "2026-09-18T09:27:36.85Z", "updated_at": "2026-09-18T09:27:53.628Z", "status": "Published", "reference": "WE20260915-02-WE87", "tags": { "is_new": false, "has_floor_plan": true, "has_virtual_tour": true, "has_video": false, "has_brokerage_fee": false }, "primary_photo_url": "https://mms.immowelt.de/5/e/1/f/5e1fc0ee-dd94-490e-84c8-fd4fc52dd89a.jpg", "photo_count": 18, "agent": { "agency_name": "Werde Eigentümer GmbH", "publisher_type": "AGENCY", "is_private_owner": false, "imprint_url": "https://www.immowelt.de/profil/9444d5628c7a46408e3cee257974f880#impressum", "website": "https://www.werde-eigentümer.de/", "business_address": "Töpferwall 2a, 17207 Röbel/Müritz", "badge": null, "logo_url": "https://mms.immowelt.de/c/7/6/6/c7667823-5373-4ae4-be1c-35709353dd38.jpg", "contact_person": null, "phone_numbers": null }, "facts": [ { "type": "numberOfRooms", "label": "Zimmer", "value": "3 Zimmer" }, { "type": "livingSpace", "label": "m²", "value": "78,4 m²" }, { "type": "numberOfFloors", "label": "Geschoss", "value": "3. Geschoss" } ] } ] }, "meta": { "api": "immowelt", "endpoint": "search", "mode": "live", "record_count": 30 }, "captured": "2026-09-30 live" }
How the Immowelt.de API scraper - German real estate data: apartments and houses for sale API works
Immowelt.de API scraper - German real estate data: apartments and houses for sale is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 321 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
Resolve the place for free, then search, then read the rent as two numbers
German rental listings quote two figures and they are not interchangeable. The headline on the page is the cold rent; the total a tenant pays includes the running costs. A comparison built on whichever number happened to be nearest is wrong by the size of the Nebenkosten.
{"query": "leipzig"}Free, and cached for half a day. Returns Immowelt's own geography id for the place, which is what the search surface keys on. Checking it costs nothing, and a search scoped to the wrong id still looks healthy.
{"location": "leipzig", "contract": "rent"}1 credit for thirty rows. price.amount_eur is the headline cold rent, the number Immowelt itself prints; price.total_eur is the warm figure where the listing publishes one. Both are the source's own numbers.
{"location": "leipzig", "contract": "rent", "price_max": 900, "rooms_min": 2}1 credit. Filters, sorting and any page past the first are served from Immowelt's app surface rather than its public one, which is why they cost more to fetch on our side.
{"listing": "<id or the expose URL>"}1 credit. The full record: the complete facts table, the description, the agency and the fields the results card does not carry.
A geography you can prove, thirty listings a page with the rent in both its forms, and the full record for the ones worth a second look.
curl -X POST https://api.reefapi.com/immowelt/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"location":"Berlin"}'{
"ok": true,
"data": { … },
"meta": {
"api": "immowelt",
"endpoint": "search",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}Germany only, in euros, with two rent figures and a hard rule about which is which
Measured 2026-09-30 against the live gateway across Cologne, Leipzig, Stuttgart, Dresden and Hamburg, both sides of the market, 150 rows read against the source's own printed figures. Three of these lines go against us.
One country, one currency, and the contract parameter chooses between buying and renting. The default is buying, which matters: a price ceiling of 900 on a sale search is not a mistake the engine corrects for you, it simply finds nothing. Set contract to rent before you set a rent budget.
price.amount_eur is the Kaltmiete, the headline figure Immowelt prints on the card and on the full listing. price.total_eur is the Warmmiete where the listing publishes one. Both come from the source. Search rows and detail pages were compared for the same listing eleven times and they agree on the headline figure, so a caller reading amount_eur is reading what a German renter sees advertised.
Every price is validated against Immowelt's own formatted figure on the same row before it is published, and a disagreement beyond rounding is counted rather than shipped. Across 150 live rows that count was zero. The check exists because it caught a real fault: Immowelt writes cents with a dot on rents that are not a round euro, and reading that as a thousands separator turns 627,30 into 6273, a rent published ten times too high with every field filled and nothing obviously wrong.
Page one and page two of the same Cologne search shared zero listings out of thirty. Paging past the first page is served from the app surface, so it costs more to fetch, but it is real paging rather than the same rows reordered.
A plain unfiltered first page comes from Immowelt's public search page, which opens on an ordinary datacentre vantage point. The moment you add a filter, a sort, a second page, or ask for any single listing, the request moves to the app surface, which refuses that vantage point on every attempt and needs a German residential one instead. Same price to you either way; it is simply where the cost sits on our side.
Two Frankfurt rentals in a measured sample published no room count anywhere, on the card or on the full listing. They come back null. Everything else on a search row was complete across 150 rows: id, url, title, price, rooms, living space, city, postcode, publication date, lead photo and agency, with energy class on 76 of 90 in one sweep.
Immowelt answers a removed listing and a refused request with the same status, so a detail call that fails says plainly that it may equally be a property that has been sold, let or withdrawn. It does not guess a not-found to look tidy, and it does not report the site as blocking us when the honest answer is that the two cannot be told apart.
Where a figure is absent, every number derived from it goes with it rather than being calculated against a placeholder. A struck original stays when the source publishes one, because that is Immowelt's own number and not something inferred.
The location resolver is free and cached for twelve hours. A search is 1 credit for thirty rows and a single listing is 1 credit. Resolve the place first: it costs nothing and it is the step that quietly goes wrong.
What people build with Immowelt.de API scraper - German real estate data: apartments and houses for sale
The jobs this data is most often used for.
endpoints
credits per call
Pricing and assortment teams use Immowelt.de API scraper - German real estate data: apartments and houses for sale to search Immowelt.de property listings in any German city, district, postcode area or federal s….
Brand-protection teams use Immowelt.de API scraper - German real estate data: apartments and houses for sale to get full record for one Immowelt listing, by its expose URL or its listing id.
Retail analysts use Immowelt.de API scraper - German real estate data: apartments and houses for sale to resolve a free-text German place - city, town, district or federal state - to Immowelt's own….
What Immowelt.de API scraper - German real estate data: apartments and houses for sale data costs
The cheapest call here is 0 credits, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.
Full pricing →- 1,000 free credits on signup, no card
- One key, all 321 APIs, one credit pool
- Failed and blocked calls are never charged
- Credits roll over and never expire
Call it in two lines
Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.
curl -X POST https://api.reefapi.com/immowelt/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"location":"Berlin"}'import requests
r = requests.post(
"https://api.reefapi.com/immowelt/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"location": "Berlin"
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up Immowelt.de API scraper - German real estate data: apartments and houses for sale.
Get a free key →What is the Immowelt.de API scraper - German real estate data: apartments and houses for sale API?▾
Immowelt.de API scraper - German real estate data: apartments and houses for sale API is a ReefAPI endpoint group for immowelt.de api scraper - german real estate data: apartments and houses for sale It returns live JSON through POST requests under /immowelt/v1.
Is the Immowelt.de API scraper - German real estate data: apartments and houses for sale API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. Immowelt.de API scraper - German real estate data: apartments and houses for sale calls use the same shared credit balance as every other ReefAPI engine.
Do I need an Immowelt.de API scraper - German real estate data: apartments and houses for sale login or account?▾
No login to Immowelt.de API scraper - German real estate data: apartments and houses for sale is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Immowelt.de API scraper - German real estate data: apartments and houses for sale data?▾
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Immowelt.de API scraper - German real estate data: apartments and houses for sale API use?▾
Immowelt.de API scraper - German real estate data: apartments and houses for sale actions currently cost 1 credit per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call Immowelt.de API scraper - German real estate data: apartments and houses for sale from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call immowelt actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the Immowelt.de API scraper - German real estate data: apartments and houses for sale API an Immowelt.de API scraper - German real estate data: apartments and houses for sale scraper?▾
It is the managed alternative to a DIY Immowelt.de API scraper - German real estate data: apartments and houses for sale scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same immowelt.de api scraper - german real estate data: apartments and houses for sale back as clean JSON.
Why does my Immowelt.de API scraper - German real estate data: apartments and houses for sale scraper keep getting blocked?▾
Most Immowelt.de API scraper - German real estate data: apartments and houses for sale scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked calls are free.
26 More APIs APIs on the same key
One key, one credit pool, one response envelope. If you are pulling Immowelt.de API scraper - German real estate data: apartments and houses for sale, you are one call away from the rest of the category — no second contract, no second integration.
Need something this API does not do?
Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.
Try it on your own data before you pay anything
The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 320 APIs, and the same envelope everywhere.
Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-09-30.