Otodom Scraper: Poland Property Listings avatar

Otodom Scraper: Poland Property Listings

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Otodom Scraper: Poland Property Listings

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

reventadata

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 hours ago

Last modified

Features

Limited permissions

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

  1. Pick transaction (buy or rent), propertyType and location.
  2. Optionally set a maximum price, private owners only and a sort order.
  3. Run it. Results land in the dataset.

Input

FieldTypeMeaning
transactionstringbuy | rent.
propertyTypestringmieszkanie (apartment) | dom (house).
locationstringOtodom'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.
maxPriceintegerOptional, PLN. On rent searches it limits the monthly rent. Left out of the request when empty.
ownerTypestringany | private (private owners only, no agencies or developers).
sortBystringrelevance | priceAsc | newest.
maxItemsintegerCap on rows. Default 1000.
maxPagesintegerOptional cap on pages (21 to 37 listings each, measured).
proxyConfigurationobjectOff 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 price is the monthly rent (Otodom's totalPrice).
  • Developments have no total price. For a listing of type INVESTMENT, price and areaM2 are null; priceFromPerSquareMeter, investmentAreaFromM2, investmentAreaToM2, investmentUnits, investmentState and investmentDelivery carry what the site shows. A seller can also hide a price on an ordinary listing: price is null and priceHidden is true.
  • rooms counts rooms as Otodom's roomsLabel states them; it is null when the listing gives none or the label is not one of ONE to NINE.
  • Advertiser names are returned; phone numbers are not. agencyName, advertiserName and contactNames come 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

ActorWhat it scrapes
Imovirtual ScraperImovirtual, Portugal: property listings
OLX Portugal ScraperOLX Portugal (olx.pt): any category
OLX Romania ScraperOLX Romania (olx.ro): any category