Otodom Scraper - Poland Real Estate Listings, Prices & m² avatar

Otodom Scraper - Poland Real Estate Listings, Prices & m²

Pricing

from $1.70 / 1,000 listing delivereds

Go to Apify Store
Otodom Scraper - Poland Real Estate Listings, Prices & m²

Otodom Scraper - Poland Real Estate Listings, Prices & m²

Scrape Otodom.pl without login: flats, houses, plots and commercial property for sale or rent in Poland, with price, price per m², area, rooms, floor, city, district, agency or developer, optional full listing page. US$ 1.50 per 1,000.

Pricing

from $1.70 / 1,000 listing delivereds

Rating

0.0

(0)

Developer

Scrapewise Data

Scrapewise Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Otodom Scraper: Poland real estate listings, prices and price per m²

Scrape Otodom.pl, Poland's largest real estate portal, without an account or cookies. Pick a city or voivodeship (Warszawa, Kraków, Gdańsk, Wrocław, mazowieckie...), sale or rent and a property type, or paste any Otodom search link, and get every listing with price, price per m², monthly fee (czynsz), area, rooms, floor, street, district, city, voivodeship, advertiser type (private owner, agency or developer), agency or developer name, photos and dates. Turn on the full listing page to add the complete description, all characteristics (build year, building type, heating, ownership, condition, lift, balcony, parking...) and the approximate map position.

Use Otodom's own filters: price, area, rooms, primary or secondary market, private owners only, added in the last N days, sort by newest or price. Big searches follow the pagination to the end (72 listings per page), so you can pull thousands of listings per city.

Built for property investors and flippers, agencies watching competitors and new stock, developers pricing new projects, relocation and rental platforms, banks and valuers building price-per-m² models, and researchers tracking the Polish housing market.

US$ 1.50 per 1,000 listings. Full listing page +US$ 1.00 per 1,000, only when you ask for it. No start fee, no monthly fee. Error rows, duplicates and listings outside your filters are free.

At a glance

  • Price per 1,000 listings, Free plan: US$ 1.50
  • Successful runs, last 30 days: New (30 of 30 pages in our tests)
  • Otodom filters (price, area, rooms, market, private owners, last N days, sort): Yes, all as input fields
  • City or voivodeship by name, no link needed: Yes (43 cities, 16 voivodeships)
  • Full listing page (description, characteristics, map position): Optional, +US$ 1.00 / 1,000
  • Resumes after a platform restart without charging twice: Yes

What you can do with it

  • Price-per-m² map of a city. locations: ["Warszawa"], maxResultsPerSearch: 5000: every flat for sale with price, price per m², area, rooms and district.
  • Daily feed of new listings. postedWithinDays: 1, sortBy: "newest", schedule it every morning.
  • Owner-direct deals (no commission). ownerType: "private" keeps only private owners.
  • Rental market study. transaction: "rent" gives monthly rent plus the extra monthly fee (czynsz).
  • Developer and new-build tracking. market: "primary", or propertyType: "investment" for the project cards.
  • Reuse a search you built on Otodom. Paste the link from your browser; all its filters are kept.
  • Feed a spreadsheet, BI tool or valuation model. Export CSV, Excel or JSON, or call it through the Apify API.

Input

FieldWhat it does
locationsCities or voivodeships, one per line (Warszawa, Kraków, Gdańsk, mazowieckie...), or an Otodom location id. Empty = all of Poland.
transactionsale (default) or rent.
propertyTypeflat (default), studio, house, plot, commercial, warehouse, garage, room, investment.
startUrlsOtodom search links (/pl/wyniki/..., keep their own filters) and listing links (/pl/oferta/...).
maxResultsPerSearchListings per location or search link. Default 100, up to 20,000.
maxItemsHard cap on charged listings for the whole run.
priceMin, priceMaxTotal price in PLN (monthly rent for rentals).
areaMin, areaMaxFloor area in m².
rooms1, 2, 3, 4, 5, 6+.
marketall, primary (new from developer), secondary (resale).
ownerTypeall, private, agency, developer.
postedWithinDaysOnly listings added in the last N days.
sortByrelevance, newest, priceLow, priceHigh.
excludeKeywordsSkip listings with these words in the title (free).
includeDevelopmentProjectsKeep the developer project cards Otodom mixes into results (skipped by default, free).
includeDetailsAdd the full listing page (charged separately, only when read).

Example: 2 and 3-room resale flats in Kraków from private owners, 40 to 70 m², newest first, with the full page.

{
"locations": ["Kraków"],
"transaction": "sale",
"propertyType": "flat",
"rooms": ["2", "3"],
"areaMin": 40,
"areaMax": 70,
"market": "secondary",
"ownerType": "private",
"sortBy": "newest",
"includeDetails": true,
"maxResultsPerSearch": 500
}

An empty input runs a small example (20 flats for sale in Warszawa), so the Actor never fails on a blank form.

Output

One real row from a local test run on 2026-09-29 (Gdańsk, with the full listing page; photo list and description shortened):

{
"type": "listing",
"listingId": "68440135",
"url": "https://www.otodom.pl/pl/oferta/2-pok-i-zaspa-mlyniec-i-piekny-widok-ID4Dap9",
"title": "2 pok. I Zaspa Młyniec I Piękny widok",
"transaction": "sale",
"propertyType": "flat",
"price": 649000.0,
"currency": "PLN",
"priceHidden": false,
"pricePerM2": 13464.73,
"additionalMonthlyFee": 600.0,
"areaM2": 48.2,
"plotAreaM2": null,
"rooms": 2,
"floor": 10,
"street": "ul. Startowa",
"district": "Zaspa-Młyniec",
"city": "Gdańsk",
"province": "pomorskie",
"locationId": "pomorskie/gdansk/gdansk/gdansk/zaspa--mlyniec",
"advertiserType": "agency",
"agencyName": "DOMO Nieruchomości",
"agencyType": "agency",
"isPromoted": false,
"tags": ["separate_kitchen", "top_floor"],
"imageUrl": "https://ireland.apollo.olxcdn.com/v1/files/.../image;s=1280x1024;q=80",
"totalImages": 15,
"createdAt": "2026-09-30 01:10:51",
"firstPublishedAt": "2026-09-20T18:34:45Z",
"detailsLoaded": true,
"description": "Szukasz funkcjonalnych dwóch pokoi na Zaspie? Świetnie trafiłeś! ...",
"characteristics": {
"price": "649 000 zł", "rent": "600 zł", "price_per_m": "13 464,73 zł/m²", "m": "48,2 m²",
"market": "secondary", "building_type": "block", "floor_no": "floor_10",
"construction_status": "to_renovation", "building_material": "concrete_plate",
"building_ownership": "full_ownership", "heating": "urban", "rooms_num": "2", "build_year": "1970",
"building_floors_num": "10"
},
"attributes": {"extras_types": ["lift", "separate_kitchen"], "security_types": "entryphone", "lift": "y"},
"buildYear": 1970,
"buildingFloors": 10,
"market": "secondary",
"latitude": 54.396,
"longitude": 18.597,
"mapRadiusMeters": 0,
"source": "location:Gdańsk",
"scrapedAt": "2026-09-30T02:48:15Z",
"errorCode": null,
"error": null
}
  • price is the total price (sale) or the monthly rent (rent); additionalMonthlyFee is the extra monthly fee (czynsz) when the listing shows one. priceHidden is true when the advertiser hides the price.
  • advertiserType is private, agency or developer. Agency and developer names are returned; private owners are never named.
  • Without includeDetails the row has everything from the results page (the fields above up to firstPublishedAt, plus a short description and the first photos).

The run also saves SEARCH_SUMMARY in its key-value store: for each location or link, the search URL, how many listings Otodom has for it, pages read and rows delivered (free).

Error rows (never charged)

errorCodeWhen
NO_RESULTSOtodom has no listings for the search with your filters.
NOT_FOUNDUnknown location, a search link that does not exist, or a listing that expired.
INVALID_URLThe link is not an Otodom search or listing link.
BLOCKEDOtodom refused every attempt for that search.
INVALID_INPUTA field has a value the Actor cannot use (the message says which).
UNEXPECTEDAnything else; the rest of the run continues.

Pricing

Pay per event, no start fee:

EventPrice per 1,000 (Free plan)Charged for
Listing deliveredUS$ 1.50each unique listing
Full listing page deliveredUS$ 1.00each listing whose full page was read (includeDetails, or a listing link)

Examples: 1,000 listings cost US$ 1.50; with the full page, US$ 2.50. Error rows, duplicates, skipped project cards and filtered-out listings are free, and maxItems is a hard stop.

How it works and limits

  • It reads the same public pages the Otodom website shows to any visitor. Refused requests are retried. No login.
  • Results come 72 per page in Otodom's own order; the Actor stops at the last page Otodom has.
  • The built-in names cover the 43 largest cities and the 16 voivodeships. For a smaller town or a district, paste the Otodom search link (or its location id).
  • In our tests: 200 listings in 21 s, 30 of 30 result pages in a row (3,000 Warsaw flats in 54 s); with the full page, 100 listings in about 70 s.
  • No personal data. The Actor never returns phone numbers, e-mail addresses or the names of private owners or individual agents. Phone numbers and e-mails written inside titles and descriptions are replaced by [contact removed]. Map positions are rounded to about 100 m.

FAQ

Do I need an Otodom account? No. Everything comes from public pages.

Can I get the seller's phone number? No. Otodom hides it behind a click and it is often a private person's number; this Actor does not collect it.

How many listings can I get? As many as Otodom shows for the search (over 150,000 flats for sale in all of Poland). Split very large jobs by city or price range.

What if the run is restarted by the platform? Listings already in the dataset are not charged again: the Actor reads its own dataset when it starts and skips what was delivered.

Changelog

  • 0.1 (2026-09-29): first version: cities and voivodeships by name, Otodom search and listing links, all Otodom filters, optional full listing page, resume after restart.

Independent tool, not affiliated with Otodom or OLX Group.