ImmobilienScout24 logo

Property & travel · Live on Apify

ImmobilienScout24 Scraper: German Property Listings

Get public ImmobilienScout24 listings for German property research. Search by place or radius, or paste search links. You get one row per listing with price, area, rooms and address.

About $0.99 for 1,000 results$0.00099 per result + $0.001 per run. Apify bills you, not us.Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed.

Run it on Apify Opens apify.com, the website where our tools run. Sign up free with Google or email, no card needed.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure

What you get, for example

exposeId172422033
urlhttps://www.immobilienscout24.de/expose/172422033
title4-Zimmer-Wohnung in Mitte

How to use it: 3 steps

  1. Make a free Apify accountApify is the cloud platform where our tools run. The free plan gives you $5 of usage every month, no credit card needed. You pay Apify, not us.
  2. Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example: Berlin in Location. Each start is one run.
  3. Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.

This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.

What it does

Export property listings from ImmobilienScout24, also called ImmoScout24, for German market research: give a city, region, postcode or search link, and get price, area, rooms, address and realtor company for each listing. No login or API key is needed, and a run with 10 rows costs about $0.011.

Good for

  • You invest in German property and want to compare asking prices and rent per square metre.
  • You track new listings in a city and want only the new ones each day.
  • You need listing data in a spreadsheet, a database or your own tools.

Who uses it

Property investors

Compare asking prices and rent per square metre.

Market analysts

Track new listings in a city each day.

Data teams

Send listing rows to a spreadsheet or database.

Price

Pay per event: you pay for each result the tool saves, plus a small start fee for each run. The price includes Apify platform costs. Apify bills you, not us. Prices below are for the Apify free plan.

What you pay forPriceWhen
Start fee$0.001Charged once per run. This tool uses 1 GB of memory or less by default; more memory costs more.
Listing with full details$0.00099 (from $0.00069 on paid Apify plans)Charged for each saved listing row with full details.
Listing$0.0005 (from $0.00035 on paid Apify plans)Charged for each saved listing row with search fields only.
Check without a paid row$0.00005Charged for each read that gives no paid row: an empty search, a listing that is gone, or a search page with nothing new. The first read in a run is free.

Examples

  • One result: about $0.002.
  • 1,000 results: about $0.99.
  • Every day 100 results, for 30 days: about $3.00 a month.

Free to try: the Apify free plan gives you $5 of usage every month, no credit card needed. That is enough for about 5,000 results.

Prices checked on 8 November 2026. See the current price on Apify.

Questions

Do I need an ImmobilienScout24 account or a key?

No. The Actor reads public listings and does not log in.

Does the data include phone numbers or emails?

No. You get the realtor company name. Private sellers are marked and their names are not collected.

Why is price lower than the rent I see elsewhere?

For rent, price is the cold rent. totalRent includes costs when the listing gives them.

Do I need a proxy?

No. Normal runs do not use one, and the proxy field is there only if you want it.

Do I get all listings in Germany?

You get up to 10,000 rows per run, and only those that the source shows. Split big areas by region, or use skipItems.

How fresh is the data?

Each row is read during the run, and fetchedAt gives the time. Sort newest shows the latest listings first.

Does a run with no results cost money?

It costs the start fee. See Pricing.

How does onlyNew remember listings?

It keeps a history in a named store in your Apify account. Without stateName, each search has its own history. The first run counts all rows as new, and you pay for them.

Details

Step by step on Apify
  1. Open the Input tab. location is set to Berlin and operation is set to rent (box 1).
  2. Keep maxItems at 10 (box 2).
  3. Click Start.
  4. Open Output and check price, rooms and livingSpace (box 4).
  5. Check address and realtor (box 5).
Use cases
TaskInputYou getKey fieldsNext step
Compare rent levels between German citieslocation with operation rentOne row per listingprice, totalRent, pricePerSqm, livingSpace, postcodeSpreadsheet or BI tool
Find investment property for salelocation with operation buy, propertyType apartment, house or investmentOne row per listingprice, pricePerSqm, yearBuilt, energyEfficiencyClass, urlYour deal list or CRM
Watch a search for new listings and price cutslocation or searchUrls, onlyNew, detectPriceChangesNew and changed rowschangeType, previousPrice, price, firstSeenAtSlack, Notion or a webhook
Map which realtor companies work in an arealocation with a high maxItemsOne row per listingrealtor, city, district, operationMarket report
Refresh a list of known listingssearchUrls with listing linksOne row per linkexposeId, price, status, fetchedAtYour database
Tips for better results
  • Keep maxItems at 10 for a first run.
  • Use filter fields with a place and radius. With links, put the filters in the link.
  • Turn on onlyNew to get just the new listings on each run.
Limits and good to know
  • Germany only. The source's other country sites are not covered
  • Up to 10,000 rows per run. We tested this limit. A bigger area can have more listings, for example about 89,000 rental apartments in Germany. Split it by region or use skipItems
  • Up to 100 links in searchUrls per run
  • The default run timeout of 300 seconds is enough for about 2,000 rows with details. A run of 10,000 rows took about 14 minutes, so set a timeout of 1,200 seconds for it. When time runs out, the run keeps its rows and ends with reason DEADLINE
  • Filter fields work with location and radius, not with links. Put filters in the link itself
  • Search links with map-drawn areas are not supported. Use a place or a radius
  • Offices, retail, gastronomy and industry cannot be filtered by rent or buy, because the source mixes them
  • realtor needs full details. With fetchDetails off it is null

For developers

Sample result

One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.

one result · JSON
{
  "exposeId": "172422033",
  "url": "https://www.immobilienscout24.de/expose/172422033",
  "title": "4-Zimmer-Wohnung in Mitte",
  "price": 852,
  "priceUnit": "month",
  "currency": "EUR",
  "pricePerSqm": 9.88,
  "totalRent": 1137.67,
  "livingSpace": 86.2,
  "rooms": 4,
  "address": "Rosenthaler Straße 11, 10119 Berlin, Mitte",
  "realtor": "WBM Wohnungsbaugesellschaft Berlin-Mitte mbH",
  "isPrivate": false,
  "operation": "rent",
  "propertyType": "apartment",
  "energyEfficiencyClass": "B",
  "status": "complete",
  "source": "immobilienscout24.de",
  "fetchedAt": "2026-11-06T10:12:00.000Z"
}

Use it from code

Actor ID: cliqtomedia/immobilienscout24-scraper. You need your Apify API token from Apify Console → Settings → API & Integrations.

Python · apify-client
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("cliqtomedia/immobilienscout24-scraper").call(run_input={
    "location": "Berlin",
    "operation": "rent"
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
cURL
curl -X POST "https://api.apify.com/v2/acts/cliqtomedia~immobilienscout24-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"location": "Berlin", "operation": "rent"}'
LangChain · langchain-apify
# pip install langchain-apify
# set APIFY_TOKEN in your environment
from langchain_apify import ApifyActorsTool

tool = ApifyActorsTool("cliqtomedia/immobilienscout24-scraper")
result = tool.invoke({"run_input": {"location": "Berlin", "operation": "rent"}})
print(result)

The cURL call waits for the results, up to 300 seconds. For longer runs, start a run (/runs) and get the results with a webhook or by checking the run. Apify API docs. LlamaIndex, MCP for AI agents and the JavaScript client: AI agents & MCP.

Data fields (40)
FieldTypeMeaning
exposeIdstringListing ID on ImmobilienScout24.
urlstringLink to the public listing page.
titlestringListing title as written by the advertiser.
pricenumberMain price in EUR, in the unit given by priceUnit. Null when the source shows none.
priceTextstringPrice as the source shows it, for example "1.750 €".
priceUnitstringWhat price stands for: total (sale price or auction value), month, day, year, or sqm (monthly rent per square metre, common for offices and retail). Null when the source shows no price.
currencystringCurrency of the price.
pricePerSqmnumberPrice per square metre of living or usable area, or of land for plots. Null for day and year prices and when the area is unknown.
livingSpacenumberLiving area in m².
roomsnumberNumber of rooms.
addressstringAddress as public on the listing. Often only postcode and district.
latitudenumberLatitude when the source shows it.
longitudenumberLongitude when the source shows it.
realtorstringRealtor company. Needs full details. Null for private advertisers.
realtorLogoUrlstringLogo of the realtor company.
isPrivatebooleanTrue when a private person placed the listing. Their name is never collected.
operationstringrent or buy. For offices, retail, gastronomy and industry it is read from each listing, because the source mixes both there. Null when the listing does not say.
propertyTypestringProperty type, for example apartment.
realEstateTypestringSource type code, for example apartmentrent.
isNewBuildProjectbooleanTrue for a new-build developer project.
isNewObjectbooleanTrue when the source marks the listing as new.
energyEfficiencyClassstringEnergy efficiency class, A+ to H.
fairPricestringPrice rating from the source.
publishedTextstringAge of the listing as the source words it, for example "vor 2 Minuten".
tagsarrayShort tags from the source.
imageUrlstringMain picture.
imagesarrayPicture links.
descriptionstringListing text. Phone numbers and email addresses are removed. Needs full details.
postcodestringPostcode.
citystringCity or town. In Berlin, Hamburg and other big cities this is the city itself, and the part of town is in district.
districtstringPart of town or county district, as the source names it. Null when the source gives none.
statestringGerman federal state.
streetstringStreet, when the advertiser made it public.
baseRentnumberCold rent in EUR.
serviceChargenumberService charge in EUR.
heatingCostsnumberHeating costs in EUR.
totalRentnumberTotal rent in EUR.
depositstringDeposit as the source words it.
yearBuiltnumberConstruction year.
floornumberFloor.
Input settings (25)

The main fields of the input form. With the API you send them as JSON.

SettingName in the APITypeExample value
Locationlocationstring"Berlin"
Rent or buyoperationstring"rent"
Property typepropertyTypestring"apartment"
Search or listing linkssearchUrlsarray
Maximum listingsmaxItemsinteger10
Full listing detailsfetchDetailsbooleantrue
Only new listingsonlyNewbooleanfalse
Also report price changesdetectPriceChangesbooleanfalse
Also report removed listingsdetectRemovedListingsbooleanfalse
History namestateNamestring
Price from (EUR)minPricenumber
Price to (EUR)maxPricenumber
Rooms fromminRoomsnumber
Rooms tomaxRoomsnumber
Area from (m²)minLivingSpacenumber
Area to (m²)maxLivingSpacenumber
Built from (year)minYearBuiltinteger
Built to (year)maxYearBuiltinteger
Floor fromminFloorinteger
Floor tomaxFloorinteger
Equipmentequipmentarray
Apartment typesapartmentTypesarray
Energy classesenergyEfficiencyClassesarray
Exclude new-build projectsexcludeNewBuildProjectsbooleanfalse
Radius (km)radiusKmnumber

Start on Apify

Make a free Apify account: you get $5 of free usage every month. Missing a tool? Suggest it. We read every idea, but we do not promise to build it.

Apify links on this page are affiliate links. We may earn a commission. You pay the same price. Affiliate disclosure