Etuovi Search API lists properties for sale or for rent in Finland. Send a location place name, or a location_type with a location_code from the autocomplete route, or neither for all of Finland. A place name uses the first matching place and returns it in meta.location; an unknown place returns 422. Prices are in EUR, rent is per month. A missing value is null, never 0.
There is no bedroom or bathroom filter on the site. Use room_counts. Some sale items show only the share price of the housing company: then price.amount is null and price.is_share_price is true. A search by place name costs one extra lookup for the place and is cached. Rentals support residential properties only. Items that break a requested filter are dropped and counted in meta.dropped_by_filter. With a price filter, share-price items are dropped too, because their real price is not known. A page past the last page is empty with has_next false. The sort price_asc lists items without a price first. Rent listings have no public page, so url is null for rent.
Run this endpoint
Endpoint
Parameters
Start with the required fields, then add optional filters only when your use case needs them.
Runnable path
This endpoint has no required query parameters.
17 optional filters available.
string
Optional
sale (default) or rent.
example
string
Optional
Place name, for example Tampere. Send location or location_type with location_code.
Austin, Texas
string
Optional
Place type from the autocomplete route, for example CITY, DISTRICT or POST_CODE. Send with location_code.
example
string
Optional
Place code from the autocomplete route, for example FI_PIRKANMAA_TAMPERE.
example
string
Optional
residential (default), plot, leisure, estate or other. Rentals: residential only.
example
string
Optional
Comma-separated: apartment_house, row_house, semi_detached_house, detached_house, separate_house, balcony_access_block, wooden_house_apartment.
example
string
Optional
Comma-separated: 1, 2, 3, 4, 5 or more_than_five. Residential only.
example
integer
Optional
Minimum price in EUR (rent: per month).
10
integer
Optional
Maximum price in EUR (rent: per month).
10
integer
Optional
Minimum living area in square meters.
10
integer
Optional
Maximum living area in square meters.
10
integer
Optional
Earliest year built. Residential only.
10
integer
Optional
Latest year built. Residential only.
10
integer
Optional
Only listings of this agency, from the agencies route.
1234567890
string
Optional
newest (default), oldest, price_asc, price_desc, area_asc, area_desc, year_asc or year_desc.
relevance
integer
Optional
One-based page number. Default 1, maximum 500.
1
integer
Optional
Items per page: 30 (default), 50 or 100.
10
Response Schema
Example response fields are illustrative; inspect the JSON before integrating.
Example response fields
Scan these fields before integrating.
data
meta
success
{
"data": {
"items": [
{
"id": 2750637,
"geo": {
"lat": 61.496895,
"lng": 23.899103
},
"url": "https://www.etuovi.com/kohde/hh3276",
"area": 44.5,
"agent": null,
"floor": 1,
"image": "https://images.example.com/800x600/etuovimedia/images/property/import/637/2750637/0e76b9541118d347871c0e0e51d244c4/88e23ef344929c13f4892b0e6d37597a/ORIGINAL.jpeg",
"price": {
"amount": null,
"period": null,
"currency": "EUR",
"is_share_price": true
},
"office": {
"id": 338,
"url": "https://www.yhkodit.fi/asiakaspalvelu",
"logo": "https://images.example.com/800x600/etuovimedia/images/logos/customerlogo338_7.jpg",
"name": "YH Kodit Oy, Tampere"
},
"location": "Pikkupiiankatu 3 Linnainmaa Tampere",
"room_count": {
"type": "TWO_ROOMS",
"count": 2
},
"total_area": null,
"updated_at": "2026-10-23T16:00:08+00:00",
"year_built": 1993,
"floor_count": 3,
"friendly_id": "hh3276",
"availability": null,
"listing_type": "sale",
"new_building": false,
"price_change": null,
"published_at": "2026-10-23T16:00:08+00:00",
"next_showings": [],
"property_type": "RESIDENTIAL",
"address_line_1": "Pikkupiiankatu 3",
"address_line_2": "Linnainmaa Tampere",
"preview_images": null,
"room_structure": "2H + KK + S",
"property_subtype": "APARTMENT_HOUSE",
"is_private_lessor": null
},
{
"id": 2596617,
"geo": {
"lat": 61.449391,
"lng": 23.835539
},
"url": "https://www.etuovi.com/kohde/fp3486",
"area": 12.5,
"agent": null,
"floor": null,
"image": "https://images.example.com/800x600/etuovimedia/images/property/import/617/2596617/0e76b9541118d347871c0e0e51d244c4/1cf4d4513b7c0a941f968332303ebd82/ORIGINAL.jpeg",
"price": {
"amount": 10900,
"period": null,
"currency": "EUR",
"is_share_price": false
},
"office": null,
"location": "Opiskelijankatu 29 Hervanta Tampere",
"room_count": null,
"total_area": 12.5,
"updated_at": "2026-05-31T17:37:29+00:00",
"year_built": 2019,
"floor_count": null,
"friendly_id": "fp3486",
"availability": null,
"listing_type": "sale",
"new_building": false,
"price_change": null,
"published_at": "2026-05-31T17:37:29+00:00",
"next_showings": [],
"property_type": "RESIDENTIAL",
"address_line_1": "Opiskelijankatu 29",
"address_line_2": "Hervanta Tampere",
"preview_images": null,
"room_structure": "Autohallipaikka",
"property_subtype": "APARTMENT_HOUSE",
"is_private_lessor": null
}
],
"pagination": {
"page": 1,
"total": 1256,
"has_next": true,
"per_page": 30,
"total_pages": 42
}
},
"meta": {
"billable": true,
"location": {
"code": "FI_PIRKANMAA_TAMPERE",
"name": "Tampere",
"type": "CITY",
"full_name": "Tampere"
},
"endpoint_family": "search",
"dropped_by_filter": 0
},
"success": true
}
Errors
Handle these documented responses before retrying or showing customer-facing failures.
Validation Error
A required parameter or a value is invalid. This response is not billable.
{
"errors": {
"property_type": [
"The selected property type is invalid."
]
},
"message": "The request validation failed"
}Unknown Location
The location text matches no place. Use the autocomplete route. This response is not billable.
{
"meta": {
"billable": false,
"retryable": false,
"endpoint_family": "search"
},
"error": {
"code": "VALIDATION_ERROR",
"message": "The location is not a known place. Use the autocomplete route to find a location_type and location_code."
},
"success": false
}Upstream Unavailable
Etuovi could not be reached or returned data that does not match the request. This response is not billable and is retryable.
{
"meta": {
"billable": false,
"retryable": true,
"endpoint_family": "search"
},
"error": {
"code": "UPSTREAM_UNAVAILABLE",
"message": "Etuovi could not be reached. Please retry shortly."
},
"success": false
}Generate Code with AI
Copy a ready-made prompt with all the endpoint details, parameters, and example responses. Paste it into ChatGPT, Claude, or any AI assistant to instantly generate working code.
Try It Live
Test this endpoint in our interactive playground with real data.