Polish Real Estate Aggregator avatar

Polish Real Estate Aggregator

Pricing

from $2.99 / 1,000 results

Go to Apify Store
Polish Real Estate Aggregator

Polish Real Estate Aggregator

Unified real-estate search across Poland's 5 largest portals (Otodom, Morizon, Gratka, OLX, Nieruchomości-online). Runs all in parallel and groups duplicate listings - when the same property is advertised on multiple portals, you get one canonical row plus a list of all sources.

Pricing

from $2.99 / 1,000 results

Rating

0.0

(0)

Developer

Paweł

Paweł

Maintained by Community

Actor stats

1

Bookmarked

31

Total users

3

Monthly active users

0.94 hours

Issues response

2 days ago

Last modified

Share

🏠 Polish Real Estate Aggregator

🎯 Search Poland's top 7 real estate portals at once — deduplicated, unified, one click.

Automatically collect property listings from Otodom, Morizon, Gratka, OLX, Nieruchomości-online, Adresowo and Domiporta in a single run. The aggregator scrapes them in parallel, normalizes every field into one schema, and detects the same physical apartment advertised on multiple portals. You get a clean dataset where every listing has a clusterId grouping all its cross-portal copies.

🆕 What's New

August 2026 — v1.2.5: 📐 Plot areas fixed. Areas above 999 m² were truncated to their first digit on Morizon and Gratka (a 2 372 m² plot came out as 2) — the portals use a non-breaking space as the thousands separator and the parser stopped there. OLX reported plot areas in ares while the field is documented in m², so a 9.36-ar plot looked like a studio flat; areas are now converted from the unit the portal actually uses (ar, ha, m²). Apartments were unaffected, which is why this went unnoticed until plot search started working.

August 2026 — v1.2.3: 🐛 Property type and rent fixes. Searching for a house, plot or commercial unit used to fall back to apartments on some portals — OLX always returned apartments regardless of type, and Morizon/Gratka silently mapped commercial units to apartments. Every type now maps to the portal's real category (verified live on all four types × sale/rent). Gratka rentals were also affected: the rent filter was sent as a query parameter the portal ignored, so a rent search returned sale listings — it now uses the correct path segment.

August 2026 — v1.2: 📅 Date range filter. Restrict a run to listings published (or last updated) between two dates — Posted from / Posted to in the input. Where a portal supports it, the range is pushed down to the portal's own filter so your per-portal limit isn't wasted on old offers. Every record now also carries a normalized datePublished / dateUpdated day, so results are directly sortable and comparable across portals. See Date range filtering.

July 2026 — v1.1: Two new portals joined the aggregation: Adresowo.pl (Poland's largest base of direct-from-owner, no-agent listings) and Domiporta.pl (including new-build developer investments). The aggregator now searches 7 portals in every run — no input changes needed, the new portals are included by default. 🚀 Early access: select build beta in Run options → Build (or pass build=beta via API) until the release rolls out to the default version.

🚀 What Does It Do?

This aggregator replaces seven separate scrapers with one single input and one unified output. Set your search criteria once — city, price range, area, rooms — and it queries all seven portals simultaneously, cleans the data, then deduplicates listings that appear on multiple platforms.

💡 Three things happen automatically under the hood:

  1. 🌐 Parallel multi-portal search — All seven portals scraped at once with the same filters
  2. 🧬 Smart cross-portal matching — A multi-signal algorithm detects when the same property appears on different portals
  3. 🏆 Canonical selection — From each cluster, the algorithm picks the listing with the most complete data as the canonical record

👥 Who Is This For?

🏢 Use Case💬 How It Helps
📊 Real Estate AgenciesSee the full market at once instead of manually checking seven sites separately
🔎 Property InvestorsCompare prices across portals for the same property — spot price differences and arbitrage
📣 Market ResearchersAccurate market-size statistics without double-counting cross-posted listings
🏗️ Proptech PlatformsClean, deduplicated inventory feed for aggregator sites or CRM systems
🌍 Relocation ServicesOffer clients the widest selection of Polish properties from a single source
🧾 Data AnalystsMeasure market velocity, listing overlap rates, and price dispersion across portals
💼 Mortgage & FinTechReliable property data pipeline without building integrations to each portal
🏘️ Valuation CompaniesMulti-source price comparables for appraisal reports

✨ Features

  • 🌐 7 Portals at Once — Otodom, Morizon, Gratka, OLX, Nieruchomości-online, Adresowo, and Domiporta in a single run
  • 🧬 Smart Deduplication — Cross-portal matching detects the same property listed on multiple sites
  • 🏆 Canonical Listings — Algorithm picks the richest record from each cluster as the reference
  • 🔗 clusterId on Every Record — Group all copies of the same property with one field
  • 📊 Multi-Source Visibility — See exactly which portals list each property and at what price
  • 🏘️ All Property Types — Apartments, houses, plots, and commercial properties
  • 💰 Sale & Rent — Both transaction types supported
  • 🗺️ Any Polish City — Kraków, Warszawa, Wrocław, Poznań, Gdańsk, Łódź, Katowice, Szczecin, and more
  • 🎛️ Smart Filters — Price, area, rooms — applied consistently across all seven portals
  • 📅 Date Range — Keep only listings posted (or refreshed) between two dates, normalized across every portal's date format
  • 📸 Full Photo URLs — Direct links to listing photos from every source
  • 📍 GPS Coordinates — Latitude and longitude for every listing (where available)
  • 👤 Seller Info — Agency names and phone numbers when provided by the source
  • 🎚️ Tunable Confidence — Adjust the dedup threshold to trade off precision for coverage
  • Fast & Scalable — Full 7-portal run in under a minute
  • 📤 Export Anywhere — Download results as JSON, CSV, Excel, or push to Google Sheets, Zapier, Make, or your CRM

🧬 How Cross-Portal Matching Works

Same apartment posted on three portals? The aggregator detects that. Under the hood it runs a confidence-scored matching pipeline that combines multiple listing characteristics — when the combined score crosses your configured threshold, the records are merged into a single cluster.

You can tune the threshold in the input:

  • Higher threshold → stricter matching, fewer merges, near-zero false positives
  • Lower threshold → broader matching, catches harder cases at the cost of occasional false merges
  • Default 85 → calibrated sweet spot from internal benchmarks

🎛️ Filters & Options

OptionWhat It Does
🏙️ CityAny Polish city (e.g., Kraków, Warszawa, Wrocław)
🏠 Property TypeApartment, House, Plot, or Commercial
🏷️ Search TypeSale or Rent
💰 Price Min / MaxFilter by price range in PLN
📐 Area Min / MaxFilter by area range in square meters
🛏️ Rooms Min / MaxFilter by number of rooms
📅 Posted from / Posted toKeep only listings published in the given date range (inclusive, YYYY-MM-DD)
🗓️ Date to filter onApply the range to the publication date (default) or to the last-updated date
🕳️ Listings without a dateKeep (default) or drop offers from portals that publish no date — see below
👤 Seller typeKeep only private owners, only agencies & developers, or all (default). Works across all seven portals — independent of primary/secondary market
🌐 PortalsChoose which of the seven portals to include (default: all)
🎚️ Match Confidence ThresholdConfidence cutoff for auto-merging (50-100, default 85)
Fast ModeFaster runs at the cost of matching accuracy — recommended only for very large queries
🔢 Max Items Per PortalLimit per-portal extraction — final dataset can be up to N × 5 listings before dedup

📅 Date Range Filtering

Set Posted from and/or Posted to (both inclusive, YYYY-MM-DD) to keep only listings from a given period. Leave one empty for an open-ended range. Date to filter on switches between the publication date (default) and the last-updated date — the latter is useful for catching re-listed or price-changed offers.

Every portal reports dates differently (ISO timestamps, DD.MM.YYYY, or nothing at all). The aggregator normalizes all of them to a single calendar day in Polish time and exposes it as datePublished / dateUpdated, so the filter behaves identically no matter which portals you run.

Date coverage per portal:

PortalPublication dateLast-updated date
Otodom
Morizon
Gratka
OLX
Domiporta
Adresowo
Nieruchomości-online

⚠️ Adresowo and Nieruchomości-online do not publish a listing date at all. By default (Listings without a date = Keep) their offers pass through the filter untouched — a missing date is not the same as a date outside your range. If you need a strict range containing only offers with a confirmed date, set it to Drop, or deselect those two portals.

💡 Tip — combine with Max Items Per Portal. Each portal scraper collects up to maxItemsPerPortal listings before the date filter is applied. For recent windows the aggregator pushes the range down to the portal itself where possible (Otodom and Morizon filter server-side, OLX is sorted newest-first), so the limit is spent on relevant offers. For older or narrow historical ranges no portal-side filter exists — raise Max Items Per Portal so the crawl reaches far enough back.

📦 What You Get (Output Fields)

Every record in the output dataset represents one listing on one portal, annotated with its cluster.

Cluster & Source

FieldExample
clusterIdc00025
clusterSize3
isCanonicaltrue
portalotodom
offerIdID4ANTy
urlhttps://www.otodom.pl/pl/oferta/2-pokoje-ID4ANTy
scrapedAt2026-04-24T15:48:19.324Z

Listing Basics

FieldExample
title2 pokoje / jasna kuchnia / 45,8m² / piwnica
price698000
priceCurrencyPLN
area45.8
rooms2
floor4
totalFloors6
buildYear2012
marketTypewtorny

Dates

FieldExampleNotes
datePublished2026-08-16Normalized publication day (Polish time) — what the filter uses
dateUpdated2026-08-22Normalized last-update day, null when the portal omits it
dateCreated2026-08-16T09:05:34ZRaw value exactly as the portal reported it
dateModified22.08.2026Raw value exactly as the portal reported it

Location

FieldExample
cityKraków
districtPrądnik Biały
streetLegnicka
latitude50.085012
longitude19.923456

Contact

FieldExample
phone+48124326750
agencyNova Estate
sellerTypeagency
sellerCategorybusiness

Media & Description

FieldExample
imageUrls["https://ireland.apollo.olxcdn.com/...", "..."]
descriptionTextMieszkanie 2-pokojowe w doskonałej lokalizacji, po remoncie...

Only on Canonical Records

FieldExample
portals["otodom", "morizon", "gratka"]
sources[{"portal": "otodom", "url": "...", "price": 698000}, {"portal": "morizon", "url": "...", "price": 698000}]

📊 Example Output

{
"clusterId": "c00025",
"clusterSize": 3,
"isCanonical": true,
"portal": "otodom",
"offerId": "ID4ANTy",
"url": "https://www.otodom.pl/pl/oferta/2-pokoje-jasna-kuchnia-45-8m2-piwnica-parking-ID4ANTy",
"title": "2 pokoje / jasna kuchnia / 45,8m² / piwnica / parking",
"price": 698000,
"priceCurrency": "PLN",
"area": 45.8,
"rooms": 2,
"floor": 4,
"totalFloors": 6,
"buildYear": 2012,
"marketType": "wtorny",
"city": "Kraków",
"district": "Prądnik Biały",
"street": "Legnicka",
"latitude": 50.085012,
"longitude": 19.923456,
"phone": "+48124326750",
"agency": "Nova Estate",
"sellerType": "agency",
"sellerCategory": "business",
"imageUrls": [
"https://ireland.apollo.olxcdn.com/v1/files/abc123/image;s=1080x720",
"https://ireland.apollo.olxcdn.com/v1/files/def456/image;s=1080x720"
],
"descriptionText": "Mieszkanie 2-pokojowe w doskonałej lokalizacji, po remoncie, z piwnicą i miejscem postojowym...",
"dateCreated": "2026-04-10T12:34:56+02:00",
"dateModified": "2026-04-22T09:12:00+02:00",
"portals": ["otodom", "morizon", "gratka"],
"sources": [
{ "portal": "otodom", "url": "https://www.otodom.pl/pl/oferta/...-ID4ANTy", "price": 698000 },
{ "portal": "morizon", "url": "https://www.morizon.pl/oferta/...-mzn2047091708", "price": 698000 },
{ "portal": "gratka", "url": "https://gratka.pl/nieruchomosci/...-46482277", "price": 698000 }
],
"scrapedAt": "2026-04-24T15:48:19.324Z"
}

📋 Dataset Views

The Apify Console gives you 2 ready-made table views to quickly browse your results:

ViewWhat It Shows
📊 OverviewAll listings grouped by clusterId, showing portal, title, price, area, and URL
🏆 Canonical OnlyOne row per unique property — canonical record with list of portals it appears on

❓ FAQ

🤔 Why use an aggregator instead of scraping each portal separately? Because the same apartment often appears on 2-3 portals, you'd get duplicate rows in your data. The aggregator detects those duplicates and groups them — you get accurate unique-listing counts and can compare prices across portals for the same property.

🤔 What happens if the deduplication is too aggressive? Adjust the scoreThreshold — 85 is the default sweet spot (zero false positives in our tests). Raise it to 90 for maximum precision, or drop it to 70 if you'd rather catch more matches at the cost of occasional false merges.

🤔 Does it handle the primary market (new developments)? Yes, but conservatively. When two listings at the same address have different prices, they're treated as different units in the same building (not merged). This prevents the "developer lists 200 identical apartments" edge case from merging into one cluster.

🤔 Why do some portals show fewer details than others? Each portal exposes different fields. OLX, Nieruchomości-online, Adresowo and Domiporta hide phone numbers behind a click, so those records have phone: null. The matching algorithm compensates with the other available signals.

🤔 How do I get only private offers (no agencies or developers)? Set the sellerType input to Private owners only. This is different from the primary/secondary market filter — agencies and developers advertise on the secondary market too, so filtering by market alone won't exclude them. The aggregator classifies every listing as private or business (agency/developer) from the source data and exposes it in the sellerCategory output field.

🤔 What's special about Adresowo and Domiporta? Adresowo specializes in direct-from-owner listings ("bez pośredników") — a great source when you filter for private sellers. Domiporta additionally includes developer investment listings (new builds); those occasionally have no public price and are automatically excluded when you set a price filter.

🤔 Can I get only listings posted in the last few days? Yes — set Posted from to the starting date and leave Posted to empty. For recent windows the range is pushed down to the portals that support it, so the run stays fast and the per-portal limit isn't wasted on old offers.

🤔 I set a date range but got offers outside it — why? Almost certainly Adresowo or Nieruchomości-online: those two portals publish no date, so by default their offers are kept rather than silently dropped. Set Listings without a date to Drop for a strict range, or deselect those portals. Every record tells you which case it is via datePublished (null = the portal reported no date).

🤔 I set an older date range and got very few results — why? Portals sort by relevance/recency, and each scraper stops at Max Items Per Portal before the date filter runs. For historical ranges, raise Max Items Per Portal so the crawl reaches back far enough.

🤔 Can I skip one of the portals? Yes — use the portals input parameter to select only the ones you want. Running with 3 portals instead of 7 is proportionally faster.

🤔 Can I export the data? Yes — JSON, CSV, Excel, XML, HTML, RSS. You can also push data directly to Google Sheets, Zapier, Make, or any webhook/API endpoint.

🤔 How often should I run this? For fresh data, run daily or weekly. You can schedule automatic runs on Apify with just a few clicks.

🤔 Does it work with proxies? Yes — residential proxies are recommended for the best results on Otodom (which uses anti-bot protection). The aggregator works with Apify's built-in proxy service.

🛠️ Need Custom Filters or Features?

I'm happy to customize this aggregator for your specific needs! 🤝

Whether you need:

  • 🎯 Additional filters (commute time, specific districts, building year, features like balcony/parking)
  • 📊 Extra data fields or custom output formats (e.g., price-per-square-meter summary, weekly delta reports)
  • 🔄 Integration with your CRM, Google Sheets, or database
  • ⏰ Scheduled scraping with automatic deduplication history across runs
  • 🌐 Adding more portals (Sprzedajemy.pl, GetHome.pl, Nieruchomosci.pl) to the aggregation
  • 🧬 Tuning the matching algorithm for a specific market segment (primary market, luxury, commercial)

👉 Don't hesitate to reach out via private message — I respond quickly and I'm always open to building exactly what you need. No request is too small or too specific!

This aggregator collects only publicly available listings from Otodom, Morizon, Gratka, OLX and Nieruchomości-online. It does not access private data, bypass authentication, or extract contact details that are not publicly displayed. Please use the data responsibly and in compliance with applicable laws and each portal's terms of service.