immowelt.de APIimmowelt.de ↗
Access German property listings for rent and sale from Immowelt.de. Search by location, filter by price and rooms, and retrieve full listing details and images.
curl -X GET 'https://api.parse.bot/scraper/e8fdb8a3-31d8-4834-a13d-ac909ddc6d4d/search_listings?page=1&location=muenchen%2Fmuenchen-80331%2Fad04de3456&transaction=mieten&property_type=wohnung' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for real estate listings (rent or buy) with optional filters. Returns paginated listing cards with basic info including price, rooms, area, and address. The location parameter must be a full path as used in Immowelt URLs, including city name, district/ZIP, and geoid.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination |
| order | string | Sort order: Default, PriceAsc, PriceDesc, NumberOfRoomsAsc, NumberOfRoomsDesc, SpaceAsc, SpaceDesc |
| locationrequired | string | Location path including city, district/ZIP, and geoid (e.g. 'berlin/berlin-10115/ad08de8634'). This forms part of the URL path and must match Immowelt's internal location format. |
| price_max | integer | Maximum price filter |
| price_min | integer | Minimum price filter |
| rooms_min | integer | Minimum number of rooms |
| space_min | integer | Minimum living area in square meters |
| transaction | string | Transaction type: mieten (rent), kaufen (buy) |
| property_type | string | Property type: wohnung, haus, gewerbe, grundstueck |
{
"type": "object",
"fields": {
"url": "string the constructed search URL",
"page": "integer current page number",
"listings": "array of listing objects with id, url, uuid, price_raw, rooms, area, address, agency, main_image",
"total_count_text": "string showing total number of results (e.g. '6.173 Wohnungen mieten in Berlin')"
},
"sample": {
"data": {
"url": "https://www.immowelt.de/suche/mieten/wohnung/berlin/berlin-10115/ad08de8634",
"page": 1,
"listings": [
{
"id": "26EG5V14W8KG",
"url": "https://www.immowelt.de/expose/8aa8eb87-1538-47c9-ba76-7cbd0a818867",
"area": "55,9 m²",
"uuid": "8aa8eb87-1538-47c9-ba76-7cbd0a818867",
"rooms": "2 Zimmer",
"agency": "John Doe",
"address": "123 Main St, Berlin (10315)",
"price_raw": "1.369 €Kaltmiete",
"main_image": "https://mms.immowelt.de/b/f/2/1/bf213538-3e94-4549-9aef-a9063d983f6f.jpg?ci_seal=3b1d4022350df6c3ca4b9f8fb7eec7acb30acdfe&h=50",
"keyfacts_raw": "2 Zimmer|·|55,9 m²|·|3. Geschoss"
}
],
"total_count_text": "6.173 Wohnungen mieten in Berlin"
},
"status": "success"
}
}About the immowelt.de API
The Immowelt.de API provides access to German real estate listings across 3 endpoints, covering property search, full listing details, and image retrieval. The search_listings endpoint returns paginated cards with price, room count, area, and address for both rental and purchase listings. The get_listing_details endpoint returns structured property data including key facts, feature tags, and full description text for any listing UUID.
Search and Filter German Property Listings
The search_listings endpoint accepts a required location parameter formatted as a URL path with city name, district or ZIP, and a geoid identifier — for example, berlin/berlin-10115/ad08de8634. This matches the location structure Immowelt.de uses natively. You can narrow results using price_min, price_max, rooms_min, and space_min filters, and control ordering with the order parameter, which accepts values like PriceAsc, SpaceDesc, or NumberOfRoomsAsc. The transaction parameter switches between mieten (rent) and kaufen (buy). Each result in the listings array includes the listing id, uuid, url, price_raw, rooms, area, address, agency, and a main_image URL. The total_count_text field gives the human-readable total result count, such as 6.173 Wohnungen mieten in Berlin.
Retrieve Full Listing Details
The get_listing_details endpoint takes a listing uuid — available from search_listings results — and returns the full expose data. Response fields include title, address, price, description, features (an array of feature tag strings), and a key_facts object with rooms, area, and floor values. An images array contains full URLs hosted on mms.immowelt.de. Several fields such as address, description, key_facts, and price are noted as conditional — they may be absent if the listing does not render them.
Image Retrieval
The get_listing_images endpoint is a focused alternative to get_listing_details when only image URLs are needed. It accepts the same listing uuid and returns the id alongside the images array from mms.immowelt.de. This avoids fetching the full detail payload when building image galleries or visual comparison tools.
- Build a rental price tracker for specific Berlin districts using
locationgeoid paths andprice_rawfields - Compare listings by room count and area across cities using
rooms_min,space_min, andSpaceDescsorting - Aggregate agency listings by parsing the
agencyfield across paginatedsearch_listingsresults - Create a property alert system that monitors
total_count_textfor volume changes in a given location - Generate listing detail pages using
title,key_facts,features, anddescriptionfromget_listing_details - Build image galleries for shortlisted properties using the
get_listing_imagesendpoint to batch-fetch image URLs - Analyze asking prices for kaufen (buy) vs mieten (rent) listings in the same location by switching the
transactionparameter
| 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 | 250 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 Immowelt.de have an official developer API?+
What does the `location` parameter in `search_listings` require?+
berlin/berlin-10115/ad08de8634. Using only a city name or postal code without the geoid will not return results.Are contact details or landlord phone numbers available from listing pages?+
Can I retrieve all listings in Germany without specifying a location?+
location parameter is required for search_listings, and results are scoped to the geoid path provided. The API does not support a nationwide unfiltered query. You can fork this API on Parse and revise it to iterate over multiple geoid paths to approximate wider coverage.Are some fields in `get_listing_details` sometimes missing?+
address, price, key_facts, description, and some feature fields are documented as conditional — they may not appear in the response if the listing itself does not render them. Your integration should handle absent fields defensively rather than assuming all fields are always present.