SITE API

Deweloperuch

Polish flat prices of two kinds that must not be mixed. RCN transaction prices are what flats actually sold for, from the notarial deeds in the national price register; the newest months are incomplete because deeds arrive late, and the statistics flag them. Developers’ asking prices come from the price lists developers publish daily on dane.gov.pl, with every offer’s full price history and flags for its 30- and 90-day lowest price and for suspicious discounts. Ten tools cover locations, a value estimate, price series and rankings, buildings, developments, developers and offers. Requests queue at one a second, results are cached and nothing is retried; after an HTTP 401, 403 or 429 or a challenge every tool answers STOP (at least 90 seconds after a 429, six hours otherwise) and sends nothing until then, so wait instead of repeating the call.

10 tools ~1–5 s cache: 12 h transactions · 1 h offers · 24 h locations PLN deweloperuch.pl public JSON endpoints, direct

Unofficial: not affiliated with or endorsed by deweloperuch.pl or the Real Estate Price Register (RCN). This server’s requests to deweloperuch.pl’s public JSON API carry a User-Agent that points to this page. A TypeScript port of ten of the thirteen tools of deweloperuch-mcp by Mateusz Bratkowski and contributors, MIT-licensed.

Thirty seconds, any client.

claude mcp add --transport http deweloperuch https://mcp.wondel.ai/deweloperuch/mcp

One command in your terminal — the server is available in every Claude Code session.

This server works with Claude, Claude Code, Claude Desktop, Claude Cowork, Cursor, VS Code, Windsurf — and any other MCP client. Stdio-only clients connect through npx mcp-remote.

10 tools, fully typed.

Parameters below are transcribed from the server’s own zod schemas — what you see is what the tool validates.

deweloperuch_search_locations Find cities, districts and streets in Poland by a fragment of the name: the way to get the city_slug the other tools take, and the lat/lng of a street or district for the value estimate (an approximate point, not a building). Returns no prices; costs two requests to deweloperuch.pl.
Param Type Description
query * string Fragment of a city, district or street name, 2–100 characters, Polish characters allowed, e.g. Kraków, Mokotów.
deweloperuch_estimate_property_value Estimate a flat’s value from nearby RCN transaction prices around a point: estimated_value in PLN, price per m², the radius and period of the comparables, stats (median, mean, minimum, maximum per m²) and the nearest comparable sales with their building_slug. low_confidence is true when fewer than 5 comparables back it. Approximate, not an appraisal; needs coordinates and does not geocode an address.
Param Type Description
lat * number Latitude of the point in Poland in degrees, 49–54.9, e.g. 52.2297 (the lat of a street or district from deweloperuch_search_locations, not just a city).
lng * number Longitude of the point in Poland in degrees, 14.1–24.2, e.g. 21.0122.
area_m2 * number Area of the flat in m², 10–500, e.g. 48.5.
address string Optional address text, 3–200 characters, e.g. Marszałkowska 100, Warszawa. Sent to the site but it does not set the location: lat and lng do.
limit integer
= 10
How many nearest comparable transactions to return, 0–50; 0 = only the estimate and stats.
deweloperuch_get_transaction_statistics RCN transaction prices of flats in one city, month by month or quarter by quarter: transaction counts and prices per m². The newest periods are incomplete because the register lags by months: a period flagged incomplete is never a trend, and last_complete_period says where to end one. Flats and whole cities only.
Param Type Description
city * string city_slug of a city from deweloperuch_search_locations, e.g. warszawa, krakow, gdansk (lowercase, no Polish characters). Whole cities only: not districts, streets or polska.
granularity enum
= month
month: median and mean price per m², median area and median price; quarter: only the mean price per m² and the count, but a longer history. Months and quarters are different statistics: do not join them in one series. monthquarter
periods integer
= 12
How many latest periods (months or quarters) to return, 1–60. For a multi-year trend choose quarter.
deweloperuch_rank_locations Rank localities or powiats by RCN transaction count or by transaction price per m². Sorting by price leaves out places with fewer than 20 transactions unless min_transactions says otherwise. The site gives no period, and powiat counts cover many years: they only order the list.
Param Type Description
level enum
= city
city: localities (cities, small towns and villages); powiat: powiats (no ranking_url and no counterpart in deweloperuch_search_locations). citypowiat
sort enum
= transactions_desc
transactions_desc: most transactions; price_per_m2_desc: highest price per m²; price_per_m2_asc: lowest price per m². Places without a price come last. transactions_descprice_per_m2_descprice_per_m2_asc
limit integer
= 20
How many top entries of the ranking to return, 1–100. To see more places narrow min_transactions rather than raising the limit.
min_transactions integer Fewest transactions a place needs to be ranked, 0–10,000,000. Omitted = the default threshold: 20 when sorting by price, 0 for transactions_desc. 0 = all places; e.g. 50 gives steadier prices.
deweloperuch_get_building One RCN building: address, coordinates, the site’s average prices and the flats sold in it, with the date, price, price per m², market, classification and buyer and seller type of each transaction. Buildings with flats only, not houses; buyers and sellers appear only as natural_person or legal_person. Transactions whose classification is not regular are not ordinary sales: do not average them in.
Param Type Description
building_slug * string Building slug, e.g. 23-marca-79c-sopot: lowercase letters without Polish characters, digits and hyphens, from the building’s page address or from comparables in deweloperuch_estimate_property_value.
limit integer
= 10
Most units in the result (those with the newest transactions), 0–50; 0 = only the building summary.
include_trend boolean
= false
true: add the mean price per m² of transactions around the building in the latest 12 quarters (neighbourhood_trend; one more request).
deweloperuch_get_market_statistics Statistics of the developers’ offer market in one city: the number of offers, investments and developers, the distribution (min, p25, median, p75, max) of asking prices, prices per m² and areas, and the largest developers by number of offers. Active offers only and one city only, optionally within a price and area range. Asking prices, not transaction prices; a big city can take a few seconds.
Param Type Description
city * string city_slug of one city from deweloperuch_search_locations, e.g. krakow (not polska).
price_min integer Lowest offer price in PLN, 0–99,999,999.
price_max integer Highest offer price in PLN, 0–99,999,999.
area_min integer Smallest area in m², 0–9,999.
area_max integer Largest area in m², 0–9,999.
top_developers integer
= 10
How many of the largest developers to show, 1–30.
deweloperuch_search_investments Search developer projects (primary market). With city: the investments on the city’s map, with averages over active offers. With name alone: any project in Poland, but only investment_slug, name and offers_active. No price or area filter here; use deweloperuch_get_market_statistics for ranges. Asking prices.
Param Type Description
city string city_slug of one city from deweloperuch_search_locations, e.g. warszawa, sopot (not polska). Pass city, name or both.
name string Fragment of an investment name, 2–100 characters, e.g. Kolibki. With city, case and Polish characters do not matter; without city the site searches the whole country.
developer_slug string developer_slug from deweloperuch_search_developers or from results of the investment tools, e.g. atal. Only with city.
sort enum
= active_offers
Only with city. active_offers: most active offers; price_per_m2_asc / price_per_m2_desc: average price per m²; price_asc / price_desc: average price; name: alphabetical. Entries without an average come last. active_offersprice_per_m2_ascprice_per_m2_descprice_ascprice_descname
limit integer
= 10
Most investments in the result, 1–30.
deweloperuch_get_investment One developer project: city, street, coordinates, developer, the average prices of active offers, the offer counts and the list of offers (active first, then archived), optionally with each offer’s price history. Asking prices.
Param Type Description
investment_slug * string investment_slug from deweloperuch_search_investments, e.g. smolna.
include_history boolean
= false
true: add the price history of every returned offer (a longer result, one more request).
limit integer
= 20
Most offers in the result (active first), 0–200; 0 = only the investment summary.
deweloperuch_get_offer One offer with its full price history, investment and developer, and price_flags: lowest_price_30d and lowest_price_90d, price_changes, largest_drop_pct and largest_rise_pct, and suspicious_reduction, true when the latest drop came within 30 days after a rise and does not go below the lowest price of the 30 days before it. Asking prices.
Param Type Description
offer_id * integer offer_id from deweloperuch_get_investment.
investment_slug * string investment_slug of this offer’s investment, e.g. smolna (from deweloperuch_search_investments or deweloperuch_get_investment). offer_id alone is not enough.
deweloperuch_search_developers Find developers (primary market) by a fragment of the name and get the developer_slug that deweloperuch_search_investments takes together with city. Returns no offers or prices.
Param Type Description
name * string Fragment of a developer name, 2–100 characters, e.g. atal, Dom Development.
limit integer
= 5
Most developers in the result, 1–20.

Prompts that just work.

What is a 50 m² flat near ul. Nowogrodzka in central Warsaw worth, going by nearby notarial deeds, and how many sales is that based on?

deweloperuch_search_locations + deweloperuch_estimate_property_value

What did flats in Wrocław actually sell for per m² over the last eight quarters, and what do developers ask for new builds there today?

deweloperuch_get_transaction_statistics + deweloperuch_get_market_statistics

This developer offer is marked as a bargain. Is the price really the lowest in 90 days, or was it raised before the discount?

deweloperuch_get_offer

What comes back

deweloperuch_estimate_property_value · live response, captured 2026-10-23 from production, abridged

{
  "lat": 52.2297,
  "lng": 21.0122,
  "area_m2": 50,
  "estimated_value": 1063300,
  "low_confidence": false,
  "price_per_m2": 21266,
  "radius_m": 200,
  "period_months": 24,
  "stats": { "count": 9, "median_price_per_m2": 23830, "average_price_per_m2": 22195, "min_price_per_m2": 13187, "max_price_per_m2": 31492 },
  "comparables_total": 9,
  "comparables_returned": 9,
  "comparables_omitted": 0,
  "truncated": false,
  "source": "RCN (rejestr cen nieruchomości) via deweloperuch.pl",
  "comparables": [
    {"address": "Ulica Nowogrodzka 38", "date": "2025-04-17", "price": 765002, "area_m2": 43.57, "price_per_m2": 17558, "floor": 6, "distance_m": 150, "market": "secondary", "building_slug": "ulica-nowogrodzka-38-warszawa"},
    {"address": "Ulica Widok 24", "date": "2025-05-27", "price": 977507, "area_m2": 41.02, "price_per_m2": 23830, "floor": 6, "distance_m": 150, "market": "secondary", "building_slug": "ulica-widok-24-warszawa"},
    {"address": "Ulica Widok 22", "date": "2025-01-13", "price": 2100003, "area_m2": 66.76, "price_per_m2": 31456, "floor": 3, "distance_m": 150, "market": "secondary", "building_slug": "ulica-widok-22-warszawa"},
    …
  ]
}

This server’s results carry no fetchedAt or query echo. Each call returns one JSON object with the list under a key that depends on the tool (comparables, periods, items, units, offers, top_developers, price_history), and the seven price-quoting tools also return it as structuredContent. source, where present, names the data: RCN transaction prices or developers’ price lists, both via deweloperuch.pl. RCN transaction prices and developers’ asking prices come from different tools and must not be averaged together. A period flagged incomplete is never a trend, low_confidence is quoted with its caveat, and a suspicious_reduction is not a bargain. This version has no GUS or NBP price indices. A mistake in your input gets a guided error that names the parameter to fix and ends with a link to this page; a STOP error carries no link and tells the agent to stop and report the data as temporarily unavailable. Compact JSON in one text block, exactly how agents like it.

Add Deweloperuch
to your agent.

mcp.wondel.ai/deweloperuch/mcp

Authless · Read-only public data · Streamable HTTP at /mcp