
Global Sources Supplier Scraper
scrape.ly/store/cornerledger/globalsources-scraperLead generationE-commerce
2 monthly users

Scrape Immowelt.de listings from search URLs or locations and filters: price, living area, rooms, address, energy class, agent and agency with phone, photos, GPS, full description and features. Buy and rent. No login.
Scrape property listings from immowelt.de, one of Germany's largest real-estate portals (immonet.de listings now live here too). Paste any Immowelt search URL or just type a city, and get full rows: price, warm and cold rent, living area, rooms, street address, GPS, energy data, features, photos, and the agent and agency with phone numbers. No login, no browser.
| Field | What it does |
|---|---|
startUrls | immowelt.de search URLs (/classified-search?..., old /liste/... pages) and listing URLs (/expose/...) |
locations | Cities, postcodes, districts or states, resolved like the site's own search box |
maxItems | Maximum listings to save (default 20) |
includeDetails | Read each listing page for GPS, full description, features and energy data (default on) |
transactionType | buy or rent (location searches) |
propertyTypes | apartment, house, parking, plot, building, commercial, other |
priceMin / priceMax, areaMin / areaMax, roomsMin / roomsMax, bedroomsMin | Filters for location searches |
radiusKm | Umkreis search: include listings within this many km around each location (e.g. 1, 2, 5, 10, 15, 20, 50); empty searches the location itself |
sellerType | all, private sellers only, or agencies only |
sortBy | relevance, newest, price or area ascending/descending |
{
"locations": ["Hamburg", "50667"],
"transactionType": "rent",
"propertyTypes": ["apartment"],
"priceMax": 1200,
"roomsMin": 2,
"sortBy": "newest",
"maxItems": 200
}
| Field | Description |
|---|---|
id, legacyId, url | Listing ids and link |
title, headline, description | Listing type, headline and full text |
transactionType, propertyType | BUY / RENT, APARTMENT / HOUSE / ... |
price, priceText, priceNote, priceRaw, pricePerSqmText | Shown price (cold rent for rentals, with priceNote "Kaltmiete"), the portal's total price (warm rent) and price per m² |
livingArea, plotArea, rooms, floor, keyFacts | Size and layout |
energyClass, energyConsumption, energyCertificate, heatingType, energySource, yearBuilt, condition | Building and energy data |
street, district, city, zipCode, region, latitude, longitude | Location (street and GPS when the seller publishes the address) |
images, floorplans, virtualTours, imageCount | Media |
sellerType, agencyName, contactName, phoneNumbers, agencyAddress, agencyWebsite, agencyProfileUrl | Seller and agency |
features, priceDetails | Feature list and price breakdown |
createdAt, updatedAt, searchUrl, page, scrapedAt | Dates and provenance |
searchRadiusKm | The search radius in km the site applied (only on rows from a radiusKm search) |
Example (trimmed, people and agency are fictional):
{
"id": "261CQKRPPTBP",
"url": "https://www.immowelt.de/expose/d7986a24-38f8-4010-90da-7373009d3da4",
"title": "Reihenendhaus zum Kauf",
"headline": "Exklusives Reihenendhaus am Waldheimplatz",
"transactionType": "BUY",
"propertyType": "HOUSE",
"price": 1097000,
"priceText": "1.097.000 €",
"pricePerSqmText": "7.217 €/m²",
"livingArea": 152,
"plotArea": 294,
"rooms": 5,
"yearBuilt": 2026,
"condition": "Projektiert",
"heatingType": "Fußbodenheizung",
"street": "Waldheimplatz 12",
"district": "Ramersdorf-Perlach",
"city": "München",
"zipCode": "81739",
"latitude": 48.08469,
"longitude": 11.67349,
"imageCount": 8,
"sellerType": "professional",
"agencyName": "Musterhaus Immobilien GmbH",
"contactName": "Frau Anna Schmidt",
"phoneNumbers": ["030 1234567"],
"features": ["Gäste-WC", "Keller", "Terrasse", "Garten", "Außen-Stellplatz"],
"priceDetails": {"Kaufpreis": "1.097.000 €"},
"createdAt": "2026-01-06T15:48:45.203Z",
"detailsScraped": true
}
listing event per saved row, with or without details).Is it legal? The actor reads public listing pages that anyone can open without an account. You are responsible for how you use the data, including personal data such as agents' names and phone numbers (GDPR).
Do I need a login or my own proxy? No. German residential addresses are included and the site's bot check is handled for you.
How many results can I get? immowelt.de shows about 10,000 results per search. For more, split the search by price range, property type or location.
Why are some fields empty? Sellers don't fill every field. Street and GPS are only shown when the seller publishes the address; energy data only when an energy certificate is listed.
What about immonet.de? Immonet has moved its listings to immowelt.de, so this actor covers both.
Can I schedule it or use the API? Yes. Schedule runs in the console, or start them through the API and read the dataset as JSON, CSV or Excel.
/profil/...) are not crawled as inputs; paste search URLs or locations instead.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
startUrlsarrayOptionalimmowelt.de URLs
Search result URLs copied from immowelt.de (www.immowelt.de/classified-search?..., with every filter you set on the site) and single listing URLs (www.immowelt.de/expose/...). Old immonet.de links are accepted too. Search URLs are paginated automatically.
locationsarrayOptionalLocations
Cities, postcodes, districts or states in Germany, such as "Berlin", "80331" or "Hamburg-Altona". Each one runs its own search with the filters below. Leave empty when you paste search URLs.
maxItemsintegerOptionaldefault 20Max listings
Maximum number of listings to save across all URLs and locations. immowelt.de shows about 10,000 results per search; split bigger searches by price range or location.
includeDetailsbooleanOptionaldefault trueInclude full listing details
Open each listing page to add GPS coordinates, the full description, all photos, features (balcony, lift, cellar...), energy consumption, heating, year built and the full price breakdown (warm rent, service charges, deposit). On by default; turn it off for faster, lighter search-only rows.
Used with Locations. Pasted search URLs keep the filters already in them.
transactionTypeenumOptionaldefault "buy"Transaction
For location searches. Search URLs keep their own settings.
propertyTypesarrayOptionalProperty types
Leave empty for apartments and houses.
priceMinintegerOptionalMin price (EUR)
Purchase price, or monthly rent for rentals.
priceMaxintegerOptionalMax price (EUR)
Purchase price, or monthly rent for rentals.
areaMinintegerOptionalMin living area (m²)
Minimum living area in square metres.
areaMaxintegerOptionalMax living area (m²)
Maximum living area in square metres.
roomsMinintegerOptionalMin rooms
Minimum number of rooms.
roomsMaxintegerOptionalMax rooms
Maximum number of rooms.
bedroomsMinintegerOptionalMin bedrooms
Minimum number of bedrooms.
radiusKmintegerOptionalRadius (km)
Umkreissuche: also include listings within this many km around each location, such as 1, 2, 5, 10, 15, 20 or 50. Leave empty to search the location itself.
sellerTypeenumOptionaldefault "all"Seller
Who posted the listing.
sortByenumOptionaldefault "default"Sort by
Order of the results.
maxConcurrencyintegerOptionaldefault 8Parallel requests
How many pages to load at the same time.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["RESIDENTIA…Proxy configuration
German residential addresses are used by default: they pass the site's DataDome check almost always and are the fastest. Datacenter addresses also work (the run clears the check with its built-in solver) but are slower.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| id | string | |
| url | string | null | |
| price | number | null | |
| livingArea | number | null | |
| rooms | number | null | |
| searchRadiusKm | integer | null |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Listing | One immowelt.de listing saved, with full details when they are on (the default). Failed or empty results are free. | $0.00025 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('roamandroof/immowelt-scraper').call({
"startUrls": [
"https://www.immowelt.de/classified-search?distributionTypes=Buy&estateTypes=Apartment&locations=AD08DE8634"
],
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"RESIDENTIAL"
],
"scrapelyProxyCountry": "DE"
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run roamandroof/immowelt-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=roamandroof/immowelt-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Apartments up to 1,200 EUR with 2+ rooms and details.
Houses for sale sorted by lowest price.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.