Vexaloom Labs

Immowelt Germany Rent & Buy Listings Scraper

Scrape Immowelt.de - one of Germany's largest real-estate portals. Search rental and for-sale apartments and houses by city, price, rooms, living space, and amenities, or scrape a specific Immowelt search-results URL.

Input schema

Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.

FieldTypeRequiredDescription
modestringrequiredHow to find listings: by German city and filters, by a pasted Immowelt search URL, or by listing IDs / expose URLs.
citystringoptionalGerman city or town, for example Berlin, Muenchen, Hamburg, Koeln or Frankfurt am Main. Any place Immowelt indexes can be used.
distributionTypestringoptionalChoose rentals, for-sale listings, or compulsory auctions.
Show all input fields
FieldTypeRequiredDescription
modestringrequiredHow to find listings: by German city and filters, by a pasted Immowelt search URL, or by listing IDs / expose URLs.
citystringoptionalGerman city or town, for example Berlin, Muenchen, Hamburg, Koeln or Frankfurt am Main. Any place Immowelt indexes can be used.
distributionTypestringoptionalChoose rentals, for-sale listings, or compulsory auctions.
estateTypestringoptionalBroad property category. Temporary living is rent-only and is automatically switched to rentals. All 14 Immowelt categories are supported.
estateSubTypestringoptionalOptional narrower sub-type. Use a value that belongs to the chosen property type; leave empty for any sub-type.
minPriceintegeroptionalMinimum monthly cold rent or purchase price in EUR.
maxPriceintegeroptionalMaximum monthly cold rent or purchase price in EUR.
minRoomsnumberoptionalSmallest number of rooms to include.
maxRoomsnumberoptionalLargest number of rooms to include.
minAreaintegeroptionalMinimum living space in square metres.
maxAreaintegeroptionalMaximum living space in square metres.
minPlotAreaintegeroptionalMinimum plot or land size in square metres.
maxPlotAreaintegeroptionalMaximum plot or land size in square metres.
minYearBuiltintegeroptionalEarliest year the building was constructed.
maxYearBuiltintegeroptionalLatest year the building was constructed.
minBedroomsintegeroptionalSmallest number of bedrooms to include.
maxBedroomsintegeroptionalLargest number of bedrooms to include.
featuresarrayoptionalOnly include listings that have all selected features. Leave empty for no feature filter.
energyClassarrayoptionalOnly include listings with one of the selected German energy certificate classes (A+ is the most efficient).
buildStatearrayoptionalOnly include listings in one of the selected building conditions.
projectTypesarrayoptionalOnly include listings with one of the selected project or tenure types, such as new build, resale, investment or apartment swap.
sellerTypestringoptionalFilter by private owners, professional agents, or any seller.
wbsRequiredbooleanoptionalOnly include listings that require a certificate of eligibility (Wohnberechtigungsschein).
floorLocationarrayoptionalOnly include listings on one of the selected floor locations.
excludeGroundFloorbooleanoptionalSkip ground-floor listings.
includeKeywordsarrayoptionalKeep only listings whose title or description contains every listed keyword (case-insensitive).
excludeKeywordsarrayoptionalDrop listings whose title or description contains any listed keyword (case-insensitive).
sortBystringoptionalOrder applied by Immowelt across the whole result set, not just one page.
maxItemsintegeroptionalHard cap on emitted listings. Full result sets are paginated, so values up to 10,000 are supported.
searchUrlstringoptionalA full Immowelt search-results URL, either a modern /classified-search URL or a /suche/... page. Any filters in the URL are respected.
propertyIdsarrayoptionalImmowelt classified IDs or full /expose/... URLs. Both forms can be mixed.
includeDetailsbooleanoptionalFetch each listing's exposé page to add construction year, heating, energy consumption, coordinates, amenities, price breakdown, documents and the full description. Adds one request per listing.
maxDetailsintegeroptionalHow many emitted listings get exposé enrichment. 0 means all emitted listings.

Download the published input schema

View complete JSON
{
  "description": "Search Immowelt.de listings across Germany by city, pasted search URL, or listing IDs. Full result pagination, server-side filters, all sort orders and optional exposé details.",
  "properties": {
    "buildState": {
      "default": [],
      "description": "Only include listings in one of the selected building conditions.",
      "editor": "select",
      "items": {
        "enum": [
          "first_time_use",
          "mint_condition",
          "well_kept",
          "modernised",
          "fully_renovated",
          "partly_renovated",
          "refurbished",
          "need_of_renovation",
          "projected"
        ],
        "enumTitles": [
          "First occupancy",
          "Mint condition",
          "Well kept",
          "Modernised",
          "Fully renovated",
          "Partly renovated",
          "Refurbished",
          "Needs renovation",
          "Planned / under construction"
        ],
        "type": "string"
      },
      "prefill": [],
      "title": "Building condition",
      "type": "array"
    },
    "city": {
      "default": "Berlin",
      "description": "German city or town, for example Berlin, Muenchen, Hamburg, Koeln or Frankfurt am Main. Any place Immowelt indexes can be used.",
      "editor": "textfield",
      "prefill": "Berlin",
      "title": "City (mode=search)",
      "type": "string"
    },
    "distributionType": {
      "default": "mieten",
      "description": "Choose rentals, for-sale listings, or compulsory auctions.",
      "editor": "select",
      "enum": [
        "mieten",
        "kaufen",
        "zwangsversteigerung"
      ],
      "enumTitles": [
        "For rent (mieten)",
        "For sale (kaufen)",
        "Compulsory auction (Zwangsversteigerung)"
      ],
      "prefill": "mieten",
      "title": "Rent or buy (mode=search)",
      "type": "string"
    },
    "energyClass": {
      "default": [],
      "description": "Only include listings with one of the selected German energy certificate classes (A+ is the most efficient).",
      "editor": "select",
      "items": {
        "enum": [
          "A+",
          "A",
          "B",
          "C",
          "D",
          "E",
          "F",
          "G",
          "H"
        ],
        "enumTitles": [
          "A+ (most efficient)",
          "A",
          "B",
          "C",
          "D",
          "E",
          "F",
          "G",
          "H"
        ],
        "type": "string"
      },
      "prefill": [],
      "title": "Energy efficiency classes",
      "type": "array"
    },
    "estateSubType": {
      "default": "",
      "description": "Optional narrower sub-type. Use a value that belongs to the chosen property type; leave empty for any sub-type.",
      "editor": "select",
      "enum": [
        "",
        "Agriculture_Company",
        "Agriculture_Forestry",
        "Apart_Hotel",
        "Apartment_House",
        "Assisted_Living",
        "Atelier",
        "Barge",
        "Bed_N_Breakfast",
        "Boat_Dock",
        "Boutique",
        "Bungalow",
        "Cafe_Bar_Pub",
        "Campsite",
        "Car_Park",
        "Carport",
        "Castle",
        "Chalet",
        "Club_Discotheque",
        "Commercial",
        "Commercial_Parc",
        "Commercial_Villa",
        "Corner_Terrace_House",
        "Country_Cottage",
        "Coworking",
        "Double_Garage",
        "Duplex",
        "End_Terrace_House",
        "Farm_Ranch",
        "Farmhouse",
        "Fields",
        "Finca",
        "Fishing",
        "Flatsharing_Room",
        "Forestry",
        "Garage",
        "Garage_Area",
        "Garage_Repair",
        "Garden_House",
        "Gardening",
        "Gite",
        "Holiday_Park",
        "Hotel",
        "House_Park",
        "House_To_Build",
        "House_To_Build_With_Plot",
        "Hunting",
        "Industry",
        "Kiosk",
        "Kot",
        "Lakeside_Property",
        "Large_Town_House",
        "Leisure",
        "Leisure_Facility",
        "Living",
        "Living_And_Commercial",
        "Living_And_Commercial_Building",
        "Loft",
        "Loft_Atelier",
        "Logistics_Center",
        "Manor_House",
        "Mansion",
        "Meadow",
        "Medical",
        "Medical_Building",
        "Medical_Care",
        "Medical_Floor",
        "Mid_Terrace_House",
        "Mill",
        "Misc_Agriculture",
        "Misc_Storage",
        "Miscellaneous",
        "Mixed",
        "Mixed_Use_Building_Commercial",
        "Mobile_Home",
        "Mountain_Hut",
        "Multi_Family_House",
        "Multi_Storey",
        "Office_Building",
        "Office_Centre",
        "Office_Space",
        "Office_Storage_Building",
        "Open_Space",
        "Orchard",
        "Outdoor_Space",
        "Outside",
        "Parking_Area",
        "Pavilion",
        "Penthouse",
        "Production_Hall",
        "Residential_Complex",
        "Restaurant",
        "Riding",
        "Rustico",
        "Sales_Area",
        "Semidetached_House",
        "Shared_Office",
        "Shopping_Centre",
        "Showroom_Space",
        "Single_Family_House",
        "Single_Office",
        "Special_Real_Estate",
        "Special_Use",
        "Static_Caravan",
        "Store",
        "Street_Parking",
        "Structure",
        "Studio",
        "Terrace",
        "Terrace_House",
        "Town_House",
        "Underground_Garage",
        "Underground_Parking_Space",
        "Unfinished_Attic_Space",
        "Villa",
        "Warehouse_Hall",
        "Winery"
      ],
      "enumTitles": [
        "Any sub-type",
        "Agriculture Company",
        "Agriculture Forestry",
        "Apart Hotel",
        "Apartment House",
        "Assisted Living",
        "Atelier",
        "Barge",
        "Bed N Breakfast",
        "Boat Dock",
        "Boutique",
        "Bungalow",
        "Cafe Bar Pub",
        "Campsite",
        "Car Park",
        "Carport",
        "Castle",
        "Chalet",
        "Club Discotheque",
        "Commercial",
        "Commercial Parc",
        "Commercial Villa",
        "Corner Terrace House",
        "Country Cottage",
        "Coworking",
        "Double Garage",
        "Duplex",
        "End Terrace House",
        "Farm Ranch",
        "Farmhouse",
        "Fields",
        "Finca",
        "Fishing",
        "Flatsharing Room",
        "Forestry",
        "Garage",
        "Garage Area",
        "Garage Repair",
        "Garden House",
        "Gardening",
        "Gite",
        "Holiday Park",
        "Hotel",
        "House Park",
        "House To Build",
        "House To Build With Plot",
        "Hunting",
        "Industry",
        "Kiosk",
        "Kot",
        "Lakeside Property",
        "Large Town House",
        "Leisure",
        "Leisure Facility",
        "Living",
        "Living And Commercial",
        "Living And Commercial Building",
        "Loft",
        "Loft Atelier",
        "Logistics Center",
        "Manor House",
        "Mansion",
        "Meadow",
        "Medical",
        "Medical Building",
        "Medical Care",
        "Medical Floor",
        "Mid Terrace House",
        "Mill",
        "Misc Agriculture",
        "Misc Storage",
        "Miscellaneous",
        "Mixed",
        "Mixed Use Building Commercial",
        "Mobile Home",
        "Mountain Hut",
        "Multi Family House",
        "Multi Storey",
        "Office Building",
        "Office Centre",
        "Office Space",
        "Office Storage Building",
        "Open Space",
        "Orchard",
        "Outdoor Space",
        "Outside",
        "Parking Area",
        "Pavilion",
        "Penthouse",
        "Production Hall",
        "Residential Complex",
        "Restaurant",
        "Riding",
        "Rustico",
        "Sales Area",
        "Semidetached House",
        "Shared Office",
        "Shopping Centre",
        "Showroom Space",
        "Single Family House",
        "Single Office",
        "Special Real Estate",
        "Special Use",
        "Static Caravan",
        "Store",
        "Street Parking",
        "Structure",
        "Studio",
        "Terrace",
        "Terrace House",
        "Town House",
        "Underground Garage",
        "Underground Parking Space",
        "Unfinished Attic Space",
        "Villa",
        "Warehouse Hall",
        "Winery"
      ],
      "prefill": "",
      "title": "Property sub-type (mode=search)",
      "type": "string"
    },
    "estateType": {
      "default": "wohnung",
      "description": "Broad property category. Temporary living is rent-only and is automatically switched to rentals. All 14 Immowelt categories are supported.",
      "editor": "select",
      "enum": [
        "wohnung",
        "haus",
        "grundstueck",
        "wohnen_auf_zeit",
        "buero",
        "einzelhandel",
        "lager_produktion",
        "gastronomie",
        "landwirtschaft",
        "stellplatz",
        "gebaeude",
        "senioren",
        "projekt",
        "sonstiges"
      ],
      "enumTitles": [
        "Apartment / flat",
        "House",
        "Plot / land",
        "Temporary / furnished living",
        "Office / practice",
        "Retail / shop",
        "Storage / production",
        "Gastronomy / hotel",
        "Agricultural / forestry land",
        "Parking space / garage",
        "Whole building",
        "Senior living",
        "New-build project",
        "Other / miscellaneous"
      ],
      "prefill": "wohnung",
      "title": "Property type (mode=search)",
      "type": "string"
    },
    "excludeGroundFloor": {
      "default": false,
      "description": "Skip ground-floor listings.",
      "prefill": false,
      "title": "Exclude ground floor",
      "type": "boolean"
    },
    "excludeKeywords": {
      "default": [],
      "description": "Drop listings whose title or description contains any listed keyword (case-insensitive).",
      "editor": "stringList",
      "prefill": [],
      "title": "Exclude keywords",
      "type": "array"
    },
    "features": {
      "default": [],
      "description": "Only include listings that have all selected features. Leave empty for no feature filter.",
      "editor": "select",
      "items": {
        "enum": [
          "air_conditioned",
          "assisted_living",
          "balcony_terrace",
          "bathroom_window",
          "bathtub",
          "cellar",
          "commission_free",
          "elevator",
          "exclusive",
          "garden",
          "fitted_kitchen",
          "no_media",
          "parking",
          "pets",
          "barrier_free",
          "swimming_pool",
          "vacant"
        ],
        "enumTitles": [
          "Air conditioning",
          "Assisted / senior living",
          "Balcony / terrace",
          "Bathroom window",
          "Bathtub",
          "Cellar / basement",
          "Commission-free",
          "Lift / elevator",
          "Exclusive fit-out",
          "Garden",
          "Fitted kitchen",
          "No media / photos",
          "Parking / garage",
          "Pets allowed",
          "Reduced-mobility access",
          "Swimming pool",
          "Vacant"
        ],
        "type": "string"
      },
      "prefill": [],
      "title": "Required features",
      "type": "array"
    },
    "floorLocation": {
      "default": [],
      "description": "Only include listings on one of the selected floor locations.",
      "editor": "select",
      "items": {
        "enum": [
          "ground_floor",
          "half_basement",
          "roof_storey"
        ],
        "enumTitles": [
          "Ground floor",
          "Half basement / souterrain",
          "Roof storey / attic"
        ],
        "type": "string"
      },
      "prefill": [],
      "title": "Floor location",
      "type": "array"
    },
    "includeDetails": {
      "default": false,
      "description": "Fetch each listing's exposé page to add construction year, heating, energy consumption, coordinates, amenities, price breakdown, documents and the full description. Adds one request per listing.",
      "prefill": false,
      "title": "Include exposé details",
      "type": "boolean"
    },
    "includeKeywords": {
      "default": [],
      "description": "Keep only listings whose title or description contains every listed keyword (case-insensitive).",
      "editor": "stringList",
      "prefill": [],
      "title": "Include keywords",
      "type": "array"
    },
    "maxArea": {
      "description": "Maximum living space in square metres.",
      "maximum": 10000000,
      "minimum": 0,
      "title": "Maximum living space (m2)",
      "type": "integer"
    },
    "maxBedrooms": {
      "description": "Largest number of bedrooms to include.",
      "maximum": 20,
      "minimum": 0,
      "title": "Maximum bedrooms",
      "type": "integer"
    },
    "maxDetails": {
      "default": 0,
      "description": "How many emitted listings get exposé enrichment. 0 means all emitted listings.",
      "maximum": 10000,
      "minimum": 0,
      "prefill": 0,
      "title": "Maximum detailed listings",
      "type": "integer"
    },
    "maxItems": {
      "default": 100,
      "description": "Hard cap on emitted listings. Full result sets are paginated, so values up to 10,000 are supported.",
      "maximum": 10000,
      "minimum": 1,
      "prefill": 5,
      "title": "Maximum items",
      "type": "integer"
    },
    "maxPlotArea": {
      "description": "Maximum plot or land size in square metres.",
      "maximum": 10000000,
      "minimum": 0,
      "title": "Maximum plot size (m2)",
      "type": "integer"
    },
    "maxPrice": {
      "description": "Maximum monthly cold rent or purchase price in EUR.",
      "maximum": 50000000,
      "minimum": 0,
      "title": "Maximum price (EUR)",
      "type": "integer"
    },
    "maxRooms": {
      "description": "Largest number of rooms to include.",
      "maximum": 50,
      "minimum": 0,
      "title": "Maximum rooms",
      "type": "number"
    },
    "maxYearBuilt": {
      "description": "Latest year the building was constructed.",
      "maximum": 2100,
      "minimum": 1800,
      "title": "Latest construction year",
      "type": "integer"
    },
    "minArea": {
      "description": "Minimum living space in square metres.",
      "maximum": 10000000,
      "minimum": 0,
      "title": "Minimum living space (m2)",
      "type": "integer"
    },
    "minBedrooms": {
      "description": "Smallest number of bedrooms to include.",
      "maximum": 20,
      "minimum": 0,
      "title": "Minimum bedrooms",
      "type": "integer"
    },
    "minPlotArea": {
      "description": "Minimum plot or land size in square metres.",
      "maximum": 10000000,
      "minimum": 0,
      "title": "Minimum plot size (m2)",
      "type": "integer"
    },
    "minPrice": {
      "description": "Minimum monthly cold rent or purchase price in EUR.",
      "maximum": 50000000,
      "minimum": 0,
      "title": "Minimum price (EUR)",
      "type": "integer"
    },
    "minRooms": {
      "description": "Smallest number of rooms to include.",
      "maximum": 50,
      "minimum": 0,
      "title": "Minimum rooms",
      "type": "number"
    },
    "minYearBuilt": {
      "description": "Earliest year the building was constructed.",
      "maximum": 2100,
      "minimum": 1800,
      "title": "Earliest construction year",
      "type": "integer"
    },
    "mode": {
      "default": "search",
      "description": "How to find listings: by German city and filters, by a pasted Immowelt search URL, or by listing IDs / expose URLs.",
      "editor": "select",
      "enum": [
        "search",
        "byUrl",
        "byIds"
      ],
      "enumTitles": [
        "Search by city and filters",
        "Use a pasted Immowelt search URL",
        "Look up specific listing IDs or URLs"
      ],
      "prefill": "search",
      "title": "Mode",
      "type": "string"
    },
    "projectTypes": {
      "default": [],
      "description": "Only include listings with one of the selected project or tenure types, such as new build, resale, investment or apartment swap.",
      "editor": "select",
      "items": {
        "enum": [
          "flatsharing",
          "investment",
          "life_annuity",
          "new_build",
          "projected",
          "resale",
          "short_time_rental",
          "stock",
          "swap_apartment"
        ],
        "enumTitles": [
          "Flatsharing / shared flat",
          "Investment property",
          "Life annuity",
          "New build",
          "Planned / under construction",
          "Resale",
          "Short-term rental",
          "Existing stock",
          "Apartment swap"
        ],
        "type": "string"
      },
      "prefill": [],
      "title": "Project / tenure types",
      "type": "array"
    },
    "propertyIds": {
      "default": [],
      "description": "Immowelt classified IDs or full /expose/... URLs. Both forms can be mixed.",
      "editor": "stringList",
      "prefill": [],
      "title": "Listing IDs or expose URLs (mode=byIds)",
      "type": "array"
    },
    "searchUrl": {
      "description": "A full Immowelt search-results URL, either a modern /classified-search URL or a /suche/... page. Any filters in the URL are respected.",
      "editor": "textfield",
      "title": "Search URL (mode=byUrl)",
      "type": "string"
    },
    "sellerType": {
      "default": "any",
      "description": "Filter by private owners, professional agents, or any seller.",
      "editor": "select",
      "enum": [
        "any",
        "private",
        "professional"
      ],
      "enumTitles": [
        "Any seller",
        "Private owner",
        "Professional agent"
      ],
      "prefill": "any",
      "title": "Seller type",
      "type": "string"
    },
    "sortBy": {
      "default": "",
      "description": "Order applied by Immowelt across the whole result set, not just one page.",
      "editor": "select",
      "enum": [
        "",
        "newest",
        "priceAsc",
        "priceDesc",
        "areaAsc",
        "areaDesc",
        "roomsAsc",
        "roomsDesc",
        "pricePerSqmAsc",
        "pricePerSqmDesc"
      ],
      "enumTitles": [
        "Relevance (site default)",
        "Newest listings first",
        "Price - low to high",
        "Price - high to low",
        "Living space / plot size - low to high",
        "Living space / plot size - high to low",
        "Rooms - fewest to most",
        "Rooms - most to fewest",
        "Price per m2 - low to high",
        "Price per m2 - high to low"
      ],
      "prefill": "",
      "title": "Sort results by",
      "type": "string"
    },
    "wbsRequired": {
      "default": false,
      "description": "Only include listings that require a certificate of eligibility (Wohnberechtigungsschein).",
      "prefill": false,
      "title": "WBS required (subsidised housing)",
      "type": "boolean"
    }
  },
  "required": [
    "mode"
  ],
  "schemaVersion": 1,
  "title": "Immowelt Scraper Input",
  "type": "object"
}

Output schema

Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.

FieldTypeRequiredDescription
listingsstringoptionalDataset containing all scraped Immowelt real-estate listings.

Download the published output schema

View complete JSON
{
  "actorOutputSchemaVersion": 1,
  "description": "German real-estate listings from Immowelt.de with price, rooms, living space, address, images, provider, energy and optional expose detail fields such as coordinates, amenities, documents and the full description.",
  "properties": {
    "listings": {
      "description": "Dataset containing all scraped Immowelt real-estate listings.",
      "template": "{{links.apiDefaultDatasetUrl}}/items",
      "title": "Immowelt listings",
      "type": "string"
    }
  },
  "title": "Immowelt Germany Rent & Buy Listings Scraper Output"
}

Dataset schema

Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.

Download the published dataset schema

View complete JSON
{
  "actorSpecification": 1,
  "views": {
    "overview": {
      "display": {
        "component": "table",
        "properties": {}
      },
      "title": "Listings",
      "transformation": {
        "fields": [
          "title",
          "city",
          "district",
          "distributionType",
          "estateType",
          "priceCold",
          "priceWarm",
          "purchasePrice",
          "rooms",
          "livingSpaceSqm",
          "yearBuilt",
          "energyClass",
          "providerName",
          "sourceUrl"
        ]
      }
    }
  }
}

Key-value schema

Published key-value store definitions, when provided by this build.

This definition is not present in the default published build. See the published README for available documentation.

Published README

Read the full published documentation

Immowelt Germany Rent & Buy Listings Scraper

Scrape property listings from Immowelt.de, one of Germany's largest real-estate portals. Search rentals, for-sale homes, plots, commercial space and parking by city, paste a prepared Immowelt search link, or look up specific listings by ID. The actor pages through the full result set, applies Immowelt's own filters and sort orders, and can add a detailed exposé record with construction year, heating, energy values, coordinates, amenities, price breakdown and documents.

What this actor does

  • Three modes: search by German city and filters, byUrl for a pasted Immowelt search link, and byIds for classified IDs or exposé URLs.
  • Full result-set pagination: the actor walks every results page instead of stopping at the first 30-40 cards, with a hard maxItems ceiling of 10,000.
  • 14 property categories: apartment, house, plot, temporary/furnished living, office, retail, storage/production, gastronomy/hotel, agricultural/forestry land, parking, whole building, senior living, new-build projects and miscellaneous.
  • Deep server-side filters: price, rooms, living space, plot size, construction year, bedrooms, features, energy class, building condition, project type, seller type, WBS requirement and floor location, plus all nine Immowelt sort orders.
  • Optional exposé enrichment: construction year, condition, heating type, energy source/consumption/certificate, coordinates, amenities by category, deposit and running costs, videos, virtual tours, floor plans, PDF documents and the full multi-section description.
  • Keywords and clean output: include/exclude keyword filters run on the title and description; empty fields are omitted at every depth, never returned as null, "" or N/A.

Output per listing

  • classifiedId, legacyId - Immowelt listing identifiers
  • publishedAt, updatedAt, listingStatus, isNewBuildProject
  • title, headline, description (full text when detailed, otherwise the search-card summary)
  • distributionType (mieten/kaufen), distributionSubType, estateType, estateSubType (human-readable label), isTemporaryLiving
  • priceCold (net/base rent), priceWarm (rent including utilities), purchasePrice, currency
  • pricePerSqm (computed from the listing's own price and area), quotedPricePerSqm (Immowelt's quoted rate, when published)
  • priceAdditionalInformation, priceNote, deposit, utilitiesCost, heatingCost, financingUrl
  • marketAvgPricePerSqm, marketPriceRangeLowPerSqm, marketPriceRangeHighPerSqm, marketPriceTrend1YearPct, marketPriceDate
  • rooms, bedrooms, livingSpaceSqm, plotSqm, floor, availableFrom, yearBuilt, condition
  • energyClass, energyCertificateClass, energyCertificateType, energyCertificateValidity, energyCertificateUrl, energyConsumption, heatingType, energySource
  • buildingState, isNewListing, has3DVisit, hasBrokerageFee, isForeclosureAuction
  • hasFloorPlan, hasVirtualTour, hasVideo
  • street, district, borough, city, zipCode, state, country, latitude, longitude, isAddressPublished
  • providerName, providerType, providerContactPerson, providerWebsite, providerPhone, providerAddress, providerProfileUrl, providerImprintUrl, providerLogoUrl
  • providerBadge, providerBadgeImageUrl, providerBadgeDescription, providerIsPrivateOwner, providerBadges[]
  • providerRating, providerReviewCount, providerRatingUrl, providerFeeScheduleUrl, projectUrl
  • images[] (url, caption, type scene label), primaryImageUrl, imageCount
  • videos[], virtualTours[], floorPlans[], documents[]
  • amenities[], amenitiesByCategory, aiFeatures
  • locationDescription, additionalDescription, extendedInfoDescription
  • detailsEnriched (present only when an exposé page was merged), sourceUrl
  • recordType: "listing", scrapedAt

Input

Field Type Default Description
mode string search search (city and filters), byUrl (pasted search link) or byIds (listing IDs / exposé URLs)
city string Berlin German city or town for search, e.g. München, Hamburg, Köln, Frankfurt am Main
distributionType string mieten mieten (rent), kaufen (buy) or zwangsversteigerung (compulsory auction)
estateType string wohnung One of the 14 Immowelt property categories
estateSubType string - Optional narrower sub-type; leave empty for any. Must belong to the selected property type
minPrice / maxPrice integer - Price range in EUR (cold rent or purchase price)
minRooms / maxRooms number - Room-count range
minArea / maxArea integer - Living-space range in m²
minPlotArea / maxPlotArea integer - Plot/land-size range in m²
minYearBuilt / maxYearBuilt integer - Construction-year range
minBedrooms / maxBedrooms integer - Bedroom-count range
features array [] Required amenities; all selected values must be present
energyClass array [] One or more energy classes from A+ (best) to H
buildState array [] One or more building conditions, e.g. first occupancy, mint, well kept, needs renovation
projectTypes array [] One or more project/tenure types, e.g. new build, resale, investment, short-term rental
sellerType string any any, private or professional
wbsRequired boolean false Only listings that require a certificate of eligibility (WBS)
floorLocation array [] Ground floor, half basement or roof storey
excludeGroundFloor boolean false Skip ground-floor listings
includeKeywords array [] Keep only listings whose title/description contains every keyword
excludeKeywords array [] Drop listings whose title/description contains any keyword
sortBy string – All nine Immowelt orders: newest, price, area, rooms and price per m², ascending or descending
maxItems integer 100 Hard cap on emitted listings (1-10,000)
searchUrl string - Full Immowelt search URL for byUrl (modern /classified-search or /suche/...)
propertyIds array [] Classified IDs or exposé URLs for byIds
includeDetails boolean false Fetch each listing's exposé page for the extra detail fields
maxDetails integer 0 Number of listings to enrich; 0 means all emitted listings

Example: apartments for rent in Berlin, 500-2,000 EUR

{
  "mode": "search",
  "city": "Berlin",
  "distributionType": "mieten",
  "estateType": "wohnung",
  "minPrice": 500,
  "maxPrice": 2000,
  "minRooms": 2,
  "maxItems": 500,
  "sortBy": "priceAsc"
}

Example: houses for sale in München with a garden

{
  "mode": "search",
  "city": "München",
  "distributionType": "kaufen",
  "estateType": "haus",
  "features": ["garden", "parking"],
  "maxItems": 300
}
{
  "mode": "byUrl",
  "searchUrl": "https://www.immowelt.de/suche/mieten/wohnung/berlin/berlin-10115/ad08de8634",
  "maxItems": 1000
}

Example: enrich specific listings by ID or exposé URL

{
  "mode": "byIds",
  "propertyIds": [
    "26XYAMX8494K",
    "https://www.immowelt.de/expose/81052d86-9572-4815-a7e8-bea49be808b3"
  ],
  "includeDetails": true,
  "maxItems": 10
}

Use cases

  • Rental-market research - pull complete, filtered rent inventories for one city or many scheduled runs.
  • Investment screening - compare purchase prices, price per m² and local market benchmarks across German cities.
  • Property alerts and lead generation - monitor new listings that match a saved filter set.
  • Agency and portfolio analysis - analyse provider names, badges, ratings and listing volumes.
  • Real-estate data platforms - feed structured German property records into a search, valuation or CRM product.
  • Commercial and land research - collect office, retail, storage, gastronomy, parking and agricultural/forestry listings that consumer portals often omit.

FAQ

Any city or town Immowelt indexes, including large cities and smaller municipalities. Use the German spelling without postcode; the actor resolves it on Immowelt. A handful of small towns that share a name with a district may not have their own working search page on the site, so a nearby larger town is the practical fallback.

How many listings can one run return?

Up to 10,000 when you set maxItems that high and the search has enough matches. The actor pages through the entire result set rather than taking only the first page. If a search has more matches than maxItems, the run reports the site's total count in its status message.

Why are year built, heating, coordinates or documents missing on some records?

Those values come from the listing's exposé page and are only fetched when includeDetails is enabled. Even then, Immowelt does not publish every detail for every property - for example, energy data or construction year may be absent on older or private listings. Missing values are omitted instead of being guessed.

What is the difference between priceCold, priceWarm and purchasePrice?

priceCold is the net/base rent (Kaltmiete or Nettomiete), priceWarm is the rent including utilities (Warmmiete), and purchasePrice is the asking sale price. Only the values Immowelt publishes for that listing are included.

Are furnished, short-term, commercial and parking listings supported?

Yes. Temporary/furnished living, office, retail, storage/production, gastronomy/hotel, agricultural/forestry land, parking, whole buildings, senior living, new-build projects and miscellaneous are all selectable property categories. The features filter adds individual amenities such as balcony, garden, lift, parking, cellar or a swimming pool.

Do I need a login, cookies or an API key?

No. The actor works without an account, cookies or credentials. Everything it returns is publicly visible on Immowelt.de.

Do I need to configure a proxy?

No. The actor chooses a working connection automatically and handles the site's bot protection itself. Just fill in the input and run it.

Why did a run stop before reaching my maxItems?

Immowelt can temporarily limit a connection when it receives too many requests. The actor paces its requests, retries, and switches to its automatic fallback paths. If the site still blocks the run, already-collected rows are kept and the status message says that the first results page was used or that the run was interrupted.

How fresh is the data?

Every record is read live from Immowelt during the run. publishedAt, updatedAt and scrapedAt show the listing's publication/update times and the time of the scrape.

Is this actor affiliated with Immowelt?

No. This is an independent third-party tool that reads publicly available listing pages.

Python quickstart

Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.

Open the step-by-step Python guide →

Source build 7uMuGZ3LeiapvgTvJ. Documentation is regenerated from the default published build; private drafts are not included.