# derStandard Immobilien Property Search API Documentation

Scrappa's `GET /api/derstandard-immobilien/search` returns Austrian property listings from derStandard Immobilien (immobilien.derstandard.at) for rent, sale or auction as structured JSON.

## What you get

One request returns one page of 15 listings and the real match count in `total`. Each listing has `id`, `url`, `title`, `tenure`, `property_type`, `published_at`, `price` (value, kind and gross or net), `costs` (deposit, monthly costs, fees), `area`, `area_details`, `rooms`, `amenities`, `availability`, a full `address`, all `images`, `external_urls` (video or 3D tour) and the `company` block. Call the listing endpoint for the description, condition, energy data and files.

## Filters are honoured

Every filter is applied by the source, so `total` and the paging describe the real result set. Unknown parameters and unknown values are rejected with `422` instead of being ignored. `applied_filters` echoes what was sent. `tenure` is required: `rent`, `buy` or `auction`. An auction search with no open auctions returns `200` with `total` 0.

## Location

`location` takes a slug and `osm_ids` takes comma-separated OpenStreetMap ids, both from `/api/derstandard-immobilien/autocomplete`. Use one of the two. An unknown location returns an empty list with `total` 0.

## Types and amenities

`property_type` is `apartment`, `house`, `commercial`, `lot`, `investment` or `other` (garage and misc). `building_type`, `property_subtype` and `amenities` take comma-separated lists. `amenities` is an "all of" filter: a listing must have every amenity you list.

## Price and area

`price_min` and `price_max` are in EUR and apply to the main price of the listing (monthly rent for rent, purchase price for sale). Listings with "price on request" have `price` null and never match a price range.

## Pagination

`page` is 1-based and the page size is fixed at 15. A page past the last result page returns an empty list with the real `total`. It never returns another page's listings. The source serves at most 666 pages per search, so deeper pages return `422` (`page_out_of_range`). Narrow the filters instead. The source caches identical queries for about 60 seconds.

## Coordinates

Listings carry no map coordinates. Use `address`, the postal code and the listing endpoint's `osm_ids` and `breadcrumb` for geography.

- **Documentation:** [https://scrappa.co/docs/derstandard-immobilien-api/derstandard_immobilien_search](https://scrappa.co/docs/derstandard-immobilien-api/derstandard_immobilien_search)
- **API group:** derStandard Immobilien API
- **Endpoint:** `GET https://scrappa.co/api/derstandard-immobilien/search`

## Authentication

Send your Scrappa API key in the `X-API-KEY` request header. Paid endpoints also support accountless x402 payments when called without an API key.

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `tenure` | string | Yes | rent, buy or auction. |
| `location` | string | No | Location slug from autocomplete, for example wien or bezirk-graz-umgebung. |
| `osm_ids` | string | No | Comma-separated OpenStreetMap ids from autocomplete. Not together with location. |
| `property_type` | string | No | apartment, house, commercial, lot, investment or other. |
| `price_min` | integer | No | Minimum price in EUR. |
| `price_max` | integer | No | Maximum price in EUR. |
| `area_min` | integer | No | Minimum area in square metres. |
| `area_max` | integer | No | Maximum area in square metres. |
| `rooms_min` | integer | No | Minimum room count. |
| `building_type` | string | No | old_building, new_building or new_build_project. Comma-separated. |
| `property_subtype` | string | No | attic, penthouse, maisonette or studio. Comma-separated. |
| `amenities` | string | No | balcony, garden, elevator, furnished, terrace, parking_spot, pool or no_commission_fee. Comma-separated, all must apply. |
| `q` | string | No | Free-text search in the listing. |
| `company_id` | string | No | Only listings of one agency (company.id from a listing). |
| `sort` | string | No | latest (default), price_asc, price_desc, area_asc or area_desc. |
| `page` | integer | No | Result page, 1-based, up to 666. |

## Example request

```bash
#!/bin/bash

curl -X GET \
    -H "x-api-key: YOUR_API_KEY_HERE" \
    "https://scrappa.co/api/derstandard-immobilien/search?tenure=rent&location=wien&price_max=1200"
```

## Example response

```json
{
    "success": true,
    "market": "austria",
    "currency": "EUR",
    "total": 1200,
    "returned": 1,
    "pagination": {
        "page": 1,
        "per_page": 15,
        "total_pages": 80,
        "has_more": true
    },
    "applied_filters": {
        "tenure": "rent",
        "location": "wien",
        "price_max": 1200,
        "sort": "latest"
    },
    "listings": [
        {
            "id": "15295442",
            "url": "https://immobilien.derstandard.at/detail/15295442",
            "title": "2-Zimmer Mietwohnung nur 6 Minuten von der U1-Station Reumannplatz entfernt",
            "tenure": "rent",
            "property_type": "apartment",
            "published_at": "2026-10-26T02:08:00.000Z",
            "price": {
                "value": 699,
                "currency": "EUR",
                "kind": "base_rent_plus_utilities",
                "type": "gross"
            },
            "costs": [
                {
                    "kind": "operating_costs",
                    "gross": null,
                    "net": 103.75,
                    "vat": null,
                    "text": null
                },
                {
                    "kind": "deposit",
                    "gross": null,
                    "net": null,
                    "vat": null,
                    "text": "3 Bruttomonatsmieten"
                }
            ],
            "area": {
                "kind": "living_space",
                "value": 44,
                "unit": "m2"
            },
            "area_details": {
                "living_space": 44,
                "room_count": 2,
                "balcony_count": 1
            },
            "rooms": 2,
            "amenities": [
                "balcony",
                "no_commission_fee"
            ],
            "availability": {
                "text": null,
                "available_from": null,
                "publish_on": null,
                "short_term_years": null
            },
            "address": {
                "street": null,
                "zip_code": "1100",
                "city": "Wien",
                "district": null,
                "state": "Wien",
                "country_code": "AUT"
            },
            "images": [
                "https://ic.ds.at/w73-Sw/plain/immoimporte/example/image-1.jpg"
            ],
            "external_urls": [],
            "company": {
                "id": "48a658ba-6831-4d77-b600-a52cad70399f",
                "name": "REMAX Capital",
                "website": null,
                "logo": "https://ic.ds.at/mNB3Jw/plain/immoupload/example/logo.jpg",
                "address": null
            }
        }
    ],
    "meta": {
        "endpoint_family": "search",
        "billable": true,
        "attempts": 1,
        "duration_ms": 640
    }
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 422 | Page Out of Range | The `page` lies beyond page 666, the deepest page the source serves (`page_out_of_range`). Narrow the filters instead. A page just past the last result page returns an empty list with the real total. Non-billable. |
| 422 | Validation Error | A query parameter is missing, unknown or unusable. Unknown parameters are rejected, never ignored. Non-billable. |
| 503 | Upstream Unavailable | derStandard Immobilien could not be reached or answered with an error (`upstream_unavailable`). When no outbound connection is available nothing is sent and `meta.attempts` is 0. Retryable and never billed. Clients are never rate limited. |

## More Scrappa resources

- [API documentation](https://scrappa.co/docs)
- [Full LLM-readable API reference](https://scrappa.co/llms-full.txt)
- [OpenAPI specification](https://scrappa.co/docs/api.json)
- [Pricing](https://scrappa.co/pricing)
