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"
import requests
r = requests.get("https://cenogram.pl/api/v1/transactions",
headers={"Authorization": "Bearer YOUR_API_KEY"},
params={"district": "Mokotów", "propertyType": 4, "sort": "date", "limit": 5})
print(r.json())
// Prompt to Claude with the MCP Server:
"Check parcel 126104_9.0015.201: what has been
sold on it, and is there any flood risk?"
→ resolve_parcel(parcelId="126104_9.0015.201")
→ search_transactions(parcelId="126104_9.0015.201")
→ get_transaction_flood(transaction_id="…")
Try it without signing up
A real request against our API, up to 5 results.
Click "Run" to see the response
Showing 5 results.
What you can build
Appraisal and valuation
Comparable transactions from notarial deeds instead of listings. Filter by type, area, floor, ownership type and date.
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.
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.
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.
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"
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"
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"
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"
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"
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"
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"
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"
Demographic context
Municipality-level indicators - Podkowa Leśna
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://cenogram.pl/api/v1/demographics?teryt=1405021"
What our users are building
"We are building a property portal and we use the Cenogram API to estimate listing values. Everything works well."
"I'm building a tool that compares listing prices to real transactions nearby. The API just works -search_transactions,search_by_area,get_price_statisticscover everything I need."
Pricing
Free
To try it out
400 tokens to start
- - All endpoints
- - MCP Server
- - 400 tokens to start
Starter
For appraisers and developers
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
Higher volume + individual DPA
- - Everything in Starter
- - Larger token pool (negotiated)
- - Individual DPA / SLA
- - Priority support
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.
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"
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"
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"
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"
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"
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
"I have parcel identifier 126104_9.0015.201. What has happened on it, and is anything constraining it?"
→ 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
Claude with a Cenogram account
Sign in with your Cenogram account and start right away
- Open claude.ai → Settings → Connectors
- Click Add custom connector:
Name: Cenogram
URL: https://mcp.cenogram.pl/mcp - Click Authorize - sign in with your Cenogram account
- 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.
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.