Otodom Scraper
Pricing
from $1.50 / 1,000 offer scrapeds
Otodom Scraper
Extract Polish real-estate listings from Otodom.pl with prices, locations, property details, images and seller information. Filter by location, map area, property type, budget, rooms and building features.
Pricing
from $1.50 / 1,000 offer scrapeds
Rating
0.0
(0)
Developer
simoit
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
19 hours ago
Last modified
Categories
Share
Otodom.pl Real Estate Scraper
Fast and reliable Apify Actor for scraping public property listings from Otodom.pl, Poland's largest real-estate portal. Collect apartments, houses and land listings with prices, locations, technical details, images and seller data.
Features
- Sale and rental listings for apartments, houses, plots, rooms, garages and commercial properties.
- Search by Otodom location ID or map-drawn GeoJSON polygon.
- Fast listing mode or detail mode with concurrent page enrichment.
- Multi-page pagination with
maxItemsand ID/URL deduplication. - Price, area, rooms, market,
buildingType,extras, build-year and publication filters. - Clean descriptions and AI decision signals for renovation, tenants, auctions, financing and commission.
- Coordinates, image URLs, seller/agency data and publicly exposed phone numbers.
- Automatic proxy rotation, retries and browser-like requests are enabled by default; no proxy setup is required.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
location | string | Warsaw | Province/city such as mazowieckie/warszawa; full Otodom IDs are also accepted |
geometry | object | — | GeoJSON Polygon or MultiPolygon from map drawing |
transaction | string | sell | sell or rent |
estate | string | flat | flat, house, terrain, room, garage or commercial |
buildingType | array | — | Values such as BLOCK, TENEMENT |
extras | array | — | Values such as GARAGE |
priceMin / priceMax | integer | — | Price range in PLN |
areaMin / areaMax | number | — | Area range in m² |
roomsMin / roomsMax | integer | — | Room range from 1 to 6 |
buildYear | integer | — | Minimum construction year |
postedDate | string | — | Otodom publication-date filter |
maxItems | integer | 50 | Maximum results across pages (1–1000) |
extractDetails | boolean | true | Visit detail pages for full enrichment |
maxConcurrency | integer | 5 | Parallel detail requests (1–20) |
Otodom pages contain 20 listings. The Actor follows additional pages until the limit is reached or no more results are available.
Listing mode output
With extractDetails: false, each item includes id, title, url, price,
currency, price_per_square_meter, area, rooms, market, city, street,
image_url, owner/promotion flags and created_at.
Detail mode output
With extractDetails: true, each item also has details containing:
description_previewanddecision_signalscharacteristics,attributes,featuresandadditional_informationimages,images_total,coordinatesandaddress- seller
type,name,agency,phoneandhas_phone_number
Public phone example:
{"id": "67962236","title": "3 rooms, balcony, near M2 metro","price": 474999,"currency": "PLN","area": 47.5,"rooms": 3,"city": "Warszawa","details": {"description_preview": "Apartment requires renovation...","decision_signals": [{"type": "requires_renovation", "evidence": "..."}],"coordinates": {"latitude": 52.287846, "longitude": 21.044584},"seller": {"type": "agency","name": "Example Agency","agency": "Example Agency","phone": "+48123456789","has_phone_number": true}}}
Masked/private phone numbers are returned as null; the Actor does not bypass
Otodom contact controls.
Usage examples
Apartments for sale in Warsaw
{"location": "mazowieckie/warszawa","transaction": "sell","estate": "flat","priceMax": 1000000,"roomsMin": 2,"roomsMax": 4,"maxItems": 100,"extractDetails": true}
Rental apartments in Krakow
{"location": "malopolskie/krakow","transaction": "rent","estate": "flat","priceMax": 4000,"maxItems": 50,"extractDetails": true}
Fast listing-only scrape
{"location": "mazowieckie/warszawa","estate": "flat","maxItems": 500,"extractDetails": false}
Map-drawn area
{"location": "cala-polska","geometry": {"type": "Polygon","coordinates": [[[21.01,52.24],[21.06,52.24],[21.06,52.28],[21.01,52.24]]]},"maxItems": 50}
How to run
- Open the Actor in Apify Console and click Start.
- Fill in the Input form, or paste one of the JSON examples above.
- Choose Run and open the default Dataset when the run finishes.
For a first run, use maxItems: 20 and extractDetails: false. Enable
extractDetails when you need descriptions, images, coordinates and seller
information. The Actor handles pagination and deduplicates listings by URL.
Proxy rotation, retries and request pacing are automatic. You do not need to provide proxy credentials or any environment variables.
Pricing and billing
The Actor is billed automatically through Apify per returned listing. Every run has a minimum charge of 20 events: 11 results consume 20 events, while 21 results consume 21 events. A run with no matching listings also consumes 20 events.
On the free plan you can start 3 searches per calendar month, with up to 20 listings per search. Paid Apify plans can run larger searches according to the same minimum-charge billing shown in the Console.
Invalid filters are reported directly in the run output. If Otodom is temporarily unavailable, Apify marks the run as failed and can retry it.