Otodom Price Stats (PLN per m2)

One run samples Otodom and delivers a price-per-square-meter table by Polish city: median, quartiles, median price and surface per city, with the sample...

One run samples Otodom and delivers a price-per-square-meter table by Polish city: median, quartiles, median price and surface per city, with the sample size attached. Asking prices, honestly labeled. Computed from listings that never contained personal data.

$19.24 / 1,000 · 100.0% success over 26 public runs in the last 30 days.

Run it on Apify → Free to try - runs bill per result on your own account.

What you give it

Every field is optional unless marked; sensible defaults do the rest.

FieldTypeWhat it doesDefault
transaction string Search properties for sale (sprzedaz) or for rent (wynajem). sale
propertyType string What kind of property to search. flat
location string Otodom location path as it appears in the site's URL: "cala-polska" for all of Poland (default), a voivodeship like "mazowieckie", or a full path like "mazowieckie/warszawa/warszawa/warszawa". cala-polska
priceMinPln integer Only include listings priced at least this many złoty. For rentals this is złoty per month. -
priceMaxPln integer Only include listings priced at most this many złoty. For rentals this is złoty per month. -
maxItems integer Upper bound on city rows delivered. Free-plan runs are capped at 5. The form starts at 25 for a cheap first run - that is the form's prefill, not a cap on your plan; clear it to use the default of 100. 100
samplePages integer Result pages sampled (2-40, ~36 listings each). More pages = steadier medians per city. 14
reportFailures boolean When a run fails, send the developer the actor name and build, an error category, the error message (truncated) and a one-way hash of your input - so a bug can be fixed without anyone asking you to reproduce it. Your input itself, your results and your identity are never sent, and successful runs send nothing at all. Switch this off and the actor behaves exactly the same. True

What you get back

One JSON object per result, with exactly these fields - no seller identities, no contact data, ever.

A real result row from a recent run:

{
  "city": "Warszawa",
  "currency": "PLN",
  "location": "cala-polska",
  "medianAreaM2": 52,
  "medianPricePerM2Pln": 17500,
  "medianPricePln": 849000,
  "p25PricePerM2Pln": 15063,
  "p75PricePerM2Pln": 20149,
  "propertyType": "flat",
  "sampleSize": 223,
  "transaction": "sale"
}
FieldTypeMeaning
location string The searched Otodom location slug.
transaction string sale or rent.
propertyType string The property type sampled.
city string City the row aggregates.
sampleSize integer Listings with a price per m2 behind this row.
medianPricePerM2Pln integer Median asking price per square meter, PLN.
p25PricePerM2Pln integer 25th percentile PLN/m2.
p75PricePerM2Pln integer 75th percentile PLN/m2.
medianPricePln ['integer', 'null'] Median asking price, PLN.
medianAreaM2 ['integer', 'null'] Median surface, m2.
currency string Always PLN.

Health

100.0% success over 26 public runs in the last 30 days. Live record, failures included: status page.

Full documentation, examples and the AI-assistant prompt live on the store page.