Otodom Poland Real Estate Listings avatar

Otodom Poland Real Estate Listings

Pricing

from $1.70 / 1,000 listing founds

Go to Apify Store
Otodom Poland Real Estate Listings

Otodom Poland Real Estate Listings

Pull live apartment and house listings straight from Otodom.pl — Poland's biggest real-estate classifieds portal — by deal type, property type and city. No login, no browser, no proxies. Unofficial, independent tool — not affiliated with, endorsed by, or sponsored by Otodom.

Pricing

from $1.70 / 1,000 listing founds

Rating

0.0

(0)

Developer

Tim Zinin

Tim Zinin

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 hours ago

Last modified

Categories

Share

Pull live apartment and house listings straight from Otodom.pl — Poland's biggest real-estate classifieds portal — filtered by deal type (sale/rent), property type and city. No login, no API key, no browser needed on your side.

What you get

  • Title, price (with currency), rooms, floor area, voivodeship/city/district location, a short description, preview photos and the direct listing URL for every ad found.
  • Filter by sale or rent, apartment or house, and any Otodom.pl city.
  • Runs on Apify: schedule it, monitor it, call it from the API, export to JSON/CSV/Excel or push straight into your own pipeline.

How to run it

  1. Click Try for free — no card needed on the free plan.
  2. Pick Deal type (sale/rent) and Property type (apartment/house), and set City path — for example mazowieckie/warszawa/warszawa/warszawa for the city of Warsaw.
  3. Hit Start and pull the results from the dataset (UI, API or webhook).

Pricing

Pay-per-event: $0.005 per run start + $0.002 per result. No monthly seat, no minimum. 100 listings found cost about $0.21 (the one-time start fee plus 100 result rows). Rows where the source returned nothing (an unrecognized combination, a search with zero matching listings, or a request that failed) are returned for transparency but are never charged for.

Input

FieldRequiredWhat it does
deal_typenosprzedaz (sale) or wynajem (rent). Default sprzedaz.
property_typenomieszkanie (apartment) or dom (house). Default mieszkanie.
citynoOtodom.pl location path, e.g. mazowieckie/warszawa/warszawa/warszawa for the city of Warsaw. Default mazowieckie/warszawa/warszawa/warszawa.
max_itemsnoTotal row cap for this run (default 100).
max_pagesnoHow many result pages to walk before stopping (default 3).
{
"deal_type": "sprzedaz",
"property_type": "mieszkanie",
"city": "mazowieckie/warszawa/warszawa/warszawa",
"max_items": 5,
"max_pages": 1
}

Output

Real row from a live run on the platform (2026-07-30):

{
"found": true,
"url": "https://www.otodom.pl/pl/oferta/2-pokojowe-mieszkanie-41m2-balkon-bezposrednio-ID4uobY",
"title": "2-pokojowe mieszkanie 41m2 + balkon Bezpośrednio",
"price": 1059000,
"currency": "PLN",
"deal_type": "sale",
"property_type": "FLAT",
"rooms": 2,
"area_sqm": 41.53,
"location": "Czyste, Wola, Warszawa, mazowieckie",
"lat": null,
"lng": null,
"posted_date": "2026-07-30 16:37:36",
"description": "2-pokojowe mieszkanie numer BC0102 na 1. piętrze w budynku 2 w Inwestycji NU2 Warszawa Wola Dewelopera SkanskaPonadstandardowa wysokość pomieszczeńSterowanie mediami i oświetleniem z poziomu aplikacj...",
"images": [
"https://ireland.apollo.olxcdn.com/v1/files/eyJmbiI6ImtsZjZ0dXJmNmRmNC1FQ09TWVNURU0iLCJ3IjpbeyJmbiI6ImVudmZxcWUxYXk0azEtQVBMIiwicyI6IjE0IiwicCI6IjEwLC0xMCIsImEiOiIwIn1dfQ.nIxmw2l4KAr-qTtFs1F3CQmnKvsrS494RKm9YPVRC5k/image;s=655x491;q=80",
"https://ireland.apollo.olxcdn.com/v1/files/eyJmbiI6IjA5MDVtZnBhM3VhYzMtRUNPU1lTVEVNIiwidyI6W3siZm4iOiJlbnZmcXFlMWF5NGsxLUFQTCIsInMiOiIxNCIsInAiOiIxMCwtMTAiLCJhIjoiMCJ9XX0.JioWAGfTQKktwfxyeNOHWtOEKJyI3JHq1wKzKOSUsEk/image;s=655x491;q=80",
"https://ireland.apollo.olxcdn.com/v1/files/eyJmbiI6ImFuNW5nbjBiOXdlMTItRUNPU1lTVEVNIiwidyI6W3siZm4iOiJlbnZmcXFlMWF5NGsxLUFQTCIsInMiOiIxNCIsInAiOiIxMCwtMTAiLCJhIjoiMCJ9XX0.Po1kmZ0Fo3zyxNXo2vdPYNJjKho2RFT9pIfP4dKuEVE/image;s=655x491;q=80"
],
"source_portal": "otodom-warsaw",
"scraped_at": "2026-07-30T14:41:21.073Z",
"partial": true,
"partial_reason": "stopped after 1 page(s), 5 item(s) collected — reached this run's own max_pages/max_items limit before the source confirmed (via confirmedEnd) that there is nothing more; there may be additional matching listings beyond what was collected"
}
FieldMeaning
foundtrue for a real listing row; false for an empty-result or error row.
titleListing headline as published.
priceSale price, or monthly rent for rentals.
currencyAlways PLN on Otodom.pl.
deal_typesale or rent.
property_typeOtodom's own classification: FLAT, HOUSE, or INVESTMENT (new-development project).
roomsNumber of rooms, up to 10. null when Otodom reports an open-ended "10+" instead of an exact count.
area_sqmFloor area in square meters.
locationMost specific location Otodom gives (district/neighborhood where available, otherwise city/voivodeship).
posted_dateRaw timestamp as Otodom publishes it.
descriptionShort listing description, as Otodom publishes it.
lat / lngNot available on list pages — always null.
urlDirect link to the listing.
imagesUp to 5 photo URLs.
source_portalAlways "otodom-warsaw".
scraped_atWhen this Actor fetched the row.
partialtrue when this run stopped without Otodom itself confirming there is nothing more — either max_pages/max_items was reached, or an unconfirmed empty page came back. false only when the source's own response confirmed no further results exist. Carried on every row, found or not.
partial_reasonPlain-English reason when partial is true; null when it's false.

API

Start a run with a bearer token and explicit JSON input:

curl -sS -X POST 'https://api.apify.com/v2/acts/zinin~otodom-warsaw/runs?waitForFinish=60' \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H 'Content-Type: application/json' \
--data '{"deal_type":"sprzedaz","property_type":"mieszkanie","city":"mazowieckie/warszawa/warszawa/warszawa","max_items":5,"max_pages":1}'

Read Dataset rows using the returned defaultDatasetId:

curl -sS "https://api.apify.com/v2/datasets/$DEFAULT_DATASET_ID/items?clean=true&format=json" \
-H "Authorization: Bearer $APIFY_TOKEN"

MCP

For an Apify MCP client exposing the standard call-actor tool, send this exact payload:

{
"name": "call-actor",
"arguments": {
"actor": "zinin/otodom-warsaw",
"input": {
"deal_type": "sprzedaz",
"property_type": "mieszkanie",
"city": "mazowieckie/warszawa/warszawa/warszawa",
"max_items": 5,
"max_pages": 1
}
}
}

Other European real-estate portals on the same account, for a buyer comparing markets rather than looking at Warsaw alone.

ActorUse it when
Imovirtual Portugal Real Estate ListingsComparing Warsaw against a Western-Europe capital with EU Golden-Visa-style buyer interest, in the same pipeline.
Storia Romania Real Estate ListingsAdding a lower entry-price EU market to the same portfolio without new plumbing.
Rightmove UK Property Listings (London and beyond)Benchmarking Warsaw's prices against London's for a buyer being priced out of the UK market.
Krisha.kz Kazakhstan Real Estate ListingsDiversifying a portfolio outside the EU into a CIS/Central Asia market with the same query shape.

FAQ / Limitations

Does this need a login or API key on Otodom's side? No — it reads the same public listing pages a visitor would see.

What this is NOT. This is not a valuation tool and does not enrich listings with data Otodom itself doesn't publish (no coordinates, no agent phone numbers). Rooms reported by Otodom as an open-ended "10+" come back as null, not a guessed number.

Found a bug or need this adapted to your case — issues on the Actor page.

Machine use

The Actor is callable through the Apify API, SDK, and Apify MCP server. The input and Dataset row are the machine-facing contract; images returns preview photo URLs only, not the full listing gallery, and rooms is null whenever Otodom itself reports an open-ended "10+" rather than an exact count — this Actor never fills that gap with a guess.