inberlinwohnen APIinberlinwohnen.de ↗
Access Berlin state-owned housing apartment listings, filter by district, rent, and rooms, and retrieve company profiles via the inberlinwohnen.de API.
What is the inberlinwohnen API?
The inberlinwohnen.de API exposes 5 endpoints covering apartment listings, detailed property records, and company information from Berlin's state-owned housing portal (Wohnungsfinder). The get_all_listings endpoint returns paginated results with fields including rent_cold, rent_total, district, area, rooms, and company_name for every currently available unit across Berlin's seven landeseigene Wohnungsbaugesellschaften.
curl -X GET 'https://api.parse.bot/scraper/c78d4e68-786f-4469-ac1d-081ddf0dfd61/get_all_listings?limit_pages=1' \ -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 inberlinwohnen-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.
from parse_apis.inberlinwohnen_api import InBerlinWohnen, Apartment, Company, Article
client = InBerlinWohnen(api_key="YOUR_API_KEY")
# Search for affordable 2-room apartments in Spandau
for apt in client.apartments.search(district="Spandau", rooms_min=2, rent_max=800):
print(apt.title, apt.district, apt.rent_cold, apt.area)
# List all available apartments (first page only)
for apartment in client.apartments.list(limit_pages=1):
print(apartment.title, apartment.company_name, apartment.rent_total)
# List Berlin's state-owned housing companies
for company in client.companies.list():
print(company.name)
# List informational articles
for article in client.articles.list():
print(article.title, article.url)
Extract all available apartment listings from the Wohnungsfinder. Paginates through Livewire pages server-side and returns the full set of currently advertised apartments. Each apartment includes address, rent, rooms, area, company, and energy data. Typically 10-50 listings total across all pages.
| Param | Type | Description |
|---|---|---|
| limit_pages | integer | Maximum number of pages to scrape. Each page contains ~10 apartments. If omitted, scrapes all available pages. |
{
"type": "object",
"fields": {
"total": "integer total number of apartments returned",
"apartments": "array of apartment objects with id, title, object_id, rooms, area, rent_cold, rent_total, extra_costs, district, company_name, detail_url, street, house_number, zip_code, floor, construction_year, available_from, and other fields"
},
"sample": {
"data": {
"total": 10,
"apartments": [
{
"id": 17790,
"lat": "52.51018144",
"lon": "13.48343436",
"area": "39,10",
"floor": 2,
"rooms": "1,0",
"title": "Nur ohne WBS! Anmietung ab sofort",
"street": "Schulze-Boysen-Straße",
"details": {},
"district": "Lichtenberg",
"zip_code": "10365",
"bathrooms": 1,
"image_url": "https://www.inberlinwohnen.de/images/apartments/1781085068-ngmIXoLmbf.webp",
"object_id": "ESQ 1950/33559/85",
"rent_cold": "353,07",
"detail_url": "https://www.howoge.de/wohnungen-gewerbe/wohnungssuche/detail/1950-33559-85.html?t=ibw",
"rent_total": 450.03,
"extra_costs": "96,96",
"company_name": "HOWOGE",
"energy_value": "0,00",
"house_number": "49",
"listing_date": "2026-06-10T09:51:08.000000Z",
"available_from": "01.07.2026",
"energy_pass_type": "Bedarfsausweis",
"construction_year": "1987"
}
]
},
"status": "success"
}
}About the inberlinwohnen API
Apartment Listings and Search
The get_all_listings endpoint retrieves all available apartments from the Wohnungsfinder, returning an array of objects with fields such as id, object_id, title, district, area, rooms, rent_cold, rent_total, company_name, and detail_url. An optional limit_pages parameter caps how many pages are fetched, which is useful when you only need a quick sample. The search_listings endpoint builds on this by accepting filter parameters: district (case-insensitive partial match), company (e.g. degewo, Gewobag), rent_max, area_min, rooms_min, and rooms_max. Results are narrowed to matching apartments and include a total count.
Apartment Detail Records
The get_listing_detail endpoint accepts either the internal numeric id (e.g. 16422) or the external object_id string (e.g. 7100/70806/0101/0033) and returns a single apartment object with all available fields. Note that area and rooms are returned as strings in German decimal format (comma as separator), and rent_cold is also a formatted string, while rent_total is a numeric value.
Company and Informational Content
The get_landeseigene_companies endpoint returns the seven state-owned housing companies with their name, description, and url. The get_gut_zu_wissen endpoint pulls article titles and URLs from the site's tenant information section, covering guides and resources published under the 'Gut zu wissen' navigation area. Neither endpoint requires any input parameters.
The inberlinwohnen API is a managed, monitored endpoint for inberlinwohnen.de — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when inberlinwohnen.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 inberlinwohnen.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?+
- Monitor newly available apartments across specific Berlin districts by polling
get_all_listingsand filtering ondistrict. - Build a rent comparison tool using
rent_coldandrent_totalfields across different companies and neighborhoods. - Alert renters when apartments matching a size and budget threshold appear, using
search_listingswitharea_min,rent_max, androoms_min. - Aggregate company profiles for Berlin's seven state-owned housing companies via
get_landeseigene_companies. - Index tenant guides and informational articles from the 'Gut zu wissen' section using
get_gut_zu_wissenarticle titles and URLs. - Enrich property datasets with per-listing details by resolving
object_idvalues throughget_listing_detail. - Analyze housing availability by district or company over time by storing and comparing
get_all_listingssnapshots.
| 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 inberlinwohnen.de provide an official developer API?+
How does filtering work in `search_listings`, and what fields can I filter on?+
search_listings endpoint accepts up to six optional parameters: company (partial, case-insensitive name match), district (partial, case-insensitive), rent_max (maximum cold rent in EUR), area_min (minimum sqm), rooms_min, and rooms_max. All filters are applied together; omitting a parameter means no constraint on that field. The response includes a total count and an apartments array of matching objects.Are historical or archived listings available through this API?+
Does the API return floor plans, photos, or energy certificates for apartments?+
area, rooms, rent_cold, rent_total, district, and detail_url, but does not include images, floor plan files, or energy performance data. You can fork the API on Parse and revise get_listing_detail to add extraction of those assets from the linked detail pages.Why are some numeric fields like `area` and `rooms` returned as strings?+
62,50 for area and 2,00 for rooms are returned as strings to preserve the original format. The field rent_total is an exception and is returned as a JavaScript number. Plan for locale-aware parsing if you need these as floats.