# Oikotie Search API Documentation

<p><strong>Oikotie Search API</strong> lists properties for sale or for rent in Finland. Pick a place with the autocomplete route and send its <code>location_id</code>, <code>location_type</code> and <code>location_name</code> together. Without a place the search covers the whole country. Prices are in EUR, rent is per month. A missing value is <code>null</code>, never 0.</p><p>Every item is checked against your filters. Items that break a filter are dropped and counted in <code>meta.dropped_by_filter</code>, so a page can hold fewer items than the limit. A page past the last page returns an empty page with <code>has_next</code> false, never the first page under another number. A valid empty result is billed. A failed request is not billable. Oikotie has no bathrooms filter: the <code>bathrooms</code> parameter is rejected with a validation error.</p><p>Each item carries the price, living area, rooms, build year, fees, address, coordinates, images and the listing agency when the listing has one. Use <code>agency.id</code> with the agency route.</p>

- **Documentation:** [https://scrappa.co/docs/oikotie-api/oikotie_search](https://scrappa.co/docs/oikotie-api/oikotie_search)
- **API group:** Oikotie API
- **Endpoint:** `GET https://scrappa.co/api/oikotie/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 |
| --- | --- | --- | --- |
| `listing_type` | string | No | sale (default) or rent. |
| `location_id` | integer | No | Place id from the autocomplete route. Send with location_type and location_name. |
| `location_type` | string | No | Place type from the autocomplete route: city, district, street, region, postcode or country. |
| `location_name` | string | No | Exact place name from the autocomplete route. |
| `price_min` | integer | No | Minimum price in EUR (rent: per month). |
| `price_max` | integer | No | Maximum price in EUR. |
| `size_min` | number | No | Minimum living area in square meters. |
| `size_max` | number | No | Maximum living area in square meters. |
| `rooms` | array | No | Exact room counts, for example 2 or 2,3. |
| `building_type` | array | No | One or more of apartment_building, row_house, house, leisure, detached, semi_detached, other, loft_house, wood_apartment_house. |
| `habitation_type` | array | No | Sale only. One or more of ownership, right_of_occupancy, part_ownership. |
| `new_development` | boolean | No | true to return new developments only. |
| `construction_year_min` | integer | No | Earliest build year. |
| `construction_year_max` | integer | No | Latest build year. |
| `lot_size_min` | integer | No | Sale only. Minimum lot size in square meters. |
| `sort` | string | No | published_desc (default), published_asc, price_asc, price_desc, size_asc or size_desc. |
| `page` | integer | No | One-based page number. Default 1. |
| `limit` | integer | No | Results per page, 1 to 100. Default 24. |

## Example response

```json
{
    "data": {
        "items": [
            {
                "id": 24755858,
                "url": "https://asunnot.oikotie.fi/myytavat-asunnot/helsinki/24755858",
                "fees": {
                    "currency": "EUR",
                    "maintenance": 166.4,
                    "security_deposit": null
                },
                "size": {
                    "max": 32,
                    "min": 32,
                    "text": "32 m\u00b2"
                },
                "floor": 2,
                "price": {
                    "text": "139 000 \u20ac",
                    "amount": 139000,
                    "period": null,
                    "currency": "EUR"
                },
                "rooms": 1,
                "agency": {
                    "id": 14641782,
                    "logo": "https://cdn.asunnot.oikotie.fi/V8CRBPOmtfRRK3D6h0fI0b4cmMQ=/fit-in/350x70/ot-real-estate-mediabank-prod/513/195/source/214591315",
                    "name": "Bo LKV | Espoo"
                },
                "images": [
                    {
                        "large": "https://cdn.asunnot.oikotie.fi/D0VYWwrzI0owOi936_jOuFJc6ow=/full-fit-in/708x444/filters:background_color(white):format(jpeg):quality(60)/ot-real-estate-mediabank-prod/613/365/source/234563316",
                        "thumbnail": "https://cdn.asunnot.oikotie.fi/jHX2dSF5xjuHW2ZK0bXo_rVd2Uc=/full-fit-in/330x206/filters:background_color(white):format(jpeg)/ot-real-estate-mediabank-prod/613/365/source/234563316"
                    }
                ],
                "visits": 0,
                "address": {
                    "city": "Helsinki",
                    "street": "Ruusutarhantie 5 D",
                    "country": "Suomi",
                    "district": "Haaga",
                    "postcode": "00300"
                },
                "lot_size": 2586,
                "condition": null,
                "published": "2026-10-25T16:57:55Z",
                "build_year": 1960,
                "coordinates": {
                    "latitude": 60.2079,
                    "longitude": 24.8877
                },
                "description": "Talon ylimm\u00e4ss\u00e4 kerroksessa ilta-aurinko l\u00f6yt\u00e4\u00e4 l\u00e4nteen avautuvalle parvekkeelle...",
                "floor_count": 2,
                "listing_type": "sale",
                "next_viewing": null,
                "building_type": "apartment_building",
                "price_changed": null,
                "price_per_sqm": 4343.75,
                "new_development": false,
                "room_configuration": "1h, kt, alkovi, kph, et, parveke (yj 1 h + kk + parveke)"
            }
        ],
        "pagination": {
            "page": 1,
            "limit": 24,
            "total": 8191,
            "has_next": true,
            "total_pages": 342,
            "total_is_estimate": false
        }
    },
    "meta": {
        "billable": true,
        "endpoint_family": "search",
        "dropped_by_filter": 0
    },
    "success": true
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 422 | Validation Error | A required parameter or a value is invalid. This response is not billable. |
| 503 | Upstream Unavailable | Oikotie could not be reached or returned data that does not match the request. This response is not billable and is retryable. |

## 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)
