Otodom Scraper: Poland Property Listings & Prices
Pricing
from $1.00 / 1,000 listings
Otodom Scraper: Poland Property Listings & Prices
Scrape Otodom.pl property listings (Poland) by search URL or city, type, price, area and rooms. Prices, price per m2, location, agency, photos; optional full details. No private seller contacts. Unofficial.
Pricing
from $1.00 / 1,000 listings
Rating
0.0
(0)
Developer
Kyungmin Lee
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
What does Otodom Listings Scraper do?
Otodom Listings Scraper collects property listings from Otodom.pl, Poland's largest real-estate portal, for sale and for rent: flats, houses, plots, commercial premises, rooms, garages and warehouses. Paste any Otodom search URL, or fill in a few fields (city or voivodeship, price range, area, rooms, primary or secondary market) and get one flat row per listing: price in PLN, price per m², area, rooms, floor, market, city, district, neighbourhood and street, agency or developer name, a private-owner flag, publication dates and photo URLs.
Switch on details to also get the full description, latitude and longitude, building year, building type and material, heating, ownership, finishing state, energy class, equipment, extras, deposit, monthly fees and floor plans.
This is an unofficial tool. It is not affiliated with, endorsed by or connected to Otodom or OLX Group. It reads the same public pages a logged-out visitor sees. No Otodom account, cookies or browser are needed.
Why use Otodom Listings Scraper?
- No private contact data. Seller phone numbers, e-mail addresses and private sellers' names are never saved. Private listings carry only an
isPrivateOwnerflag, and their description text is left out. Agency and developer company names are included. - Respectful by design. The Actor reads Otodom's robots.txt at the start of every run and only requests allowed pages. It never uses Otodom's
/api/queryendpoint or map views, and it runs at about one request per second. - No proxy needed. It works from Apify's normal IPs, so you do not pay for residential proxy traffic. If Otodom refuses requests the Actor waits once, tries once more and then stops. It does not rotate IPs or work around blocks, and it charges only for what was saved.
- Fast bulk collection. 72 listings per page, duplicates removed by listing ID, about 1,000 listings in 20 seconds.
- Price monitoring and valuation by district, rental yield research, investor lead lists of active agencies, new-listing alerts (schedule a run sorted by newest).
How to scrape Otodom
- Click Try for free.
- Either paste Otodom search URLs (filter on otodom.pl, copy the address) or choose Buy or rent, Property type and a Location such as
Warszawa. - Add filters if you like: price, area, rooms, market, advertiser.
- Set Maximum listings per search and, if you need them, Include details.
- Click Start and download the data as JSON, CSV or Excel, or read it through the API.
Input
{"transaction": "rent","propertyType": "flat","locations": ["Kraków"],"priceMin": 2000,"priceMax": 4000,"rooms": ["2"],"sort": "newest","maxListings": 300,"includeDetails": false}
startUrls: Otodom results pages keep all their filters, including districts. Offer pages (/pl/oferta/...) return that single listing with details.locations: big cities (about 40, such as Warszawa, Kraków, Wrocław, Poznań, Gdańsk, Łódź), voivodeships,Poland, or an Otodom path likemazowieckie/warszawa/warszawa/warszawa. For any other town or a single district, copy the URL from otodom.pl intostartUrls.sort:newest(default),price-asc,price-desc,area-descordefault.maxListingsapplies to each search. Otodom serves at most about 50 result pages (3,600 listings) per search, so split large searches with price or area filters.proxyConfiguration: off by default. The plain Apify datacenter proxy is allowed. Residential proxies are not supported.
Output
{"id": 66212262,"url": "https://www.otodom.pl/pl/oferta/...-ID4xxxx","title": "Mieszkanie 2 pokoje, balkon","transaction": "sale","propertyType": "flat","price": 900000,"currency": "PLN","pricePerM2": 17384.59,"areaM2": 51.77,"rooms": 2,"floor": 4,"market": "secondary","voivodeship": "dolnośląskie","city": "Wrocław","district": "Krzyki","street": "ul. Example","latitude": 51.10862,"longitude": 17.03,"advertiserType": "agency","isPrivateOwner": false,"agencyName": "Example Nieruchomości","createdAt": "2026-10-20T09:28:00Z"}
Data fields
- Listing:
id,url,title,transaction(sale or rent),propertyType,position,searchUrl,scrapedAt. - Price:
price,currency,priceHidden,pricePerM2,monthlyFees(administrative rent or extra monthly costs). - Property:
areaM2,plotAreaM2,rooms,floor(0 = ground floor, -1 = cellar),market(primary or secondary). - Location:
voivodeship,city,district,neighbourhood,street(when the advertiser shows it),latitude,longitude(with details). - Advertiser:
advertiserType(agency, developer, company, private),isPrivateOwner,agencyName,agencyId,agencyUrl,developmentName,developmentUrl,isExclusive,isPromoted. No phone numbers or e-mails, and no names of private sellers. - Dates and media:
createdAt,firstPublishedAt,updatedAt(details),tags,mainImage,imageUrls,imageCount,shortDescription. - With details:
description(phone numbers, e-mails and contact lines masked),buildYear,buildingType,buildingMaterial,buildingFloors,heating,ownership,finishingState,energyCertificate,windows,availableFrom,deposit,equipment,extras,media,security,features,floorPlanUrls,videoUrl,attributes(all public attributes),detailStatus.
Pricing
You pay per listing saved with pay-per-event pricing. A normal row is one listing event, about $1 per 1,000 listings. A row whose listing page was opened (details on) is one listing-detail event instead, about $1.50 per 1,000. Failed searches, missing pages and listings that were not saved are never charged. Set a maximum charge on the run and the Actor stops when it is reached.
Tips
- Sort by
newestand schedule a daily run to catch new listings. Duplicates are removed by listing ID within a run. - Details take one extra request per listing at about one request per second, so 1,000 detailed listings take roughly 20 minutes. Start with a small
maxListings. - Prices are as advertised: some listings show placeholder prices (very low or very high) or hide the price (
priceHidden). Filter them out in your analysis. - Rental
priceis the monthly rent in PLN. - Otodom occasionally serves short result pages for the newest-first order, so a run can return somewhat fewer listings than
maxListingsasks for. The run log and theSUMMARYrecord show how many listings each page held. - Property data for other countries: UK (Rightmove), UAE (Property Finder), Brazil (ZAP Imóveis & VivaReal).
FAQ
Is it legal to scrape Otodom? The Actor only reads public pages, follows robots.txt and returns no private contact data. You are responsible for how you use the data and for following Otodom's terms and local law, including data protection rules. Otodom's robots.txt carries a content signal that does not allow AI training or AI input use of its content, so do not feed results into AI training.
Why did a run stop early? Either maxListings or the run's maximum charge was reached, Otodom serves only about 50 pages per search, or Otodom refused requests. In the last case the run ends as failed with a clear message and you keep and pay for what was saved.
Why is my location not accepted? Names are matched against about 40 big cities and the 16 voivodeships. For other places paste the results URL from otodom.pl.
Do I get seller phone numbers? No. This is deliberate.