Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the willhaben API page →
Classifieds & Second-hand

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.

4 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 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.

Reference

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)priceflagthe catch
Kids' bike, marketplace0is_free: true'zu verschenken' - 0 is real here, and only here; any other 0 would be returned as null
Family house near Korneuburg, real estatenullprice_on_request: trueThe agency asks buyers to enquire; the price field holds that text, not a number
Office space in Innsbruck, commercial rentnullprice_not_published: trueNo price at all - the listing page itself says 'Keine Angabe'
New-build rentals in Vienna 21st district988price_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 car27990price_with_bonus: 26490The 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.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/willhaben/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "fahrrad"
  }
}
Captured response
{
  "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"
  }
}
Actions

What the willhaben API does

ActionDescriptionConcrete use caseKey params
searchSearch 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/searchSearch 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/searchSearch 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, ...
listingThe 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
Code samples

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"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.willhaben.search with {"query":"fahrrad"}.
Use cases

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.
FAQ

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.

docs / willhaben

willhaben

Austria's largest classifieds: marketplace, real estate and cars as JSON.

base /willhaben/v14 endpoints
post/willhaben/v1/real_estate/search1 credit

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.

ParameterAllowed / rangeDescription
property_typerequiredrent_apartment · buy_apartment · rent_house · buy_house · plot · commercial_rent · commercial_buyrent_apartment, buy_apartment, rent_house, buy_house, plot, commercial_rent or commercial_buy.
queryoptionalFree-text keyword, as typed into willhaben's search box.
price_minoptional0–Lowest price in EUR (monthly rent on rental sections).
price_maxoptional0–Highest price in EUR (monthly rent on rental sections).
living_area_minoptional0–Smallest living area, m².
living_area_maxoptional0–Largest living area, m².
roomsoptional1 · 2 · 3 · 4 · 5 · 6-9 · 10+One or more of 1, 2, 3, 4, 5, 6-9, 10+.
available_nowoptionalOnly properties available immediately.
stateoptionalburgenland · kaernten · niederoesterreich · oberoesterreich · salzburg · steiermark · tirol · vorarlberg · wienAustrian federal state.
area_idoptionalwillhaben area id for a district or city (e.g. 117223 = Wien 1st district). Returned in facets when include_facets=true. Use instead of state.
seller_idoptionalOnly this seller's listings (a listing's seller_id).
posted_last_48hoptionalOnly listings published in the last 48 hours.
sortoptionalnewest · price_asc · price_desc · area_asc · area_desc · relevancenewest, price_asc, price_desc, area_asc, area_desc or relevance.
page = 1optional1–1000Result page, 1-based.
limit = 30optional1–100Listings per page (1-100). willhaben's own page size is 30.
include_facets = falseoptionalAlso return willhaben's filter facets for this search (categories, areas, makes, object types, attribute values) with counts and the value to pass back.
include_pii = falseoptionalReturn private sellers' names, contact names, phone numbers, street addresses and exact coordinates. Off by default.
max_rotations = 3optional1–5Advanced: how many times to retry a difficult request (1-5).
Try in playground →
post/willhaben/v1/cars/search1 credit

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.

ParameterAllowed / rangeDescription
vehicle_type = caroptionalcar · motorcyclecar or motorcycle. The make/fuel/transmission/condition filters apply to cars.
queryoptionalFree-text keyword, as typed into willhaben's search box.
makeoptionalwillhaben make id (e.g. 1003 = Audi, 1005 = BMW). Ids come back in facets.
price_minoptional0–Lowest price in EUR (monthly rent on rental sections).
price_maxoptional0–Highest price in EUR (monthly rent on rental sections).
mileage_minoptional0–Lowest mileage, km.
mileage_maxoptional0–Highest mileage, km.
year_minoptional1900–2100Earliest first registration year.
year_maxoptional1900–2100Latest first registration year.
fueloptionalpetrol · diesel · electric · gas · hybrid_petrol · hybrid_diesel · hydrogenpetrol, diesel, electric, gas, hybrid_petrol, hybrid_diesel or hydrogen.
transmissionoptionalautomatic · manualautomatic or manual.
conditionoptionalused · new · year_old · oldtimer · day_registration · accident · demoused, new, year_old, oldtimer, day_registration, accident or demo.
stateoptionalburgenland · kaernten · niederoesterreich · oberoesterreich · salzburg · steiermark · tirol · vorarlberg · wienAustrian federal state.
area_idoptionalwillhaben area id for a district or city (e.g. 117223 = Wien 1st district). Returned in facets when include_facets=true. Use instead of state.
seller_typeoptionalprivate · dealerPrivate sellers or dealers only.
seller_idoptionalOnly this seller's listings (a listing's seller_id).
posted_last_48hoptionalOnly listings published in the last 48 hours.
sortoptionalnewest · price_asc · price_desc · mileage_asc · mileage_desc · relevance · year_desc · year_ascnewest, price_asc, price_desc, mileage_asc, mileage_desc, year_desc, year_asc or relevance.
page = 1optional1–1000Result page, 1-based.
limit = 30optional1–100Listings per page (1-100). willhaben's own page size is 30.
include_facets = falseoptionalAlso return willhaben's filter facets for this search (categories, areas, makes, object types, attribute values) with counts and the value to pass back.
include_pii = falseoptionalReturn private sellers' names, contact names, phone numbers, street addresses and exact coordinates. Off by default.
max_rotations = 3optional1–5Advanced: how many times to retry a difficult request (1-5).
Try in playground →
post/willhaben/v1/listing1 credit

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).

ParameterAllowed / rangeDescription
ad_idrequiredThe willhaben ad id (the digits at the end of a listing URL), or the full listing URL.
include_pii = falseoptionalReturn private sellers' names, contact names, phone numbers, street addresses and exact coordinates. Off by default.
max_rotations = 3optional1–5Advanced: how many times to retry a difficult request (1-5).
Try in playground →