Etuovi Listing API returns one listing: price in EUR, debt-free price, price per square meter, fees, living and total area, rooms, bedrooms when given, floor, year built, condition, heating, features, room descriptions, address with coordinates and location codes, the housing company with plot, energy certificate, features and renovations, all images, floor plans, links, the agent and the agency. Send the friendly_id from search as id. Sale and rent use the same id format, so send the matching listing_type. A missing value is null. For rent the price is the monthly rent and the response adds deposit, agreement type, pets, smoking, availability and special terms. A private seller or lessor is not returned as an agent, and phone numbers are never returned.
Run this endpoint
Endpoint
Parameters
Start with the required fields, then add optional filters only when your use case needs them.
Runnable path
1 required parameter needed before sending a request.
1 optional filter available.
string
Required
Listing id (friendly_id) from search. Example: 80541041.
1234567890
string
Optional
sale (default) or rent. It must match the listing.
example
Response Schema
Example response fields are illustrative; inspect the JSON before integrating.
Example response fields
Scan these fields before integrating.
data
meta
success
{
"data": {
"id": 2751484,
"geo": {
"lat": 60.18451,
"lng": 24.94434,
"accuracy": "ADDRESS"
},
"url": "https://www.etuovi.com/kohde/80541041",
"area": 46,
"fees": [
{
"type": "HOUSING_COMPANY_MAINTENANCE_CHARGE",
"amount": 239.2,
"period": "MONTH",
"included_in_overall_cost": null
},
{
"type": "SAUNA",
"amount": 11,
"period": "MONTH",
"included_in_overall_cost": null
}
],
"agent": {
"name": "Tuomo Ik\u00e4l\u00e4inen",
"image": "https://images.example.com/800x600/etuovimedia/images/agent/import/41383e893b76788fdf9f4f871772c49e/fb9d63575dac718841c4a148ab362a04/ORIGINAL.png",
"title": "yritt\u00e4j\u00e4, LKV, LVV, KTM",
"is_premium": false,
"realtor_id": 1888
},
"floor": 3,
"links": [],
"price": {
"amount": 242000,
"period": null,
"currency": "EUR",
"is_share_price": false
},
"rooms": {
"type": "TWO_ROOMS",
"count": 2,
"structure": "2 h, avok, kph, et"
},
"images": [
{
"id": 88485594,
"url": "https://images.example.com/1200x800/etuovimedia/images/property/import/484/2751484/0e76b9541118d347871c0e0e51d244c4/e6bc40ad5a4e9b4751ab2058ad81b44e/ORIGINAL.jpeg",
"type": "OTHER"
},
{
"id": 88485596,
"url": "https://images.example.com/1200x800/etuovimedia/images/property/import/484/2751484/0e76b9541118d347871c0e0e51d244c4/f03d5d0dda8c3ddf1ed3a4c776c73482/ORIGINAL.jpeg",
"type": "OTHER"
}
],
"office": {
"id": 3421,
"city": "Helsinki",
"logo": null,
"name": "Maininki LKV",
"street": "Vesimyllyntie 4a",
"postal_code": "00920"
},
"status": "PUBLISHED",
"address": {
"region": "Uusimaa",
"street": "Kolmas Linja 31 B",
"country": "Suomi",
"district": "Kallio",
"apartment": "B",
"post_area": "HELSINKI",
"postal_code": "00530",
"house_number": "31",
"municipality": "Helsinki"
},
"heating": {
"systems": [
"DISTRICT_HEATING"
],
"description": "Kaukol\u00e4mp\u00f6"
},
"bedrooms": null,
"features": [],
"condition": "GOOD",
"fees_note": null,
"total_area": 46,
"updated_at": "2026-10-25T15:00:36+00:00",
"year_built": 1938,
"description": "Kolmas Linja 31:ss\u00e4 on nyt myynniss\u00e4 valoisa, siisti kaksio Kallion syd\u00e4mess\u00e4. T\u00e4m\u00e4 asunto on ihanteellinen valinta, jos arvostat keskeist\u00e4 sijaintia kantakaupungissa, muuttovalmis...",
"floor_count": 6,
"floor_plans": [
"https://images.example.com/1200x800/etuovimedia/images/property/import/484/2751484/0e76b9541118d347871c0e0e51d244c4/8eee63967a574cafa16a016c1092e8ca/ORIGINAL.jpeg"
],
"friendly_id": "80541041",
"availability": "Heti",
"listing_type": "sale",
"new_building": false,
"open_bidding": false,
"published_at": "2026-10-25T15:00:36+00:00",
"price_per_sqm": 5260.87,
"property_type": "RESIDENTIAL",
"location_codes": {
"region": "FI_UUSIMAA",
"district": "FI_UUSIMAA_HELSINKI_KALLIO",
"post_code": "FI_UUSIMAA_HELSINKI_00530_HELSINKI",
"municipality": "FI_UUSIMAA_HELSINKI"
},
"ownership_type": "OWN",
"debt_free_price": 242000,
"housing_company": {
"name": "Asunto Oy Aurinkola",
"manager": "Manager Oy, Test Person, 000...",
"features": [
"ATTIC_CABIN",
"ELEVATOR",
"LAUNDERETTE",
"DRYING_ROOM",
"CELLAR_CABIN",
"SPORTS_EQUIPMENT_STORAGE",
"SAUNA"
],
"plot_area": 862,
"maintainer": "Huoltoyhti\u00f6",
"other_info": "Muuta: Taloyhti\u00f6n kiinnitykset: 276\u00a0000\u00a0\u20ac....",
"floor_count": 6,
"renovations_done": "2025 Kylpyhuoneiden kuntoarvio\n2014 L\u00e4mm\u00f6nvaihtime...",
"plot_holding_type": "OWN",
"energy_certificate": "E18_E",
"renovations_planned": "2026 Huoneistojen m\u00e4rk\u00e4tilat (500 000 \u20ac), palovaro...",
"energy_certificate_note": "Energialuokka: E2018, Energiatodistuksen voimassaoloaika: 30.01.2036"
},
"property_subtype": "APARTMENT_HOUSE",
"room_descriptions": {
"bedroom": "Sein\u00e4materiaalit: maalattu",
"living_room": "Sein\u00e4materiaalit: maalattu"
}
},
"meta": {
"billable": true,
"endpoint_family": "listing"
},
"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": {
"id": [
"The id field is required."
]
},
"message": "The request validation failed"
}Not Found
No listing has this id for this listing type. This response is not billable.
{
"meta": {
"billable": false,
"retryable": false,
"endpoint_family": "listing"
},
"error": {
"code": "NOT_FOUND",
"message": "The requested resource was not found."
},
"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": "listing"
},
"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.