Discover/kv API
live

kv APIkv.ee

Search and retrieve property listings from kv.ee, Estonia's largest real estate portal. Filter by county, price, area, and deal type via 2 endpoints.

This API takes change requests — .
Endpoint health
verified 5h ago
get_listing
search_listings
2/2 passing latest checkself-healing
Endpoints
2
Updated
11h ago

What is the kv API?

The kv.ee API provides access to Estonia's largest real estate portal through 2 endpoints covering listing search and listing detail retrieval. The search_listings endpoint returns paginated results with address, price, area, and price per square meter across apartments, houses, and other property types. The get_listing endpoint returns full property attributes, coordinates, images, and free-text descriptions for any individual listing.

Try it
Page number for pagination (50 results per page).
County ID for location filter (e.g. '1' for Harjumaa). Obtainable from site dropdowns.
Parish/city ID for location filter (e.g. '1061' for Tallinn). Obtainable from site dropdowns.
Sort order for results.
Maximum area in square meters.
Minimum area in square meters.
Transaction type filter.
Maximum price in euros.
Minimum price in euros.
Maximum number of rooms.
Minimum number of rooms.
api.parse.bot/scraper/a3bfb1cb-10a8-4df2-8699-8627281e6a54/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/a3bfb1cb-10a8-4df2-8699-8627281e6a54/search_listings?page=1&county=1&parish=1061&orderby=cdwl&area_max=100&area_min=40&deal_type=1&price_max=200000&price_min=50000&rooms_max=3&rooms_min=2' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace kv-ee-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: kv_ee_api SDK — bounded, re-runnable; every call capped."""
from parse_apis.kv_ee_api import KvEe, DealType, SortOrder, ListingNotFound

client = KvEe()

# Search for apartments for sale in Tallinn, sorted by price
for listing in client.listings.search(
    deal_type=DealType.SALE,
    county="1",
    parish="1061",
    orderby=SortOrder.CHEAPEST,
    limit=3,
):
    print(listing.address, listing.price, listing.rooms)

# Drill-down: take one listing and get full details
item = client.listings.search(deal_type=DealType.RENT, parish="1061", limit=1).first()
if item:
    full = item.details()
    print(full.title, full.price, full.description[:100])

# Direct get by ID with typed error handling
try:
    detail = client.listings.get(listing_id="3599884")
    print(detail.title, detail.latitude, detail.longitude)
except ListingNotFound as e:
    print(f"listing gone: {e.listing_id}")

print("exercised: listings.search / listings.get / ListingSummary.details")
All endpoints · 2 totalmissing one? ·

Search real estate listings with filters for deal type, location, rooms, price, and area. Returns paginated results (50 per page) with total count. Results are auto-iterated; no page/cursor param to pass.

Input
ParamTypeDescription
pageintegerPage number for pagination (50 results per page).
countystringCounty ID for location filter (e.g. '1' for Harjumaa). Obtainable from site dropdowns.
parishstringParish/city ID for location filter (e.g. '1061' for Tallinn). Obtainable from site dropdowns.
orderbystringSort order for results.
area_maxstringMaximum area in square meters.
area_minstringMinimum area in square meters.
deal_typestringTransaction type filter.
price_maxstringMaximum price in euros.
price_minstringMinimum price in euros.
rooms_maxstringMaximum number of rooms.
rooms_minstringMinimum number of rooms.
Response
{
  "type": "object",
  "fields": {
    "page": "current page number",
    "total": "total number of listings matching the search criteria",
    "listings": "array of listing summaries with id, url, address, rooms, area, price, price_per_m2, description, and label"
  },
  "sample": {
    "data": {
      "page": 1,
      "total": 3638,
      "listings": [
        {
          "id": "3884842",
          "url": "https://www.kv.ee/harjumaa-tallinn-lasnamae-paekaare-tn-44-1-tuba-32-3884842.html",
          "area": "32.7 m2",
          "label": "",
          "price": "1 EUR",
          "rooms": "1",
          "address": "Paekaare tn 44, Lasnamae, Tallinn",
          "description": "Vajab renoveerimist, elektripliit, parkimine tasuta",
          "price_per_m2": "0.03 EUR/m2"
        }
      ]
    },
    "status": "success"
  }
}

About the kv API

Search Listings

The search_listings endpoint accepts filters including deal_type (sale or rent), county and parish IDs for location scoping, price_max, area_min, area_max, and an orderby sort parameter. Results are paginated at 50 listings per page; pass the page parameter to iterate. Each result in the listings array includes the listing id, url, address, rooms, area, price, price_per_m2, a short description, and a label. The total field gives the full count of matching listings, which you can use to determine how many pages to fetch.

Listing Detail

The get_listing endpoint accepts a numeric listing_id (available from search_listings results) and returns a richer data shape. The details object contains Estonian-language property attributes such as Tube (rooms), Uldpind (total area), Korrus/Korruseid (floor/floors), Ehitusaasta (year built), Seisukord (condition), Omandivorm (ownership type), and Energiamargis (energy class). The response also includes latitude and longitude coordinates, an images array of photo URLs, a full description text, and price_per_m2.

Coverage and ID Lookups

Location IDs for county and parish parameters (e.g., '1' for Harjumaa, '1061' for Tallinn) correspond to the dropdown values used on kv.ee. These are stable numeric strings. The listing_id used by get_listing is the same numeric identifier exposed in each search result's id field and in the listing url, so the two endpoints compose naturally into a search-then-fetch workflow.

Reliability & maintenanceVerified

The kv API is a managed, monitored endpoint for kv.ee — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when kv.ee changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official kv.ee API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
5h ago
Latest check
2/2 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Monitor asking prices and price-per-m2 trends across Estonian counties for market analysis.
  • Build a property alert system that checks new listings matching specific room count, area, and price filters.
  • Aggregate listing coordinates to map real estate inventory density by parish or county.
  • Compare energy class (Energiamargis) distribution across listings in Tallinn versus other regions.
  • Track year-built (Ehitusaasta) and condition (Seisukord) data to identify renovation-era housing stock.
  • Compile listing image URLs for visual datasets or automated property photo catalogues.
  • Feed structured listing data (price, area, rooms, floor) into a valuation or comparables model.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does kv.ee have an official developer API?+
kv.ee does not publish a public developer API or documented data access program for third-party developers.
What location identifiers does search_listings accept?+
The endpoint accepts county and parish as numeric string IDs. For example, '1' targets Harjumaa county and '1061' targets Tallinn. These IDs correspond to the location dropdown values on kv.ee. You can supply both together to narrow results to a specific city within a county, or use either alone.
Does the API return seller or agent contact information?+
Neither search_listings nor get_listing currently expose contact details such as agent name, phone number, or email. The API covers property attributes, pricing, coordinates, images, and description text. You can fork this API on Parse and revise it to add a contact-details endpoint if that data is needed.
How does pagination work in search_listings?+
Results are returned 50 per page. Pass the integer page parameter to request subsequent pages. The total field in the response gives the total matching listing count, so you can calculate the number of pages as ceil(total / 50). There is no cursor parameter — page number is the only pagination control.
Are historical listings or sold/rented property records available?+
The API returns currently active listings from kv.ee. Sold, expired, or delisted properties are not covered. If you need historical transaction records or a sold-price dataset, those are not part of the current endpoints. You can fork this API on Parse and revise it to add a historical or archived listings endpoint.
Page content last updated . Spec covers 2 endpoints from kv.ee.
Related APIs in Real EstateSee all →
krisha.kz API
Search and browse real estate listings across Krisha.kz to find properties for sale, rent, or new developments, then access detailed information and contact details for each listing. Get comprehensive property data including prices, descriptions, and seller information to make informed decisions about properties in Kazakhstan.
ss.lv API
Browse real estate and spare parts listings from ss.lv, search by keywords, and view detailed information about specific listings. Get instant access to property and automotive parts data to find what you're looking for on one of Latvia's largest marketplaces.
ingatlan.com API
Search real estate listings and development projects on ingatlan.com to find properties with detailed information like prices, descriptions, and project details. Get comprehensive data on available homes and construction projects even when direct access is restricted.
daft.ie API
Search and browse property listings for sale and rental across Ireland with customizable filters, then view complete details for any property that interests you. Access real-time data directly from Ireland's largest property marketplace to find your next home or investment.
immowelt.de API
Search and browse real estate listings across Germany on Immowelt.de, with access to property details, images, and features for both rentals and sales. Filter results by location and sorting preferences to find properties that match your needs.
housing.com API
Search and retrieve real estate listings on Housing.com. Browse properties for sale, rent, plots, and commercial spaces across major Indian cities with filtering by locality and property type.
vivareal.com.br API
Search for properties across Brazil's real estate marketplace and access detailed listings with photos, amenities, contact information, and agency portfolios. Discover homes by location, browse available property types, and connect directly with real estate advertisers.
vrbo.com API
Search and browse vacation rental listings on Vrbo by location, date range, and guest count. Retrieve detailed information about specific properties including descriptions, amenities, photos, pricing, guest reviews, and availability — everything needed to compare rental options in one place.