Otodom Scraper - Polish Property Listings & Price Drops avatar

Otodom Scraper - Polish Property Listings & Price Drops

Pricing

from $2.00 / 1,000 listings

Go to Apify Store
Otodom Scraper - Polish Property Listings & Price Drops

Otodom Scraper - Polish Property Listings & Price Drops

Scrape Otodom.pl listings from any search URL: price, price per m², area, rooms, floor, district, agency or private owner, first published date. Flags price drops, tracks price changes between runs and can add GPS, description and building details.

Pricing

from $2.00 / 1,000 listings

Rating

0.0

(0)

Developer

Joran Morgan

Joran Morgan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 hours ago

Last modified

Share

Scrape listings from Otodom.pl, Poland's largest property portal: flats, houses, plots, rooms and commercial property, for sale or rent. Set up any search on otodom.pl, paste the URL, and get every result as a clean row with price, price per m², area, rooms, floor, district, who is selling (developer, agency or private owner) and when the listing first went up.

Two things I added because I wanted them for market tracking. First, price drops: Otodom shows the lowest price of the last 30 days for discounted listings, and the scraper turns that into lowestPrice30d and priceDropPct. Second, it remembers what it saw, so on a schedule you can ask for only new listings and listings whose price changed since your last run, with the old price next to the new one.

Example

Input:

{
"startUrls": [{ "url": "https://www.otodom.pl/pl/wyniki/sprzedaz/mieszkanie/mazowieckie/warszawa/warszawa/warszawa" }],
"maxItems": 300
}

One of the 300 rows from a real run (Sep 29 2026), a listing priced 8% below its 30-day low:

{
"id": 67457296,
"url": "https://www.otodom.pl/pl/oferta/2-pokojowe-mieszkanie-45m2-loggia-bezposrednio-ID4z2IU",
"title": "2-pokojowe mieszkanie 45m2 + loggia Bezpośrednio",
"transaction": "sale",
"propertyType": "flat",
"price": 1009908,
"currency": "PLN",
"pricePerSqm": 21987.98,
"lowestPrice30d": 1097727,
"priceDropPct": 8,
"previousPrice": null,
"priceChange": null,
"isNew": true,
"areaSqm": 45.93,
"rooms": 2,
"floor": 7,
"province": "mazowieckie",
"city": "Warszawa",
"district": "Bielany",
"subdistrict": "Chomiczówka",
"street": "Conrada",
"isPrivateOwner": false,
"advertiserName": "Marvipol Development",
"advertiserType": "developer",
"developmentTitle": "Conrada 30",
"tags": ["PARKING_SPOT"],
"imageCount": 8,
"firstPublishedAt": "2025-11-18T13:57:23Z",
"bumpedAt": "2026-09-29T15:34:31+02:00"
}

With includeDetails on, each row also gets data from the listing page. From a Kraków rental run:

{
"title": "2 pok., 49m2, przy Galerii Bonarka, ul. Sucha ENG",
"price": 2600,
"monthlyFee": 460,
"latitude": 50.021736,
"longitude": 19.94083,
"buildYear": 2018,
"buildingFloors": 2,
"heating": "gas",
"description": "..."
}

Every row has the same fields; missing values are null. Field names are in English, values like heating: "gas" or market: "primary" come from Otodom's own codes.

Input

FieldWhat it doesDefault
startUrlsOtodom search result URLs. Any filters you set on the site (city, sale/rent, type, price, area, rooms, market) are keptrequired
maxItemsCap on listings across all URLs500
includeDetailsOpen each listing for GPS, description, build year, building floors, market, ownership, heating, featuresoff
onlyNewOrChangedOnly listings you haven't received before, or whose price changed since your last runoff

Good to know

  • Speed: a run of 300 Warsaw listings took about 25 seconds; 40 Kraków rentals with details took about 11 seconds.
  • priceDropPct is only filled when Otodom publishes the 30-day lowest price (mostly developers' discounted units). priceChange comes from your own previous runs and works for every listing.
  • Development projects appear as propertyType: "development" rows without a single price; the individual units are separate rows.
  • Private sellers are marked with isPrivateOwner: true; their names are not collected.

Use cases

Tracking asking prices and price per m² by district, spotting discounted units from developers, alerting on new listings that match a search (schedule it and connect Slack, email or Google Sheets), building datasets for valuation models, or monitoring a competitor agency's portfolio.

FAQ

Can I scrape all of Poland? Yes, use a search URL without a city, or several city URLs. For very large pulls, splitting by city or price range keeps each run short and easy to re-run.

What does it cost? See the Pricing tab: a price per listing, plus a separate small charge per listing when includeDetails is on.

The site changed and something broke. Open an issue. I run a daily test on this Actor, so breakages usually get noticed and fixed quickly.

Notes

Only public listing pages are read, no login. Otodom is a trademark of its owner; this Actor isn't affiliated with it.