willhaben.at APIwillhaben.at ↗
Access listings from willhaben.at across marketplace, real estate, cars, and jobs. Search, filter, and retrieve full listing details via 7 structured endpoints.
curl -X GET 'https://api.parse.bot/scraper/b057ca07-cf56-40aa-b5bc-e52eddc5501c/search_marketplace?page=1&rows=5&keyword=laptop' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for items in the general marketplace (Marktplatz). Returns paginated listing results with title, price, location, and attributes.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| rows | integer | Number of results per page. |
| keyword | string | Search keyword (e.g. 'laptop', 'bicycle'). |
| category | string | Category filter. |
| price_to | integer | Maximum price filter. |
| price_from | integer | Minimum price filter. |
{
"type": "object",
"fields": {
"page": "integer, current page number",
"rows": "integer, results per page requested",
"results": "array of listing objects with id, title, price, price_display, location, postcode, district, state, published, thumbnail, is_private, url, and attributes",
"total_results": "integer, number of results returned on this page"
},
"sample": {
"data": {
"page": 1,
"rows": 5,
"results": [
{
"id": "1979942268",
"url": "https://www.willhaben.at/iad/kaufen-und-verkaufen/d/sommerreifen-1979942268/",
"price": "50",
"state": "Oberösterreich",
"title": "Sommerreifen",
"district": "Kirchdorf an der Krems",
"location": "Ried im Traunkreis",
"postcode": "4551",
"published": "2026-05-14T20:49:00Z",
"thumbnail": "https://cache.willhaben.at/mmo/8/197/994/2268_68539667_n_hoved.jpg",
"attributes": {
"PRICE": "50",
"HEADING": "Sommerreifen",
"LOCATION": "Ried im Traunkreis"
},
"is_private": true,
"vertical_id": 5,
"price_display": "€ 50"
}
],
"total_results": 5
},
"status": "success"
}
}About the willhaben.at API
The willhaben.at API exposes 7 endpoints covering Austria's largest classifieds platform, returning structured data across four verticals: general marketplace goods, real estate (for sale and rent), cars, and jobs. The get_listing_detail endpoint retrieves full listing data including images, address details, attributes, and description for any listing ID obtained from the search endpoints.
Search Endpoints by Vertical
The API covers four distinct listing categories. search_marketplace accepts keyword, category, price_from, and price_to filters and returns paginated arrays of listing objects including title, price, price_display, location, postcode, district, state, published, and thumbnail. Real estate is split across three endpoints: search_real_estate_for_sale_flats and search_real_estate_for_sale_houses both accept area_from/area_to (in m²) and zip_prefix for postal code filtering — useful for narrowing to Vienna (zip_prefix: '1') or other Austrian regions. search_real_estate_for_rent filters by price range only and returns the same listing shape.
Cars and Jobs
search_cars accepts keyword (e.g. 'bmw', 'audi a4'), price_from, and price_to, returning vehicle listings with standard location and price fields. search_jobs accepts a keyword parameter and returns job-specific fields including company, salary, salaryTimeFrame, jobLocations, employmentModes, and employmentType — fields not present in the other listing types.
Listing Detail
get_listing_detail takes a numeric ad_id string obtained from any search result and returns the full listing record. Response fields include attributes (a structured name/value pair list), description, publishedDate, advertImageList (an array of image URLs), and advertAddressDetails covering address, postCode, district, and municipality. This endpoint works across all verticals — marketplace, real estate, and cars.
Pagination
All search endpoints share a consistent pagination model: pass page (integer) and rows (results per page) as inputs. Each response echoes back page, rows, and total_results (count of results on the current page). Note that total_results reflects the current page count, not a grand total across all pages.
- Monitor Austrian apartment rental prices by filtering
search_real_estate_for_rentbyprice_from/price_toover time. - Build a cross-category price tracker using
search_marketplacewithkeywordandprice_toto watch specific items. - Aggregate used car listings by make/model with
search_carsand enrich each result usingget_listing_detailfor full attributes. - Track new job postings in a specific field by polling
search_jobswith akeywordlike 'developer' or 'buchhalter'. - Compare flat sale prices by area using
search_real_estate_for_sale_flatswitharea_from,area_to, andzip_prefix. - Retrieve seller contact details and full image galleries for specific listings using
get_listing_detailwith anad_id. - Identify house listings in a Vienna postal code range using
search_real_estate_for_sale_houseswithzip_prefix: '1'.
| 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 willhaben.at have an official public developer API?+
What does `get_listing_detail` return that the search endpoints don't?+
get_listing_detail returns the full description text, a structured attributes object with name/value pairs (e.g. condition, category-specific specs), all listing images via advertImageList, and granular address data through advertAddressDetails including municipality. Search endpoints return summary fields only: title, price, location, postcode, thumbnail, and a few others.Does `total_results` tell me how many total listings match my search across all pages?+
total_results field reflects the count of results returned on the current page, not the grand total across all matching listings. To paginate through results, increment the page parameter and stop when a response returns fewer results than the rows value requested.Can I filter car listings by make, model, mileage, or year?+
search_cars supports keyword, price_from, and price_to only. Structured filters for make, model, mileage, or registration year are not exposed as dedicated parameters. You can fork the API on Parse and revise it to add those filters as additional endpoint parameters.