Immowelt Scraper - Real Estate Germany
Pricing
from $0.70 / 1,000 results
Immowelt Scraper - Real Estate Germany
Search immowelt.de for apartments, houses, plots, and commercial properties. Filter by city or coordinates, buy or rent, price, rooms, size, features, and energy rating. Export as JSON, CSV, or Excel, or connect via API and MCP for market research, lead generation, and price tracking with fresh data
Pricing
from $0.70 / 1,000 results
Rating
5.0
(2)
Developer
Iñigo Garcia Olaizola
Maintained by CommunityActor stats
1
Bookmarked
147
Total users
72
Monthly active users
17 days ago
Last modified
Categories
Share
Immowelt Scraper collects public property listings from immowelt.de across Germany, including apartments, houses, plots, and commercial properties. Filter by location, price, size, rooms, features, or energy rating for market research, lead generation, and price monitoring.
🤖 What does Immowelt Scraper do?
The actor returns listing descriptions, prices, room counts, property sizes, locations, publisher information, and listing links. You can search by place or coordinates, narrow results with property filters, and add detailed listing data when needed.
- Search listings by city, postcode, neighborhood, location ID, or map coordinates.
- Choose a market with buy or rent, property types, price ranges, and detailed filters.
- Enrich results with listing details and an image when available.
- Export your dataset as JSON, CSV, or Excel, or use it through the Apify API.
Great for: German real estate market research, price monitoring, lead generation, and location analysis.
SEO keywords: Immowelt scraper, Germany real estate listings, scrape Immowelt, Immowelt API alternative, Apify real estate actor.
💡 Why collect Immowelt listings?
- 📈 Monitor local markets — compare asking prices, property types, and available supply over time.
- 🎯 Find potential leads — identify new listings that match an agency or investment profile.
- 🏘️ Research locations — compare neighborhoods, room counts, sizes, and property features.
- 📊 Build real estate datasets — export listing data for reports, dashboards, or further analysis.
🧠 Search and property ID modes
Search by location
Search by a place name such as Berlin, a postcode, or an Immowelt location ID. You can also search around a latitude and longitude; coordinate search takes precedence over a named location. Set locationType when a place name could match different kinds of locations.
Fetch known property IDs
Set properties to a list of Immowelt property IDs. This fetches those listings directly, adds their details under _details, and ignores the search location and other filters.
🚀 Quick start
- Open Immowelt Scraper in Apify Console and choose Try for free.
- Set a limit with
maxItems, or use0for all available results; then choose a location or provide property IDs. - Choose buy or rent with
operation; add any property, price, room, or size filters. - Run the actor in Console or start it through the Apify API.
- Open the Dataset to preview and download results as JSON, CSV, or Excel.
📝 Input parameters and configuration
For a normal search, provide location, locationID, or both latitude and longitude. To look up known listings instead, provide properties. maxItems is optional: the Apify Console input form starts at 30, while an omitted API value is treated as 0 and collects all matching listings, subject to the run's result and charge limits.
| Parameter | Type | Required | Description |
|---|---|---|---|
maxItems | Integer | No | Maximum number of listings to collect. Console default: 30; minimum: 0. Set to 0 or omit it from API input for all available matching listings. |
properties | Array of strings | No* | Immowelt property IDs to fetch directly. Default: empty list. When set, location and search filters are ignored; each result includes _details. |
fetchDetails | Boolean | No | Add detailed listing data under _details when searching. Default: false; adds time because details are fetched for each listing. |
location | String | No* | City, postcode, borough, or neighborhood to search. Immowelt Scraper resolves the name to a location automatically. |
locationID | String | No* | Search using one Immowelt location ID. Use this when you already know the ID. |
locationType | String | No | Narrow a name match to country · state · region · city · district · neighborhood · postal_code · street · house_number. Default: any type. |
latitude | Number | No* | Center latitude for a coordinate search. Provide together with longitude; coordinate search takes precedence over named locations. |
longitude | Number | No* | Center longitude for a coordinate search. Provide together with latitude. |
distanceKm | Integer | No | Search distance around the coordinate point, in kilometers. Default: 20; minimum: 1. |
order | String | No | Sort order: default · datedesc (newest first). Default: default. Unlimited searches and limits above 570 switch non-price sorts to price descending. |
operation | String | No | Listing purpose: buy · rent. Default: buy. |
estateType | String | No | Main property type: house_or_apartment · apartment · house · building · senior · plot · parking · investment · office · trading · gastronomy_hotel · storage_production · agriculture_forestry · miscellaneous. |
subEstateTypes | Array of strings | No | Optional property subtypes: agriculture_company · agriculture_forestry · apartment · apartment_house · apart_hotel · assisted_living · atelier · beach_house · boat_dock · box · bungalow · cafe_bar_pub · carport · car_park · castle · castle_manor_house · chalet · club_discotheque · commercial · commercial_parc · corner_terrace_house · coworking · double_garage · duplex · duplex_garage · end_terrace_house · farmhouse · farm_ranch · finca · fishing · flatsharing_room · forestry · garage · garage_area · garage_repair · gardening · garden_house · gite · groundfloor · hotel · house · house_park · hunting · industry · kiosk · lakeside_property · leisure · leisure_facility · living · living_and_commercial · living_and_commercial_building · loft · logistics_center · manor_house · medical · medical_building · medical_care · medical_floor · mid_terrace_house · miscellaneous · misc_agriculture · misc_storage · mixed · model_house · mountain_hut · multi_family_house · multi_storey · new_build_loft · new_build_lots · new_build_program_apartment · new_build_program_house · new_build_program_office · new_build_program_parking · new_home · no_development · office_building · office_centre · office_space · office_storage_building · open_space · orchard · outdoor_space · outside · parking_area · parking_indoor · parking_outdoor · penthouse · planned · plot · production_hall · reference · residential_complex · restaurant · riding · rustico · semidetached_house · shared_office · shopping_centre · showroom_space · show_house · sales_area · single_family_house · single_multi_houses · single_office · special_real_estate · special_use · store · street_parking · studio · terrace · terrace_house · town_house · triplex · unbuildable_land · underground_garage · underground_parking_space · unfinished_attic_space · unknown · villa · warehouse_hall · winery. |
features | Array of strings | No | Optional property features: parking_garage · balcony_terrace · garden · swimming_pool · bathroom_window · bathtub · cellar · furnished · unfurnished · kitchen_fully_equipped · vacant · to_renovate · pets_allowed · assisted_living · reduce_mobility_access · elevator. |
energyScores | Array of strings | No | Optional energy rating: a_plus · a · b · c · d · e · f · g · h · not_applicable · none. |
furnished | String | No | Furnishing status: furnished · unfurnished. |
subsidized | String | No | Optional subsidy filter value. |
classifiedBusiness | String | No | Business classification filter: professional_unitary · professional · private · unknown. |
commissionFree | Boolean | No | Set to true to return only commission-free listings; omit for either. |
radius | Number | No | Optional search radius filter. |
minPrice | Integer | No | Minimum listing price, in euros. |
maxPrice | Integer | No | Maximum listing price, in euros. |
minRooms | Number | No | Minimum number of rooms. |
maxRooms | Number | No | Maximum number of rooms. |
minBedrooms | Integer | No | Minimum number of bedrooms. |
maxBedrooms | Integer | No | Maximum number of bedrooms. |
minFloors | Integer | No | Minimum number of floors. |
maxFloors | Integer | No | Maximum number of floors. |
minSpace | Integer | No | Minimum living area in square meters. |
maxSpace | Integer | No | Maximum living area in square meters. |
minPlotSpace | Integer | No | Minimum plot area. |
maxPlotSpace | Integer | No | Maximum plot area. |
minYearOfConstruction | Integer | No | Earliest construction year. |
maxYearOfConstruction | Integer | No | Latest construction year. |
projectTypes | Array of strings | No | Optional project type filters: stock · resale · new_build · projected · foreclosure · investment · swap_apartment · flatsharing · short_time_rental · life_annuity. |
locationsInBuilding | Array of strings | No | Optional position in building: roof_storey · groundfloor · others. |
classifiedDisplay | Array of strings | No | Optional listing display filters: stock · resale · new_build · projected · foreclosure · investment · swap_apartment · flatsharing · short_time_rental · life_annuity. |
energyHeating | Array of strings | No | Optional heating types: coal · district_heating · electric · gas · geothermic_energy · heat_pump · liquid_gas · oil · solar · wind · wood · pellets. |
keywords | Array of strings | No | Optional listing keywords to match. |
matchAnyKeyword | Boolean | No | With keywords, set true to match any keyword. When false or omitted, all keywords should match. |
isSaleGoodwill | Boolean | No | Optional goodwill sale filter. |
availableFromMax | String | No | Optional latest availability date or value. |
availableFromIsLooseMode | Boolean | No | Use loose matching for the availability filter when set. |
preferredWarmRent | Boolean | No | Optional preferred warm rent filter. |
No* means the input depends on the search mode: use properties for direct ID lookup, or provide a location name, a location ID, or a latitude and longitude pair for a search. The coordinate values must be supplied together.
Example inputs
Buy apartments in Berlin
{"maxItems": 40,"location": "Berlin","locationType": "city","operation": "buy","estateType": "apartment","minPrice": 250000,"maxPrice": 800000,"minRooms": 2,"maxRooms": 4,"minSpace": 55,"features": ["balcony_terrace", "elevator"],"order": "datedesc"}
Rent near central Berlin
{"maxItems": 50,"latitude": 52.5200,"longitude": 13.4050,"distanceKm": 15,"operation": "rent","estateType": "apartment","minPrice": 800,"maxPrice": 2000,"minRooms": 1,"furnished": "unfurnished","keywords": ["balcony", "kitchen"],"matchAnyKeyword": true,"preferredWarmRent": true}
Fetch known property IDs with details
{"maxItems": 2,"properties": ["251KK5W8ERLI", "26PD7QUELGE1"]}
All matching listings in a location
{"maxItems": 0,"location": "Berlin","operation": "rent","estateType": "apartment"}
📊 Output and results
The output shape depends on the input mode:
- Location search: Each result is the Immowelt listing object, with listing, price, property, location, and publisher data at the top level. The actor adds
_imagewhen it finds a gallery image. WithfetchDetails: true, it also adds_detailsat the top level. - Property ID lookup: Each result is a wrapper with top-level
id,_image, and_details. The full listing detail record is nested inside_details; search-mode fields such asmainDescriptionare not top-level in this mode.
Location search field reference
- Identity:
id(string) andtype(string) identify the listing. - Description:
mainDescription.headlineandmainDescription.descriptioncontain the title and listing text. - Price:
rawData.price(number) is the listing price;hardFacts.price.formatted(string) is the displayed price. - Property:
rawData.nbroom(number) gives the room count;rawData.surface.main(number) gives the main area;rawData.propertyTypeandrawData.distributionTypedescribe the property and buy/rent listing. - Location:
location.address.street,location.address.city, andlocation.address.zipCodeprovide address details when available. - Publisher:
cardProvider.titleandprovider.publisherTypedescribe the listing provider. - Media and link:
_imageis the first gallery image URL when present;urllinks to the Immowelt listing. - Optional details:
_detailscontains additional listing information when detail fetching is enabled or property IDs are provided.
The following example is illustrative; fields and values vary by listing.
{"id": "251KK5W8ERLI","type": "apartment","mainDescription": {"headline": "Helle 3-Zimmer-Wohnung mit Balkon in Berlin-Mitte","description": "Modernisierte Wohnung mit Balkon und guter Anbindung."},"hardFacts": {"price": {"formatted": "649.000 €"}},"rawData": {"price": 649000,"nbroom": 3,"surface": {"main": 86},"propertyType": "APARTMENT","distributionType": "BUY"},"location": {"address": {"street": "Torstraße 148","city": "Berlin","zipCode": "10119"}},"provider": {"publisherType": "professional"},"cardProvider": {"title": "Example Immobilien GmbH"},"_image": null,"url": "https://www.immowelt.de/expose/251KK5W8ERLI"}
🧭 Common recipes
- Newest listings: Set
ordertodatedesc. - Apartments for rent: Use
operation: "rent"andestateType: "apartment". - Energy efficient homes: Combine
energyScoreswithenergyHeating. - Match one of several terms: Add
keywordsand setmatchAnyKeywordtotrue. - Direct property lookup: Set
propertiesto one or more IDs; the actor includes_detailsautomatically.
⚙️ Best practices
- Start with a smaller
maxItemsvalue and check the results before increasing it. - Use a specific city, district, postcode, or location type to make searches easier to interpret.
- Set both coordinates for map-based searches. Coordinate searches take precedence when you also provide a named location.
fetchDetails: trueadds detail data for each search result and can increase run time. Direct ID lookups include details automatically.- Unlimited searches and limits above 570 switch non-price sorts to price descending so the actor can continue beyond Immowelt's result cap.
- A location name can match several places. Set
locationTypeto choose the intended city, district, postcode, or other place type.
⚖️ Legal and ethical considerations
- Follow Immowelt's terms and applicable rules when collecting and using listing information.
- Use public listing data responsibly and avoid collection patterns that place an unreasonable load on the service.
- If your dataset contains personal information, handle it carefully and follow applicable privacy laws, including GDPR.
- Confirm you have the right to store, share, or republish listing text, images, and contact details.
- Preserve source links and attribution when using listing data in reports or products.
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Immowelt. All trademarks belong to their respective owners.
❓ FAQ
Do I need a location to run a search?
Yes. For search mode, provide location, locationID, or both latitude and longitude. Use properties instead when you already have listing IDs.
What is the difference between fetchDetails and properties?
fetchDetails adds detailed data to search results when enabled. properties fetches specific known IDs directly and includes details automatically.
What does maxItems: 0 do, and what happens if I omit it?
Either setting removes the requested item cap and continues through available results. Apify run limits and any actor result allowance still apply.
Why did the run return fewer listings than maxItems?
Immowelt may have fewer matching listings for the selected location and filters, or some requested IDs may no longer be available. A positive maxItems value is an upper limit.
Can I export the results to a spreadsheet?
Yes. Download the dataset as CSV or Excel from the Dataset view in Apify Console.
🛟 Support
Need a custom field or a new search filter? Contact the developer or use the support option on the actor's Apify Store page.