Is a square metre of a studio really more expensive than a square metre of a family apartment? Notarial deeds from the official Polish price register give a clear answer for most large cities.
The numbers
| City | Under 40 m² (PLN/m²) | Over 80 m² (PLN/m²) | Difference |
|---|---|---|---|
| Wroclaw | 14,661 | 10,488 | +39.8% |
| Rzeszow | 9,595 | 7,236 | +32.6% |
| Bialystok | 10,510 | 8,118 | +29.5% |
| Szczecin | 11,340 | 9,014 | +25.8% |
| Kielce | 9,823 | 8,351 | +17.6% |
| Torun | 10,017 | 8,548 | +17.2% |
| Poznan | 12,514 | 10,700 | +17.0% |
| Krakow | 16,170 | 13,963 | +15.8% |
| Lublin | 10,797 | 9,353 | +15.4% |
| Lodz | 9,609 | 8,711 | +10.3% |
| Warsaw | 17,193 | 15,811 | +8.7% |
| Katowice | 10,500 | 9,718 | +8.0% |
| Olsztyn | 9,733 | 9,190 | +5.9% |
| Gdansk | 13,228 | 13,229 | 0.0% |
| Gdynia | 12,593 | 13,212 | −4.7% |
| Czestochowa | 6,595 | 7,229 | −8.8% |
What stands out
- In 13 of 16 cities a square metre of a small apartment costs more than one of a large apartment.
- The biggest premium is in Wroclaw (+39.8%).
- Small units are popular with buy-to-let investors, and the fixed value of the location is spread over fewer square metres.
Methodology
- Apartment sales from the Polish Real Estate Price Register (RCN, published by GUGiK; free since 13 February 2026): market sales of full ownership only, implausible prices removed.
- 12-month window ending at the newest deed published in each city – counties publish with different delays.
- Weekly open data for all cities (CSV, CC BY 4.0) is on GitHub: poland-housing-prices.
Get the data for any address
- Transaction prices from notarial deeds – median, quartiles, trend and the deeds around any address.
- Apartment valuation (AVM) – an estimate for any apartment from comparable deeds.
- New-build prices – developers' asking prices from their daily price lists.
from apify_client import ApifyClient client = ApifyClient("YOUR_APIFY_TOKEN") run = client.actor("kris_fili/poland-real-estate-transaction-prices").call(run_input={ "location": "Kraków, Rynek Główny 1", "radiusMeters": 1000, "monthsBack": 24, }) for item in client.dataset(run["defaultDatasetId"]).iterate_items(): if item["recordType"] == "summary": print(item["statistics"]["pricePerM2Pln"]) The same tools work inside AI assistants through MCP. Questions or ideas for another analysis? Leave a comment.



