Public REST API for Portuguese real estate data. Optimized for LLM consumption.
Base URL: https://minhamorada.pt/api/v1
Rate limit: 100 requests/hour per IP. Check X-RateLimit-Remaining header.
Search properties with filters. Returns a paginated list (max 50 per page).
| Param | Type | Description |
|---|---|---|
price_type | string | sale or rent |
price_min | number | Minimum price (EUR) |
price_max | number | Maximum price (EUR) |
typology | string | Comma-separated: T0,T1,T2,T3,T4,T5+ |
area_min | number | Minimum area (m²) |
condition | string | Comma-separated: new,renovated,used,to_renovate |
has_elevator | boolean | Filter for elevator |
has_parking | boolean | Filter for parking |
has_garden | boolean | Filter for garden |
district | string | District name (e.g., Porto, Lisboa) |
municipality | string | Municipality name |
near_lat | number | Proximity: latitude of point |
near_lng | number | Proximity: longitude of point |
near_max_minutes | number | Max commute time (default: 30) |
near_transport | string | Transport mode: driving, transit, walking, cycling |
sort | string | price, area, or scraped_at |
dir | string | asc or desc |
page | number | Page number (default: 1) |
limit | number | Results per page (max: 50, default: 20) |
| Field | Description |
|---|---|
data[].id | Unique property ID |
data[].url | Canonical property page on Minha Morada (share this link) |
data[].source_url | Original listing URL (Imovirtual, Idealista, RE/MAX) |
search_url | Human-readable search page URL matching these filters (when district + typology + price_type are provided) |
curl "https://minhamorada.pt/api/v1/properties?price_type=rent&district=Porto&typology=T2&price_max=1200&limit=5"
The response will include search_url: "https://minhamorada.pt/pt/porto/t2/arrendar?preco_max=1200" — a shareable page you can send to users.
Get full details for a single property, including description.
| Param | Type | Description |
|---|---|---|
near_lat | number | Calculate commute from this latitude |
near_lng | number | Calculate commute from this longitude |
When near_lat/near_lng are provided, the response includes a commute array with all 4 transport modes.
curl "https://minhamorada.pt/api/v1/properties/imovirtual_19072237?near_lat=41.15&near_lng=-8.63"
Market statistics: total properties, averages by district, breakdown by typology and source. Cached for 1 hour.
curl "https://minhamorada.pt/api/v1/stats"
All endpoints share a limit of 100 requests per hour per IP address.
| Header | Description |
|---|---|
X-RateLimit-Limit | Max requests per window (100) |
X-RateLimit-Remaining | Requests left in current window |
X-RateLimit-Reset | Unix timestamp when the window resets |
When exceeded, returns 429 Too Many Requests.
Currently covers Portugal with ~10,500 properties from 3 sources: Imovirtual, Idealista, and RE/MAX. Updated weekly.
Districts: Lisboa, Porto, Braga, Faro, Coimbra, Aveiro, Leiria, Viseu, Setúbal, and more.
Minha Morada API v1 — Built for AI agents and developers. minhamorada.pt