Otodom Scraper

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.

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. -
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

What you get back

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

FieldTypeMeaning
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).

Health

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.