casasapo.pt APIcasasapo.pt ↗
Access property listings from Casa Sapo (casa.sapo.pt) via API. Search sales and rentals, get listing details, track new listings and price reductions in Portugal.
curl -X GET 'https://api.parse.bot/scraper/52af7c6d-5eb4-49cd-9ec6-bbdb442268b0/search_listings_for_sale?location=lisboa' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for properties for sale on Casa Sapo with various filters including location, property type, price range, area, and typology. Returns paginated results with listing summaries.
| Param | Type | Description |
|---|---|---|
| pn | integer | Page number. |
| locationrequired | string | Location slug (e.g. 'lisboa', 'porto', 'faro'). |
| max_area | integer | Maximum area in m². |
| min_area | integer | Minimum area in m². |
| typology | string | Typology filter: T0, T1, T2, T3, T4, T5, T6-ou-superior. |
| max_price | integer | Maximum price in Euros. |
| min_price | integer | Minimum price in Euros. |
| property_type | string | Property type: apartamentos, moradias, terrenos, lojas, escritorios, predios, armazens, quintas-herdades, imoveis-luxo, garagens. |
{
"type": "object",
"fields": {
"url": "string, the constructed search URL",
"page": "integer, current page number",
"listings": "array of listing objects with url, title, price, area, and optional previous_price/price_reduction fields"
},
"sample": {
"data": {
"url": "https://casa.sapo.pt/comprar-apartamentos/lisboa/",
"page": 1,
"listings": [
{
"url": "https://casa.sapo.pt/comprar-apartamento-t3-lisboa-carnide-9f5ba1a8-b05a-11f0-8359-060000000051.html?g3pid=1073964",
"area": "Usado · 127m²",
"price": "628.000 €",
"title": "Apartamento T3",
"previous_price": "698.000 €",
"price_reduction": "-10,03%"
}
]
},
"status": "success"
}
}About the casasapo.pt API
The Casa Sapo API provides 5 endpoints for querying Portugal's casa.sapo.pt property portal, covering listings for sale and rent, full listing detail pages, newly published apartments, and price-reduced properties. The get_listing_detail endpoint returns structured fields including price, description, features, and location text from any listing URL retrieved through search.
Search and Filter Portuguese Properties
The search_listings_for_sale and search_listings_for_rent endpoints accept a required location slug (e.g. lisboa, porto, faro) alongside optional filters: property_type (apartamentos, moradias, terrenos, lojas, escritorios, predios, armazens, quintas-herdades), typology (T0 through T6-ou-superior), min_price/max_price in Euros, and min_area/max_area in m². Both return paginated results via the pn parameter, with each listing object containing url, title, price, area, and — when applicable — previous_price and price_reduction fields.
Listing Detail and Market Signals
Pass any listing URL from search results to get_listing_detail to retrieve the full record: price, title, description, location_text, and a features object containing key-value property attributes. The search_new_listings endpoint surfaces apartments published in the last 8 days and accepts an optional location filter. The search_price_reduced_listings endpoint targets listings with recent price cuts, returning previous_price and price_reduction alongside current price and area — useful for tracking market softening by location.
Pagination and Coverage Notes
All search endpoints expose a page field in the response and accept a pn input for walking through result sets. The search_price_reduced_listings endpoint notes limited inventory — typically fewer than 10 results — reflecting the actual volume of price-drop listings on the portal at any time. The search_listings_for_rent response may include mixed listing types, as the portal's own feed can surface varied property categories within a rental query.
- Monitor price reductions on Porto apartments using
search_price_reduced_listingswith a location filter. - Build a new-listing alert system for Lisbon properties with
search_new_listingspolled on a schedule. - Aggregate sale listing counts by typology (T1, T2, T3) across multiple location slugs for market analysis.
- Enrich a CRM with full property descriptions and feature sets by passing listing URLs to
get_listing_detail. - Compare asking prices across property types (moradias vs. apartamentos) in the same location using
search_listings_for_sale. - Track area-to-price ratios by filtering
min_area/max_areaalongsidemin_price/max_pricein search queries. - Identify recently listed commercial properties (lojas, escritorios, armazens) in Faro using property_type filters.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Casa Sapo have an official developer API?+
What does `get_listing_detail` return beyond price and title?+
description string (the full property description text), a features object of key-value attribute pairs (room count, floor, energy rating, etc. when present on the listing page), and a location_text field. The features object may be empty if the listing page does not expose structured attributes.Do the search endpoints cover all property types for rent, including commercial?+
search_listings_for_rent endpoint accepts the same property_type values as the sale endpoint — including lojas, escritorios, and armazens — so commercial rentals are in scope. However, the endpoint notes that results may include mixed listing types from the portal's feed, so result composition can vary. You can fork the API on Parse and revise it to add a dedicated commercial-rental endpoint with stricter type filtering if that matters for your use case.Is there an endpoint for property valuations or historical price data?+
search_price_reduced_listings), and listing-level previous_price fields where the portal exposes them — but no valuation estimates or historical price series. You can fork the API on Parse and revise it to add an endpoint targeting any valuation or statistics pages the portal may offer.How does pagination work across the search endpoints?+
pn parameter to request a specific page. The response includes a page field confirming the current page and a url field showing the constructed search URL. There is no explicit total-page count returned, so you iterate until the listings array is empty or contains fewer results than a full page.