Imobiliare.ro Scraper
Pricing
from $0.70 / 1,000 listings
Imobiliare.ro Scraper
Scrape real estate listings from imobiliare.ro — Romania's largest property portal. Filter by sale/rent, property type and location. EUR prices, descriptions, images. Optional detail enrichment for surface area and floor data.
Pricing
from $0.70 / 1,000 listings
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
1
Bookmarked
28
Total users
8
Monthly active users
a day ago
Last modified
Categories
Share

Extract property listings from imobiliare.ro at scale, in a clean, consistent structure ready for market analysis, valuation models, lead generation and monitoring. No API key required.
Why this scraper?
🎯 Built for Romania
A dedicated Romanian scraper, not a global tool with a country dropdown. Locations, price formats and currency (EUR) are tuned for imobiliare.ro.
💶 Structured pricing
Asking price or rent as a clean number in EUR, plus the price exactly as displayed. Price-on-request listings return null, never a guess.
🏠 Property characteristics
Bedrooms, rooms, surface and property type in structured fields, ready for filtering and analysis.
📄 Full listing content
Complete listing description and title for every record, with a direct link back to the source.
📍 Precise location
Address fields plus latitude/longitude for mapping and radius analysis.
🖼️ Listing photos
Photo URLs for every listing where the source publishes them.
🔁 Change detection
Every record carries a contentHash over the listing's identity and price, so a daily feed can tell an unchanged listing from a repriced one.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
offerType | string | "sell" | Whether to scrape sale or rental listings. |
propertyType | string | "apartamente" | Type of property to scrape. |
location | string | "bucuresti" | Romanian location slug, e.g. 'bucuresti', 'cluj-napoca', 'timisoara', 'iasi'. Used to build the search URL. |
maxItems | integer | 100 | Maximum number of listings to scrape. 30 listings are collected per search page. |
fetchDetails | boolean | true | Fetch each listing's detail page to add bathrooms, energy label, kitchens, exact street address, coordinates, publish date and the full description. Leave it off for a faster, cheaper run — the search results alone already carry price, surface, rooms, floor, images, agency and location. |
startUrls | array | (empty) | Optional list of direct listing URLs (imobiliare.ro/oferta/...) to scrape. When provided, the offerType/propertyType/location fields are ignored. |
Output schema
Every field below is present on every record. Fields the source does not publish for a given listing are returned as null rather than omitted.
| Field | Type | Description |
|---|---|---|
id | string | Imobiliare.ro internal listing ID |
url | string | Direct link to the listing |
operationType | string | sale or rent |
propertyType | string | e.g. apartment, house |
title | string | Listing title |
priceText | string | Price as displayed |
priceAmount | number | Price (numeric) |
priceCurrency | string | e.g. EUR, RON |
county | string | Romanian county |
neighborhood | string | Neighborhood. |
city | string | City |
country | string | Always RO |
bedrooms | number | Number of bedrooms (null if not stated). |
bathrooms | number | Number of bathrooms (null if not stated). |
floor | string | Floor. |
yearBuilt | number | Construction year (null if not stated). |
surfaceTotal | number | Surface total. |
surfaceUnit | string | Surface unit. |
features | array | Feature list as published on the listing. |
images | array | URLs of listing photos. |
agencyName | string | Agency name. |
sellerType | string | Seller type. |
daysOnMarket | number | Days on market. |
energyLabel | string | Energy label or rating (null if not published). |
kitchens | number | Kitchens. |
isNew | boolean | Is new. |
publishDate | string | Publish date. |
publishDateISO | string | Publish date iso. |
latitude | number | Latitude of the property. |
longitude | number | Longitude of the property. |
streetAddress | string | Street address. |
descriptionPreview | string | Truncated description from the search results card. Always present. |
descriptionText | string | Full listing description as plain text. Requires fetchDetails. |
descriptionHtml | string | Full listing description in HTML. Requires fetchDetails. |
descriptionMarkdown | string | Full listing description in Markdown. Requires fetchDetails. |
source | string | Source. |
scrapedAt | string | Timestamp when this record was scraped. |
contentHash | string | Stable hash of the listing content, used for repost and change detection. |
Example record
{"id": "273029660","url": "https://www.imobiliare.ro/oferta/apartament-de-vanzare-sector-3-theodor-pallady-3-camere-273029660","operationType": "sell","propertyType": "apartamente","title": "Apartament cu 3 camere decomandat în Theodor Pallady","priceText": "180.290 EUR","priceAmount": 180290,"priceCurrency": "EUR","county": "Bucuresti","neighborhood": "Theodor Pallady","city": "Sector 3","country": "RO","bedrooms": 3,"bathrooms": 2,"floor": "1 / 10","yearBuilt": 2026,"surfaceTotal": 74.26,"surfaceUnit": "m²","features": ["Rezidențial","Faianță","Vopsea lavabilă","Gresie"],"images": ["https://i.roamcdn.net/prop/imo/og-image-full-1200w-630h/F1yByVnkGZPo_bMy-Nj2ug/-/_1I8pjhgYGhsZmFoZGAA/60e31c02-1331-41e8 …","https://i.roamcdn.net/prop/imo/og-image-full-1200w-630h/vLogP3bgU4hPIFaX6hPKRg/-/_1I8pjhgYGhsZmFobGAA/e46c02d4-7089-4f08 …","https://i.roamcdn.net/prop/imo/og-image-full-1200w-630h/K5tmlWQQcclz0UaM31_DsQ/-/_1I8pjhgYGhsZmFoYmAA/8798be62-6eae-4c23 …","https://i.roamcdn.net/prop/imo/og-image-full-1200w-630h/NtQqszPrkj9Yt4mYrvUlkA/-/_1I8pjhgYGhsZmFoamAA/e5ddee61-f785-4d06 …"],"agencyName": "Hils Titanium","sellerType": "developer","daysOnMarket": 115,"energyLabel": null,"kitchens": 1,"isNew": true,"publishDate": "2026-03-10","publishDateISO": "2026-03-10","latitude": 44.4113422,"longitude": 26.1898017,"streetAddress": "Bulevardul Theodor Pallady,45,,,, Theodor Pallady, Sector 3","descriptionText": "Vă invităm să descoperiți HILS Titanium, un ansamblu rezidențial remarcabil, potrivit pentru cei care doresc să își înceapă viața independentă sau să investească într-un mediu urban de calitate superi …","descriptionHtml": "<p>Vă invităm să descoperiți HILS Titanium, un ansamblu rezidențial remarcabil, potrivit pentru cei care doresc să își înceapă viața independentă sau să investească într-un mediu urban de calitate sup …","descriptionMarkdown": "Vă invităm să descoperiți HILS Titanium, un ansamblu rezidențial remarcabil, potrivit pentru cei care doresc să își înceapă viața independentă sau să investească într-un mediu urban de calitate superi …","source": "imobiliare.ro","scrapedAt": "2026-07-04T00:29:08.120Z","contentHash": "99971fadba7340f2"}
Examples
Listings in București:
{"location": "București","maxItems": 100}
Filter by transaction type:
{"location": "București","maxItems": 100,"offerType": "sell"}
Scrape a specific search URL:
{"startUrls": [{"url": "https://www.imobiliare.ro/vanzare-apartamente/bucuresti"}],"maxItems": 200}
Daily feed of new listings (run on a schedule):
{"location": "București","maxItems": 500}
Schedule this input in the Apify Scheduler (for example daily at 07:00) to keep an always-fresh feed of the newest listings.
Call this actor over HTTP
Besides normal runs, this actor exposes a REST API that answers each request in seconds with JSON. There is no run to start and no dataset to fetch afterwards, which suits apps, automations and AI agents that need one answer at a time. The full interactive reference is on the Endpoints tab.
| Endpoint | Returns | Billed as |
|---|---|---|
GET /search?offerType=…&propertyType=…&location=… | Listings for a location (up to 50) | Per listing (detailed rate with details=true) |
GET /listing?url=… | One listing with all details | One detailed listing |
Authenticate with your Apify API token in the Authorization header:
curl -H "Authorization: Bearer <YOUR_APIFY_TOKEN>" \"https://unfenced-group--imobiliare-ro-scraper.apify.actor/search?location=cluj-napoca&maxItems=5"
Every response has the shape { "count": N, "items": [...] }, with the same fields as the dataset records above, billed at the same prices as a normal run. Errors, unknown listings and empty searches return no data and are never billed. POST with a JSON body works the same as GET.
💰 Pricing
$0.7 per 1,000 results — you only pay for successfully retrieved listings. Failed retries are never charged.
| Results | Cost |
|---|---|
| 100 | ~$0.07 |
| 1,000 | ~$0.7 |
| 10,000 | ~$7 |
| 100,000 | ~$70 |
Flat-rate alternatives typically charge $29–$49/month regardless of usage.
Subscription tiers lower the rate further, down to $0.7 per 1,000 at the highest tier. Use the Max results cap in the input to control your spend exactly.
Performance
Measured on build 1.0.67, 512 MB:
| Run | Typical time |
|---|---|
| 20 listings with details | ~4 minutes |
| 60 listings, details off | ~1.5 minutes |
| 1,000 listings, details off | ~20 minutes |
Detail pages are the slow part: each one is a separate fetch, and most of them go through a challenge-solving proxy. Turn fetchDetails off when the search-result fields are enough and runs get several times faster.
Known limitations
- Some fields (energy label, kitchens, year built) are only returned when the lister publishes them — expect
nullon a share of records. - The full description, coordinates, bathrooms and publish date come from the detail page, so they are only populated when
fetchDetailsis on. Without it you still get a truncateddescriptionPreview. - The portal caps any single search at 333 pages (~10,000 listings). Narrow by location or property type to reach beyond that.
- An unrecognised
locationslug is rejected rather than silently widened: imobiliare.ro answers an unknown slug with nationwide results, and returning those would be wrong data, so the run stops and tells you. - Listings can be withdrawn at any time, so a small share of URLs may expire shortly after scraping.
Technical details
- Source: imobiliare.ro — Romania property listings
- Coverage: everything the public search exposes, filterable via the input parameters above
- Retry: automatic retry on network errors with exponential backoff
Rate this actor
If this scraper does its job, a short review on the Reviews tab helps other users find it. Something not working? Open an issue on the Issues tab instead — issues get fixed.
Need a custom scraper?
Unfenced Group builds Apify actors for any website — for free.
If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.
Get in touch: www.unfencedgroup.nl