Imovirtual Property Discovery Scraper avatar

Imovirtual Property Discovery Scraper

Pricing

from $0.85 / 1,000 listings

Go to Apify Store
Imovirtual Property Discovery Scraper

Imovirtual Property Discovery Scraper

Discover public Imovirtual property listings by location, operation, and property type. Extract prices, areas, rooms, seller labels, images, and listing URLs.

Pricing

from $0.85 / 1,000 listings

Rating

0.0

(0)

Developer

Trove Vault

Trove Vault

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 hours ago

Last modified

Share

Discover public Imovirtual real estate listings from buyer-facing inputs: location, operation, property type, and result limit. The Actor searches Imovirtual for you, then returns structured listing rows with prices, areas, bedrooms, bathrooms, seller labels, public phone numbers when visible, main image, image gallery, features, description, and listing URLs.

This is a discovery Actor. You do not need to provide search result URLs.

Why Use This Actor

Use this Actor when you need a clean real estate dataset from Imovirtual without manually building search URLs or copying listings from the website.

It is useful for:

  • real estate lead discovery by city, region, or country
  • market research for sale and rental inventory
  • price and area comparison across Portuguese property listings
  • agency, investor, and proptech workflows that need listing URLs plus normalized fields
  • TroveVault pipelines that combine several property portals into one dataset

What It Extracts

Each dataset row can include:

  • platform, listingId, title, and url
  • operation and propertyType
  • price, currency, priceText, and pricePerM2
  • areaM2, bedrooms, bathrooms, floor, and condition
  • address, city, region, country, latitude, and longitude when visible
  • description
  • features, such as balcony, terrace, garage, parking, elevator, pool, garden, renovated, or sea view
  • sellerName, sellerType, and phone when publicly exposed
  • mainImage and images
  • scrapedAt
  • runId when supplied in the input

Fields are only populated when they are publicly visible or can be safely inferred from listing text.

Input

{
"location": "Lisbon, Portugal",
"operation": "sale",
"propertyType": "apartment",
"maxItems": 3,
"datasetId": "",
"runId": ""
}

Input Fields

  • location - City, region, or country to search. City or city plus country is recommended for stable results, for example Lisbon, Portugal, Porto, or Faro.
  • operation - Dropdown. Use sale for properties for sale or rent for rental listings.
  • propertyType - Dropdown. Use any, apartment, house, land, or commercial.
  • maxItems - Maximum number of listings to save. Use a small number for quick checks and a larger number for broader discovery.
  • datasetId - Optional Apify dataset ID. When provided, each saved listing is also appended to that dataset, which is useful when combining several discovery Actors.
  • runId - Optional workflow run ID. When provided, it is copied into each output row and the RUN_SUMMARY key-value record.

Output Example

{
"platform": "Imovirtual",
"listingId": "1i1Nz",
"title": "Apartamento T4 em Campolide",
"url": "https://www.imovirtual.com/pt/anuncio/apartamento-t4-em-campolide-ID1i1Nz",
"operation": "sale",
"propertyType": "apartment",
"price": 615000,
"currency": "EUR",
"priceText": "615 000 EUR",
"pricePerM2": 4659.09,
"areaM2": 132,
"bedrooms": 4,
"bathrooms": 2,
"country": "Portugal",
"description": "Public listing description when visible.",
"features": ["terrace"],
"mainImage": "https://ireland.apollo.olxcdn.com/...",
"images": ["https://ireland.apollo.olxcdn.com/..."],
"scrapedAt": "2026-07-19T12:53:00.501Z",
"runId": "parent-workflow-run"
}

API Usage

curl -X POST "https://api.apify.com/v2/acts/trovevault~imovirtual-property-discovery-scraper/runs" \
-H "Authorization: Bearer <APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"location":"Lisbon, Portugal","operation":"sale","propertyType":"apartment","maxItems":3}'

To append the same rows to an existing dataset and tag them with a workflow run:

curl -X POST "https://api.apify.com/v2/acts/trovevault~imovirtual-property-discovery-scraper/runs" \
-H "Authorization: Bearer <APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"location":"Lisbon, Portugal","operation":"sale","propertyType":"apartment","maxItems":50,"datasetId":"YOUR_DATASET_ID","runId":"workflow-2026-07-19"}'

Notes And Limitations

  • Use English values for operation and propertyType; the Actor maps them to Imovirtual search paths internally.
  • City-level locations are more precise than whole-country searches.
  • Public websites can change layout or temporarily block requests; failed individual listings are skipped and logged instead of failing the entire run.
  • Phone numbers are returned only when a visible tel: link is exposed by the listing page.
  • mainImage is the first public content image detected. images can contain additional gallery URLs.
  • Prices, availability, and listing details can change after scraping. Use scrapedAt to judge freshness.
  • The Actor does not read search URLs from the input and does not require an upstream dataset for discovery.

Troubleshooting

  • Empty dataset: try a more specific city such as Lisbon, Portugal instead of a whole country.
  • Fewer results than maxItems: the selected combination may have limited visible listings or some pages may not expose enough public data.
  • Missing phone: the listing probably hides phone details or requires interaction that is not publicly available in static HTML.
  • Missing address or coordinates: Imovirtual does not expose full location details for every listing.
  • Slow run: lower maxItems for quick validation, then increase it for broader discovery.
  • CASA SAPO Property Discovery Scraper
  • Other TroveVault real estate discovery Actors as they are added

Changelog

  • 0.1 - Initial Imovirtual discovery Actor with dropdown operation/property type, optional pipeline IDs, GitHub-backed Apify source, and low-cost default test input.