Otodom Scraper: Poland Property Listings
Pricing
from $1.50 / 1,000 results
Otodom Scraper: Poland Property Listings
Scrape Otodom.pl property listings: apartments and houses for sale or rent in any Polish city or all of Poland. Price, price per m² (sales), area, rooms, floor, address, seller type, agency or developer, development data and photo. Filter by maximum price, private owners and sort order. Unofficial.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
reventadata
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
19 hours ago
Last modified
Categories
Features
Share
Unofficial. This Actor is not affiliated with, authorised by, endorsed by, or in any way officially connected to Otodom. "Otodom" is a trademark of its respective owner and is used here only to describe what this tool reads. It reads the same public pages a browser does.
Otodom Scraper reads property listings from Otodom.pl, Poland's real-estate portal, for sale or for rent: price, price per m², area, rooms, floor, street, city and district, the seller type, the agency or developer that published the listing, and when it was listed.
What data can you extract from Otodom?
The listings Otodom returns for your search, up to your row and page caps, with the fields the site itself publishes in its search results. The Actor reads the data Otodom embeds in its own search pages, so it needs no browser.
Why scrape Otodom?
- Sale and rent, apartments and houses, in any location Otodom has a page for, or the
whole country (
cala-polska). - The site's own filters. Maximum price, private owners only and the sort order are sent to Otodom, so only matching listings are fetched.
- No proxy needed in testing. 25 of 25 sequential pages came back with no proxy from a home connection, and one run on Apify's platform on 2026-11-10 read its page without one.
- Every page the site has. The run walks to the last page Otodom reports for the search (561 pages for apartments for sale in Warsaw on 2026-11-07), or stops at your row cap.
- No duplicates. Otodom repeats some listings across pages; each id is returned once.
How to scrape Otodom
- Pick
transaction(buy or rent),propertyTypeandlocation. - Optionally set a maximum price, private owners only and a sort order.
- Run it. Results land in the dataset.
Input
| Field | Type | Meaning |
|---|---|---|
transaction | string | buy | rent. |
propertyType | string | mieszkanie (apartment) | dom (house). |
location | string | Otodom's location slug path from a search URL: mazowieckie/warszawa/warszawa/warszawa, malopolskie/krakow/krakow/krakow, or cala-polska for the whole country. An unknown slug stops the run with an error. |
maxPrice | integer | Optional, PLN. On rent searches it limits the monthly rent. Left out of the request when empty. |
ownerType | string | any | private (private owners only, no agencies or developers). |
sortBy | string | relevance | priceAsc | newest. |
maxItems | integer | Cap on rows. Default 1000. |
maxPages | integer | Optional cap on pages (21 to 37 listings each, measured). |
proxyConfiguration | object | Off by default. |
{"transaction": "buy","propertyType": "mieszkanie","location": "mazowieckie/warszawa/warszawa/warszawa","maxPrice": 1000000,"ownerType": "private","maxItems": 200}
Output
One row, from a real local run on 2026-11-07 (image URL shortened):
{"id": "68611806","url": "https://www.otodom.pl/pl/oferta/3-pokoje-balkon-20-m-4-pietro-nova-ochota-ID4DT42","title": "3 pokoje | Balkon 20 m² | 4. piętro | Nova Ochota","propertyType": "FLAT","transaction": "SELL","price": 948600.0,"currency": "PLN","priceHidden": false,"pricePerSquareMeter": 15300.0,"priceFromPerSquareMeter": null,"areaM2": 62.0,"rooms": 3,"roomsLabel": "THREE","floor": "FOURTH","street": "Przedpole","voivodeship": "mazowieckie","city": "Warszawa","district": "Włochy","neighborhood": "Raków","sellerType": "business","agencyName": "Best View","agencyType": "AGENCY","advertiserName": "Best View","contactNames": null,"isPrivateOwner": false,"isPromoted": false,"isExclusiveOffer": false,"features": ["SEPARATE_KITCHEN","TERRACE","PARKING_SPOT","SECURE_BUILDING"],"investmentState": null,"investmentUnits": null,"investmentAreaFromM2": null,"investmentAreaToM2": null,"investmentDelivery": null,"createdAt": "2026-11-07T18:20:14+00:00","pushedUpAt": null,"imageUrl": "https://ireland.apollo.olxcdn.com/v1/files/.../image;s=1280x1024;q=80","searchUrl": "https://www.otodom.pl/pl/wyniki/sprzedaz/mieszkanie/mazowieckie/warszawa/warszawa/warszawa"}
Notes and limits
- On rent searches
priceis the monthly rent (Otodom'stotalPrice). - Developments have no total price. For a listing of type
INVESTMENT,priceandareaM2arenull;priceFromPerSquareMeter,investmentAreaFromM2,investmentAreaToM2,investmentUnits,investmentStateandinvestmentDeliverycarry what the site shows. A seller can also hide a price on an ordinary listing:priceisnullandpriceHiddenistrue. roomscounts rooms as Otodom'sroomsLabelstates them; it isnullwhen the listing gives none or the label is not one of ONE to NINE.- Advertiser names are returned; phone numbers are not.
agencyName,advertiserNameandcontactNamescome from the listing itself. The search results carry no phone numbers, and on the ad page we checked the phone sits behind a reCAPTCHA check, so phones are not in the row. - A search that matches nothing ends with a status message and no rows. A wrong location slug, or a run where Otodom's pages could not be read, ends as failed with the reason.
- Only apartments and houses are offered; Otodom's other categories were not tested.
- Reads the same public pages a browser does. See the disclaimer at the top.
How much does it cost to scrape Otodom?
Pay-per-event: you pay per result written to the dataset, with no subscription. The current price is on the Actor's Pricing tab.
FAQ
How do I find a location slug? Search on otodom.pl and copy the part of the URL after the
property type, for example malopolskie/krakow/krakow/krakow from
/pl/wyniki/wynajem/mieszkanie/malopolskie/krakow/krakow/krakow.
Why do I get fewer rows than the site's result count? Otodom's pages hold 21 to 37 listings against a nominal 36 and repeat some ids across pages; the Actor returns each id once.
More marketplace scrapers
| Actor | What it scrapes |
|---|---|
| Imovirtual Scraper | Imovirtual, Portugal: property listings |
| OLX Portugal Scraper | OLX Portugal (olx.pt): any category |
| OLX Romania Scraper | OLX Romania (olx.ro): any category |