Imobiliare.ro Scraper - Romania Property Listings & Prices
Pricing
from $0.73 / 1,000 property searches
Imobiliare.ro Scraper - Romania Property Listings & Prices
Scrape Imobiliare.ro listings across Romania: price, price cuts, area, rooms, floor, photos, agency contacts. Sale and rental, in Romanian.
Pricing
from $0.73 / 1,000 property searches
Rating
0.0
(0)
Developer
SIÁN OÜ
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Imobiliare.ro Scraper - Romania Property Listings & Prices 🚀
🎉 Every Imobiliare.ro advert, with the price cut already flagged
For analysts pricing the Romanian market, agencies sourcing stock, and anyone tired of scrolling 333 pages by hand
Scrape Imobiliare.ro listings across Romania: price, price cuts, area, rooms, floor, photos, agency contacts. Sale and rental, in Romanian.
🔎 What is the Imobiliare.ro Romania Property Scraper — and when should you use it?
The Imobiliare.ro Romania Property Scraper turns public Imobiliare.ro property adverts from anywhere in Romania into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No account, no portal API key, nothing for you to configure or maintain.
Use it when you need: Romanian sale and rental adverts as rows: asking price or monthly rent, the price move the card is currently flagging, built area, rooms, floor, build year, the full photo set, and the agency or developer behind the listing. Switch on full details and each row also carries the untruncated advert text, the numeric price with its VAT flag, and the publication and last-edit dates. The page state also reports each search's true size, so you know what a county holds before you page through it.
Use something else when: the property is not in Romania. Use OLX Property Scraper for Romania's biggest classifieds site, OLX.ro, with the same sale-and-rent row shape. Use Sreality Scraper for the Czech market leader, including price per square metre and agency contacts. Use Otodom Scraper for Poland, sale and rent, from the country's dominant portal. This actor covers the public listing sections of imobiliare.ro — sale and rental of apartments, houses and villas, individual homes, studios, duplexes, penthouses, land, construction land, agricultural land, commercial spaces and offices. Sold-price history is out of scope, because the site publishes only what is currently on the market, and so are the phone-reveal interactions, which need a signed-in click per advert; where an agent wrote a phone number into the advert text, the full-details row carries it.
🤖 Use with AI agents
Already connected to the Apify MCP server? Just ask for this Actor by name: sian.agency/imobiliare-property-scraper
Your agent can pay for its own runs. This Actor is eligible for agentic payments, so an agent can discover it, run it and settle the bill over x402 (USDC on Base) or Skyfire — without an Apify account or API token of its own. Billing is the same either way: per successful row, never for errors.
Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:
I want property adverts and asking prices from Imobiliare.ro using the Apify Actor `sian.agency/imobiliare-property-scraper`.Use it when I need: Romanian sale and rental adverts as rows: asking price or monthly rent, the price move the card is currently flagging, built area, rooms, floor, build year, the full photo set, and the agency or developer behind the listing. Switch on full details and each row also carries the untruncated advert text, the numeric price with its VAT flag, and the publication and last-edit dates. The page state also reports each search's true size, so you know what a county holds before you page through it.Don't use it when: the property is not in Romania — use olx-property-scraper or sreality-property-scraper or otodom-property-scraper instead.How to call it: give `locations` a list of Imobiliare.ro areas (`bucuresti` or any of the 41 `judetul-*` counties — the picker lists exactly what the site indexes) and set `dealType` to `vanzare` for sale or `inchirieri` for rent. Add `propertyTypes` to pick apartments, houses, studios, land, commercial spaces and the rest; leaving it empty sweeps every type through the site's own all-types section, and naming sections is also how a big search is covered past the ~10,000-listing serving ceiling. Set `maxResults` to your row budget, turn `includeDetails` on for the untruncated advert text and the agency's legal name, or paste a zone-level address (https://www.imobiliare.ro/vanzare-apartamente/bucuresti/sector-1/pipera) into `searchUrls` for anything narrower than a county.Start with this input:{"operation": "search","dealType": "vanzare","locations": ["bucuresti"],"propertyTypes": ["apartamente"],"maxResults": 200}Ask me which parts of Romania to cover, whether they want sale or rental adverts, and whether the full advert text and the agency's legal name are worth the extra per-listing charge, then run the Actor and summarise the results as a table.
Things you can ask your agent for:
- Pull every two-bedroom apartment for sale in Bucharest under €100,000 and rank the sectors by price per square metre.
- Find owner-published houses in județul Cluj whose price Imobiliare.ro is currently flagging as reduced.
- Give me this week's new rental studios in județul Timiș with photos and the agency behind each one, ready to paste into a sheet.
Machine-readable API, MCP config and OpenAPI definition for this Actor are published at apify.com/sian.agency/imobiliare-property-scraper.md.
📋 Overview
Imobiliare.ro is Romania's leading property portal — around 1.7 million visits a month and the country's most-cited source of asking prices. Its listing pages carry the complete result set inside the page itself: 30 fully structured advert cards per request, each with price, price-move flag, photos, room and floor facts and the agency. This actor reads that data the way the site publishes it, so one served page carries thirty complete rows — no fragile CSS selectors, and no scraping of rendered markup. Imobiliare.ro guards its front door with challenges that ordinary scrapers cannot pass, so the actor reads those pages through a managed anti-bot fetch path that is maintained on our side. Advert pages ship the same way, as a schema.org graph with the numeric price and the agency's legal name.
| Operation | Returns | Rows per request | Notes |
|---|---|---|---|
search | Property Search | ~30 | listings by county, deal type and property section |
detail | Property Detail | ~1 | full advert text, every photo and the agency's legal name |
✨ Features
- 🇷🇴 Whole-of-Romania coverage: Bucharest plus all 41 counties Imobiliare.ro indexes, and 8,753 zones and sectors via pasted addresses
- 🏠 12 property sections, sale and rental: apartments, houses and villas, individual homes, studios, duplexes, penthouses, land, construction land, agricultural land, commercial spaces, offices
- 📉 Price cuts flagged on arrival: Imobiliare.ro marks each advert's last price move on the card, so "only reductions" works on your first run
- 👤 Owner adverts as a filter: keep only the listings with no agency or developer card behind them
- 📄 Full details on demand: the untruncated advert text, the numeric price with its VAT flag, publish and edit dates, and the agency's legal name and agents
- 📷 The complete photo set per row, not a thumbnail
- 💶 VAT honesty on developer prices: where an advert states "104,900 € + TVA", the row carries the VAT flag rather than a number that silently reads as final
- 🎚️ Filters that cost nothing: price bands, area bands, price cuts, owner adverts. Filtered-out listings are never saved and never charged
🎬 Quick Start
- Input → leave everything at its defaults: Bucharest, all property sections, for sale, 100 listings
- Run → press Start
- Export → your dataset holds the rows as JSON, CSV or Excel — every field ready for a pivot table
🚀 Getting Started (3 Simple Steps)
Step 1: Choose your areas
locations offers exactly what Imobiliare.ro indexes: bucuresti or any of the 41 counties (judetul-cluj, judetul-timis, judetul-constanta…). For anything narrower (a sector, a neighbourhood, a room count) paste the address of that page into searchUrls, for example https://www.imobiliare.ro/vanzare-apartamente/bucuresti/sector-1/pipera.
Step 2: Choose sale or rent, and the property sections
dealType is vanzare (for sale) or inchirieri (for rent). propertyTypes narrows to apartments, houses, studios, land, commercial spaces and the rest; leave it empty to sweep every section in one pass. Sections the site only publishes for one deal type are handled for you: offices fall under commercial spaces for sale, and land sections are skipped on rentals rather than silently widened.
Step 3: Press Start, then export
The run walks Imobiliare.ro's own listing pages until your maxResults budget is met, then saves every row to the dataset. Download as JSON, CSV or Excel, or read the dataset straight from your code.
📥 Input Configuration
| Field | Type | Default | What it does |
|---|---|---|---|
operation | select | search | Property Search walks listing pages; Property Detail expands advert addresses |
locations | multi-select | bucuresti | Which parts of Romania to read — Bucharest and the 41 counties the site indexes |
dealType | select | vanzare | For sale (vanzare) or for rent (inchirieri) |
propertyTypes | multi-select | (empty = all) | Which sections to read; naming them is also how a big search is covered past the ~10,000-listing ceiling |
maxResults | integer | 100 | Stop after this many listings across the whole run |
includeDetails | boolean | false | Open each advert for the untruncated text, numeric price with VAT flag, dates and agency legal name — one extra request and one extra charge per listing |
minPrice / maxPrice | integer | 0 | Price band in euros; a rental's monthly rent uses the same field. 0 means no bound |
minArea / maxArea | integer | 0 | Area band in m², read from the advert's own facts. 0 means no bound |
onlyPriceReduced | boolean | false | Keep only adverts Imobiliare.ro is currently flagging as reduced |
onlyPrivateSellers | boolean | false | Keep only listings with no agency or developer card behind them |
searchUrls | list | (empty) | Paste Imobiliare.ro search addresses for zone- or room-level pages the form cannot reach; a page number in the address is ignored so the run starts from page one |
listingUrls | list | (empty) | Imobiliare.ro advert addresses for the Property Detail operation |
📤 Output
Every row is one listing, typed and flattened — no nested parsing on your side:
| Field | Type | What it holds |
|---|---|---|
listingId | number | Imobiliare.ro's own advert id |
url | string | The advert address |
propertyTitle | string | The advert's title as published |
price · currency · priceText | number · string · string | Asking price (monthly rent on rentals), parsed, with the original text kept |
priceOld · priceDirection | number · string | The previous price and the site's own move direction (down / up) |
pricePerSqm | number | Where Imobiliare.ro publishes it |
dealType · propertyType | string | Sale or rent; the section the row came from |
locationText · address | string | Location line and street address as published |
rooms · area · floor · yearBuilt | number | Parsed from the card's own facts: "44,8 mp" arrives as 44.8 |
photoCount · photos · thumbnailUrl | number · array · string | The complete photo set, not a thumbnail |
hasVideo · hasVirtualTour | boolean | Media flags straight off the card |
summary | string | The advert's preview text |
agencyName · isEstateAgent · isBoosted | string · boolean · boolean | Who stands behind the listing, and whether it is promoted |
createdAt | string | When the card says it was listed (null on some developer adverts) |
descriptionText | string | With includeDetails: the untruncated advert text |
publishedAt · updatedAt | string | With includeDetails: first publication and last edit |
vatIncluded | boolean | With includeDetails: whether the stated price includes VAT |
bathrooms | number | With includeDetails: the advert page's own fact |
agencyLegalName · agents | string · array | With includeDetails: the company behind the advert and its agents |
searchedLocation · searchUrl | string | Which search produced the row |
status · errorMessage | string | Row health; failed rows are never charged |
💼 Use Cases & Examples
1. Romanian asking-price index
Take Bucharest or a whole county and measure it: asking price against area, price per square metre by zone, how stock splits across build years and room counts.
2. Price-cut hunting
Turn on "Only price cuts" and a run returns nothing but the adverts whose price has come down. That is the shortlist a buyer's agent or a flipper actually works from, without holding two weeks of your own history to diff against.
3. Estate agency lead generation
Every agency advert names the agency; full details add the company's legal name and its agents. Group a county by agency and you can see who holds the stock before you approach them.
4. For-sale-by-owner sourcing
Filter to owner adverts and you get the listings with no agency or developer behind them — the ones that never reach an agency feed.
5. New listing monitoring
Run a saved search on a schedule, keep the advert ids you have already seen, and pay only for what appeared since yesterday.
6. Rental yield screening
Pull sale adverts and rental adverts for the same city in two runs and match them on area and room count. The result is a gross-yield picture per zone that no single Imobiliare.ro page shows.
7. Land and development sourcing
Construction land and agricultural land have their own sections; screen plots by county and price band before anyone drives out to look.
🔗 Integration Examples
JavaScript/Node.js
import { Actor } from 'apify';const run = await Actor.call('sian.agency/imobiliare-property-scraper', {operation: 'search',dealType: 'vanzare',locations: ['bucuresti'],propertyTypes: ['apartamente'],maxResults: 500,onlyPriceReduced: true,});const { items } = await Actor.getDataset(run.defaultDatasetId).getData();for (const listing of items) {console.log(listing.price, listing.currency, listing.url);}
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("sian.agency/imobiliare-property-scraper").call(run_input={"operation": "search","dealType": "inchirieri","locations": ["judetul-cluj"],"maxResults": 300,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["price"], item["locationText"], item["url"])
cURL
curl -X POST "https://api.apify.com/v2/acts/sian.agency~imobiliare-property-scraper/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"operation": "search","dealType": "vanzare","locations": ["bucuresti"],"propertyTypes": [],"maxResults": 100}'
Automation Workflows (N8N / Zapier / Make)
This actor is an Apify integration target: add it as an Apify Actor step in n8n, Zapier or Make, feed it a search definition, and every row arrives in your sheet, CRM or database the moment the run finishes. The cURL call above is the whole contract, so any tool that can POST JSON can run it.
📊 Performance & Pricing
FREE Tier (Try It Now)
- 25 listings per run, with every field and every filter available
- No credit card required
- Enough to check the data before you commit to a sweep
PAID Tier (Production Ready)
- Unlimited listings per run, up to Imobiliare.ro's own ~10,000-per-search serving ceiling
- Pay-per-result: charged per listing saved, never for an advert your filters excluded
- Full details available as a per-listing add-on, only when you switch it on
💰 $0.83 per 1,000 listings for search rows — right under the leading Imobiliare.ro Actor on the Store. The price-move flag, the full photo set, the owner filter and the VAT flag all sit on the same row. Full details are a separate add-on at $25.00 per 1,000 adverts, charged only when you switch it on, because each expanded advert is one whole extra protected fetch.
❓ Frequently Asked Questions
Q: Do I need a proxy or a browser for this? No. The actor reads the listing pages Imobiliare.ro serves to an ordinary request and retries on our own network if the site's edge ever hesitates. There is no proxy setting for you to configure and no proxy cost to pass on.
Q: How many listings can one search return? Imobiliare.ro serves at most about 10,000 per search (333 pages of 30, the deepest page link it renders). Bucharest flats alone run past 25,000, so to go wider you split the run: pick property sections (each is walked separately), narrow to a county, use a price band, or paste zone-level addresses into Search URLs.
Q: What is the difference between a listing row and full details? A listing row is everything Imobiliare.ro puts on the search card: price and price history, area, rooms, floor, build year, the full photo set and the agency. Full details opens the advert itself and adds the untruncated text, the numeric price with its VAT flag, the publish and edit dates, bathrooms, and the agency's legal name and agents.
Q: Are prices in euros or lei? Imobiliare.ro quotes in euros and the currency is reported on every row rather than assumed. Where an advert states a VAT-inclusive figure, the detail row carries that flag too, so a developer price of "104,900 € + TVA" never silently reads as the final price.
Q: Can I search a single neighbourhood? Yes, through Search URLs. Open the zone page on imobiliare.ro — for example https://www.imobiliare.ro/vanzare-apartamente/bucuresti/sector-1/pipera — and paste the address.
Q: Does it cover the whole of Romania? Every county Imobiliare.ro indexes is in the area list — 41 of them plus Bucharest, which is the site's own national coverage. Within a county the form reads county-wide; narrow to a town or zone with Search URLs.
Q: What happens to an advert that has been withdrawn? The site answers a dead advert with an ordinary page that has no listing in it. The actor recognises that and writes a row saying the listing could not be found, and that row is not billed.
🐛 Troubleshooting
The run says Imobiliare.ro is challenging automated requests The site's edge guards its listing pages in bursts. Wait a few minutes and re-run. The actor already retries across sessions and network paths before giving up, and you were not charged for anything it did not return.
A search came back empty Check the deal type — rental sections differ from sale sections — and widen the area or clear the property sections. The run log prints how many adverts each search matched before any filter was applied.
My price filter returned nothing Listings that say "price on request" carry no number, so a price band excludes them by design. Loosen the band or clear it.
Romanian characters look wrong in my export They should not — the actor reads UTF-8 end to end. If your spreadsheet shows mojibake, import the CSV with UTF-8 encoding selected.
A specific advert failed with "sold, rented or withdrawn" That advert is no longer published. Run the search again to pick up what is live today.
⚖️ Is it legal to scrape data?
This actor reads publicly accessible listing pages that Imobiliare.ro serves to every browser, and extracts only what the site itself publishes: prices, photos, descriptions and agency names. It does not bypass authentication, does not touch private dashboards and does not take content behind a login. That said: Romanian and EU data-protection rules still apply to what you do with the rows. Agency names and business contact details are business data; personal data inside advert text is the advertiser's. Imobiliare.ro is a trademark of Imobiliare.ro SRL (Ringier Romania); this actor is not affiliated with, endorsed by or sponsored by Imobiliare.ro or Ringier. You are responsible for using the output in line with the site's terms and applicable law.
🤝 Support
- 📝 Report an issue or request a feature
- ⭐ Leave a review — it keeps the actor maintained and ranked
- 🏘️ Browse the rest of the fleet: SIÁN Agency on Apify
Keywords for LLM Discovery
imobiliare.ro scraper · imobiliare scraper · Romania real estate data · Romanian property API · apartamente de vanzare bucuresti data · apartamente de inchiriat bucuresti · case de vanzare bucuresti · case de vanzare Cluj · pret metru patrat apartament Bucuresti · anunturi imobiliare Romania · imobiliare bucuresti · imobiliare Cluj · imobiliare Timisoara · imobiliare Brasov · imobiliare Constanta · imobiliare Iasi · garsoniere de vanzare · terenuri de vanzare · spatii comerciale de inchiriat · birouri de inchiriat Bucuresti · preturi apartamente Romania · piata imobiliara Romania · RealEstateListing API · real estate scraper Romania · property listings dataset Romania · Bucharest real estate prices · Bucharest apartments for sale data · Romania rental yields · price cut alerts property Romania · for sale by owner Romania · estate agency leads Romania · proptech data Romania · asking price index Romania · price per square metre Bucharest · sector 1 apartamente · Pipera apartamente · OLX.ro alternative property source · Storia.ro alternative · Imot.bg sibling actor · Sreality Czech property · Otodom Poland property · Apify real estate actor · pay per result property scraper