Otodom Scraper - Polish Real Estate Listings
Pricing
from $1.00 / 1,000 results
Otodom Scraper - Polish Real Estate Listings
Scrapes property listings from Otodom.pl, Poland's leading real estate marketplace. Supports filters for transaction type, property type, location, price, area, rooms, building type, extras, and more.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Scraptivo
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
5 days ago
Last modified
Categories
Share
Otodom Scraper collects property listings from Otodom.pl, Poland's leading real estate marketplace, and turns them into structured data for real estate analysis, lead generation, and market monitoring. Provide a search URL or a location with filters, run the Actor, and export prices, area, rooms, floor, address, images, and seller details to JSON, CSV, Excel, or your preferred integration. Use it to track asking prices, build property lists, and monitor new listings. Each property result costs $0.001.
What can you automate with Otodom Scraper?
- Track asking prices — collect total price and price per square meter across cities and property types.
- Build property lists — filter by transaction, property type, price, area, rooms, and building type.
- Monitor new listings — schedule recurring runs to catch fresh offers by date.
- Identify private sellers vs agencies — export
isPrivateOwnerandagencyName. - Feed a CRM or spreadsheet — export JSON, CSV, or Excel for outreach or analysis.
Who is this scraper for?
| Team | Workflow |
|---|---|
| Real estate agents | Monitor competing listings and pricing in their market. |
| Investors and analysts | Track price trends and yields by location and property type. |
| Lead-generation teams | Build lists of sellers and agents with contact context. |
| Proptech and data teams | Power apps and dashboards with structured listing data. |
What data can you collect from Otodom?
| Data group | Example fields | How it helps |
|---|---|---|
| Listing identity | id, title, url, dateCreated | Identify and link the offer. |
| Price | totalPrice, priceCurrency, pricePerSquareMeter | Assess value and compare. |
| Property details | areaInSquareMeters, roomsNumber, floorNumber, estate, transaction | Qualify the property. |
| Location | city, province, street, location | Map and target areas. |
| Seller | isPrivateOwner, agencyName, ownerName, isExclusiveOffer | Understand who is selling. |
How to use Otodom Scraper
- Open the Actor in the Scraptivo account.
- Paste a copied Otodom search URL, or enter a location plus filters.
- Set optional filters for price, area, rooms, and property type.
- Run the Actor.
- Export the dataset to JSON, CSV, Excel, or your integration.
{ "locationQuery": "Bielawa", "transaction": "RENT", "estate": "FLAT", "maxItems": 20 }
Example workflow
Track apartment asking prices in a district every week
- Run an apartment (
FLAT) search for one city every Monday. - Keep listings posted in the last 7 days.
- Send new records to Google Sheets or a CRM.
- Deduplicate using the stable listing
id.
Automate and integrate your results
- Schedule daily or weekly runs per location using Apify's Scheduler or the API.
- Webhooks after a successful run to trigger your downstream pipeline.
- Export to Google Sheets, Make, Zapier, Slack, or a database.
- Deduplicate using the stable
idfield.
curl "https://api.apify.com/v2/acts/scraptivo~otodom-scraper/run-sync" -H "Content-Type: application/json" -d '{"locationQuery":"Bielawa","transaction":"SELL","estate":"FLAT","maxItems":20}'
Input reference
| Field | Type | Required | Default | What it controls |
|---|---|---|---|---|
| searchUrl | string | no | — | Full Otodom search URL; when set, filter fields are ignored. |
| locationQuery | string | no | — | City/region name or Otodom domain path. |
| transaction | string | no | SELL | For sale or for rent. |
| estate | string | no | FLAT | Property type (apartment, house, plot, etc.). |
| market | string | no | ALL | Primary (new), secondary (resale), or all. |
| ownerType | string | no | ALL | Filter by private, developer, or agency. |
| availability | string | no | "" | Filter by "available now" or any. |
| priceMin / priceMax | integer | no | — | Price range in PLN. |
| areaMin / areaMax | integer | no | — | Living area range in m². |
| roomsNumber | array | no | — | Filter by number of rooms (1 to 6+). |
| buildingType | array | no | — | Building construction type. |
| heating | array | no | — | Heating type. |
| floorNumber | array | no | — | Floor position. |
| floorsNumberMin / Max | integer | no | — | Building floor count range. |
| buildYearMin / Max | integer | no | — | Construction year range. |
| extras | array | no | — | Amenities (balcony, garage, elevator, etc.). |
| daysSinceCreated | string | no | "" | Filter by listing age (1/3/7/14/30 days). |
| hasPhotos | boolean | no | false | Only listings with photos. |
| isExclusiveOffer | boolean | no | false | Only exclusive (private) offers. |
| sortBy | string | no | DEFAULT | Sort by price, date, or area. |
| sortDirection | string | no | DESC | Ascending or descending order. |
| maxPages | integer | no | 0 | Max result pages to scrape (0 = unlimited). |
| maxItems | integer | no | 100 | Max listings to scrape (0 = unlimited). |
| proxyConfiguration | object | no | RESIDENTIAL | Proxy settings for anti-bot protection. |
Output example
{"id": 68126450,"title": "3-POKOJOWE MIESZKANIE – BIELAWA, UL. REYMONTA","url": "https://www.otodom.pl/pl/ad/3-pokojowe-mieszkanie-bielawa-ul-reymonta-ID4BQNI","estate": "FLAT","transaction": "RENT","totalPrice": 1900,"priceCurrency": "PLN","pricePerSquareMeter": 29,"areaInSquareMeters": 65,"roomsNumber": "THREE","floorNumber": "SECOND","city": "Bielawa","province": "dolnośląskie","isPrivateOwner": true,"hasPhotos": true,"imageCount": 11}
How much does it cost to scrape Otodom?
Otodom Scraper uses pay-per-event billing on Apify:
- $0.001 per property result (the headline result event).
- $0.00005 per run for the actor-start event.
Examples: 100 listings cost about $0.10; 1,000 listings cost about $1.00 plus the start fee. Residential proxy traffic is billed separately by Apify according to your plan.
Reliability and responsible use
- Residential proxies are enabled by default for anti-bot protection.
- When
searchUrlis provided, the filter fields are ignored and onlymaxItems,maxPages, and proxy apply. - Location names are resolved automatically via Otodom's autocomplete.
- Scrape only public listing data and follow Otodom's terms of service.
Frequently asked questions
Can I scrape Otodom by search URL instead of filters?
Yes. Paste a copied Otodom search URL into searchUrl; the Actor uses it as-is and ignores the filter fields.
Can I filter by price, area, and rooms?
Yes. Use priceMin/priceMax, areaMin/areaMax, and roomsNumber. These apply only when searchUrl is empty.
What counts as one result?
One property listing in the dataset.
Why are some fields empty?
Some listings do not publish every field (e.g. agencyName is empty for private sellers, and pricePerSquareMeter can be missing).
How do I avoid duplicate records?
Deduplicate on the stable id field before writing to your CRM or spreadsheet.
Do I need a proxy?
Residential proxies are recommended and enabled by default for anti-bot protection.
Related Scraptivo automations
- Apartments Scraper — apartment listings from Apartments.com.
- Immobiliare Scraper — property listings from Immobiliare.it.
- Rightmove Scraper — UK property listings from Rightmove.
- Immowelt Property Scraper — German property listings from Immowelt.
Support and custom workflows
Need a different field, source, or delivery workflow? Contact Scraptivo at scraptivo@gmail.com. Include the Actor name, a sample URL, the required fields, and expected volume so we can assess the request.