Imovirtual Portugal Real Estate Listings
Pricing
from $1.70 / 1,000 listing founds
Imovirtual Portugal Real Estate Listings
Pull live apartment and house listings straight from Imovirtual.com — Portugal's biggest real-estate classifieds portal — by deal type, property type and city. No login, no browser, no proxies. Unofficial, independent tool — not affiliated with, endorsed by, or sponsored by Imovirtual.
Pricing
from $1.70 / 1,000 listing founds
Rating
0.0
(0)
Developer
Tim Zinin
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 hours ago
Last modified
Categories
Share
Pull live apartment and house listings straight from Imovirtual.com — Portugal's biggest real-estate classifieds portal — filtered by deal type (buy/rent), property type and city. No login, no API key, no browser needed on your side.
What you get
- Title, price (with currency), rooms, floor area, district/council/parish location, a short description, preview photos and the direct listing URL for every ad found.
- Filter by buy or rent, apartment or house, and any Imovirtual.com city.
- Runs on Apify: schedule it, monitor it, call it from the API, export to JSON/CSV/Excel or push straight into your own pipeline.
How to run it
- Click Try for free — no card needed on the free plan.
- Pick Deal type (buy/rent) and Property type (apartment/house), and
set City path — for example
lisboa/lisboafor the city of Lisbon. - Hit Start and pull the results from the dataset (UI, API or webhook).
Pricing
Pay-per-event: $0.005 per run start + $0.002 per result. No monthly seat, no minimum. 100 listings found cost about $0.21 (the one-time start fee plus 100 result rows). Rows where the source returned nothing (an unrecognized combination, a search with zero matching listings, or a request that failed) are returned for transparency but are never charged for.
Input
| Field | Required | What it does |
|---|---|---|
deal_type | no | comprar (buy) or arrendar (rent). Default comprar. |
property_type | no | apartamento (apartment) or casa (house). Default apartamento. |
city | no | Imovirtual.com location path, e.g. lisboa/lisboa for the city of Lisbon. Default lisboa/lisboa. |
max_items | no | Total row cap for this run (default 100). |
max_pages | no | How many result pages to walk before stopping (default 3). |
{"deal_type": "comprar","property_type": "apartamento","city": "lisboa/lisboa","max_items": 5,"max_pages": 1}
Output
Real row from a live run (9WQINK3wcT4NuHq0C, 2026-07-30):
{"found": true,"url": "https://www.imovirtual.com/pt/ad/apartamento-t2-em-beco-do-monte-ID1iG40","title": "Apartamento T2 em Beco do Monte","price": 250000,"currency": "EUR","deal_type": "sale","property_type": "FLAT","rooms": 3,"area_sqm": 55,"location": "Alameda - Praça do Chile - Almirante Reis, Arroios, Lisboa, Lisboa","lat": null,"lng": null,"posted_date": "2026-07-30 11:38:22","description": "Apartamento T2 com Quintal Privativo no Coração Histórico de Lisboa | Arroios / Graça\n\nDescubra uma excelente oportunidade de investimento ou de habitação própria numa das zonas mais autênticas e valo...","images": ["https://ireland.apollo.olxcdn.com/v1/files/eyJmbiI6Im5tdHU3dDE3NnVobTEtRUNPU1lTVEVNIiwidyI6W3siZm4iOiI2OW5scGE3ZWNxbTcxLUFQVCIsInMiOiIxNCIsInAiOiIxMCwtMTAiLCJhIjoiMCJ9XX0.9y5DhhilatWc0EqRhNqexn-0C3Aw31e528QA_YEKyh0/image;s=655x491;q=80","https://ireland.apollo.olxcdn.com/v1/files/eyJmbiI6IjI0bWtmbmdjaXpveDEtRUNPU1lTVEVNIiwidyI6W3siZm4iOiI2OW5scGE3ZWNxbTcxLUFQVCIsInMiOiIxNCIsInAiOiIxMCwtMTAiLCJhIjoiMCJ9XX0.ZriCK5SVCLWjNGRjYggq7JK178jEtl3HIPkYbfPAQrQ/image;s=655x491;q=80","https://ireland.apollo.olxcdn.com/v1/files/eyJmbiI6Im80dnM1dmptNTJ4ZDItRUNPU1lTVEVNIiwidyI6W3siZm4iOiI2OW5scGE3ZWNxbTcxLUFQVCIsInMiOiIxNCIsInAiOiIxMCwtMTAiLCJhIjoiMCJ9XX0.bYt6VleHWuMlzdHsefZiExpcekK56E9JoWuMXePmt-w/image;s=655x491;q=80"],"source_portal": "imovirtual-lisbon","scraped_at": "2026-07-30T11:03:36.651Z","partial": false,"partial_reason": null}
| Field | Meaning |
|---|---|
found | true for a real listing row; false for an empty-result or error row. |
url | Direct link to the listing. |
title | Listing headline as published. |
price | Sale price, or monthly rent for rentals. |
currency | Always EUR on Imovirtual.com. |
deal_type | sale or rent. |
property_type | Imovirtual's own classification: FLAT, HOUSE, or INVESTMENT (new-development project). |
rooms | Number of rooms. null when Imovirtual reports an open-ended "5+" instead of an exact count. |
area_sqm | Floor area in square meters. |
location | Most specific location Imovirtual gives (neighborhood/parish where available, otherwise city/district). |
lat / lng | Coordinates if Imovirtual's own listing page exposes them; null on the overwhelming majority of listings, which don't. |
posted_date | Raw timestamp as Imovirtual publishes it. |
description | Listing description text, truncated to roughly 200 characters (source-side truncation, not ours). |
images | Up to 5 photo URLs. |
source_portal | Always imovirtual-lisbon. |
scraped_at | ISO-8601 UTC timestamp of when this Actor fetched the row. |
partial | true when this run stopped (via max_pages/max_items) before Imovirtual confirmed there were no more matching listings; false when the source confirmed the result set was already complete. |
partial_reason | Human-readable explanation of why the run stopped early when partial is true; null otherwise. |
API
Start a run with a bearer token and explicit JSON input:
curl -sS -X POST 'https://api.apify.com/v2/acts/zinin~imovirtual-lisbon/runs?waitForFinish=60' \-H "Authorization: Bearer $APIFY_TOKEN" \-H 'Content-Type: application/json' \--data '{"deal_type":"comprar","property_type":"apartamento","city":"lisboa/lisboa","max_items":5,"max_pages":1}'
Read Dataset rows using the returned defaultDatasetId:
curl -sS "https://api.apify.com/v2/datasets/$DEFAULT_DATASET_ID/items?clean=true&format=json" \-H "Authorization: Bearer $APIFY_TOKEN"
MCP
For an Apify MCP client exposing the standard call-actor tool, send this exact payload:
{"name": "call-actor","arguments": {"actor": "zinin/imovirtual-lisbon","input": {"deal_type": "comprar","property_type": "apartamento","city": "lisboa/lisboa","max_items": 5,"max_pages": 1}}}
Related Actors
Other major European real-estate portals, for a buyer comparing markets or running a multi-country portfolio rather than looking at Lisbon alone.
| Actor | Use it when |
|---|---|
| Otodom Poland Real Estate Listings | Scanning Warsaw alongside Lisbon for a rental-arbitrage or portfolio-diversification play across EU capitals — same query shape, same account. |
| Storia Romania Real Estate Listings | Adding Bucharest to the same pipeline for a lower entry-price EU market, without new plumbing. |
| Rightmove UK Property Listings (London and beyond) | Benchmarking Lisbon's prices against London's for a buyer who's being priced out of the UK market. |
FAQ / Limitations
Does this need a login or API key on Imovirtual's side? No — it reads the same public listing pages a visitor would see.
What this is NOT. This is not a valuation tool and does not enrich
listings with data Imovirtual itself doesn't publish (no coordinates, no
agent phone numbers). Rooms reported by Imovirtual as an open-ended "5+" come
back as null, not a guessed number.
Found a bug or need this adapted to your case — issues on the Actor page.
Machine use
The Actor is callable through the Apify API, SDK, and Apify MCP server. The input and Dataset row are the machine-facing contract; images returns preview photo URLs only, not the full listing gallery, and rooms/posted_date are null whenever Imovirtual itself doesn't publish a resolvable value — this Actor never fills either gap with a guess.