Extract Otodom.pl property listings as clean JSON with zero personal data - PLN prices, price per m2, areas, rooms, city-level locations, agency-vs-private flag. Sale & rent, newest-first monitoring, pay per result. Built for market research and AI pipelines.
$1.99 / 1,000 · 100.0% success over 13 public runs in the last 30 days.
Run it on Apify → Free to try - runs bill per result on your own account.
Every field is optional unless marked; sensible defaults do the rest.
| Field | Type | What it does | Default |
|---|---|---|---|
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. | - |
sortBy |
string | Order of results: newest (best for monitoring), price_asc, price_desc, or relevance. | newest |
postedAfter |
string | Only include listings posted on or after this date (YYYY-MM-DD or a full ISO timestamp). With newest-first sorting the run stops early once older listings are reached. | - |
postedBefore |
string | Only include listings posted on or before this date (YYYY-MM-DD or a full ISO timestamp). | - |
maxItems |
integer | Stop after this many listings. Free-plan runs are capped at 25 items. | 1000 |
One JSON object per result, with exactly these fields - no seller identities, no contact data, ever.
| Field | Type | Meaning |
|---|---|---|
listingId |
string | Otodom listing ID. |
url |
string | Direct link to the listing. |
title |
string | Listing title as posted. |
propertyType |
['string', 'null'] | Property category, e.g. FLAT, HOUSE, TERRAIN. |
transaction |
['string', 'null'] | sale or rent. |
pricePln |
['number', 'null'] | Price in złoty; for rentals per month. Null when the listing hides its price. |
rentExtrasPln |
['number', 'null'] | Additional monthly charges (czynsz) for rentals, when reported. |
pricePerM2Pln |
['number', 'null'] | Price per square meter in złoty, when reported. |
currency |
string | Almost always PLN. |
areaM2 |
['number', 'null'] | Living area in square meters. |
terrainAreaM2 |
['number', 'null'] | Plot area in square meters, for houses and plots. |
rooms |
['integer', 'null'] | Number of rooms. |
floor |
['string', 'null'] | Floor as the site reports it, e.g. GROUND, FIRST, ABOVE_TENTH. |
city |
['string', 'null'] | City. City-level only - streets, house numbers and exact coordinates are never collected. |
province |
['string', 'null'] | Voivodeship, e.g. mazowieckie. |
sellerType |
string | agency or private. Private owners' identity is never collected. |
agencyName |
['string', 'null'] | Estate agency business name; null for private owners. |
isDevelopment |
boolean | True for developer investment listings. |
promoted |
boolean | True for paid promoted placements. |
shortDescription |
['string', 'null'] | Short listing description as posted. |
createdAt |
['string', 'null'] | When the listing first appeared (ISO timestamp when reported). |
updatedAt |
['string', 'null'] | The site's last-modified date for the listing. |
imageUrls |
array | Listing photo URLs (up to 8). |
100.0% success over 13 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.