Otodom.pl Scraper — Polish Real Estate Data Extractor avatar

Otodom.pl Scraper — Polish Real Estate Data Extractor

Pricing

from $3.50 / 1,000 results

Go to Apify Store
Otodom.pl Scraper — Polish Real Estate Data Extractor

Otodom.pl Scraper — Polish Real Estate Data Extractor

Scrape real estate listings from Otodom.pl — Poland's #1 property portal. Extract apartments, houses, plots and commercial properties by location, price (PLN), area, rooms and market. Direct NEXT_DATA access (no browser): price, m², czynsz, GPS, address, agency and image gallery per ad.

Pricing

from $3.50 / 1,000 results

Rating

0.0

(0)

Developer

Logiover

Logiover

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

1

Monthly active users

8 hours ago

Last modified

Share

Otodom.pl Scraper — Scrape Polish Real Estate Listings & Prices

Otodom.pl Scraper — Polish Real Estate Data Extractor

Scrape property listings from Otodom.pl, Poland's #1 real estate portal (OLX Group) with 200K+ active listings. This Otodom.pl scraper extracts apartments, houses, plots, commercial space, warehouses, garages and rooms — by location, transaction type (sale or rent), price in PLN, area, rooms, market and owner type. It returns price, price/m², GPS coordinates, full Polish address breakdown, agency details and image galleries via direct __NEXT_DATA__ JSON parsing — fast, no browser, no API key required. Export Polish real estate data to JSON, CSV or Excel.

✨ What this Actor does / Key features

  • 🏠 7 property types — apartments, houses, plots/land, commercial, warehouses, garages and rooms, for sale or rent.
  • 📍 Nationwide location targeting — scrape all of Poland, any of the 16 voivodeships, cities or sub-districts via location slugs.
  • 💰 Powerful filters — price range (PLN), area range (m²), room range, market (primary/secondary), owner type and distance radius.
  • 🔀 Flexible sorting — by latest, price, price/m² or area, ascending or descending.
  • 🗺️ Full address & GPS — province, city, district, subdistrict, street, postcode, plus latitude/longitude for every listing.
  • 🏢 Agency data embedded — agency name, ID, slug, logo and type, plus exclusivity, featured and promoted flags.
  • 🖼️ Image galleries — main image URL plus the full list of image URLs and image count.
  • Direct HTTP + JSON extraction — parses Otodom's __NEXT_DATA__ payload; no browser, no DOM walking, no GraphQL token.
  • 🛡️ Proxy support — Apify Proxy integration; residential + country=PL strongly recommended to avoid blocks.

🔍 Input

FieldTypeDescription
locationSlugsarrayOtodom URL location paths. Each slug becomes its own task (e.g. mazowieckie/warszawa, cala-polska). Required.
transactionstringsale (sprzedaż) or rent (wynajem).
propertyTypestringapartment, house, plot, commercial, warehouse, garage or room.
priceMinintegerMinimum price in PLN. 0 = no minimum.
priceMaxintegerMaximum price in PLN. 0 = no maximum.
areaMinintegerMinimum surface area in m². 0 = no minimum.
areaMaxintegerMaximum surface area in m². 0 = no maximum.
roomsMinintegerMinimum room count (1–10). 0 = no minimum.
roomsMaxintegerMaximum room count (1–10). 0 = no maximum.
marketstringALL, PRIMARY (new build) or SECONDARY (resale).
ownerTypestringALL, PRIVATE or BUSINESS (agency).
sortstringResult ordering: latest, price_asc/desc, price_per_m_asc/desc, area_asc/desc.
distanceRadiusintegerExpand search to nearby areas: 0, 5, 10, 15, 25, 50 or 75 km.
limitintegerListings per page: 24, 36, 48 or 72.
maxListingsintegerTotal cap across all location tasks. 0 = unlimited.
maxPagesPerTaskintegerPagination depth per location (Otodom caps around page 50).
requestDelayintegerDelay between page requests in milliseconds (keep ≥ 600 ms).
maxRetriesintegerRetries per request on HTTP errors (rotates proxy IP).
proxyConfigurationobjectApify Proxy settings. Residential with country=PL strongly recommended.

🚀 Example input

{
"locationSlugs": ["mazowieckie/warszawa", "malopolskie/krakow"],
"transaction": "sale",
"propertyType": "apartment",
"priceMin": 500000,
"priceMax": 1500000,
"areaMin": 40,
"areaMax": 90,
"roomsMin": 2,
"roomsMax": 3,
"market": "SECONDARY",
"ownerType": "ALL",
"sort": "latest",
"distanceRadius": 0,
"limit": 72,
"maxListings": 500,
"maxPagesPerTask": 10,
"requestDelay": 800,
"maxRetries": 3,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "PL" }
}

Finding a location slug: browse otodom.pl, apply a location filter, and copy the path between /wyniki/{txn}/{type}/ and ? from the URL. Use cala-polska for all of Poland, a voivodeship slug like mazowieckie, or a deeper path like mazowieckie/warszawa.

📦 Output

Each property listing is saved as a structured item in the dataset. Export to JSON, CSV, Excel or XML, or pull via the Apify API.

FieldDescription
adIdOtodom's stable listing ID
detailUrlFull listing detail URL
slugListing URL slug
titleListing title
shortDescriptionShort description / snippet
transactionTypesale or rent
propertyTypeProperty type (apartment, house, etc.)
advertTypeAdvert type (AGENCY, PRIVATE, etc.)
isPrivateWhether the listing is from a private owner
marketPRIMARY (new build) or SECONDARY (resale)
priceListing price
priceCurrencyCurrency code (PLN)
pricePerSqmPrice per square meter (PLN/m²)
monthlyRentRecurring monthly rent / czynsz (for rentals)
areaSqmSurface area in m²
terrainAreaSqmTerrain / plot area in m²
roomsNumber of rooms
floorFloor (enum, e.g. GROUND, FLOOR_3)
totalFloorsTotal floors in the building
provinceVoivodeship
cityCity
districtDistrict
subdistrictSubdistrict
streetStreet
postalCodePostal code
fullAddressComposed full address
latitudeGPS latitude
longitudeGPS longitude
mainImageUrlMain listing image URL
imageUrlsArray of all image URLs
imageCountNumber of images
agencyIdAgency ID
agencyNameAgency name
agencySlugAgency slug
agencyLogoUrlAgency logo URL
agencyTypeAgency type
isExclusiveExclusive listing flag
isFeaturedFeatured listing flag
isPromotedPromoted listing flag
hasOpenDayWhether the listing has an open day
investmentNameDevelopment / investment name (for primary market)
investmentStateDevelopment / investment state
dateCreatedDate the listing was created
dateCreatedFirstDate the listing was first created
pushedUpAtDate the listing was last bumped
labelsPolish badge labels (Promowane, Wyróżnione, etc.)
searchTransactionTransaction type used for this search
searchPropertyTypeProperty type used for this search
searchLocationLocation slug used for this search
searchUrlFull search URL used
scrapedAtScrape timestamp (ISO 8601)

💡 Use cases

  • Market research — build PLN/m² heatmaps by voivodeship, city and district.
  • Investment screening — calculate rental yield (monthly rent vs. sale price) per area.
  • Lead generation — use ownerType: PRIVATE to find direct-owner listings, or cluster agency listings by agencyId.
  • Price tracking — re-run on a schedule and diff against prior datasets using dateCreated and pushedUpAt.
  • Primary-market monitoring — use market: PRIMARY to track new developer offers and investments.
  • Cross-city comparison — pass multiple locationSlugs in one run to benchmark prices across Polish cities.

❓ Frequently Asked Questions

Is it legal to scrape Otodom.pl? The Actor only collects publicly available property listing data. You are responsible for using the data in compliance with Otodom's terms and applicable laws such as GDPR.

Do I need an API key or a login? No. There is no Otodom account, login or API key required — only an Apify account.

Do I need a proxy? Otodom deploys mild bot protection. Datacenter proxies often get blocked, so residential Apify Proxy with country=PL is strongly recommended; the Actor runs cleanly with it at a ≥600 ms request delay.

How do I target a specific city or district? Otodom uses URL location slugs. Browse otodom.pl, apply a location filter, and copy the path from the URL. Common slugs for all 16 voivodeships and major cities are described above; append more segments for sub-districts.

How much data can I get? You can scrape thousands of listings per run. Otodom caps pagination around page 50 (~3,600 listings per filter set), so narrow with price and area filters to reach deeper inventory across multiple locations.

Does it return rental czynsz separately? Yes. For rental listings, the recurring monthly rent is returned in the monthlyRent field, separate from the main price.

What output formats are supported? Results are stored in a structured Apify dataset and can be exported as JSON, CSV, Excel or XML, or accessed via the Apify API.

⏰ Scheduling & integration

Schedule this Actor on Apify to track the Polish property market daily or weekly. Export results to JSON, CSV or Excel, sync to Google Sheets, or push to your database, BI tools and webhooks through the Apify API.


Changelog

  • 2026-05-25 — Maintenance & reliability pass: pulled the latest source and rebuilt the Actor on the current base image; build verified.

Last reviewed: 2026-05-25.