Immowelt Scraper ($0.65/1K) - German Property Listings avatar

Immowelt Scraper ($0.65/1K) - German Property Listings

Pricing

from $0.35 / 1,000 listings

Go to Apify Store
Immowelt Scraper ($0.65/1K) - German Property Listings

Immowelt Scraper ($0.65/1K) - German Property Listings

Scrape real-estate listings from Immowelt (immowelt.de), Germany's big property portal: apartments, houses, land and commercial property for sale and for rent. Filter by city, state or postcode, price, rooms and area. Newest first, with agent phone. Add-on: full details and energy data.

Pricing

from $0.35 / 1,000 listings

Rating

0.0

(0)

Developer

Carabain Digital

Carabain Digital

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

What is Immowelt Listings Scraper?

Immowelt Listings Scraper scrapes property listings from Immowelt (immowelt.de), one of Germany's two big property portals (part of the AVIV group, like SeLoger), with well over 100,000 apartments, houses, plots and commercial properties for sale and for rent from agents, developers and private sellers. Search by city, state, borough or postcode, sale or rent, property type, price range, rooms and living area, or paste a search URL from the site, and get clean, flat listing data as JSON, CSV, Excel, XML or HTML: price, address, living and plot area, rooms, energy label, agent name and phone, photos and description. Prefilled example: the 20 newest properties for sale in Hamburg, ready in seconds. Costs $0.65 per 1,000 listings. Add-ons: Full details (full description, coordinates, construction year, heating, energy certificate values, amenities, deposit) and Price history (price changes over time), $1.00 per 1,000 listings each.

  • 🔎 Search like on the site: city, state, borough or postcode, sale or rent, property type, price range, rooms, living area, or paste an Immowelt search URL
  • ⚡ Fast: Immowelt's own JSON search, 100 listings per request, newest first, no browser: 300 listings in about 4 seconds
  • 📞 Agent phone included: the agent's name, phone number and website come with every listing that has them
  • 📚 Full details on demand: switch on Full details for the complete description, coordinates, construction year, heating, energy data and all amenities
  • 📈 Track prices over time: switch on Price history to compare every run with the last one
  • 🔌 Connect anywhere: API, schedules, webhooks, Google Sheets, Make, Zapier, MCP / AI agents

What data can I extract from Immowelt?

🆔 Stable listing ID and URL💶 Price (sale) or cold rent plus charges
📍 Address, postcode, city, district, state🧭 Latitude and longitude (details, public addresses)
🏠 Property type and subtype📐 Living area and plot area (m²)
🛏️ Rooms and bedrooms⚡ Energy efficiency class (A+ to H)
📅 Listed and last-updated date, move-in date🏢 Agent name, phone and website
📷 All photo URLs📝 Description
🔥 Heating, energy source, kWh per m² (details)🧰 Amenities, condition, deposit (details)

The search results carry price, address, areas, rooms, energy class, agent name and phone, all photos and the first ~500 characters of the description. The complete description, coordinates, construction year, condition, heating, energy values, amenities and deposit come from the listing's detail data and are only filled with the Full details add-on. Many sellers hide the exact address: then street and house_number are null and there are no coordinates, only postcode, city and district. bathrooms is not published as a number by Immowelt, and bedrooms only when the agent entered it.

How do I scrape Immowelt listings?

  1. Create a free Apify account and open this Actor.
  2. Enter a Location (for example Hamburg, Köln or 50667), pick Sale or rent and, if you like, a property type and price range. Or paste one or more Search URLs copied from immowelt.de.
  3. Set Max listings (the newest come first).
  4. Click Start, then download the listings from the Output tab as JSON, CSV, Excel, XML or HTML.

How much does it cost to scrape Immowelt?

You pay per listing that ends up in your dataset: $0.65 per 1,000 listings, no subscription. The monthly credit of Apify's Free plan ($5) covers around 7,700 listings without add-ons. Paid plans get volume discounts.

  • Add-on: Full details, $1.00 per 1,000 listings (off by default). Adds the complete description, coordinates, construction year, condition, heating, energy source and certificate values, amenities, deposit and all photos. Charged only for listings that were actually enriched.
  • Add-on: Price history, $1.00 per 1,000 listings (off by default). Adds first_seen_at, previous_price, price_change, price_change_pct, status_changed and price_history. Charged only for listings that already had history from an earlier run, so the first run is free. See the Price history section below.
  • Failed runs and empty searches cost nothing; you can cap spending with Maximum cost per run in the run options.

See the Pricing tab for the current prices.

⬇️ Input

FieldDescription
Location (location)City, state, borough or postcode; several separated by commas
Sale or rent (listing_type)sale or rent
Property type (property_type)any (houses and apartments), house, apartment, land, commercial, parking
Minimum / maximum price (min_price, max_price)In euro; for rentals the cold rent per month
Minimum rooms (min_rooms)Number of rooms (Zimmer), half rooms as 2.5
Minimum living area (min_living_area_m2)In m²
Search URLs (start_urls)Search pages copied from immowelt.de; they replace the filters above
Max listings (limit)Stop after this many listings
Full details (includeDetails)Paid add-on: description, coordinates, construction year, energy data and more
Price history (trackHistory)Paid add-on: compare with your previous runs
History store name (historyStoreName)Where the history is kept (default realestate-history)
Proxy (proxyConfiguration)German residential proxy, preselected (Apify Residential, country DE). Immowelt blocks datacenter IPs
{
"location": "Hamburg",
"listing_type": "sale",
"limit": 20
}

Immowelt needs a German residential proxy: the default is already set. With Search URLs paste a page like https://www.immowelt.de/classified-search?distributionTypes=Rent&estateTypes=Apartment&locations=AD08DE8634&priceMax=1500, or an SEO page such as https://www.immowelt.de/suche/hamburg/wohnungen/mieten; filters in the URL are kept and the page number is ignored. Location takes a city name (Köln), a state (Bayern), a borough (Altona) or a 5-digit postcode; if there is no exact match the Actor uses the site's first suggestion and says so in the log. There is no room / shared-flat filter on Immowelt.

⬆️ Output

Listings are stored in the default dataset, newest first. View them as a table in the Output tab or export JSON, CSV, Excel, XML or HTML. Fields a listing does not have are null; every item has the same keys.

A rental with the Full details add-on

{
"id": "immowelt:26TS9FMNJXQZ",
"source": "immowelt",
"url": "https://www.immowelt.de/expose/3f1ab4ad-cd9b-4f07-9097-445612ff4a4b",
"title": "IPANEMA Hamburg - Penthouse auf 2 Etagen mit 5 Zimmern und großer Terrasse",
"listing_type": "rent",
"property_type": "apartment",
"property_subtype": null,
"status": "available",
"price": 2799,
"price_currency": "EUR",
"price_period": "month",
"price_type": "asking",
"monthly_costs": 500,
"address": "Sydneystraße 8, 22297 Hamburg",
"street": "Sydneystraße",
"house_number": "8",
"postcode": "22297",
"city": "Hamburg",
"district": "Winterhude",
"region": "Hamburg",
"country": "DE",
"lat": 53.605167,
"lon": 10.015088,
"living_area_m2": 142.29,
"plot_area_m2": null,
"rooms": 5,
"bedrooms": null,
"bathrooms": null,
"energy_label": "A",
"construction_year": 2023,
"condition": "neuwertig",
"heating": "Fußbodenheizung",
"energy_source": "Fernwärme",
"energy_consumption_kwh_m2": 49.7,
"available_from": "immediately",
"deposit": "3 Nettokaltmieten",
"features": ["6. Geschoss/7 Geschossen", "Personenaufzug", "Einbauküche", "Keller", "Balkon", "Terrasse", "Tiefgarage"],
"listed_at": "2026-10-31T09:29:48Z",
"updated_at": "2026-10-31T09:29:55Z",
"agent_name": "STRATEGIS AG",
"agent_phone": "030 44353300",
"agent_url": "https://www.strategis.eu/",
"image_urls": [
"https://mms.immowelt.de/c/3/0/0/c3004677-c680-4dba-94ff-2859b70f2179.png",
"https://mms.immowelt.de/6/1/a/4/61a45a51-08f5-4f32-8da7-4ec95584f371.jpg",
"..."
],
"description": "Organische, dynamische und geschwungene Formen, inspiriert von brasilianischer Architektur. Hochmoderne Wohnungen mit 1 bis 5 Zimmern für Singles, Paare und Familien ...",
"scraped_at": "2026-10-31T16:20:00Z"
}

For rentals price is the cold rent (Kaltmiete) and monthly_costs the service and heating charges on top, when the agent gave both. Without Full details the detail-only fields (lat, lon, construction_year, condition, heating, energy_source, energy_consumption_kwh_m2, deposit, features) are null and description is the first ~500 characters.

Extra fields with the Price history add-on

{
"first_seen_at": "2026-10-23T07:00:12+00:00",
"previous_price": 575000,
"price_change": -25000,
"price_change_pct": -4.35,
"status_changed": false,
"price_history": [
{ "at": "2026-10-23T07:00:12+00:00", "price": 575000, "status": "available" },
{ "at": "2026-10-30T07:00:09+00:00", "price": 550000, "status": "available" }
]
}

What can I do with Immowelt data?

  • 📉 Price drop alerts: schedule a run with Price history and get notified when price_change is negative
  • 🏘️ Market research: asking prices per m² per postcode or district, new supply per week, rents by room count
  • 🔎 Deal finding and investment: filter by price, area and energy class, compare rent and sale prices per neighbourhood
  • 📇 Lead generation: agents and developers with their active listings and phone numbers per city
  • 🧠 AI and analytics: feed descriptions and attributes into valuation models or LLM pipelines

Tips for best results

  • Immowelt shows at most 10,000 results per search. To collect more, split the search by city, borough or postcode, or by price range, and run them as separate searches or several Search URLs.
  • Results come in Immowelt's "newest" order, which follows the last update: a listing whose price just changed or that was republished comes first (roughly, not strictly by time), which is what you want for monitoring.
  • For a daily feed, schedule a run with a high Max listings and Price history switched on.
  • Leave Full details off for counting, price monitoring and market research; switch it on when you need full descriptions, coordinates or energy data.
  • The base listing is small and fast: a 300-listing run takes a few seconds. Full details adds one request per listing.
  • Results from one run are deduplicated by listing ID. region is the federal state in English (for example Bavaria), as the site reports it.

Price history

Switch on Price history (trackHistory) and the Actor remembers every listing between runs, so you can see price drops, status changes and how long a property has been on the market.

  • Where it lives. History is kept in a named key-value store in your own Apify account (default name realestate-history, change it with History store name). Named stores never expire, you own the data, and storage costs a fraction of a cent.
  • First run starts the series. The first time a listing is seen there is nothing to compare with, so previous_price is null and you are not charged for the add-on on that listing. From the second run on, each listing gets first_seen_at, previous_price, price_change, price_change_pct, status_changed and price_history (the last 20 price/status points, one point per change).
  • Run it on a schedule. History only grows when you run the Actor. Create a schedule (daily is typical) with the same search and the same store name.
  • One store, several Actors. Every real-estate Actor we publish uses the same default store name, so a listing keeps one history even if you scrape it with a different one of our Actors. Item IDs start with the site (immowelt:...), so sites never clash. Use a different store name per search if you want separate series.
  • Do not run two runs on the same store at the same time. Records are updated per listing and the last writer wins, so two parallel runs can overwrite each other's newest point. Run searches that share a store one after another.
  • If you delete the store, the Actor starts a new empty history without an error.
  • Cost: $1.00 per 1,000 listings that already had history (see pricing above).

Frequently asked questions

Can I use Immowelt Listings Scraper with the Apify API?

Yes. Every run has a dataset you can read through the Apify API. Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("carabain-digital/immowelt-listings").call(run_input={
"location": "Hamburg",
"listing_type": "rent",
"property_type": "apartment",
"max_price": 1500,
"limit": 100,
})
for home in client.dataset(run["defaultDatasetId"]).iterate_items():
print(home["price"], home["address"], home["living_area_m2"], "m2")

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('carabain-digital/immowelt-listings').call({
location: 'Hamburg',
listing_type: 'rent',
property_type: 'apartment',
max_price: 1500,
limit: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, 'listings');

Can I use Immowelt Listings Scraper through an MCP server or with AI agents?

Yes. Add it to an AI agent through the Apify MCP server (https://mcp.apify.com?tools=carabain-digital/immowelt-listings), or let the agent find it with search-actors and run it with call-actor. A small search (limit 20) finishes in a few seconds, and the items are flat and small, so agents can read them with get-dataset-items. Example prompt: "Use Immowelt Listings Scraper to list the 20 newest apartments for rent in Hamburg under 1,500 euro and tell me which have an A or B energy class."

Can I integrate Immowelt data with other apps?

Yes: Google Sheets, Slack, Make, Zapier, n8n, Airtable or your own webhook, through Apify integrations and webhooks. Schedule a run every morning and send the new listings or price drops to your inbox or CRM.

Why do I need a proxy?

Immowelt is protected by DataDome and blocks datacenter IP addresses. The Actor therefore defaults to Apify's residential proxy in Germany. If a run is blocked it retries on fresh proxy sessions (up to four); if it still fails the run fails with a clear message instead of returning an empty dataset.

Why is a field empty?

Many sellers do not publish the exact address, so street, house_number and the coordinates are empty for them (postcode, city and district are always there). Without Full details, lat, lon, construction_year, condition, heating, energy_source, energy_consumption_kwh_m2, deposit and features are null. Some listings have no area, room count or energy class yet, and private sellers have no agent_name.

Why is the price the cold rent?

Immowelt lists the cold rent (Kaltmiete) as the main price. When the agent also gave the warm rent, monthly_costs holds the difference (service and heating charges).

Does it cover sold and rented properties?

No. Immowelt only lists what is currently for sale or for rent, so status is always available.

The Actor only collects publicly visible listings, the same data anyone can see on immowelt.de. Listings can contain personal data (for example the name or phone number of a private seller or agent), and rules such as GDPR may apply to how you store and use it. Check your use case with a lawyer. More background: Is web scraping legal?

Immowelt Listings Scraper not working? Feedback

Open an issue on the Issues tab of this Actor with the run link and we will look at it. Feature ideas are welcome there too.

Other scrapers by us

ActorCovers
Immoweb Listings ScraperBelgium: immoweb.be, houses and apartments for sale and rent
Zimmo Listings ScraperBelgium: zimmo.be, with the site's own price history
Immovlan Listings ScraperBelgium: immovlan.be
Pararius Listings ScraperNetherlands: pararius.nl, rentals and sales
Huislijn Listings ScraperNetherlands: huislijn.nl

⭐ Does it work well for you? A review on the Store page helps others find this Actor and helps us keep it maintained.