Casa SAPO Scraper - Portugal Real Estate Listings avatar

Casa SAPO Scraper - Portugal Real Estate Listings

Pricing

from $1.20 / 1,000 result scrapeds

Go to Apify Store
Casa SAPO Scraper - Portugal Real Estate Listings

Casa SAPO Scraper - Portugal Real Estate Listings

Scrape property listings from Casa SAPO (casa.sapo.pt), Portugal's national property portal. Extract prices, locations, areas, rooms, images, agencies, and geo-coordinates for apartments, houses, land, and commercial properties for sale or rent. No login or cookies required.

Pricing

from $1.20 / 1,000 result scrapeds

Rating

0.0

(0)

Developer

Studio Amba

Studio Amba

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 hours ago

Last modified

Categories

Share

Casa SAPO Scraper — Portugal Real Estate Listings

Scrape property listings from Casa SAPO, Portugal's national real estate portal (part of the SAPO/Altice network). Search apartments, houses, land, and commercial properties for sale or rent, and get clean structured JSON with prices, areas, bedrooms, locations, geo-coordinates, photos, and agency details.

No login, no cookies, no API keys required.

What does this actor do?

You give it a Portuguese location (district, city, or council), a transaction type (buy or rent), and a property type. It searches Casa SAPO and returns every matching listing as a flat JSON object, up to the limit you set.

It reads the same search-result cards a visitor sees in a browser: asking price, price per square meter, living area, bedroom count, full location string, latitude/longitude, publication photos, and whether the listing is posted by an agency or a private owner.

Why use it?

  • Market research — track asking prices per city, council, or parish over time.
  • Investment analysis — compare price per m² across regions before buying, using the geo-coordinates for map-based analysis.
  • Lead generation — find new listings from private owners or specific agencies the moment they appear.
  • Portfolio monitoring — agencies can watch competitor listings and pricing in their area.
  • Data science — build datasets of the Portuguese housing market for modeling and dashboards.

Why this scraper over the alternative on the Store

A Casa SAPO scraper already exists on the Apify Store built for single-property detail pages. This actor is built for search-and-scale: point it at a location and transaction type and it paginates the whole result set itself, deduplicates by listing ID, and returns geo-coordinates parsed straight from each listing's own structured data — not just what's visible in the card text. It also ships with a content-based block detector (Casa SAPO sits behind Cloudflare) so a challenge page fails the run loudly instead of silently returning zero or garbage rows.

Input options

FieldTypeDefaultDescription
locationstringlisboaPortuguese district, city, or council slug (e.g. lisboa, porto, braga, faro, cascais).
transactionstringcomprarcomprar (buy) or alugar (rent).
propertyTypestringcasasOne of casas (apartments + houses combined), apartamentos, moradias, terrenos, lojas, escritorios, armazens, garagens.
priceMinintegerMinimum price in EUR (monthly rent for alugar). Applied client-side after fetch.
priceMaxintegerMaximum price in EUR (monthly rent for alugar). Applied client-side after fetch.
maxResultsinteger50Maximum number of listings to return. Hard-capped at 20,000.
proxyConfigurationobjectPT residentialApify proxy settings. Portuguese residential proxies are required — Casa SAPO rate-limits aggressively on a single IP.

Example input

{
"location": "porto",
"transaction": "comprar",
"propertyType": "apartamentos",
"priceMax": 300000,
"maxResults": 100
}

Output fields

FieldTypeExample
listingIdstring"b06c9aa8-2c71-11f1-9a8d-060000000057"
listingTitlestring"Apartamento T3"
transactionTypestring"sale"
propertyTypestring"Apartamento T3"
pricenumber | null820000
currencystring | null"EUR"
pricePerSqmnumber | null6074.07
areaM2number | null135
roomsinteger | null3
conditionstring | null"Recuperado"
citystring | null"Lisboa"
districtstring | null"Belém"
locationFullstring | null"Restelo (Santa Maria de Belém), Lisboa, Distrito de Lisboa"
latitudenumber | null38.69961
longitudenumber | null-9.22623
agencyNamestring | null"RB real estate"
isPrivateOwnerboolean | nullfalse
summarystring | nullListing description text
imageUrlstring | nullMain photo URL
imageUrlsarray | nullAll photo URLs from the search card
urlstringFull listing URL
scrapedAtstringISO timestamp

Example output

{
"listingId": "b06c9aa8-2c71-11f1-9a8d-060000000057",
"listingTitle": "Apartamento T3",
"transactionType": "sale",
"propertyType": "Apartamento T3",
"price": 820000,
"currency": "EUR",
"pricePerSqm": 6074.07,
"areaM2": 135,
"rooms": 3,
"condition": "Recuperado",
"city": "Lisboa",
"district": "Belém",
"locationFull": "Restelo (Santa Maria de Belém), Lisboa, Distrito de Lisboa",
"latitude": 38.69961,
"longitude": -9.22623,
"agencyName": "RB real estate",
"isPrivateOwner": false,
"summary": "T3 com 1 Suite + Pátio comum e alguma VISTA RIO | RESTELO - Lisboa...",
"imageUrl": "https://media.casasapo.pt/Z360x270/OAYES/S5/C6631/P29773974/Tphoto/ID9650c601-0000-0500-0000-000018ef323f.jpg.webp",
"imageUrls": ["https://media.casasapo.pt/Z360x270/OAYES/S5/C6631/..."],
"url": "https://casa.sapo.pt/comprar-apartamento-t3-lisboa-restelo-(santa-maria-de-belem)-b06c9aa8-2c71-11f1-9a8d-060000000057.html",
"scrapedAt": "2026-09-05T19:41:04.217Z"
}

How to scrape Casa SAPO data

  1. Open the actor on Apify and click Try for free (or run it via the Apify API).
  2. Set location to a Portuguese district, city, or council: lisboa, porto, braga, faro, cascais, or a smaller council name.
  3. Pick the transaction: comprar for sales listings, alugar for rentals.
  4. Pick a property type: casas for apartments and houses together, or narrow to apartments, houses, land, shops, offices, warehouses, or garages.
  5. Optionally set priceMin / priceMax to narrow the price band.
  6. Set maxResults and press Start. Results land in the run's dataset, ready to download as JSON, CSV, or Excel, or to fetch via API.

The actor paginates through search results automatically (roughly 28 listings per page) and deduplicates listings by internal ID, so you get each property once.

Cost estimate

The actor uses plain HTTP requests over a residential proxy (no browser), so it stays cheap per result even though the proxy itself costs more than a datacenter IP. It charges $0.005 per run start plus $0.002 per result scraped. 1,000 results costs about $2.01. A run's usage cost only settles after it reports SUCCEEDED — reading the dataset mid-run shows a cost far below the final total.

Limitations and known issues

  • The actor scrapes search-result cards. They contain price, area, bedrooms, location, geo-coordinates, photos, and agency, but not the full listing description beyond the card's summary text or the advertiser's phone number.
  • rooms is parsed from the "T-number" convention in the property type label (Apartamento T3 → 3 bedrooms). Listings labeled T3+1 keep the base number (3) — the +1 denotes an extra convertible room, not a confirmed bedroom, so it is never added on top.
  • latitude/longitude are null when Casa SAPO publishes (0, 0) as a placeholder for an obscured location (common on some private-owner listings) — that is treated as "no coordinates," not a real point.
  • Casa SAPO does not reject an unrecognized location slug outright — it can silently fall back to a nationwide result set. The actor detects this by checking whether the requested location actually appears in the returned listings and logs a warning if it doesn't, so a typo in location doesn't quietly return unrelated listings from anywhere in Portugal.
  • priceMin/priceMax are applied after fetching each page (Casa SAPO's price filter is not a documented URL parameter), so a very narrow price band on a large search can still walk through more pages than the final result count suggests.
  • Casa SAPO serves Portuguese property data only. For Portugal's other major portals, see our Imovirtual and Idealista scrapers.

FAQ

Do I need a Casa SAPO account? No. The actor reads public search results only.

Which locations are supported? Districts, cities, and councils that Casa SAPO's own URL structure recognizes (e.g. lisboa, porto, braga, faro, cascais). The actor warns in the run log if a location doesn't seem to be recognized.

Can I get rental prices? Yes. Set transaction to alugar and price becomes the monthly rent in EUR.

Is this legal? The actor only collects publicly available listing data, the same information any visitor sees in a browser. You are responsible for how you use the data — respect Casa SAPO's terms of service and applicable data protection laws.