willhaben API & Scraper
The willhaben API returns Austria's largest classifieds site as clean JSON in four actions: search for the second-hand marketplace, real_estate/search for apartments and houses to rent or buy, plots and commercial property, cars/search for used cars and motorcycles, and listing for the full record of any ad.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
Marketplace rows carry the price, whether the item is free, its condition (new, like new, used, defective and more), pickup or shipping, whether PayLivery - willhaben's buyer protection with shipping - is on, postcode, district and state, private or dealer, publish, update and expiry dates, images, and flags for top ads, paid highlights and reserved ads. Real-estate rows add rent or purchase price, price per m², living area, rooms and floor, and new-build projects come with their units; car rows add make, model, first registration, mileage, power, fuel, transmission and condition, with the dealer's earlier price and any bonus-only price kept apart from the price. Every filter was checked live to actually narrow the result and every returned row to match it - condition, PayLivery, price, state or Vienna district, private or dealer, make, mileage, year, fuel, rooms, living area and more - and listing returns every published attribute, PayLivery shipping options with carrier and parcel size, and the seller: a dealer's company, address and website, while a private seller's name, phone number, street and exact location are withheld. On 15 listings in 8 categories the title, price, currency and the price box the visitor sees matched the listing page on every one. No willhaben account, no browser - one ReefAPI key and the standard { ok, data, meta, error } envelope.
Five willhaben prices that are not simply a price
A willhaben listing can be free, have its price on request, publish no price at all, show only the cheapest unit of a project, or carry a lower price that needs a dealer bonus. Each shape looks like an ordinary number or an ordinary null. This engine labels every one.
| Listing (section) | price | flag | the catch |
|---|---|---|---|
| Kids' bike, marketplace | 0 | is_free: true | 'zu verschenken' - 0 is real here, and only here; any other 0 would be returned as null |
| Family house near Korneuburg, real estate | null | price_on_request: true | The agency asks buyers to enquire; the price field holds that text, not a number |
| Office space in Innsbruck, commercial rent | null | price_not_published: true | No price at all - the listing page itself says 'Keine Angabe' |
| New-build rentals in Vienna 21st district | 988 | price_is_from: true | 'ab € 988' is the cheapest unit; the project's units come as units[] with their own prices |
| VW Golf Life TDI, dealer car | 27990 | price_with_bonus: 26490 | The lower number needs a dealer bonus; the dealer's earlier price 28990 is price_before_reduction |
Measured on 2026-09-15. In one page of 30 commercial rentals in Tirol, 10 published no price; in 60 house purchases, 5 were on request; in 60 Vienna rentals, 9 were projects showing a from-price. Classified ads come and go - the rows above are dated.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/willhaben/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "fahrrad"
}
}{
"ok": true,
"meta": {
"api": "willhaben",
"endpoint": "search",
"mode": "live",
"latency_ms": 953.2,
"record_count": 30,
"bytes": 353970,
"cache_hit": false,
"pagination": {
"page": 1,
"has_more": true,
"page_size": 30,
"total": 96508
}
},
"data": {
"listings": [
{
"ad_id": "1613143653",
"title": "KTM Life Damen-Citybike 48cm",
"url": "https://www.willhaben.at/iad/kaufen-und-verkaufen/d/ktm-life-damen-citybike-48cm-1613143653/",
"section": "marketplace",
"status": "active",
"is_reserved": false,
"price": 155,
"currency": "EUR",
"price_display": "€ 155",
"is_free": false,
"price_on_request": false,
"price_is_from": false,
"price_not_published": false,
"description_preview": "KTM Life Citybike mit Ständer, seitlicher Fahrradtasche 21-Gang Shimano STX Sehr guter Zustand Folgen sie mir, es werden laufend Artikel aus allen Bereichen eingestellt. Artikel ist solange verfügbar, solang die Anzeige ersichtlich ist. Schäden oder...",
"postcode": "4082",
"location": "Aschach an der Donau",
"district": "Eferding",
"state": "Oberösterreich",
"country": "Österreich",
"address": null,
"latitude": 48.389576,
"longitude": 14.006766,
"published_at": "2026-09-16T15:37:58Z",
"updated_at": "2026-09-16T15:38:20Z",
"expires_at": "2026-10-31T15:37:48Z",
"seller_id": "22060212",
"seller_type": "private",
"seller_name": null,
"images": [
"https://cache.willhaben.at/mmo/3/161/314/3653_1377045385.jpg",
"https://cache.willhaben.at/mmo/3/161/314/3653_-742159761.jpg",
"https://cache.willhaben.at/mmo/3/161/314/3653_-1004314433.jpg"
],
"is_top_ad": false,
"is_highlighted": false,
"is_bumped": false,
"category_ids": [
"4390",
"4525",
"4552"
],
"teaser": [],
"image_count": 18,
"condition": "used",
"handover": [
"shipping",
"pickup"
],
"paylivery": false
},
{
"ad_id": "1934928631",
"title": "Fahrradlicht vorne",
"url": "https://www.willhaben.at/iad/kaufen-und-verkaufen/d/fahrradlicht-vorne-1934928631/",
"section": "marketplace",
"status": "active",
"is_reserved": false,
"price": 0,
"currency": "EUR",
"price_display": "zu verschenken",
"is_free": true,
"price_on_request": false,
"price_is_from": false,
"price_not_published": false,
"description_preview": "Funktioniert mit Batterien, kann einfach an die Lenkstange geschnallt werden.",
"postcode": "1180",
"location": "Wien, 18. Bezirk, Währing",
"district": "Wien",
"state": "Wien",
"country": "Österreich",
"address": "Staudgasse 11",
"latitude": 48.22317,
"longitude": 16.34501,
"published_at": "2026-09-16T15:37:38Z",
"updated_at": "2026-09-16T15:37:38Z",
"expires_at": "2026-10-31T15:37:27Z",
"seller_id": "26862598",
"seller_type": "private",
"seller_name": null,
"images": [
"https://cache.willhaben.at/mmo/1/193/492/8631_-801208647.jpg"
],
"is_top_ad": false,
"is_highlighted": false,
"is_bumped": false,
"category_ids": [
"4390",
"4525",
"4542"
],
"teaser": [],
"image_count": 1,
"condition": "used",
"handover": [
"pickup"
],
"paylivery": false
},
{
"ad_id": "1428931911",
"title": "Fahrrad",
"url": "https://www.willhaben.at/iad/kaufen-und-verkaufen/d/fahrrad-1428931911/",
"section": "marketplace",
"status": "active",
"is_reserved": false,
"price": 200,
"currency": "EUR",
"price_display": "€ 200",
"is_free": false,
"price_on_request": false,
"price_is_from": false,
"price_not_published": false,
"description_preview": "Wenig gebraucht",
"postcode": "1020",
"location": "Wien, 02. Bezirk, Leopoldstadt",
"district": "Wien",
"state": "Wien",
"country": "Österreich",
"address": null,
"latitude": 48.218906,
"longitude": 16.38948,
"published_at": "2026-09-16T15:37:18Z",
"updated_at": "2026-09-16T15:37:18Z",
"expires_at": "2026-10-31T15:37:12Z",
"seller_id": "19953433",
"seller_type": "private",
"seller_name": null,
"images": [
"https://cache.willhaben.at/mmo/1/142/893/1911_-1218736697.jpg",
"https://cache.willhaben.at/mmo/1/142/893/1911_-385479573.jpg",
"https://cache.willhaben.at/mmo/1/142/893/1911_-807706965.jpg"
],
"is_top_ad": false,
"is_highlighted": false,
"is_bumped": false,
"category_ids": [
"4390",
"4525",
"4552"
],
"teaser": [],
"image_count": 3,
"condition": "used",
"handover": [
"pickup"
],
"paylivery": false
}
],
"count": 30,
"total": 96508,
"sort_applied": "published.descending",
"breadcrumbs": [
"Marktplatz",
"Alle Anzeigen"
],
"page": 1,
"limit": 30,
"has_more": true,
"sort": null,
"section": "marketplace"
}
}What the willhaben API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Search willhaben's second-hand marketplace (Kaufen & Verkaufen) by keyword and/or category: price or 'free', condition, PayLivery (willhaben's buyer-protected shipping) and pickup/shipping, location, private or dealer seller, publish/update/expiry dates, images, and flags for top ads, paid highlights and reserved listings. Filter by price, condition, handover, PayLivery, state or district, seller type, seller, attribute values and last 48 hours; sort newest, price or relevance. | Price-intelligence teams call search to search willhaben's second-hand marketplace (Kaufen & Verkaufen) by keyword and/or category. | query, category, condition, handover, paylivery, ... |
| real_estate/search | Search willhaben real estate - Austria's largest property portal - by property type (apartments and houses to rent or buy, plots, commercial): price or monthly rent, price per m², living area, rooms, floor, property type, new-build projects with their units, address and district, agency or private landlord, images and top-ad flags. Filter by price, living area, rooms, state or district, agency, available now, keyword; sort newest, price, area or relevance. | Classifieds aggregators call real_estate/search to search willhaben real estate - Austria's largest property portal - by property type (apartmen…. | property_type, query, price_min, price_max, living_area_min, ... |
| cars/search | Search willhaben used cars and motorcycles: price, the dealer's earlier price and any bonus-only price kept separate, make, model, version, first registration, mileage, power, fuel, transmission, condition, body type, previous owners, warranty and inspection sticker, location, dealer or private seller, images and top-ad flags. Filter by make, price, mileage, year, fuel, transmission, condition, state, seller type; sort by price, mileage, year, newest or relevance. | Resale and arbitrage tools call cars/search to search willhaben used cars and motorcycles. | vehicle_type, query, make, price_min, price_max, ... |
| listing | The full willhaben listing by ad id or URL, in any section: title, price (free, on request and from-prices labelled), description, all images and floor plans, status and reserved flag, condition, pickup/shipping, PayLivery with each shipping option's carrier, price and parcel size, location (postcode, city, district, state), publish/update/expiry dates, breadcrumb, every published attribute, property or vehicle details, top-ad flag, and the seller (dealer company, address and website; private sellers' personal data withheld). | Lead-generation teams call listing to get the full willhaben listing by ad id or URL, in any section. | ad_id, include_pii, max_rotations |
Call search from your stack
curl -X POST https://api.reefapi.com/willhaben/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"fahrrad"}'import requests
r = requests.post(
"https://api.reefapi.com/willhaben/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "fahrrad"
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/willhaben/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "fahrrad"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.willhaben.search with {"query":"fahrrad"}.Who uses this API and why
- Property analysts track rents and purchase prices per m² across Austria's states and Vienna's districts with real_estate/search, including new-build projects and their units.
- Car dealers and valuation tools watch used-car prices, price reductions and bonus-only prices by make, mileage and year with cars/search.
- Resale and pricing tools compare second-hand prices by condition and PayLivery availability, keeping free items and reserved ads apart.
- Lead-generation and market-mapping teams list every ad of an agency or dealer with seller_id, without collecting private sellers' personal data.
Questions developers ask before integrating
Which parts of willhaben does the API cover?
The three big sections. search covers the second-hand marketplace (Kaufen & Verkaufen). real_estate/search covers apartments and houses to rent or buy, plots, and commercial property to rent or buy - seven property types, all checked live on 2026-09-15 (19,627 rental apartments and 42,324 apartments for sale that day). cars/search covers used cars and motorcycles. listing returns the full record of an ad from any section. willhaben is Austrian only; prices are in EUR.
Is a private seller's name or phone number included?
No. For private sellers the name, contact name, phone number, street address, exact coordinates and profile picture are left out, and e-mail addresses or phone numbers typed into a description are masked. The listing still says the seller is private and shows the postcode, town, district and state. For dealers and agencies the company name, business address and website are returned; their contact person and phone number are left out too.
How do I tell a free item, a price on request and a missing price apart?
By the flags on every row. A free item ('zu verschenken') has price 0 and is_free true. A listing whose price is on request has price null and price_on_request true. A listing that publishes no price at all has price null and price_not_published true. New-build projects that show only their cheapest unit have price_is_from true. A price of 0 is never returned for anything other than a free item.
Are top ads and paid placements marked?
Yes. is_top_ad marks willhaben's top-ad placement, is_highlighted a paid highlight and is_bumped a paid re-push to the top. The rows stay in willhaben's own order; nothing is removed. In 60 car rows on 2026-09-15, 5 were top ads and 41 were highlighted.
Do the filters really narrow the results?
Each one was checked live on 2026-09-15: the filtered total had to be smaller than the unfiltered one, and every returned row had to match. For 'fahrrad' in the marketplace (96,631 ads): condition new 13,167, PayLivery 21,181, dealers 2,446, Vienna 19,430. For VW Golf cars (7,841): diesel 4,064, automatic 2,057, 2018 to 2020 669. One filter willhaben does not offer is private or dealer on real estate - that request is rejected with an error instead of being silently ignored, and every real-estate row still says whether the seller is private or a company.
What is PayLivery, and what does listing return for it?
PayLivery is willhaben's buyer protection with shipping. search can return only PayLivery listings and every marketplace row says whether it is on. listing returns each shipping option with the carrier, the shipping price and its undiscounted price, the parcel size, weight limit, delivery time and insurance, plus the accepted payment methods - for example Post, 1.99 EUR instead of 4.40, an XS parcel up to 2 kg, 1 to 2 working days.
Can I look up an ad by its URL, and how do I get all of a seller's ads?
listing accepts the ad id or the full willhaben listing URL. Every row and listing carries seller_id; pass it back as seller_id on any of the three search actions to list that seller's ads - checked live for a marketplace dealer and a Vienna agency. A listing that has been taken down returns NOT_FOUND.
What does willhaben not publish?
Seller ratings or reviews. A phone number for most private sellers, who are reached through willhaben's messaging. A price on some real-estate listings. First registration on new vehicles. Room counts on new-build project summaries - the units carry them. There is no stock count on classifieds; status active or reserved is the only availability signal.
What is the willhaben API?
willhaben API is a ReefAPI endpoint group for austria's largest classifieds: marketplace, real estate and cars as json. It returns live JSON through POST requests under /willhaben/v1.
Is the willhaben API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. willhaben calls use the same shared credit balance as every other ReefAPI engine.
Do I need a willhaben login or account?
No login to willhaben 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 willhaben 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 willhaben API use?
willhaben actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.
Can I call willhaben from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call willhaben actions with the same key, credit pool and JSON envelope used by normal REST requests.