Otodom, Storia, Imovirtual Scraper (search, filters, alerts)
Pricing
from $1.00 / 1,000 result items
Otodom, Storia, Imovirtual Scraper (search, filters, alerts)
Otodom.pl, Storia.ro and Imovirtual.com scraper for OLX Group real estate: flats, houses and land to rent or buy, by location, price, area and rooms or any result URL. Rows with price, price per m2, area, rooms, floor, district, city, agency, photos. Monitor mode alerts on new listings.
Pricing
from $1.00 / 1,000 result items
Rating
0.0
(0)
Developer
Viktor Dubnytskiy
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
One scraper for OLX Group's three property portals: Otodom.pl (Poland), Storia.ro (Romania) and Imovirtual.com (Portugal). They run on the same platform, so a single actor returns flats, houses, rooms, land, offices and commercial units to rent or buy — filtered by location, price, area and rooms, or taken straight from any result URL — and monitor mode gives you only the listings that are new or re-priced since your last run.
What you get — example output
One row per listing. Real values from the example dataset (site: storia, rent, flat, bucuresti):
| Field | Example value | What it is |
|---|---|---|
listingId / site | 10572841 / storia | Portal listing id and which portal the row came from |
title | Inchiriere 2 camere 13Septembrie|Bloc Nou|Parcare | Listing headline |
price / currency | 649 / EUR | Numeric price in the portal's currency |
pricePerSqm | 11.8 | Price per square metre, computed by the portal |
area / rooms / floor | 55 / TWO / NINTH | Living area in m², room count and floor as enums |
city / district | Bucuresti / 13 Septembrie | Plus province and the full locationPath (13 Septembrie, Sectorul 5, Bucuresti) |
isPrivateOwner | false | Private seller vs. agency listing |
agencyName | George Estate Group | Agency publishing the listing (agencyId alongside) |
createdAt / pushedUpAt | 2026-09-04 11:47:09 / 2026-09-04T11:47:09+03:00 | First published and last bumped |
Full field list: listingId, site, country, url, title, transaction, estate, price, currency, rentPrice, pricePerSqm, area, terrainArea, rooms, floor, city, district, province, locationPath, lat, lon, isPrivateOwner, isPromoted, isExclusive, agencyId, agencyName, developmentId, developmentTitle, createdAt, pushedUpAt, images[], description, tags[], page, rank, scrapedAt.
Use cases
- Rental yield and price research: pull a district with
price,areaandpricePerSqmalready computed and compare neighbourhoods directly. - Flat hunting with alerts: watch one city and price band and be notified the moment a matching listing appears or drops price.
- Agency and market analysis: measure how much of a market is agency-listed vs. private (
isPrivateOwner,agencyName) and how fast listings are bumped.
How it works
All three portals are one Next.js platform, so the actor reads the structured listing data the pages embed — no login, no cookies, no proxy. Give site, transaction, estate and a location segment copied from the portal's own URL, plus optional price/area/room bounds; or paste searchUrls to reuse a filter set exactly. Pagination runs 36 listings per page until maxPages or maxItems. In monitor mode the run is compared with the previous run of the same Task and only new or re-priced listings are pushed, with an optional webhook or Telegram summary.
Input
| Field | Meaning | Default |
|---|---|---|
site | storia (RO), otodom (PL) or imovirtual (PT) — one per run | storia |
transaction | rent or sale | rent |
estate | flat, house, room, terrain, commercial, office | flat |
location | Location segment as in the portal URL, e.g. bucuresti | bucuresti |
priceFrom / priceTo | Price range in the portal's currency, e.g. 400 / 900 | — |
areaFrom | Minimum living area in m², e.g. 50 | — |
roomsFrom | Minimum rooms, 1–6 | — |
searchUrls | Any result URLs of that portal; overrides the fields above | — |
maxPages | Pages per search, 36 listings each | 3 |
maxItems | Stop after this many listings | 20 |
mode | scrape, or monitor for new/changed only | scrape |
webhookUrl, telegramBotToken, telegramChatId | Where monitor-mode change summaries are sent | — |
Pricing
| Event | Price |
|---|---|
| result | $0.001 per listing ($1 per 1,000) |
| monitor-check | $0.005 per monitor run |
| change | $0.001 per new/changed listing |
Charged only for listings actually pushed — an empty run costs you nothing. No proxy needed.
Why this actor
- Three countries, one schema: Otodom, Storia and Imovirtual rows line up field for field.
pricePerSqmcomes straight from the portal, so €/m² comparisons need no maths of your own.- Private-owner and agency flags on every row, which is what separates real market supply from agency churn.
- Any result URL can be pasted in, so the filters you set on the site are preserved exactly.
- Monitor mode with new-listing and price-change alerts, delivered by webhook or Telegram — and no proxy to configure.
Limits
- Listing detail pages are not opened (
urlleads to the ad). - Location must be given as the portal's URL segment (copy it from the site's address bar).
lat/lonare filled only where the portal exposes them;city,district,provinceandlocationPathare always present.- One run covers one portal; schedule one Task per country to cover all three.
FAQ
Can I monitor new listings for a search? Yes. Save the input as a Task, set mode: monitor and schedule it — each run returns only listings that appeared or changed price since the previous run, and can POST a summary to webhookUrl or a Telegram chat.
Which countries and portals are supported? Poland via Otodom.pl, Romania via Storia.ro and Portugal via Imovirtual.com. Pick one per run with the site field; prices come back in that portal's own currency.
How do I set the location? Copy the location part of the portal's own search URL: bucuresti or cluj-napoca on Storia, mazowieckie/warszawa/warszawa/warszawa on Otodom, lisboa on Imovirtual. Or skip it and paste the whole result URL into searchUrls.
Changelog
- 0.1: initial release.
If this actor saved you time, please leave a review on its Store page — it is the main way other buyers find it. Bug reports and field requests are welcome in the Issues tab.