Willhaben.at Scraper: Real Estate, Cars, Marketplace & Jobs
Pricing
from $0.70 / 1,000 results
Willhaben.at Scraper: Real Estate, Cars, Marketplace & Jobs
Austria's Willhaben.at in one actor: real estate (rent/sale), vehicles (cars, motorcycles, vans, caravans), the Marktplatz (13M+ items, keyword search) and job ads with salary and company data. Province filters, built-in delta mode.
Pricing
from $0.70 / 1,000 results
Rating
0.0
(0)
Developer
Artsiom Kunitsyn
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
13 hours ago
Last modified
Categories
Share
Scrapes listings from Willhaben.at, Austria's largest classifieds site, mostly through Willhaben's own internal JSON search API. One actor covers four verticals:
- Real estate: apartments, houses, land and commercial property, for rent or sale.
- Vehicles: used cars, motorcycles & quads, commercial vehicles (vans, trucks, pickups), caravans & motorhomes.
- Marketplace (Marktplatz): 13 million+ new and second-hand items in 19 categories, from fashion and furniture to phones, toys and antiques, searchable by keyword.
- Jobs: every job ad on willhaben Jobs, with salary and company details (VAT number, industry, size, address, website).
Contents
- Key features
- Output
- Input
- Input examples
- Incremental (delta) mode
- How to scrape Willhaben.at
- How much does it cost
- You might also like
- FAQ
🔑 Key features
- All of Willhaben in one actor. 7 real-estate searches, 4 vehicle searches, the Marktplatz
and Jobs. Every row says which kind it is in
vertical(real_estate,vehicles,marketplaceorjobs). - Marketplace searches of any size. Willhaben shows at most 200,000 results per search; bigger searches are split into subcategories and provinces automatically.
- Job ads with company data. Salary and pay period, employment type, locations, apply link, and the employer's VAT number, industry, size, founding year, address and website.
- No URL wrangling. Pick a category and an Austrian province from a dropdown; no need to build or paste a Willhaben search URL.
- Delta mode built in. Every run classifies each listing as
new,changed,unchanged, ordelistedagainst a saved baseline. Run it on a schedule and you pay only for what changed, not for a full re-scrape. It's also what makes price-history tracking possible. - Full category coverage, including what many scrapers skip: land/plots and commercial property, and commercial vehicles and caravans, not just apartments and cars.
- Rich vehicle data. Make, model and trim, mileage, year, fuel type, transmission, engine power,
condition, equipment list, dealer or private seller, and a real
published_atdate. - Privacy-aware by construction.
agency_nameanddealer_namecarry a company name for professional listings only and staynullfor private sellers. Job rows carry company data but not the name or email of the contact person.
📋 Output
One dataset item per listing (see the Output tab for the full field list), plus vertical and a
change_type field: new, changed, unchanged, or delisted (see
Incremental mode). Real-estate rows fill the property fields, vehicle rows
the vehicle fields, and so on; the location, price, URL and date fields are shared. The Output tab
has a Real estate, Vehicles, Marketplace and Jobs view.
Example real-estate record:
{"source": "willhaben","external_id": "1234567890","url": "https://www.willhaben.at/iad/immobilien/d/mietwohnungen/wien/wien-1220-donaustadt/...","vertical": "real_estate","country": "AT","state": "Wien","district": "Donaustadt","city": "Wien","postal_code": "1220","latitude": 48.2333,"longitude": 16.4667,"price_eur": 1450.0,"price_per_sqm_eur": 19.33,"living_area_sqm": 75.0,"estate_size_sqm": 75.0,"rooms": 3,"listing_type": "rent","property_class": "apartment","property_type": "Wohnung","has_balcony": true,"has_garden": false,"has_parking": false,"agency_name": "Muster Immobilien GmbH","published_at": "2026-08-01T09:12:00.000Z","change_type": "new"}
Example vehicle record (car, private seller):
{"source": "willhaben","external_id": "1813527645","url": "https://www.willhaben.at/iad/gebrauchtwagen/d/auto/audi-e-tron-gt-...-1813527645/","vertical": "vehicles","vehicle_type": "auto","make": "Audi","model": "e-tron GT","model_specification": "e-tron GT 93,4kWh quattro Head-Up | Laserlicht","body_type": "Limousine","price_eur": 45990.0,"mileage_km": 156210.0,"year": 2021,"fuel_type": "Elektro","transmission": "Automatik","condition": "Gebrauchtwagen","engine_power_kw": 350.0,"no_of_seats": 5,"equipment": ["LED-Scheinwerfer", "Bluetooth", "Apple CarPlay", "..."],"is_dealer": false,"dealer_name": null,"state": "Oberösterreich","city": "Wels","postal_code": "4600","published_at": "2026-08-18T20:10:00+00:00","change_type": "new"}
Example marketplace record:
{"source": "willhaben","external_id": "2049879183","url": "https://www.willhaben.at/iad/kaufen-und-verkaufen/d/dior-baby-milchflaschen-...-2049879183/","vertical": "marketplace","title": "DIOR Baby Milchflaschen, klein & groß in rosa, blau","description": "Hier haben Sie die Auswahl an 5 DIOR Baby Milchflaschen...","marketplace_category": "Baby / Kind","condition": "Neu","pickup": true,"shipping": true,"price_eur": 170.0,"old_price_eur": 175.0,"price_reduced_at": "2026-10-18T16:06:53+00:00","is_dealer": false,"dealer_name": null,"state": "Wien","district": "Wien 04. Bezirk","postal_code": "1040","image_urls": ["https://cache.willhaben.at/mmo/3/204/987/9183_468743160.jpg", "..."],"published_at": "2026-10-21T18:44:10+00:00","change_type": "new"}
Example job record:
{"source": "willhaben","external_id": "13282959","url": "https://www.willhaben.at/jobs/job/junior-buchhalter-in-w-m-d/13282959","vertical": "jobs","title": "(Junior) Buchhalter*in (w/m/d)","employment_modes": ["Vollzeit"],"salary_eur": 2700.0,"salary_period": "month","salary_is_minimum": true,"locations": ["Wien"],"state": "Wien","apply_url": "https://jobs.lucky-car.at/?yid=177&af=1","company_name": "Lucky-Car Franchise & Beteiligungs GmbH","company_type": "Firma","company_vat_id": "ATU64211524","company_industry": "Automobil / Fahrzeugbau / Zulieferer","company_website": "http://www.lucky-car.at","company_city": "Wien","company_employees_min": 51,"company_employees_max": 200,"published_at": "2026-10-21T09:56:24","expires_at": "2027-10-20","change_type": "new"}
Results can be downloaded as JSON, CSV, or Excel from the Output tab, or pulled via the Apify API.
Known gaps:
- Real estate:
condition,year_built, andenergy_classare alwaysnull. Willhaben's search API doesn't carry them, and the one endpoint that does blocks automated requests. - Vehicles:
equipmenthas readable feature names for cars only; other vehicle categories fall back to Willhaben's internal numeric codes (the site has no text lookup for those).no_of_seatsapplies to cars and commercial vehicles,no_of_berths(sleeping places) to caravans and motorhomes.warrantyis filled only when Willhaben shows a text label for it. - Marketplace:
descriptionis a ~300-character snippet unlessincludeDetailsis on. - Jobs:
keywordmatches the job title only, not the description. - Delisted rows (see Incremental mode) don't repeat the description or images.
⚙️ Input
The Input tab lists every option with its description. Key parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
category | String (required) | apartment_rent | Real estate: apartment_rent, apartment_sale, house_rent, house_sale, land, commercial_rent, commercial_sale. Vehicles: auto (cars), motorrad (motorcycles & quads), nutzfahrzeuge (commercial vehicles), wohnwagen_wohnmobile (caravans & motorhomes). Plus marktplatz (marketplace) and jobs. |
keyword | String | (none) | Marketplace: search term, as in Willhaben's search box. Jobs: words that must appear in the job title. |
marketplaceCategory | String | all | Marketplace: one of the 19 top-level categories (e.g. smartphones-telefonie, mode-accessoires). |
includeDetails | Boolean | false | Marketplace: open each listing page for the full description (one extra request per listing). |
region | String | all | One of Austria's 9 provinces (e.g. wien, steiermark), or all for the whole country. For jobs, only together with a keyword (any of the job's locations counts); for all jobs in one province, run without a region and filter by state. Changing it between runs starts a fresh incremental baseline. |
mode | String | auto | auto (recommended): full scan on the first run, incremental after. full: always push every listing and refresh the baseline. incremental: always push only new/changed listings. |
maxItems | Integer | 50 | Stop after this many results. The default is a fast, cheap preview. Clear it (null) for a full run; a capped run never updates the incremental baseline. |
maxPages | Integer | (none) | Safety cap on search pages fetched. A capped run can't detect delistings and won't update the baseline. |
rows | Integer | 200 | Listings per search page (1–200). |
delaySeconds | Number | 3.5 | Pause between consecutive search-page requests. |
maxConcurrency | Integer | 16 | Listing or job pages fetched in parallel (marketplace details, jobs). |
proxyConfiguration | Object | {"useApifyProxy": false} | Off by default and not needed: Willhaben answers Apify's servers directly, and it returns HTTP 403 to Apify's shared datacenter proxies. Only try residential proxies if you start seeing blocks. Job pages and marketplace listing pages always go through Apify's residential proxy, included in the price. |
impersonate | String | (none) | Optional curl_cffi TLS-impersonation target (e.g. chrome124), only needed if Willhaben starts blocking plain requests. |
🧪 Input examples
Quick preview: Vienna apartments for rent, default 50-result cap:
{ "category": "apartment_rent", "region": "wien" }
Used cars in Vienna:
{ "category": "auto", "region": "wien", "maxItems": 200 }
Second-hand iPhones in Vienna, with full descriptions:
{ "category": "marktplatz", "keyword": "iphone", "marketplaceCategory": "smartphones-telefonie", "region": "wien", "includeDetails": true, "maxItems": 500 }
All bookkeeping jobs in Austria:
{ "category": "jobs", "keyword": "buchhalter", "maxItems": null }
Every land/plot listing in Austria, capped for a quick look:
{ "category": "land", "region": "all", "maxItems": 100 }
Scheduled tracking run: full and uncapped (maxItems cleared, which the baseline needs to save
and delistings to be detected):
{ "category": "apartment_rent", "region": "wien", "mode": "incremental", "maxItems": null }
🔄 Incremental (delta) mode
Every run classifies each listing as new, changed (price moved), unchanged, or delisted,
using a baseline saved in a named Apify key-value store in your account, one per category +
region (and, for the marketplace and jobs, per keyword and marketplaceCategory). For the
marketplace, changed means the price or the title moved; for jobs, the title, salary or end date.
mode: auto(default): the first run for a scope pushes everything (full); later runs push onlynew/changed/delisted(incremental).- Recommended setup: schedule a frequent task on
auto, plus a periodic (e.g. weekly) task onmode: full. A capped or otherwise partial run never updates the baseline or reports delistings, so a periodic full run keeps the baseline accurate.
If you used the former Willhaben.at Vehicles Scraper: its saved baselines can't be read by this actor, so your first vehicle run here is a full scan, and incremental runs work from then on.
🚀 How to scrape Willhaben.at
- Open the actor in Apify Console and go to the Input tab.
- Pick a category (e.g. "Real estate: Apartments — rent", "Vehicles: Cars", "Marketplace" or "Jobs") and a region (e.g. "Wien"), or leave the region at "All of Austria". For the marketplace and jobs, add a keyword if you like.
maxItemsdefaults to 50 (a quick preview); clear it (set tonull) for a full run.- Click Start.
- Browse results in the Output tab, download them as JSON/CSV/Excel, or fetch them via the API.
- To track a market over time instead of scraping once, create a Schedule with
mode: auto: the first run does a full scan, and every run after that bills only the listings that changed.
💰 How much does it cost
$1.00 per 1,000 results (pay-per-result), plus a negligible per-run start fee. Apify plan discounts apply on top (down to $0.70 per 1,000 on Gold and above). Pages that return no results cost nothing.
Examples: all ~15,000 job ads cost about $15; a marketplace search with 2,000 results
about $2. A full scan of Vienna apartments for rent (~4,700 listings) costs about $4.70.
With delta mode, a scheduled re-run afterwards bills only listings that are new, changed, or
delisted, not all ~4,700 again, so ongoing monitoring costs a fraction of the first scan.
🔗 You might also like
- ImmoScout24 (AT) Real Estate Scraper: a second, independent Austrian real-estate source with the same real-estate output fields by design, so results from both merge directly for cross-checking coverage or de-duplicating listings posted on both sites.
- Hemnet Scraper: Swedish real estate, including Hemnet's archive of sold prices.
❓ FAQ
Is it legal to scrape Willhaben.at? It's legal to collect publicly available listing data such as prices, descriptions, and locations. Results may contain limited personal data (company names of agencies and dealers only, see Key features); use it only with a legitimate purpose under GDPR.
Can I get real estate, vehicles and marketplace items in one run? One run covers one category.
Run the actor once per category (or create one task per category); every row carries vertical
and the category fields, so the datasets combine cleanly.
Can I scrape the whole marketplace? Technically yes (13 million+ listings, split into searches under Willhaben's 200,000-result limit automatically), but it takes many hours. A keyword and/or a category is the practical way to use it.
Does the jobs data include contact persons? No. Job rows include the company and its public details, not the name or email address of the person handling applications.
How do I get only new/changed listings? Use mode: auto (or incremental) on a schedule, see
Incremental mode.
Why is a field always null? See the known gaps under Output.
Search keywords
willhaben scraper, willhaben.at scraper, willhaben api, austria real estate scraper, austrian property scraper, immobilien scraper, wien real estate data, apartment scraper austria, willhaben immobilien api, austria used car scraper, gebrauchtwagen scraper, willhaben auto scraper, car scraper austria, motorcycle scraper austria, real estate price tracking, used car price tracking, austria property data feed, austria vehicle data feed, willhaben marktplatz scraper, willhaben kaufen und verkaufen, willhaben second hand scraper, austria marketplace price tracking, willhaben jobs scraper, austria jobs scraper, österreich jobs api, austrian job ads with salary, company leads austria