Cenogram
PL
Polish property data - API and AI

Transaction prices and parcel context
- in an API and in Claude

8.8M Polish notarial deeds from the national real estate price registry (RCN), plus per-parcel context. REST API and MCP Server. 400 free tokens to start.

Recorded sale prices, not listing prices.

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://cenogram.pl/api/v1/transactions?district=Mokot%C3%B3w&propertyType=4&sort=date&limit=5"

API documentation →

8M+
transactions
380
counties
20+
MCP tools
110 ms
p95, measured 07.2026

Try it without signing up

A real request against our API, up to 5 results.

GET

Click "Run" to see the response

What you can build

Appraisal and valuation

Comparable transactions from notarial deeds instead of listings. Filter by type, area, floor, ownership type and date.

filtered transactions buildings heritage register

Listing verification

A ready value estimate for an apartment in one call - with a range and a confidence measure. Compare it against the asking price and filter out the outliers.

value estimate → nearby transactions

Parcel due diligence

Before you buy or value: what constrains development, what is going on around it, and what has already been filed for construction.

parcel report → flood risk → zoning permits → landslides surroundings farmland

Market analysis and reporting

Medians, histograms and trends for a county, a district or a single street - together with context for the municipality the property sits in.

Spatial search

Transactions inside a polygon, a bounding box or a radius - for price maps and investment-area analysis.

polygon and bbox public transport

AI agent

MCP Server for Claude, Cursor and VS Code. The agent asks about a parcel, pulls its deed history and enriches it with transaction data.

Examples on real data

1,378 comparable transactions

~55 sqm apartments, Toruń, secondary market

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://cenogram.pl/api/v1/transactions?district=Toru%C5%84&propertyType=4&marketType=2&minArea=45&maxArea=65&dateFrom=2024-04-01&sort=date"
1,378 transactions, median 8,340 PLN/sqm

Price history for one street

Starowiejska st., Gdańsk, since 2020

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://cenogram.pl/api/v1/transactions?street=Starowiejska&district=Gda%C5%84sk&dateFrom=2020-01-01&sort=date"
2,786 transactions. The filter includes deeds where Starowiejska is one of several streets - that is why other names show up in the results.

Everything inside a polygon

Spatial search, GeoJSON polygon

curl -X POST -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"polygon":{"type":"Polygon","coordinates":[[[20.95,52.22],[20.98,52.22],[20.98,52.25],[20.95,52.25],[20.95,52.22]]]}}' \
  "https://cenogram.pl/api/v1/transactions/spatial"
19,813 transactions inside that polygon, with coordinates

Niche valuation - warehouses on industrial land

Combine building type (PKOB) with zoning designation

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://cenogram.pl/api/v1/transactions?buildingType=125&mpzpDesignation=terenObiektowProdukcyjnychSkladowIMagazynow&dateFrom=2023-01-01&sort=date"
789 transactions: tanks, silos and warehouses × industrial-storage zoning - 2 filters in one request

Unit function - retail and service units

Kraków city centre, filtered by unit function

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://cenogram.pl/api/v1/transactions?district=Krak%C3%B3w-%C5%9Ar%C3%B3dmie%C5%9Bcie&propertyType=4&unitFunction=2&dateFrom=2024-01-01&sort=date"
50 retail and service units in central Kraków, filtered by unit function

Zoning designation - single-family plots

Poznań, land zoned for single-family housing

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://cenogram.pl/api/v1/transactions?district=Pozna%C5%84&propertyType=1&mpzpDesignation=budownictwoMieszkanioweJednorodzinne&dateFrom=2024-01-01&sort=date"
321 plots zoned MN in Poznań - a zoning filter combined with the deed price. The exact count comes from /transactions/summary - the list returns an approximation (pagination.estimated).

All endpoints and parameters in the documentation →

Not just the price - what else we know about a transaction

In the same response as the price: building attributes, flood hazard zone and statistical indicators for the municipality

Building attributes in the results

Developed residential property, Poznań

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://cenogram.pl/api/v1/transactions?district=Pozna%C5%84&propertyType=3&buildingType=110&dateFrom=2024-01-01&sort=date"
1,321 transactions carrying footprint_area_m2, building_storeys, est_total_area_m2. Exact count from /transactions/summary.

Flood zone filter

Wrocław, medium or high hazard

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://cenogram.pl/api/v1/transactions?district=Wroc%C5%82aw&floodRisk=medium,high&dateFrom=2023-01-01&sort=date"
7,204 transactions on parcels inside a mapped flood hazard zone. Exact count from /transactions/summary.

Demographic context

Municipality-level indicators - Podkowa Leśna

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://cenogram.pl/api/v1/demographics?teryt=1405021"
Podkowa Leśna: 5,633 PLN of income tax per resident and 49.7% with a university degree - wealthier than Warsaw itself

What our users are building

"We are building a property portal and we use the Cenogram API to estimate listing values. Everything works well."
P
Patryk Idzikowski
Developer
"I'm building a tool that compares listing prices to real transactions nearby. The API just works - search_transactions, search_by_area, get_price_statistics cover everything I need."
M
Mark Chepicov
Developer

Pricing

Free

To try it out

0 PLN

400 tokens to start

  • - All endpoints
  • - MCP Server
  • - 400 tokens to start

Starter

For appraisers and developers

99 PLN net / month

2,000 tokens / month

  • - Everything in Free
  • - 2,000 tokens across API and MCP
  • - Full access to the web search app (Polish UI)

Enterprise

Funds, banks, proptech

Talk to us

Higher volume + individual DPA

  • - Everything in Starter
  • - Larger token pool (negotiated)
  • - Individual DPA / SLA
  • - Priority support
Talk to us
Prices net of 23% Polish VAT · Billed in PLN · VAT invoice on request · No contracts · Free plan needs no card
Visa Mastercard BLIK Apple Pay Google Pay

Token cost: 1 = statistics, reference data, parcel identification and municipality context · 2 = transaction search (list, map, histogram) · 4 = one data layer for a given parcel or transaction, or a parcel's deed history · 5 = value estimate, polygon search and geometry export · 35 = the full parcel report (every layer plus market and municipality context in a single call) - if no layer has anything to show it drops to 1, and if the parcel cannot be resolved it is refunded in full. Location catalogues are free.

The API is production-ready - HTTPS, rate limits, token-based billing. For higher SLAs and priority support, get in touch.

What we know about a parcel

Pass a cadastral parcel identifier and you get the cadastral record, the deed history and context layers. It works for any existing parcel in Poland, not only the ones with a transaction history.

Flood
hazard category
Zoning
zone and parameters
Permits
construction filings
Buildings
footprint and storeys
Heritage
listing and buffer zone
Landslides
at-risk terrain
Surroundings
distance to nuisances
Transport
distance to stops
Farmland
area under cultivation
Demographics
municipality context
Infrastructure signals
municipality context
Value estimate
apartments, 10-250 sqm

Full parcel report - every layer in one call

Głogów, 4,800 sqm

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://cenogram.pl/api/v1/parcels/020302_2.0002.369-14/report"
→ one call instead of ten: listed heritage monument (an 1826 palace, 19th-century park), 100% of the area inside a flood zone and zoning class SW - exactly as the API returns them (state as of the response's as_of field)

Deed history for a single parcel

Kraków-Podgórze, Paproci st., 500 sqm

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://cenogram.pl/api/v1/parcels/126104_9.0015.201/transactions"
5 deeds on the same parcel in 14 months, each for 90,000 PLN - but for different ownership shares (1/5, 2/5, 2/10). Without the ownership_share field this would look like five sales at an identical price.

Flood risk for a parcel with no transaction history

Zielonki municipality, 10,050 sqm - never in the price registry

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://cenogram.pl/api/v1/parcels/120617_2.0001.179/flood"
→ high hazard, fluvial 1-in-10-year scenario - for a parcel that has never been the subject of a deed

Zoning class from the municipal general plan

Poznań, 4,900 sqm

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://cenogram.pl/api/v1/parcels/306401_1.0021.AR_16.14-17/planning"
→ mixed-use zone with multi-family housing, 100% of the parcel area

What is built on the parcel

Same parcel in Poznań

curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://cenogram.pl/api/v1/parcels/306401_1.0021.AR_16.14-17/buildings"
2 structures, 3,336 sqm of footprint, retail and service category
AI and MCP

Cenogram inside Claude

Ask in plain English about Polish transaction prices. The AI picks the tools, filters the data and returns the analysis.

What you can do over MCP

An analyst asks:

"I have parcel identifier 126104_9.0015.201. What has happened on it, and is anything constraining it?"

Claude with the Cenogram MCP
→ resolve_parcel(parcelId="126104_9.0015.201")
→ search_transactions(parcelId="126104_9.0015.201")
→ get_transaction_flood(transaction_id="...")

The agent resolves the parcel, pulls the notarial deed history recorded against that identifier and enriches it with transaction context - flood hazard zone, permits, surroundings.

The full parcel layers - flood, zoning, permits - are available in the REST API, and in MCP as the single get_parcel_report tool

The agent has over 20 tools at its disposal - search, statistics, transaction and municipality context. Experimental tools are marked [Beta]. Full list in the documentation →

Connect Cenogram to your AI

C

Claude with a Cenogram account

Sign in with your Cenogram account and start right away

  1. Open claude.ai → Settings → Connectors
  2. Click Add custom connector:
    Name: Cenogram
    URL: https://mcp.cenogram.pl/mcp
  3. Click Authorize - sign in with your Cenogram account
  4. Pick the latest Opus model in the menu at the bottom of the chat window

Works on claude.ai, Claude Desktop and the mobile app. Requires a free Cenogram account.

Walkthrough narrated in Polish - the clicks are the same.

Claude Code

One command in the terminal

claude mcp add cenogram \
  https://mcp.cenogram.pl/mcp \
  -t http \
  -H "Authorization: Bearer YOUR_API_KEY"

Requires an API key

Cursor / VS Code

JSON configuration with an API key

{
  "mcpServers": {
    "cenogram": {
      "type": "http",
      "url": "https://mcp.cenogram.pl/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

Requires an API key

Official RCN data

The data comes from the national real estate price registry (RCN) - Poland's official, public registry of transaction prices. 8.8M transactions across 380 counties, going back to 2003, standardised into a single schema.

Open data Art. 40c PGiK Since 2003

Questions and answers

The national real estate price registry (Rejestr Cen Nieruchomosci) - Poland's official public registry of transaction prices. It records prices from notarial deeds, not asking prices from listings. You get them cleaned, geocoded and ready to filter, with all 380 counties standardised into one schema.

Free plan: 400 tokens, one-off. Starter: 2,000 tokens per month. The per-minute request limit depends on the endpoint - typically 20 on a free key and 60 on Starter (a paid account gets three times the throughput). No limit on the number of API keys.

A single request - not a record, not a month. A request costs 1 to 5 tokens depending on the endpoint, and a full parcel report costs 35. The rates are listed under the pricing table, and location catalogues are free. When there is nothing for us to check - we do not know that parcel, it has no geometry, or we have no source for that area - the tokens go back to your account. A check that returns "nothing found" is an answer and is billed.

Yes. Pass a cadastral parcel identifier and you get its cadastral record, the history of notarial deeds recorded against that identifier, and context layers - flood, zoning, building permits, buildings, surroundings and the rest. It works for any existing parcel in Poland, including ones that have never been transacted. Coordinate lookup works for parcels already in our database - for the rest, pass the identifier. Parcel layer responses carry an as_of date.

It returns a comparable-sales estimate - an estimated value with a range, a confidence measure and the number of transactions it was computed from. The basis is deed prices, not asking prices. This is not a formal appraisal under Polish law - the feature is marked [Beta] and covers apartments between 10 and 250 sqm.

The REST API is plain HTTP endpoints (curl, Python, JS). The MCP Server lets AI agents (Claude, Cursor, VS Code) use the same data on their own - the agent picks the tools and parameters from your question. Same data, same API key. Not writing code: sign in with a Cenogram account on claude.ai or in Claude Desktop and just ask. Writing code: put your API key in the MCP configuration for Claude Code or Cursor.

Full API documentation - endpoint reference and live request testing →

Start for free

400 tokens to start. API key in 30 seconds.