# ImmoScout24 API

> ImmoScout24 returns German rental and purchase property listings with prices, space, and advertiser details as a workflow and API.

ImmoScout24 searches German apartments and houses for rent or purchase using a required city or district. Optional filters narrow results by price, rooms, living space, listing type, and property type.

- Page: https://fous.com/tools/immoscout24
- Handle: `@immoscout24`
- Category: [Real estate](https://fous.com/tools/category/real-estate)
- Source website: https://immobilienscout24.de
- Last verified: Sep 29, 2026

## Methods

### Search properties

Operation `search_properties`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Search apartments and houses to rent or buy in a German city or district, with prices, space and advertiser details. Availability is shown when the public listing displays it; blocked searches may need to be retried.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `location` | string | yes | `"Berlin Kreuzberg"` | City or district to search, for example Berlin Kreuzberg. |
| `max_price` | number | no | `2200` | Maximum price in EUR; cold rent for rentals, for example 2000. |
| `min_price` | number | no | `800` | Minimum price in EUR; cold rent for rentals, for example 800. |
| `min_rooms` | number | no | `2` | Minimum number of rooms, for example 2. |
| `max_results` | integer | no | `3` | Maximum number of properties to return, for example 20. |
| `min_size_m2` | number | no | `45` | Minimum living space in square metres, for example 50. |
| `listing_type` | string | no | `"rent"` | Rent or buy, for example rent. |
| `property_type` | string | no | `"apartment"` | Kind of property, for example apartment. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "location"
  ],
  "properties": {
    "location": {
      "type": "string",
      "description": "City or district to search, for example Berlin Kreuzberg.",
      "examples": [
        "Berlin Kreuzberg",
        "Hamburg Altona",
        "München"
      ]
    },
    "max_price": {
      "type": "number",
      "minimum": 0,
      "description": "Maximum price in EUR; cold rent for rentals, for example 2000.",
      "examples": [
        2200
      ]
    },
    "min_price": {
      "type": "number",
      "minimum": 0,
      "description": "Minimum price in EUR; cold rent for rentals, for example 800.",
      "examples": [
        800,
        99999999
      ]
    },
    "min_rooms": {
      "type": "number",
      "minimum": 0,
      "description": "Minimum number of rooms, for example 2.",
      "examples": [
        2
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 20,
      "maximum": 60,
      "minimum": 1,
      "description": "Maximum number of properties to return, for example 20.",
      "x-fous-developer": true,
      "examples": [
        3,
        2
      ]
    },
    "min_size_m2": {
      "type": "number",
      "minimum": 0,
      "description": "Minimum living space in square metres, for example 50.",
      "examples": [
        45
      ]
    },
    "listing_type": {
      "enum": [
        "rent",
        "buy"
      ],
      "type": "string",
      "default": "rent",
      "description": "Rent or buy, for example rent.",
      "examples": [
        "rent",
        "buy"
      ]
    },
    "property_type": {
      "enum": [
        "apartment",
        "house"
      ],
      "type": "string",
      "default": "apartment",
      "description": "Kind of property, for example apartment.",
      "examples": [
        "apartment",
        "house"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "location": "Berlin Kreuzberg",
      "max_price": 2200,
      "min_price": 800,
      "min_rooms": 2,
      "max_results": 3,
      "min_size_m2": 45,
      "listing_type": "rent",
      "property_type": "apartment"
    },
    {
      "location": "Hamburg Altona",
      "max_results": 2,
      "listing_type": "buy",
      "property_type": "house"
    },
    {
      "location": "München",
      "min_price": 99999999,
      "max_results": 2,
      "listing_type": "rent",
      "property_type": "apartment"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `properties` | array |  | Properties in the order shown on ImmoScout24. |
| `properties[].rooms` | number or null | `2` | Rooms. |
| `properties[].title` | string | `"Wunderschöne, geräumige 2- Zimmerwohnung mit Einbauküche unweit Volkspark Hasenheide zu vermieten"` | Title. |
| `properties[].address` | string or null | `"Kottbusser Damm 32, Kreuzberg, Berlin"` | Address. |
| `properties[].price_eur` | number or null | `2171.72` | Purchase price or cold monthly rent in EUR. |
| `properties[].listing_id` | string | `"171059585"` | ImmoScout24 listing ID. |
| `properties[].photo_link` | string or null | `"https://pictures.immobilienscout24.de/listings/b85fef54-8220-4f07-97b0-a87d1f67c579-2097123119.jpg/ORIG/legacy_thumbnai` | Photo link. |
| `properties[].listing_link` | string | `"https://www.immobilienscout24.de/expose/171059585"` | Listing link. |
| `properties[].warm_rent_eur` | number or null | `2581.72` | Warm monthly rent in EUR, if shown. |
| `properties[].available_from` | string or null | `"sofort"` | Availability as displayed on the listing. |
| `properties[].advertiser_name` | string or null | `"ambelin GmbH"` | Advertiser name. |
| `properties[].living_space_m2` | number or null | `106` | Living space in square metres. |

**Example input**

```json
{
  "location": "Berlin Kreuzberg",
  "max_price": 2200,
  "min_price": 800,
  "min_rooms": 2,
  "max_results": 3,
  "min_size_m2": 45,
  "listing_type": "rent",
  "property_type": "apartment"
}
```

**Example output**

```json
{
  "properties": [
    {
      "rooms": 2,
      "title": "Wunderschöne, geräumige 2- Zimmerwohnung mit Einbauküche unweit Volkspark Hasenheide zu vermieten",
      "address": "Kottbusser Damm 32, Kreuzberg, Berlin",
      "price_eur": 2171.72,
      "listing_id": "171059585",
      "photo_link": "https://pictures.immobilienscout24.de/listings/b85fef54-8220-4f07-97b0-a87d1f67c579-2097123119.jpg/ORIG/legacy_thumbnail/640x480/format/webp/quality/50",
      "listing_link": "https://www.immobilienscout24.de/expose/171059585",
      "warm_rent_eur": 2581.72,
      "available_from": "sofort",
      "advertiser_name": "ambelin GmbH",
      "living_space_m2": 106
    },
    {
      "rooms": 2,
      "title": "Modern 2 room apartment, unfurnished in a central location.  Unlimited contract ",
      "address": "Kreuzberg, Berlin",
      "price_eur": 1221,
      "listing_id": "171224610",
      "photo_link": "https://pictures.immobilienscout24.de/listings/ff711aea-21a7-4bdc-9e4c-48a58a8e0b36-2100672324.jpg/ORIG/legacy_thumbnail/640x480/format/webp/quality/50",
      "listing_link": "https://www.immobilienscout24.de/expose/171224610",
      "warm_rent_eur": 1459,
      "available_from": null,
      "advertiser_name": "Santiago Falla Pena",
      "living_space_m2": 54
    },
    {
      "rooms": 2,
      "title": "Möbliert und löffelfertig: Zentrales Wohnen in nachhaltig eingerichteter Ruheoase",
      "address": "Kreuzberg, Berlin",
      "price_eur": 1350,
      "listing_id": "170711416",
      "photo_link": "https://pictures.immobilienscout24.de/listings/640d5f1d-9d52-420d-b9ed-1453c15b4a3d-2089989799.jpeg/ORIG/legacy_thumbnail/640x480/format/webp/quality/50",
      "listing_link": "https://www.immobilienscout24.de/expose/170711416",
      "warm_rent_eur": 1720,
      "available_from": "ab sofort",
      "advertiser_name": "Engel & Völkers DACH GmbH",
      "living_space_m2": 57
    }
  ]
}
```

## Quick start

Replace `YOUR_API_KEY` with a Fous API key. To create one, open Developers at the bottom of Fous Studio, turn on Developer mode, then go to API keys (https://app.fous.com/keys). Change the values in `input` to run the same tool on new data.

```bash
curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 180 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@immoscout24",
  "visibility": "public",
  "operation": "search_properties",
  "version": 1,
  "input": {
    "location": "Berlin Kreuzberg",
    "max_price": 2200,
    "min_price": 800,
    "min_rooms": 2,
    "max_results": 3,
    "min_size_m2": 45,
    "listing_type": "rent",
    "property_type": "apartment"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
import json
import urllib.error
import urllib.request

api_key = "YOUR_API_KEY"

body = json.loads("{\n  \"api\": \"@immoscout24\",\n  \"visibility\": \"public\",\n  \"operation\": \"search_properties\",\n  \"version\": 1,\n  \"input\": {\n    \"location\": \"Berlin Kreuzberg\",\n    \"max_price\": 2200,\n    \"min_price\": 800,\n    \"min_rooms\": 2,\n    \"max_results\": 3,\n    \"min_size_m2\": 45,\n    \"listing_type\": \"rent\",\n    \"property_type\": \"apartment\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=180) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
const apiKey = "YOUR_API_KEY";

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(180_000),
  body: JSON.stringify({
  "api": "@immoscout24",
  "visibility": "public",
  "operation": "search_properties",
  "version": 1,
  "input": {
    "location": "Berlin Kreuzberg",
    "max_price": 2200,
    "min_price": 800,
    "min_rooms": 2,
    "max_results": 3,
    "min_size_m2": 45,
    "listing_type": "rent",
    "property_type": "apartment"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

## Use from an AI assistant

Connect this tool to Claude Code, Claude Desktop, Cursor, VS Code, Codex and any MCP client as its own MCP server. Each method is a typed tool whose arguments are the method’s input.

- Server URL: `https://api.fous.com/mcp/tools/immoscout24`
- Authorization: `Authorization: Bearer <Fous API key>`

**Tools**

- `search_properties`: Search properties. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `fous_get_run`: the result of a run that was still going, by its `request_id`. Free.

Claude Code:

```bash
claude mcp add --scope user --transport http fous-immoscout24 https://api.fous.com/mcp/tools/immoscout24 --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"
```

To give the assistant every tool, connect `https://api.fous.com/mcp`: it finds one with `fous_search_tools` and runs it with `fous_run_tool`. Setup for other clients: https://fous.com/llms-full.txt.

## Use cases

- Compare rental and purchase listings by price and living space
- Find properties matching a city, room count, and property type
- Review listing addresses and advertiser details
- Collect listing links and displayed availability

## FAQ

### Can I run it with my own inputs?

Yes. Change the inputs in Studio and press Run, or send new inputs from your code, or ask a connected AI assistant.

### Can I call this ImmoScout24 tool as an API?

Yes. Send a POST request to /v1/query with your Fous API key and the inputs, and get JSON back.

### How much does it cost?

Each completed run costs 1 credit. Failed runs without a completed receipt are free; completed work can remain charged if delivery is interrupted. With pay as you go, a credit costs 1¢. Monthly plans cost less per credit.

### Do I need a ImmoScout24 account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from immobilienscout24.de when you run it. Some results are reused for up to 24 hours, and results that use your account or key are never reused. It was last verified on Sep 29, 2026.

### What properties are listed in a German city or district?

Search properties returns listings for the location you provide, with details such as price, rooms, address, and advertiser.

### What is the cold rent for a listed property?

Search properties returns the displayed purchase price or cold monthly rent in EUR.

### When is a property available?

Search properties returns availability as displayed on the listing, when available.

## Related

- [Idealista API](https://fous.com/tools/idealista.md): Idealista provides homes for sale and rent in Spain, Italy and Portugal, plus current property listings and latest monthly asking prices per square metre for published areas.
- [Realtor.com API](https://fous.com/tools/realtor-com.md): Realtor.com returns home listings for sale, rent, or recently sold, property details and estimates, and local agent profiles; some fields or sold prices may be missing.
- [Zoopla API](https://fous.com/tools/zoopla.md): UK homes for sale and to rent.
- [Apartments.com API](https://fous.com/tools/apartments-com.md): Apartments.com returns U.S. apartments and homes matching location and optional filters, plus community details; rent and availability may be missing or change.
- [Rightmove API](https://fous.com/tools/rightmove.md): Rightmove searches UK homes for sale or rent and finds recent sold prices; searches return up to 100 listings, and area averages reflect returned properties only.
- [Domain.com.au API](https://fous.com/tools/domain-com-au.md): Search Australian homes for sale, rent and recently sold on Domain.
- [Homes.com API](https://fous.com/tools/homes-com.md): Search homes for sale in the United States.
- [Zillow API](https://fous.com/tools/zillow.md): Zillow provides homes for sale, rental listings, home details, estimates, and housing market figures; rental details, history, schools, estimates, and market figures may be missing or reflect different reporting dates.
- [All Real estate tools](https://fous.com/tools/category/real-estate)
