Imovirtual Listings Scraper avatar

Imovirtual Listings Scraper

Pricing

from $1.00 / 1,000 search listings

Go to Apify Store
Imovirtual Listings Scraper

Imovirtual Listings Scraper

Scrape Imovirtual.com real estate listings in Portugal: price, price per m², area, rooms, floor, district, municipality, parish, agency and photos. Search by location, property type and price or paste any search URL. Optional details add GPS, phone numbers, description and energy certificate.

Pricing

from $1.00 / 1,000 search listings

Rating

0.0

(0)

Developer

FalconScrape

FalconScrape

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

16 days ago

Last modified

Share

🏠 Imovirtual Listings Scraper

Extract real estate listings from Imovirtual.com, one of Portugal's largest property portals. Get apartments, houses, land, commercial property, garages, rooms and new developments for sale or rent, with prices, price per m², area, rooms, location and agency. Use it for market analysis, price monitoring, investment research or real estate lead generation.

✨ Features

  • 🔍 Search by fields or by URL: pick buy or rent, property type, location (district, municipality, parish or neighbourhood) and a price range. Or paste any Imovirtual search URL: every filter, the sort order and the page number are kept.
  • 🏷️ Rich listing data: title, price, price per m², area, land area, rooms (T0, T1, T2... become 1, 2, 3 rooms), floor, street, district, municipality, parish, neighbourhood, agency, photos, listing dates and development info.
  • 📋 Optional full details: turn on Scrape full listing details to add the full description, GPS coordinates, energy certificate, build year, bathrooms, all characteristics, amenities (lift, balcony, garage...), contact phone numbers and the agency profile.
  • 📄 No page limit: whole result sets are reachable, e.g. all ~16,800 apartments for sale in Lisboa district.
  • 🧹 No duplicates: listings that appear in several of your searches are saved once.
  • 💰 Pay only for results: cheap search rows, details only when you ask for them.

🛠️ How it works

  1. Choose what to scrape: fill in the search fields, or go to imovirtual.com, set your filters (e.g. T2 apartments in Lisboa under €300,000) and copy the URL from your browser.
  2. Set your limits: choose how many listings you want (Max listings) and whether to fetch full details.
  3. Run the scraper and download the data as JSON, CSV, Excel or HTML, or connect it to Google Sheets, Make, Zapier or a webhook.

You can also paste individual listing URLs (https://www.imovirtual.com/pt/anuncio/...) to scrape specific properties.

⚙️ Input

Search by fields:

{
"transaction": "sale",
"propertyType": "apartamento",
"location": "Lisboa",
"priceMax": 400000,
"maxItems": 50,
"scrapeDetails": false
}

Or by search URL:

{
"startUrls": [
{
"url": "https://www.imovirtual.com/pt/resultados/comprar/apartamento,t1/lisboa?priceMax=300000&roomsNumber=%5BTWO%5D&by=PRICE&direction=ASC"
}
],
"maxItems": 200
}
FieldDescription
startUrlsImovirtual search URLs (any filters, sort and page) or listing URLs. When given, the search fields are ignored.
transactionsale (comprar) or rent (arrendar). Default sale.
propertyTypeapartamento, moradia, terreno, imoveis-comerciais, imoveis-comerciais,escritorio, armazens, garagem, quarto, empreendimento, apartamento,nova-construcao, moradia,nova-construcao. Default apartamento.
locationA place as written on Imovirtual, e.g. Lisboa, Cascais, Arroios, or Porto, Porto for the municipality rather than the district. Empty = all of Portugal.
priceMin / priceMaxPrice range in euro.
maxItemsMaximum number of listings to save (default 50, 0 = no limit).
scrapeDetailsOpen each listing for description, GPS, phones and all characteristics (default off).
proxyConfigurationProxy settings; the default works well.

With empty input the Actor scrapes the newest 50 apartments for sale in Portugal.

📊 Sample output

A search result row:

{
"id": 19301039,
"url": "https://www.imovirtual.com/pt/anuncio/apartamento-t1-para-venda-ID1iZ55",
"title": "Apartamento T1 para venda",
"estate": "FLAT",
"transaction": "SELL",
"price": { "value": 239000, "currency": "EUR" },
"pricePerSquareMeter": { "value": 7769.83, "currency": "EUR" },
"areaInSquareMeters": 30.76,
"roomsNumber": 2,
"floorNumber": 1,
"street": "Rua Antero de Quental",
"region": "Porto",
"municipality": "Porto",
"parish": "Cedofeita, Ildefonso, Sé, Miragaia, Nicolau, Vitória",
"neighborhood": "Lapa - Bouça",
"isPrivateOwner": false,
"agency": { "id": 4009208, "name": "RE/MAX + Grupo Vantagem", "slug": "re-max-grupo-vantagem-ID4009208" },
"dateCreated": "2026-10-07 20:08:03",
"image": "https://ireland.apollo.olxcdn.com/v1/files/.../image;s=1280x1024;q=80"
}

With details on, each row also has description, latitude, longitude, bathroomsNumber, buildYear, energyCertificate, characteristics, features (amenities), floorPlans, phones, contact, owner and the full agency profile with address and phones.

💰 Pricing

You pay per saved listing:

EventPriceWhat you get
Search listing$0.001 ($1.00 / 1,000)All fields in the sample above
Listing detail$0.004 ($4.00 / 1,000)Charged instead of a search listing when details are on: everything, incl. description, GPS and phone numbers
Actor start$0.00005 per runOne-off start fee

Examples: 1,000 apartments from search results cost about $1.00; 1,000 listings with full details cost about $4.00.

💡 Tips

  • Set filters on imovirtual.com (rooms, area, energy certificate, new builds...) and paste the URL: everything carries over, including page=3 if you want to start there.
  • Keep details off when you only need prices and locations: 4× cheaper and much faster.
  • Add several URLs in one run to cover several cities or property types; duplicates are removed.
  • Schedule the Actor to track new listings and price changes over time.

❓ FAQ

Is it legal to scrape Imovirtual? The Actor extracts only publicly available data. You are responsible for how you use it and for complying with local law and the site's terms. Contact details can be personal data under GDPR: only collect them with a legitimate purpose.

A listing disappeared before its details loaded. Sold or withdrawn listings are skipped and not billed.

Found a problem or need another field? Open an issue in the Issues tab.