Otodom.pl Scraper avatar

Otodom.pl Scraper

Pricing

from $0.90 / 1,000 property scrapeds

Go to Apify Store
Otodom.pl Scraper

Otodom.pl Scraper

Scrape property listings from Otodom.pl, Poland's largest real estate portal. Extract prices, area, rooms, location, agency info, and images for sale and rental listings.

Pricing

from $0.90 / 1,000 property scrapeds

Rating

0.0

(0)

Developer

ParseBird

ParseBird

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Otodom.pl Scraper

Extract structured property listing data from Otodom.pl, Poland's largest real estate portal, covering sale and rental listings for flats, houses, plots, commercial premises, halls, and garages nationwide.

Search any Polish voivodeship or city, filter by price, area, rooms, build year, and market type — get clean, structured property data with GPS coordinates, agency contacts, and images ready for analysis, monitoring, or integration.

Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

parsebird/otodom-scraper on Apify. Call: ApifyClient("TOKEN").actor("parsebird/otodom-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items for results. Key inputs: startUrls (array of strings, direct Otodom.pl search or offer URLs — overrides the filters below), searchType (string: "sprzedaz"/"wynajem", default "sprzedaz"), propertyType (string: "mieszkanie"/"dom"/"dzialka"/"lokal"/"haleimagazyny"/"garaz", default "mieszkanie"), location (string, e.g. "mazowieckie/warszawa", empty = all of Poland), priceMin/priceMax (integer, PLN), areaMin/areaMax (integer, m²), roomsMin/roomsMax (integer, 1-6), buildYear (integer, minimum construction year), market (string: "ALL"/"PRIMARY"/"SECONDARY"), postedDate (string: ""/"1"/"3"/"7"/"14", days), maxItems (integer, default 50, 0 = unlimited), extractDetails (boolean, default true — visits each offer page for full data). Full actor spec: fetch via GET https://api.apify.com/v2/acts/parsebird~otodom-scraper (Bearer TOKEN). Get token: https://console.apify.com/account/integrations

What does Otodom.pl Scraper do?

Otodom.pl Scraper extracts structured property listing data from Otodom.pl, Poland's largest real estate marketplace. It collects prices, area, rooms, floor, GPS coordinates, agency contact details, images, and full descriptions — either from search result pages or directly from a specific offer URL.

Use it as an Otodom API alternative to get Polish real estate data in JSON, CSV, or Excel — no coding required. Configure your search, click Start, and download results. Or integrate via the Apify API to automate property data collection at scale.

  • 🔍 Search any Polish location — voivodeship, city, or nationwide
  • 🏠 Six property types — flats, houses, plots, commercial premises, halls & warehouses, and garages
  • 💰 Sale and rental listings — sprzedaż (sale) or wynajem (rent)
  • 🎯 Filter by price, area, rooms, build year, market, and posting date — narrow results to exactly what you need
  • 🔗 Direct URL scraping — paste any Otodom.pl search or offer URL and skip the filter builder
  • 📄 Optional full-detail extraction — description, features, images, heating, ownership type, and seller phone from each offer page
  • 🔄 Schedule recurring runs — monitor new listings and price changes with Apify scheduling
  • 🔗 API access and integrations — connect to Google Sheets, Zapier, Make, webhooks, or any workflow via the Apify API

What data can you extract from Otodom.pl?

Listing mode (extractDetails: false) — fast, from search result pages only:

FieldDescription
idOtodom internal property ID
titleProperty listing title
priceListing price in PLN
pricePerM2Price per square meter
areaArea in square meters
roomsNumber of rooms (1–6, 6 = six or more)
floorFloor number
city, district, streetAddress components
mainImage, imageCountMain image URL and total image count
sellerType, agencyNamePrivate owner or agency, with agency name
propertyUrlDirect URL to the offer page

Detail mode (extractDetails: true, default) — adds all of the following from each offer page:

FieldDescription
serviceFeeMonthly administrative/service charge (czynsz) in PLN
buildingType, buildingMaterialBuilding classification and construction material
buildYearYear of construction
heating, windowsTypeHeating type and window material
ownershipType, conditionLegal ownership form and property condition
elevator, parkingTypeElevator availability and parking type
latitude, longitudeGPS coordinates
descriptionFull listing description
features, additionalFeaturesAmenities and utilities
imagesAll image URLs
agencyLicenseNumber, agencyUrlAgency license and profile URL
sellerPhoneSeller or agency phone number

Input parameters

ParameterTypeRequiredDefaultDescription
startUrlsarrayNo[]Direct Otodom.pl URLs (search or offer pages). Overrides the filters below when set
searchTypestringNo"sprzedaz"Sale (sprzedaz) or rent (wynajem)
propertyTypestringNo"mieszkanie"mieszkanie, dom, dzialka, lokal, haleimagazyny, garaz
locationstringNo""Location path, e.g. mazowieckie/warszawa. Empty = all of Poland
priceMin / priceMaxintegerNoPrice range in PLN
areaMin / areaMaxintegerNoArea range in m²
roomsMin / roomsMaxintegerNoRoom count range (1–6, 6 = six or more)
buildYearintegerNoMinimum construction year
marketstringNo"ALL"ALL, PRIMARY, SECONDARY
postedDatestringNo""Posted within: "" (any), 1, 3, 7, 14 days
maxItemsintegerNo50Maximum listings to scrape. 0 = unlimited
extractDetailsbooleanNotrueVisit each offer page for full details
maxConcurrencyintegerNo5Parallel requests when extracting details
maxRequestRetriesintegerNo3Retries per failed request
maxRequestsPerMinuteintegerNo60Rate limit across all requests
proxyConfigurationobjectNoResidentialProxy settings (Apify Proxy, residential recommended)

Output example

{
"id": "68133433",
"title": "KILOMETR OD ZŁOTYCH TARASÓW I PKiN ☆ MOŻLIWOŚĆ 2 POKOI ☆ BEZPOŚREDNIO",
"price": 485000,
"priceCurrency": "PLN",
"priceFormatted": "485 000 PLN",
"pricePerM2": 17636.36,
"pricePerM2Formatted": "17 636.36 PLN/m²",
"area": 27.5,
"rooms": 2,
"floor": "8",
"totalFloors": 11,
"market": "SECONDARY",
"location": "Warszawa, Wola, al. Aleje Jerozolimskie",
"city": "Warszawa",
"province": "mazowieckie",
"district": "Wola",
"latitude": 52.225937,
"longitude": 20.991928,
"mainImage": "https://ireland.apollo.olxcdn.com/v1/files/.../image;s=2048x1536;q=80",
"imageCount": 20,
"sellerType": "private",
"dateCreated": "2026-06-22T21:25:25Z",
"propertyUrl": "https://www.otodom.pl/pl/oferta/kilometr-od-zlotych-tarasow-i-pkin-mozliwosc-2-pokoi-bezposrednio-ID4BSCl",
"serviceFee": 443,
"buildingType": "block",
"buildingMaterial": "reinforced_concrete",
"buildYear": 1970,
"heating": "urban",
"ownershipType": "limited_ownership",
"elevator": true,
"parkingType": "garage",
"features": ["garage", "lift", "separate_kitchen", "air_conditioning", "monitoring"],
"sellerPhone": "+48732922700"
}

Download results in JSON, HTML, CSV, or Excel, or connect via the Input and output tabs on your run.

Use cases

  • 📈 Market analysis — track pricing trends, average PLN/m² costs, and inventory across Polish cities
  • 💼 Investment research — compare yields, identify undervalued districts, monitor price-per-m² over time
  • 📇 Lead generation — extract agency contact details for outreach and partnership opportunities
  • 🏠 Relocation and home search — build filtered shortlists by price, size, rooms, and location
  • 🔄 Price monitoring — schedule recurring runs to track new listings and price changes
  • 🔗 PropTech integration — feed structured data into CRMs, valuation models, or dashboards

How to scrape Otodom.pl

  1. Go to the Otodom.pl Scraper page on Apify Store
  2. Click Try for free to open the Actor console
  3. Choose Sale or Rent, then a property type — flat, house, plot, commercial premises, hall/warehouse, or garage
  4. Enter a location (e.g. mazowieckie/warszawa, malopolskie/krakow) or leave empty to search all of Poland
  5. Set optional filters — price, area, rooms, minimum build year, market, or posted-within date
  6. Alternatively, paste direct Otodom.pl search or offer URLs into Start URLs to skip the filter builder
  7. Toggle Extract Full Details on for complete data, or off for a faster listing-only scrape
  8. Click Start and download your data in JSON, CSV, Excel, or via the Apify API

Python API example

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("parsebird/otodom-scraper").call(run_input={
"searchType": "sprzedaz",
"propertyType": "mieszkanie",
"location": "mazowieckie/warszawa",
"priceMax": 1000000,
"roomsMin": 2,
"maxItems": 100,
"extractDetails": True,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{item['price']} {item['priceCurrency']}{item['area']}m² — {item.get('district', 'N/A')}")

JavaScript API example

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "YOUR_API_TOKEN" });
const run = await client.actor("parsebird/otodom-scraper").call({
searchType: "wynajem",
propertyType: "mieszkanie",
location: "malopolskie/krakow",
priceMax: 4000,
maxItems: 50,
extractDetails: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
console.log(`${item.price} ${item.priceCurrency}${item.area}m² — ${item.district ?? "N/A"}`);
});

How it works

  1. Builds an Otodom.pl search URL from your input filters (or uses your direct start URLs)
  2. Fetches each search result page and parses the property data embedded in the page's own Next.js data payload
  3. Paginates through results until maxItems is reached or the search is exhausted
  4. When Extract Full Details is on, visits each offer page to pull description, features, images, and seller contact info
  5. Deduplicates by listing ID and pushes each property to the Apify dataset

How much does it cost to scrape Otodom.pl?

EventPrice per eventPrice per 1,000
property-scraped$0.0019$1.90

One event is charged each time a property listing is successfully scraped and saved to the dataset — you only pay for listings actually returned. At the default maxItems: 50 with details on, a run costs about $0.095.

Cost examples:

ListingsCost
50 (default run)$0.10
500$0.95
5,000$9.50
50,000$95.00

Apify offers a free trial with platform credits included on signup — enough to scrape thousands of listings at no cost. Higher-spending Apify accounts (Bronze/Silver/Gold tiers) receive automatically discounted per-event pricing.

This Actor extracts publicly available data from Otodom.pl. Scraping public data is generally considered legal based on recent court rulings, including the US Ninth Circuit's decision in hiQ Labs v. LinkedIn. However, you are responsible for ensuring your use of scraped data complies with applicable laws, Otodom.pl's Terms of Service, and data protection regulations including GDPR. Do not use extracted personal data (such as seller phone numbers) for unsolicited contact or purposes incompatible with its original context. For more information, read Apify's blog post on web scraping legality.

Other ParseBird real estate scrapers

ActorTarget siteRegion
Fotocasa ScraperFotocasa.es🇪🇸 Spain
Funda.nl ScraperFunda.nl🇳🇱 Netherlands
Funda in Business ScraperFundaInBusiness.nl🇳🇱 Netherlands (commercial)
Propertyfinder ScraperPropertyFinder.ae🌍 MENA
MagicBricks ScraperMagicBricks.com🇮🇳 India
NoBroker.in ScraperNoBroker.in🇮🇳 India

Browse all ParseBird actors on the Apify Store.

FAQ

What locations can I search on Otodom.pl? Any voivodeship or city covered by Otodom.pl — use the location field in the format voivodeship/city (e.g. mazowieckie/warszawa, malopolskie/krakow), just voivodeship for a whole region, or leave it empty to search all of Poland.

Can I scrape rental listings? Yes. Set searchType to wynajem. Rental listings return the monthly rent in price/rentPrice, and the building's administrative fee separately in serviceFee.

What's the difference between serviceFee and rentPrice? serviceFee is the monthly administrative/building charge (czynsz) and appears on both sale and rental listings. rentPrice is only set on rental listings and mirrors the monthly rent already shown in price.

Does this scraper need residential proxies? Yes. Otodom.pl blocks Apify's shared datacenter proxy IPs at the CDN/WAF level. The Actor defaults proxyConfiguration to Apify's RESIDENTIAL proxy group — leave this on for reliable runs.

Can I scrape a specific listing directly? Yes. Paste one or more Otodom.pl offer URLs (otodom.pl/pl/oferta/...) into Start URLs. You can also mix in search result URLs in the same list.

How many listings can I scrape per run? There's no hard limit. Set maxItems to 0 for unlimited, though very large runs take longer and cost more in compute and proxy bandwidth.

Can I schedule recurring scrapes? Yes. Use Apify scheduling to run daily, weekly, or at any custom interval, and combine it with webhooks or integrations to automate your data pipeline.

Can I access the data via API? Yes. Every run produces a dataset accessible via the Apify API. Integrate with Python, JavaScript, Google Sheets, Zapier, Make, or any HTTP-capable tool.

Found an issue or have a feature request? Use the Issues tab on the Actor page — feedback helps improve reliability.