Otodom.pl Scraper
Pricing
from $0.79 / 1,000 results
Otodom.pl Scraper
Scrape Otodom.pl — Poland's largest real estate portal. 140k+ listings: apartments, houses, plots, commercial. Prices, areas, rooms, photos, GPS. Sale & rent. No API key required.
Pricing
from $0.79 / 1,000 results
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Otodom.pl Real Estate Scraper

Extract structured property listings from Otodom.pl — Poland's largest real estate marketplace with over 140,000 active listings. Scrape apartments, houses, rooms, commercial spaces and plots for sale or rent. No API key required. No configuration needed to get started.
Features
- All property types: apartments, houses, rooms, land / plots, commercial spaces, warehouses and garages
- Sale and rent: full coverage of both transaction types
- Location filtering: whole of Poland or any specific city, voivodeship or district via location slug
- Rich structured output: price, price per m², surface area, number of rooms, floor, city, province, district, street address, agency, listing date and images
- Optional detail enrichment: full description, GPS coordinates, building type, construction status, condition, heating, material, ownership, kitchen type, parking, media types, security types, AI-detected extras and agency phone
- Custom search URLs: paste any Otodom.pl search URL directly as input
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
startUrls | array | [] | One or more Otodom.pl search result URLs. When provided, the transaction / propertyType / location fields below are ignored. |
transaction | select | sale | sale for Sprzedaż listings, rent for Wynajem listings. |
propertyType | select | FLAT | Property type: FLAT, HOUSE, ROOM, TERRAIN, COMMERCIAL, WAREHOUSE, GARAGE. |
location | string | cala-polska | Otodom location slug. Use cala-polska for all of Poland, or a city slug such as warszawa, krakow, wroclaw, gdansk. Find any slug in the Otodom URL after selecting a location. |
maxResults | integer | 200 | Maximum number of listings to scrape. |
fetchDetails | boolean | false | Visit each listing's detail page to extract full description, GPS coordinates, building characteristics and AI-detected extras. Increases run time. |
Output schema
Always present (list page)
| Field | Type | Description |
|---|---|---|
id | string | Unique Otodom listing ID |
url | string | Full listing URL |
title | string | Listing title |
shortDescription | string | null | Short teaser text shown on list page |
operationType | string | sale or rent |
propertyType | string | flat, house, room, terrain, commercial, warehouse, garage |
priceText | string | null | Price as displayed, e.g. PLN 850 000 |
priceAmount | number | null | Price as a number |
priceCurrency | string | null | PLN or null if hidden |
pricePerSqm | number | null | Price per square metre |
rentPrice | number | null | Additional monthly rent charge |
hidePrice | boolean | True if the owner chose to hide the price |
areaInSquareMeters | number | null | Total usable area in m² |
terrainAreaInSquareMeters | number | null | Terrain/plot area in m² (houses and plots) |
roomsNumber | number | null | Number of rooms |
floorNumber | number | null | Floor as integer (0 = ground, -1 = attic/basement) |
streetAddress | string | null | Street name when disclosed by the owner |
city | string | null | City name |
district | string | null | City district |
subdistrict | string | null | Residential sub-district |
province | string | null | Voivodeship / province name |
country | string | Always PL |
agencyName | string | null | Real estate agency name, or null for private sellers |
agencyId | number | null | Agency identifier |
isPrivateOwner | boolean | True if the listing is from a private individual |
isPromoted | boolean | True if the listing is a promoted/sponsored placement |
isExclusiveOffer | boolean | True for exclusive listings |
images | string[] | Array of full-resolution image URLs |
totalImages | number | Total number of images available |
tags | string[] | Feature tags, e.g. TERRACE, PARKING_SPOT, BALCONY, BASEMENT |
developmentTitle | string | null | Developer project name (new builds) |
developmentUrl | string | null | Developer project page URL |
publishDate | string | null | Date first listed, YYYY-MM-DD |
publishDateISO | string | null | Same as publishDate |
pushedUpAt | string | null | Last time the listing was bumped to the top |
source | string | Always otodom.pl |
scrapedAt | string | ISO timestamp of when the record was scraped |
contentHash | string | 16-character hash of ID + price + rooms, for change detection |
With fetchDetails: true
| Field | Type | Description |
|---|---|---|
descriptionHtml | string | null | Full listing description in HTML |
descriptionText | string | null | Plain text version of the description |
coordinates | object | null | { lat, lng } — GPS coordinates |
buildYear | number | null | Year the building was constructed |
buildingType | string | null | e.g. BLOCK, APARTMENT, TENEMENT, HOUSE |
buildingMaterial | string | null | e.g. BRICK, CONCRETE_PLATE, REINFORCED_CONCRETE |
buildingFloors | number | null | Total number of floors in the building |
condition | string | null | e.g. READY_TO_USE, TO_RENOVATION, TO_COMPLETION |
heating | string | null | e.g. GAS, URBAN, ELECTRIC, BOILER_ROOM |
ownership | string | null | e.g. FULL_OWNERSHIP, LIMITED_OWNERSHIP |
marketType | string | null | primary (developer) or secondary (resale) |
advertiserType | string | null | business or private |
freeFrom | string | null | Availability date when specified |
windowsType | string | null | e.g. plastic, wooden, aluminium |
kitchen | string | null | Kitchen type: SEPARATE, ANNEX, or null |
parking | string[] | Parking types available, e.g. garage, parking_spot |
county | string | null | County name |
equipmentTypes | string[] | Equipment included, e.g. furniture, washing_machine |
extrasTypes | string[] | Extras, e.g. balcony, terrace, basement, lift |
mediaTypes | string[] | Media available, e.g. internet, cable-television, phone |
securityTypes | string[] | Security features, e.g. entryphone, monitoring, anti_burglary_door |
featuresByCategory | object[] | Structured features grouped by category |
aiExtras | object[] | AI-detected extras [{ key, value }] not yet in main listing |
agencyPhone | string | null | Agency phone number when available |
videos | string[] | Video tour URLs when present |
Example output
{"id": "67359467","url": "https://www.otodom.pl/pl/oferta/example-listing-ID4xAbC","title": "115 metrów tarasu — 3 pokoje — 61,3 mkw","operationType": "sale","propertyType": "flat","priceText": "PLN 869000","priceAmount": 869000,"priceCurrency": "PLN","pricePerSqm": 14176,"rentPrice": 900,"hidePrice": false,"areaInSquareMeters": 61.3,"roomsNumber": 3,"floorNumber": 3,"streetAddress": "ul. Płochocińska","city": "Warszawa","district": "Białołęka","subdistrict": "Szamocin","province": "mazowieckie","country": "PL","tags": ["TERRACE", "BASEMENT", "TOP_FLOOR", "PARKING_SPOT", "SECURE_BUILDING"],"images": ["https://ireland.apollo.olxcdn.com/v1/files/example.jpg"],"totalImages": 20,"agencyName": "Deweloper Market","publishDate": "2026-04-23","source": "otodom.pl","scrapedAt": "2026-05-06T11:16:03.894Z","contentHash": "06e1a66a4d3014ea","coordinates": { "lat": 52.364383801137, "lng": 21.02693908859 },"buildYear": 2024,"buildingType": "BLOCK","buildingMaterial": "REINFORCED_CONCRETE","buildingFloors": 3,"condition": "TO_COMPLETION","heating": "BOILER_ROOM","ownership": "FULL_OWNERSHIP","marketType": "secondary","advertiserType": "business","freeFrom": "2025-10-17","extrasTypes": ["garage", "basement", "terrace", "lift"],"mediaTypes": ["internet", "cable-television", "phone"],"securityTypes": ["anti_burglary_door", "entryphone", "monitoring"],"agencyPhone": "+48794414112"}
Examples
1 — Apartments for sale in Warsaw
{"transaction": "sale","propertyType": "FLAT","location": "warszawa","maxResults": 500}
2 — Houses for rent, all of Poland
{"transaction": "rent","propertyType": "HOUSE","location": "cala-polska","maxResults": 200}
3 — Custom search URL with filters (2-3 rooms, 40–70 m², Kraków)
Perform your search on otodom.pl with all desired filters applied, then copy the URL and pass it as startUrls:
{"startUrls": [{ "url": "https://www.otodom.pl/pl/wyniki/sprzedaz/mieszkanie/malopolskie/krakow/krakow/krakow?roomsNumber=%5BTWO%2CTHREE%5D&areaMin=40&areaMax=70" }],"maxResults": 1000,"fetchDetails": false}
4 — Daily feed with full details (monitoring for new listings)
{"transaction": "sale","propertyType": "FLAT","location": "wroclaw","maxResults": 50,"fetchDetails": true}
Run this on a daily schedule to detect new listings in Wrocław with full descriptions, GPS coordinates and building characteristics.
Pricing
$0.79 per 1,000 listings — among the lowest in the market.
| Action | Cost |
|---|---|
| Actor start | $0.00005 |
| Per listing stored | $0.00079 |
| 1,000 listings | ~$0.79 |
| 10,000 listings | ~$7.90 |
Proxy costs are covered by Unfenced Group — you are only charged for results.
Known limitations
coordinates,buildingType,heating,condition, and other building characteristics are only available whenfetchDetails: trueagencyPhonerequiresfetchDetails: truepriceAmountis null for listings where the owner chose to hide the price (hidePrice: true)- Otodom.pl paginates at 36 listings per page; the full market has 140k+ active listings
Technical details
- Source: Otodom.pl — Poland's leading real estate portal
- Method: Next.js
_next/dataJSON API — pure JSON responses, no HTML parsing, no browser required - Response size: ~240 KB per page (5× smaller than HTML approach)
- Memory: 256 MB minimum, 512 MB default
- Retry: Automatic retry on transient errors with exponential backoff
- Deduplication: 16-character content hash per listing for change detection across repeated runs
- Output fields: 36 fields (list page) + 20 additional fields with
fetchDetails: true
Additional services
Need custom fields, a different output format, webhook delivery, or scheduled monitoring? Contact info@unfencedgroup.nl.
Built and maintained by Unfenced Group — a commercial portfolio of European real estate and job board scrapers on Apify.