Casa SAPO Scraper - Portugal Real Estate Listings
Pricing
from $1.20 / 1,000 result scrapeds
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
Maintained by CommunityActor 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
| Field | Type | Default | Description |
|---|---|---|---|
location | string | lisboa | Portuguese district, city, or council slug (e.g. lisboa, porto, braga, faro, cascais). |
transaction | string | comprar | comprar (buy) or alugar (rent). |
propertyType | string | casas | One of casas (apartments + houses combined), apartamentos, moradias, terrenos, lojas, escritorios, armazens, garagens. |
priceMin | integer | — | Minimum price in EUR (monthly rent for alugar). Applied client-side after fetch. |
priceMax | integer | — | Maximum price in EUR (monthly rent for alugar). Applied client-side after fetch. |
maxResults | integer | 50 | Maximum number of listings to return. Hard-capped at 20,000. |
proxyConfiguration | object | PT residential | Apify 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
| Field | Type | Example |
|---|---|---|
listingId | string | "b06c9aa8-2c71-11f1-9a8d-060000000057" |
listingTitle | string | "Apartamento T3" |
transactionType | string | "sale" |
propertyType | string | "Apartamento T3" |
price | number | null | 820000 |
currency | string | null | "EUR" |
pricePerSqm | number | null | 6074.07 |
areaM2 | number | null | 135 |
rooms | integer | null | 3 |
condition | string | null | "Recuperado" |
city | string | null | "Lisboa" |
district | string | null | "Belém" |
locationFull | string | null | "Restelo (Santa Maria de Belém), Lisboa, Distrito de Lisboa" |
latitude | number | null | 38.69961 |
longitude | number | null | -9.22623 |
agencyName | string | null | "RB real estate" |
isPrivateOwner | boolean | null | false |
summary | string | null | Listing description text |
imageUrl | string | null | Main photo URL |
imageUrls | array | null | All photo URLs from the search card |
url | string | Full listing URL |
scrapedAt | string | ISO 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
- Open the actor on Apify and click Try for free (or run it via the Apify API).
- Set
locationto a Portuguese district, city, or council:lisboa,porto,braga,faro,cascais, or a smaller council name. - Pick the transaction:
comprarfor sales listings,alugarfor rentals. - Pick a property type:
casasfor apartments and houses together, or narrow to apartments, houses, land, shops, offices, warehouses, or garages. - Optionally set
priceMin/priceMaxto narrow the price band. - Set
maxResultsand 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.
roomsis parsed from the "T-number" convention in the property type label (Apartamento T3→ 3 bedrooms). Listings labeledT3+1keep the base number (3) — the+1denotes an extra convertible room, not a confirmed bedroom, so it is never added on top.latitude/longitudearenullwhen 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
locationdoesn't quietly return unrelated listings from anywhere in Portugal. priceMin/priceMaxare 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.