Otodom Poland Real Estate Listings & Agent Contacts Scraper avatar

Otodom Poland Real Estate Listings & Agent Contacts Scraper

Pricing

from $17.00 / 1,000 results

Go to Apify Store
Otodom Poland Real Estate Listings & Agent Contacts Scraper

Otodom Poland Real Estate Listings & Agent Contacts Scraper

Scrape Otodom Poland property listings for sale or rent with price in PLN, price per m2, area, rooms, floor, district and city, geo coordinates and the advertiser agency, agent name and phone. Filter by transaction, property type and location. Export to JSON, CSV or Excel.

Pricing

from $17.00 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Otodom Poland Real Estate Listings & Agent Contacts Scraper

Otodom Poland Real Estate Listings & Agent Contacts Scraper

Here is one real result, with every field the actor returns. The long Polish description and the images array are trimmed with a [trimmed] marker for readability; every value shown is real:

{
"id": 68299615,
"title": "3 pokoje | parking | ul. Grzybowska | metro",
"transaction": "sprzedaz",
"propertyType": "apartment",
"price": 980000,
"priceCurrency": "PLN",
"rentPrice": 1300,
"pricePerM2": 19809.99,
"area": 49.47,
"rooms": 3,
"floor": 1,
"floorLabel": "FIRST",
"city": "Warszawa",
"district": "Śródmieście",
"neighborhood": "Śródmieście Północne",
"province": "mazowieckie",
"street": "ul. Grzybowska",
"latitude": 52.236824,
"longitude": 21.000046,
"agencyName": "Eastate Agency",
"advertiserType": "AGENCY",
"agentName": "Katarzyna Ochrin",
"agentPhone": "+48536470831",
"agencyPhone": "+48535534245",
"phone": "+48536470831",
"agencyAddress": "Młynarska 7, 01-205, Warszawa, mazowieckie",
"buildYear": 1972,
"buildingType": "block",
"buildingFloors": 15,
"buildingMaterial": "other",
"market": "secondary",
"ownershipForm": "limited_ownership",
"constructionStatus": "ready_to_use",
"windowsType": "plastic",
"heating": "urban",
"energyCertificate": null,
"additionalRent": 1300,
"deposit": null,
"equipment": ["furniture", "fridge", "oven", "dishwasher", "stove"],
"amenities": ["garage", "lift", "basement"],
"referenceId": "3316/19413/OMS",
"description": "Na sprzedaż ustawne, 3-pokojowe mieszkanie położone w ścisłym centrum Warszawy przy ul. Grzybowskiej , w okolicy Ronda ONZ oraz w odległości kilku minut od głównych punktów biznesowych Śródmieścia i Woli. [trimmed]",
"images": [
"https://ireland.apollo.olxcdn.com/v1/files/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmbiI6IjI5aHdiYTdiaWV1YTEtRUNPU1lTVEVNIiwidyI6W3siZm4iOiJlbnZmcXFlMWF5NGsxLUFQTCIsInMiOiIxNiIsImEiOiIwIiwicCI6IjEwLC0xMCJ9XX0.wX3YAMnNwiDtIrT9gPMgMR2B1Eu-VGjwMy79SRbJ2S4/image;s=2048x1536;q=80"
],
"isPrivateOwner": false,
"isPromoted": false,
"listingUrl": "https://www.otodom.pl/pl/oferta/3-pokoje-parking-ul-grzybowska-metro-ID4CzQH",
"dateCreated": "2026-08-10 16:23:12",
"source": "otodom",
"observedAt": "2026-08-10T14:31:10.924Z",
"searchLocation": "mazowieckie/warszawa/warszawa/warszawa"
}

(The images array above is trimmed to 1 of its 15 real entries; the URL shown is the real, full signed Otodom CDN URL exactly as returned.)

The most complete Otodom Poland real estate scraper available. It returns every field an Otodom listing exposes, including price, price per m2, area, rooms, floor, full location down to neighborhood with exact map coordinates, building details (year, type, floors, material, heating, ownership form, construction status), equipment and amenities, the full Polish description and image gallery, and the advertiser and agent phone numbers, so you get both the property data and the contact leads in one run.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor searches Otodom, Poland's largest property portal, for the transaction, property type and locations you pass, paginates through the results, and writes one normalized record per listing to the run's dataset. Each record carries the full price and area breakdown, location down to the neighborhood, building attributes, equipment and amenities, the description and image gallery, and the listing URL. With contact enrichment on, the actor visits each listing to capture the advertiser and agent phone numbers and the exact map coordinates. Missing source values are returned as null.

Location slugs follow Otodom's own path format, from broad to narrow (province / county / commune / city), so you can target a single city or a whole province.

Quickstart

Open the actor, paste this into the input, and press Run. It returns up to 10 Warsaw and Krakow apartments for sale, with phone and geo enrichment.

{
"transaction": "sprzedaz",
"propertyType": "mieszkanie",
"locations": ["mazowieckie/warszawa/warszawa/warszawa", "malopolskie/krakow/krakow/krakow"],
"enrichContacts": true,
"maxListings": 10
}

Switch transaction to wynajem for rentals, and propertyType to dom, pokoj, lokal or dzialka. Turn enrichContacts off for a faster, listings-only run.

Input reference

FieldTypeRequiredDefaultDescription
transactionenumnosprzedazsprzedaz (for sale) or wynajem (for rent).
propertyTypeenumnomieszkaniemieszkanie (apartment), dom (house), pokoj (room), lokal (commercial), or dzialka (land).
locationsstring[]noWarsaw, KrakowOne or more Otodom location paths, broad to narrow, for example mazowieckie/warszawa/warszawa/warszawa (Warsaw) or mazowieckie (whole province). Every location is searched in one run.
enrichContactsbooleannotrueVisit each listing to capture advertiser phone, agent phone and exact map coordinates. Off returns listings-only.
maxListingsintegerno10Maximum listings to collect across all locations in this run.
enrichContactsMaxintegerno50Cap how many results the enrichment add-on tries to enrich, to control cost. Free Apify accounts are capped at 3.

Output reference

One dataset item per listing. Types: string, integer, number, boolean, string[], or null when the source value is absent.

FieldTypeDescription
idintegerOtodom listing ID (unique).
titlestringListing title.
transactionstringsprzedaz (sale) or wynajem (rent).
propertyTypestringNormalized property type, for example apartment, house.
priceintegerAsking / sale price.
priceCurrencystringPrice currency, for example PLN.
rentPriceintegerMonthly rent where applicable, or null.
pricePerM2numberPrice per square meter.
areanumberFloor area in square meters.
roomsintegerNumber of rooms.
floorintegerFloor number of the unit.
floorLabelstringFloor label, for example FIRST, GROUND.
citystringCity.
districtstringDistrict, or null.
neighborhoodstringNeighborhood, or null.
provincestringProvince (wojewodztwo).
streetstringStreet, or null.
latitudenumberMap latitude (with enrichment).
longitudenumberMap longitude (with enrichment).
agencyNamestringListing agency name, or null.
advertiserTypestringAGENCY, PRIVATE, or DEVELOPER.
agentNamestringAgent name, or null.
agentPhonestringAgent phone (with enrichment), or null.
agencyPhonestringAgency phone (with enrichment), or null.
phonestringBest contact phone (with enrichment), or null.
agencyAddressstringAgency address, or null.
buildYearintegerYear the building was built, or null.
buildingTypestringBuilding type, for example block, tenement, apartment.
buildingFloorsintegerNumber of floors in the building, or null.
buildingMaterialstringConstruction material, or null.
marketstringprimary or secondary.
ownershipFormstringOwnership form, for example limited_ownership, full_ownership.
constructionStatusstringConstruction status, for example ready_to_use.
windowsTypestringWindow type, or null.
heatingstringHeating type, for example urban, gas.
energyCertificatestringEnergy certificate, or null.
additionalRentintegerAdditional monthly fees (czynsz), or null.
depositintegerRental deposit, or null.
equipmentstring[]Equipment list, for example furniture, fridge, oven.
amenitiesstring[]Amenities, for example garage, lift, basement.
referenceIdstringAgency reference / offer number.
descriptionstringFull listing description (Polish).
imagesstring[]Image gallery URLs (full signed Otodom CDN URLs).
isPrivateOwnerbooleantrue if a private advertiser.
isPromotedbooleantrue if a promoted listing.
listingUrlstringListing page URL.
dateCreatedstringListing creation timestamp.
sourcestringAlways otodom.
observedAtstringISO 8601 timestamp of when the record was collected.
searchLocationstringThe location slug that produced this record.

Example output record

See the hero record at the top of this page. It is a real Warsaw apartment for sale (Otodom listing 68299615, ul. Grzybowska) pulled from a live run with contact enrichment on (input {"transaction":"sprzedaz","propertyType":"mieszkanie","locations":["mazowieckie/warszawa/warszawa/warszawa","malopolskie/krakow/krakow/krakow"],"enrichContacts":true,"maxListings":10}), with the description and image gallery trimmed; every value shown is real.

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~otodom-poland-realestate-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"transaction":"wynajem","propertyType":"mieszkanie","locations":["malopolskie/krakow/krakow/krakow"],"maxListings":25}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~otodom-poland-realestate-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"transaction":"sprzedaz","propertyType":"dom","locations":["mazowieckie"],"enrichContacts":true,"maxListings":100}'

Apify CLI:

apify call scrapers_lat/otodom-poland-realestate-scraper \
--input '{"transaction":"sprzedaz","propertyType":"mieszkanie","locations":["mazowieckie/warszawa/warszawa/warszawa"],"maxListings":10}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per listing returned (result event). See the pricing tab for the current per-result price.
  • No charge on failure. If a run errors, the actor writes a single item with a populated error field and does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 listings per run, and contact enrichment is capped at 3 listings. Upgrade for higher maxListings and full enrichment.

FAQ and troubleshooting

A run returned 0 records. Why? The location slug may be wrong, or no listings match the transaction and property type. Check the slug against an Otodom search URL and try a broader location. Zero-result runs are not charged.

How do I find the right location slug? Open the location on otodom.pl and copy the path segment from the URL, from province down to city, for example mazowieckie/warszawa/warszawa/warszawa.

Do I get phone numbers? Yes, with enrichContacts on (the default). The actor visits each listing to capture the advertiser and agent phone numbers. Free accounts enrich the first 3 listings per run.

The description contains Polish text and HTML entities. Is that normal? Yes. The description is returned as Otodom stores it, in Polish. It may include entities like &nbsp;. Values are passed through as-is and never invented.

Is this an official Otodom tool? No. This actor is independent and has no affiliation with Otodom or OLX Group. It reads only data that is publicly available on Otodom listings. Use it in accordance with Otodom's terms.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with Otodom or OLX Group. Accesses only publicly available Otodom listing data. Use in accordance with Otodom's terms of service.