willhaben Scraper

Extract willhaben.at listings as clean JSON with zero seller personal data - prices in cents, descriptions, postcode-level locations, business-vs-private flag. Newest-first monitoring, price bands, pay per result. Built for deal watching, market research and AI pipelines.

$1.99 / 1,000 · 83.3% success over 24 public runs in the last 30 days.

Run it on Apify → Free to try - runs bill per result on your own account.

What you give it

Every field is optional unless marked; sensible defaults do the rest.

FieldTypeWhat it doesDefault
searchQuery string What to search for on willhaben's Marktplatz, exactly as you would type it in the site's search box, e.g. "fahrrad" or "iphone 15". fahrrad
priceMinEur integer Only include listings costing at least this many euros. -
priceMaxEur integer Only include listings costing at most this many euros. -
sortBy string Order of results: date (newest first, best for monitoring), price_asc, price_desc, or relevance. date
postedAfter string Only include listings posted on or after this date (YYYY-MM-DD or a full ISO timestamp). With newest-first sorting the run stops early once older listings are reached. -
postedBefore string Only include listings posted on or before this date (YYYY-MM-DD or a full ISO timestamp). -
maxItems integer Stop after this many listings. Free-plan runs are capped at 25 items. 1000

What you get back

One JSON object per result, with exactly these fields - no seller identities, no contact data, ever.

FieldTypeMeaning
listingId string willhaben listing ID.
url string Direct link to the listing.
title string Listing title as posted.
description string Listing description as returned by the search page.
priceCents integer Asking price in euro cents. Absent when the listing has no numeric price.
currency string Always EUR when a price is present.
priceDisplay string The price exactly as willhaben displays it, e.g. '€ 50' or 'zu verschenken'.
postedAt string When the listing was published (ISO timestamp).
changedAt string When the listing was last changed by the seller.
city string Listing municipality. Municipality-level only - exact coordinates are never collected.
postcode string Austrian postcode of the listing.
district string Political district (Bezirk).
state string Austrian federal state (Bundesland).
sellerType string Whether the listing comes from a business or a private seller. The only seller-related field in the output.
imageUrls array Listing photo URLs (up to 8).

Health

83.3% success over 24 public runs in the last 30 days. Live record, failures included: status page.

Full documentation, examples and the AI-assistant prompt live on the store page.