Imovirtual Scraper
Pricing
from $2.50 / 1,000 results
Imovirtual Scraper
[💰 $2.5 / 1K] Extract property listings from Imovirtual, Portugal's leading real-estate portal. Search by location, buy/rent, property type, price, area and rooms — or paste search URLs — to get prices, areas, locations, photos and agency contacts.
Pricing
from $2.50 / 1,000 results
Rating
0.0
(0)
Developer
SolidCode
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Pull property listings from Imovirtual — Portugal's leading real-estate portal — at scale: prices in euros, living area in m², T0–T5+ room counts, full photo galleries, agency details, GPS-free address data, and new-development flags for every for-sale and for-rent listing across the country. Built for Portugal property investors, estate agents, relocation services, and proptech analysts who need a clean, structured Imovirtual dataset without hand-copying listings from the portal one page at a time.
Why This Scraper?
- Two ways to search — no URL building required — fill in a guided builder (location, buy/rent, type, price, area, rooms) or paste Imovirtual search URLs straight from your browser. Most competing tools accept URLs only.
- Nine property categories — apartments, houses, land, commercial spaces, garages, rooms, warehouses, new developments, or "any type" — each mapped to Imovirtual's own Portuguese categories (Apartamento, Moradia, Terreno, Empreendimento…).
- Buy and rent in one actor — flip a single dropdown between Comprar (for sale) and Arrendar (for rent); rent rows carry the monthly euro price in the same field.
- Server-side price, area, and room filters — set min/max price (€), min/max living area (m²), and multi-select T0–T5+ room counts; filters run on Imovirtual itself, so you only collect — and only pay for — listings that match.
- Thousands of listings per search — smooth pagination walks every results page with built-in deduplication; a single run pulled 3,793 listings without duplicates.
- Full listing record on every row — title, total price, price per m², living area, terrain area, rooms, floor, address, city, region, and the largest-resolution image URLs, all in one flat row.
- Agency vs. private-owner intelligence — every row flags whether it came from an agency (with agency name and type) or a private seller, plus promoted and exclusive-offer markers.
- New-development detection — empreendimento (new-construction) projects are flagged with
isDevelopmentand a development name, so you can separate off-plan inventory from resale stock. - Clean, analysis-ready output — euro prices as numbers, ISO-8601 timestamps for created and bumped dates, null fields stripped, and consistent camelCase field names.
Use Cases
Real-Estate Investment & Acquisition
- Compare asking prices and price-per-m² across Lisboa, Porto, and the Algarve
- Surface new-development (empreendimento) projects for off-plan opportunities
- Benchmark sale vs. rent yields by collecting both transaction types for one area
- Track terrain area and floor data when sourcing land or building plots
Lead Generation for Agents
- Build prospect lists of private-owner listings ripe for an agency mandate
- Map competing agencies by name and type across a target district
- Monitor exclusive and promoted listings to gauge competitor activity
- Feed fresh listing inventory straight into your CRM
Market & Price Analysis
- Track median price-per-m² movements by city and property type over time
- Measure inventory volume by district, room count, or price band
- Compare apartment vs. house vs. land pricing across Portuguese regions
- Build price-band histograms from min/max-filtered searches
Relocation & Property Services
- Assemble shortlists filtered by location, budget, and T-typology room count
- Generate area-by-area rental availability reports for incoming clients
- Pull listing photos and addresses for relocation briefing packs
Proptech & Data Products
- Power a Portuguese property portal, valuation model, or comparison tool
- Refresh an existing listings database with current prices and bump dates
- Build alerting on new listings within a price and area window
Getting Started
Search by Location
The simplest run — just name a city or district:
{"location": "Lisboa","maxResults": 100}
Filtered Buy Search
Apartments for sale in Porto, priced €200k–€350k, with two or three rooms:
{"transaction": "buy","propertyType": "apartment","location": "Porto","priceMin": 200000,"priceMax": 350000,"rooms": ["1", "2"],"maxResults": 300}
Rent Search with a Price Band
Properties to rent in Lisboa up to €1,500/month:
{"transaction": "rent","propertyType": "apartment","location": "Lisboa","priceMax": 1500,"areaMin": 60,"maxResults": 200}
Paste Imovirtual Search URLs
Already filtered on the site? Copy the URL from your browser — its baked-in filters are used exactly as-is, and the guided fields are ignored:
{"startUrls": ["https://www.imovirtual.com/pt/resultados/comprar/moradia/faro","https://www.imovirtual.com/pt/resultados/arrendar/apartamento/lisboa"],"maxResults": 500}
Input Reference
What to Scrape
| Parameter | Type | Default | Description |
|---|---|---|---|
startUrls | string[] | [] | Paste one or more Imovirtual search-results URLs. The fastest way to get exactly what you see on the site. When provided, the guided "Build a Search" fields below are ignored. Up to 50 URLs. |
Build a Search
Used only when no startUrls are provided.
| Parameter | Type | Default | Description |
|---|---|---|---|
transaction | select | buy | For Sale (Comprar) or For Rent (Arrendar). |
location | string | Lisboa | City or district to search (e.g. "Lisboa", "Porto", "Faro"). Accents are accepted and recommended. |
propertyType | select | apartment | Apartment, House, Land, Commercial space, Garage, Room, Warehouse, New development, or Any type. |
Filters
Applied to the Imovirtual search itself, so you only collect matching listings.
| Parameter | Type | Default | Description |
|---|---|---|---|
priceMin | integer | null | Minimum price in € — monthly rent when renting, total price when buying. |
priceMax | integer | null | Maximum price in €. |
areaMin | integer | null | Minimum living area in m². |
areaMax | integer | null | Maximum living area in m². |
rooms | string[] | [] | Room counts in Portuguese T-typology — T0 (studio) through T5+. Multi-select; combined with OR. |
Limits
| Parameter | Type | Default | Description |
|---|---|---|---|
maxResults | integer | 100 | Maximum listings per search or URL. Results come in full pages, so the last page may overshoot by a few rows. Set to 0 for no cap (an internal safety limit of 50,000 then applies). |
Output
Each listing becomes one flat row. Here's a representative result:
{"id": "67890123","title": "Apartamento T2 com varanda no centro de Lisboa","url": "https://www.imovirtual.com/pt/anuncio/apartamento-t2-com-varanda-no-centro-de-lisboa-ID67890123","slug": "apartamento-t2-com-varanda-no-centro-de-lisboa-ID67890123","transaction": "buy","propertyType": "apartment","estate": "FLAT","totalPrice": 285000,"currency": "EUR","pricePerSqm": 3958,"area": 72,"rooms": 2,"floor": 3,"address": "Rua da Prata 45","city": "Lisboa","region": "Lisboa","images": ["https://ireland.apollo.olxcdn.com/v1/files/example1/image;s=1280x1024","https://ireland.apollo.olxcdn.com/v1/files/example2/image;s=1280x1024"],"agencyName": "Lisboa Prime Imobiliária","agencyType": "AGENCY","isPrivateOwner": false,"isPromoted": true,"isExclusive": false,"isDevelopment": false,"shortDescription": "Apartamento totalmente renovado, com varanda e excelente exposição solar...","dateCreated": "2026-04-12T09:14:00Z","pushedUpAt": "2026-05-28T07:02:00Z","searchQuery": "buy apartment Lisboa","scrapedAt": "2026-05-30T10:41:05Z"}
Core Fields
| Field | Type | Description |
|---|---|---|
id | string | Imovirtual listing identifier |
title | string | Listing title |
url | string | Canonical listing URL |
slug | string | URL slug |
transaction | string | buy or rent |
propertyType | string | Normalized type: apartment, house, land, commercial, garage, room, warehouse, development |
estate | string | Imovirtual's raw estate category (e.g. FLAT, HOUSE) |
shortDescription | string | Short listing description |
Price & Specs
| Field | Type | Description |
|---|---|---|
totalPrice | number | Total price in € — sale price, or monthly rent for rent listings |
currency | string | Price currency (EUR) |
pricePerSqm | number | Price per m² in € |
area | number | Living area in m² |
terrainArea | number | Plot / terrain area in m², when applicable |
rooms | number | Number of rooms |
floor | number/string | Floor (number, or cellar / attic) |
Location & Media
| Field | Type | Description |
|---|---|---|
address | string | Street address when published |
city | string | City |
region | string | Region / province |
images | string[] | Listing photo URLs at the largest available resolution |
Listing Source & Flags
| Field | Type | Description |
|---|---|---|
agencyName | string | Listing agency name (absent for private sellers) |
agencyType | string | Agency type |
isPrivateOwner | boolean | True when posted by a private owner |
isPromoted | boolean | Promoted / featured listing |
isExclusive | boolean | Exclusive-offer listing |
isDevelopment | boolean | New-construction / development project |
developmentTitle | string | Development name, when applicable |
Dates & Provenance
| Field | Type | Description |
|---|---|---|
dateCreated | string | First-published date (ISO 8601) |
pushedUpAt | string | Last bump / refresh date (ISO 8601) |
searchQuery | string | The location and transaction that produced this row |
scrapedAt | string | ISO-8601 timestamp of data collection |
Empty fields are removed from each row, so a listing without a development name or terrain area simply omits those keys.
Tips for Best Results
- Start small, then scale. Set
maxResultsto 50–100 on your first run to confirm the data fits your needs, then raise it — or set it to0to pull an entire search. - Use district names, not regions. "Lisboa", "Porto", and "Faro" resolve cleanly; broad region names like "Algarve" don't map to a search and return nothing. For a sub-district like a council, paste a search URL from the portal instead.
- Remember the Portuguese T-typology. Room counts follow the "T" system: T0 is a studio, T1 has one bedroom, and so on up to T5+. Pick the
roomsvalues that match the typology you want, and combine several to widen the net. - Rent prices live in
totalPrice. For rent searches, the monthly euro amount is intotalPrice— there's no separate rent field to read. - Filter at the source to control cost. Price, area, and room filters narrow the search on Imovirtual itself, so tighter filters mean fewer rows collected and a cheaper run.
- Paste URLs for pixel-perfect filters. Any filter you can set on the site — including ones not exposed in the guided builder — carries through when you paste the search URL. The URL's filters win over the guided fields.
- Separate new builds from resale. Filter on
isDevelopmentdownstream (or setpropertyTypeto "New development") to isolate off-plan empreendimento inventory.
Pricing
$2.50 per 1,000 results — below the typical market rate for Imovirtual extraction, with the guided search builder included at no extra charge.
| Results | Estimated Cost |
|---|---|
| 100 | $0.25 |
| 1,000 | $2.50 |
| 10,000 | $25.00 |
| 100,000 | $250.00 |
A "result" is any listing row in the output dataset. No compute charges — you only pay per result returned. Standard Apify platform fees depend on your plan.
Integrations
Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:
- Zapier / Make / n8n — Workflow automation
- Google Sheets — Direct spreadsheet export
- Slack / Email — Notifications on new results
- Webhooks — Trigger custom APIs on run completion
- Apify API — Full programmatic access
Legal & Ethical Use
This actor is designed for legitimate real-estate research, market analysis, and lead generation. You are responsible for complying with applicable laws and Imovirtual's Terms of Service, including any rules on the reuse of listing content and personal data. Do not use collected data for spam, harassment, or any unlawful purpose, and respect data-protection regulations when handling agency or owner contact information.