ImmoScout24 (AT) Real Estate Scraper avatar

ImmoScout24 (AT) Real Estate Scraper

Pricing

from $3.50 / 1,000 results

Go to Apify Store
ImmoScout24 (AT) Real Estate Scraper

ImmoScout24 (AT) Real Estate Scraper

Austria real estate scraper for ImmoScout24.at β€” apartments, houses, land & commercial, rent or sale β€” same output schema as willhaben-scraper, plus delta mode.

Pricing

from $3.50 / 1,000 results

Rating

0.0

(0)

Developer

Artsiom Kunitsyn

Artsiom Kunitsyn

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Categories

Share

immoscout24-at-scraper

Scrapes real estate listings from ImmoScout24.at (apartments, houses, land, commercial β€” rent or sale) via ImmoScout24's own internal Apollo GraphQL API, not HTML scraping.

Contents

πŸ”‘ Key features

  • Real-estate specialist, not a jack-of-all-trades. Built for ImmoScout24's real-estate categories specifically, rather than spreading thin across cars, jobs, and marketplace listings too.
  • No URL wrangling. Pick a category and an Austrian province from a dropdown β€” no need to know ImmoScout24's internal region codes yourself.
  • Delta mode built in. Every run classifies each listing as new, changed, unchanged, or delisted against a persisted baseline. Run it on a schedule and you're not paying for a full re-scrape every time β€” just what actually changed. It's also what makes price-history tracking possible at all.
  • Full category coverage, including the categories many scrapers skip β€” land/plots and commercial, not just apartments.
  • Same output schema as willhaben-scraper β€” a second, independent Austrian real-estate source with field names and value spellings that match, so results from both actors merge or cross-check directly instead of needing a reconciliation step.
  • Privacy-aware by construction. agency_name is populated for professional listings only (company name) and left null for private sellers β€” no private-seller personal data leaves the dataset.

πŸ“‹ Output

One dataset item per listing, with a normalized schema (see .actor/dataset_schema.json for the full field list) plus a change_type field: new, changed, unchanged, or delisted (see Incremental mode below).

Example job record:

{
"source": "immoscout24_at",
"external_id": "123456789",
"url": "https://www.immobilienscout24.at/expose/123456789",
"country": "AT",
"state": "Wien",
"district": "Donaustadt",
"city": "Wien",
"postal_code": "1220",
"latitude": 48.2333,
"longitude": 16.4667,
"price_eur": 1390.0,
"price_per_sqm_eur": 18.53,
"living_area_sqm": 75.0,
"estate_size_sqm": 75.0,
"rooms": 3,
"listing_type": "rent",
"property_class": "apartment",
"agency_name": "Muster Immobilien GmbH",
"published_at": "2026-08-01T09:12:00.000Z",
"change_type": "new"
}

Every record also carries property_type, condition, year_built, energy_class, has_balcony, has_garden, and has_parking β€” omitted from the example above because they're currently always null (see known gaps below). district is populated for Vienna listings only (as shown); elsewhere it's null for now.

Results can be downloaded as JSON, CSV, or Excel from the Console's Output tab, or pulled via the Apify API/dataset endpoint.

Known gaps: property_type, condition, year_built, energy_class, has_balcony, has_garden, and has_parking are always null β€” ImmoScout24's search hit doesn't carry them. district is populated for Vienna only (postcode heuristic); elsewhere it needs a region-code-to-name gazetteer that doesn't exist yet.

βš™οΈ Input

See .actor/input_schema.json for the full JSON schema. Key parameters:

ParameterTypeDefaultDescription
categoryString (required)β€”One of 7 categories: apartment_rent, apartment_sale, house_rent, house_sale, land, commercial_rent, commercial_sale β€” the same 7 keys willhaben-scraper uses.
regionStringallOne of Austria's 9 provinces (e.g. wien, steiermark), or all for the whole country. Changing this between runs starts a fresh incremental-mode baseline for the category.
modeStringautoauto (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. See Incremental mode.
maxItemsInteger50Stop after pushing this many dataset items. Defaults to a fast, cheap preview (also what keeps an unconfigured run within Apify's automated 5-minute QA check). Raise it or clear it (set to null) for a full run β€” note a capped run never updates the incremental baseline (see below), so any real tracking run needs this cleared.
maxPagesInteger(none)Safety cap on search pages fetched per internal region slice (an all-Austria run is automatically split into per-province slices under the hood). A capped run can't detect delistings and won't update the incremental baseline.
delaySecondsNumber3Politeness delay between consecutive search-page requests.
proxyConfigurationObject{"useApifyProxy": false}Apify Proxy config. Off by default β€” confirmed by testing that ImmoScout24 returns HTTP 401 to Apify's shared datacenter proxy pool on the very first request, while a direct connection works fine.
impersonateString(none)Optional curl_cffi TLS-impersonation target (e.g. chrome124), used only if ImmoScout24 starts blocking plain requests.

πŸ§ͺ Input examples

Quick preview β€” Wien apartments for rent, default 50-item cap:

{
"category": "apartment_rent",
"region": "wien"
}

Full-country scan β€” every land/plot listing in Austria, capped for a quick preview:

{
"category": "land",
"region": "all",
"maxItems": 100
}

Scheduled tracking run β€” full, uncapped run (maxItems cleared β€” required for the baseline to save and delistings to be detected, see Incremental mode):

{
"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 state baseline persisted in a named Apify Key-Value Store scoped to category + region.

  • mode: auto (default) β€” first run for a scope pushes everything (full); later runs push only new/changed/delisted (incremental).
  • A province-scoped run (anything but "All of Austria") is not a full scan and never updates the baseline or reports delistings β€” same rule as a page-capped run. Recommended setup: schedule a frequent Task on auto with region: all, plus a periodic (e.g. weekly) Task explicitly on mode: full to force a full resync.

Full design: ../../docs/incremental-mode.md.

πŸš€ How to scrape ImmoScout24.at

  1. Open the ImmoScout24 (AT) Real Estate Scraper in Apify Console and go to the Input tab.
  2. Pick a category (e.g. "Apartments β€” rent") and a region (e.g. "Wien"), or leave region at "All of Austria" for full country coverage.
  3. maxItems defaults to 50 (a quick preview) β€” clear it (set to null) along with maxPages for a full, uncapped run.
  4. Click Start.
  5. When the run finishes, browse results in the Output tab, or download as JSON/CSV/Excel, or fetch them via the API.
  6. To track a market over time instead of scraping once: create a Schedule with mode: auto and region: all β€” the first run does a full scan, every run after only bills the listings that actually changed.

πŸ’° How much does it cost

Pricing: $3.50 per 1,000 results (pay-per-result), plus a fixed, negligible per-run start fee. No cost for pages that return zero results.

Example: Wien's apartment-rent inventory is confirmed at roughly 3,685 listings (live-verified against the site). A full scan of that scope costs roughly $12.90. Because of built-in delta mode, a scheduled re-run afterwards only bills for listings that are actually new, changed, or delisted β€” not the full ~3,685 again β€” so ongoing monitoring costs a fraction of the initial scan once the baseline is established.

πŸ”— You might also like

  • Willhaben.at Real Estate Scraper β€” a second, independent Austrian real-estate source with the identical output schema by design, so results from both merge directly for cross-checking coverage or de-duplicating listings posted on both sites.

❓ FAQ

Is it legal to scrape ImmoScout24.at? It's legal to collect publicly available listing data such as prices, descriptions, and locations. Results may contain limited personal data (agency names for professional listings only β€” see Key features); scrape it only with a legitimate purpose under GDPR.

How do I get only new/changed listings? Use mode: auto (or incremental) on a schedule β€” see Incremental mode.

Why are some fields always null? property_type, condition, year_built, energy_class, and the has_balcony/has_garden/has_parking flags are always null, and district is Vienna-only β€” see Output for why.

Search keywords

immoscout24 scraper, immoscout24.at scraper, immobilienscout24 austria scraper, austria real estate scraper, austrian property scraper, immobilien scraper wien, apartment scraper austria, house scraper austria, immoscout24 api, immoscout24 graphql scraper, real estate delta scraper, real estate price tracking, austria property data feed