Immoscout24 APIimmoscout24.de ↗
Search and retrieve real estate listings from Immobilienscout24.de. Filter by location, property type, rent or sale. Returns price, rooms, space, and full property details.
What is the Immoscout24 API?
The Immobilienscout24 API provides access to German property listings via 2 endpoints covering search and detail retrieval. The search_listings endpoint returns paginated summaries — title, address, price, living space, and room count — for apartments and houses across Germany, while get_listing_details returns a flat object with over a dozen property attributes including rent components, balcony availability, postal code, and geographic region fields.
curl -X GET 'https://api.parse.bot/scraper/643cd5c4-de62-4953-9dd5-f0cf43c84927/search_listings?page=1&location=berlin%2Fberlin&real_estate_type=wohnung-mieten' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace immoscout24-de-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Immobilienscout24 SDK — search listings and inspect details."""
from parse_apis.immobilienscout24_api import (
Immobilienscout24, RealEstateType, ListingNotFound
)
client = Immobilienscout24()
# Search for apartments to rent in Berlin — limit= caps total items fetched.
for listing in client.listingsummaries.search(
location="berlin/berlin",
real_estate_type=RealEstateType.APARTMENT_RENT,
limit=5,
):
print(listing.title, listing.price, listing.address.city)
# Drill-down: take ONE listing and fetch its full details.
result = client.listingsummaries.search(
location="hamburg/hamburg",
real_estate_type=RealEstateType.HOUSE_BUY,
limit=1,
).first()
if result:
detail = result.details()
print(detail.obj_scoutId, detail.obj_baseRent, detail.obj_livingSpace)
# Direct lookup by ID via the listings collection.
try:
full = client.listings.get(id="164121835")
print(full.obj_street, full.obj_zipCode, full.obj_noRooms)
except ListingNotFound as exc:
print(f"Listing gone: {exc}")
print("exercised: listingsummaries.search / listing.details / listings.get")
Search for real estate listings in Germany by region and type. Returns paginated results with listing summaries including title, address, price, living space, and room count. The base pagination unit is 20 listings per page. Results are drawn from the embedded search model on the IS24 search page.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination, starting from 1. |
| location | string | Location path in the format 'state/city' or 'state/city/district', e.g. 'berlin/berlin', 'bayern/muenchen', 'nordrhein-westfalen/koeln'. |
| real_estate_type | string | Type of real estate listing. Accepted values: 'wohnung-mieten' (apartment rent), 'wohnung-kauf' (apartment buy), 'haus-mieten' (house rent), 'haus-kauf' (house buy). |
{
"type": "object",
"fields": {
"page": "integer current page number",
"type": "string real estate type used in the search",
"count": "integer total number of matching listings across all pages",
"listings": "array of listing objects with id, expose_id, title, address, price, currency, price_interval, living_space, number_of_rooms, url",
"location": "string location path used in the search",
"total_pages": "integer total number of pages available"
},
"sample": {
"data": {
"page": 1,
"type": "wohnung-mieten",
"count": 7948,
"listings": [
{
"id": "131006270",
"url": "https://www.immobilienscout24.de/expose/131006270",
"price": 1273.06,
"title": "Einzigartige Dachgeschosswohnung im Neubau am Tegeler See mit 2 Balkonen und Einbauküche",
"address": {
"city": "Berlin",
"street": "Wilkestraße",
"quarter": "Tegel (Reinickendorf)",
"postcode": "13507",
"house_number": "2"
},
"currency": "EUR",
"expose_id": "131006270",
"living_space": 48.04,
"price_interval": "MONTH",
"number_of_rooms": 2
}
],
"location": "berlin/berlin",
"total_pages": 379
},
"status": "success"
}
}About the Immoscout24 API
Search Listings
The search_listings endpoint accepts a location parameter in state/city or state/city/district format (e.g. berlin/berlin, bayern/muenchen) and a real_estate_type parameter that controls whether you're querying rental apartments (wohnung-mieten), apartments for purchase (wohnung-kauf), rental houses (haus-mieten), or houses for sale (haus-kauf). Results are paginated at 20 listings per page using the page parameter. Each listing object in the listings array includes an id, expose_id, title, address, price, currency, price_interval, living_space, number_of_rooms, and a direct url to the listing. The response also returns count (total matching listings) and total_pages so you can iterate programmatically.
Listing Details
The get_listing_details endpoint accepts a numeric Scout ID string (obtained from search_listings results as the id field) and returns a flat key-value object. Property attributes use an obj_ prefix: obj_baseRent and obj_totalRent give the base and total monthly rent in EUR, obj_livingSpace is the area in square meters, obj_noRooms is the room count, and obj_balcony is a y/n flag. Address data is broken into obj_street, obj_zipCode, obj_regio1, and obj_regio2 for region hierarchy. This flat structure makes it straightforward to map into a database schema without deep nesting.
Coverage and Scope
The API covers Immobilienscout24.de, Germany's largest property portal. The location parameter supports German states and cities using URL-slug format. There is no built-in price-range filter parameter in the current endpoints — filtering by price requires post-processing the results client-side after retrieving the paginated listings.
The Immoscout24 API is a managed, monitored endpoint for immoscout24.de — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when immoscout24.de changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official immoscout24.de API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Aggregate rental apartment listings in Berlin or Munich filtered by district using the
locationparameter - Build a price-per-square-meter dataset by combining
obj_baseRentandobj_livingSpacefrom detail responses - Track listing availability over time using
expose_idandobj_scoutIdas stable identifiers - Compare total rent (
obj_totalRent) vs base rent (obj_baseRent) across neighborhoods to estimate service charge norms - Feed a property alert system that notifies users when new listings match a given location and
real_estate_type - Populate a map layer with property locations using
obj_zipCode,obj_regio1, andobj_regio2fields - Analyze room count distributions across property types by iterating
obj_noRoomsfrom detail responses
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Immobilienscout24 have an official public developer API?+
What does `get_listing_details` return beyond what `search_listings` already includes?+
search_listings returns summary fields: title, address, price, living space, and room count. get_listing_details goes further with broken-out address components (obj_street, obj_zipCode, obj_regio1, obj_regio2), separate rent figures (obj_baseRent vs obj_totalRent), and amenity flags like obj_balcony. You need the Scout ID from a search result to call the detail endpoint.Can I filter search results by price range or minimum room count directly in the API?+
search_listings endpoint filters by location and real_estate_type only. Price and room count filtering requires retrieving results and applying those conditions client-side. You can fork this API on Parse and revise it to add price or room-count filter parameters to the endpoint.Does the API cover commercial real estate or new-development listings?+
real_estate_type values cover residential rentals and purchases (apartments and houses). Commercial properties and new-development projects are not covered by the existing endpoints. You can fork this API on Parse and revise it to target those listing categories.How does pagination work in `search_listings`?+
total_pages and count (total matching listings), so you can calculate how many pages to iterate. Pass the page parameter starting from 1. If page is omitted, the first page is returned.