Minha Morada API v1

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.


GET /properties

Search properties with filters. Returns a paginated list (max 50 per page).

Query Parameters

ParamTypeDescription
price_typestringsale or rent
price_minnumberMinimum price (EUR)
price_maxnumberMaximum price (EUR)
typologystringComma-separated: T0,T1,T2,T3,T4,T5+
area_minnumberMinimum area (m²)
conditionstringComma-separated: new,renovated,used,to_renovate
has_elevatorbooleanFilter for elevator
has_parkingbooleanFilter for parking
has_gardenbooleanFilter for garden
districtstringDistrict name (e.g., Porto, Lisboa)
municipalitystringMunicipality name
near_latnumberProximity: latitude of point
near_lngnumberProximity: longitude of point
near_max_minutesnumberMax commute time (default: 30)
near_transportstringTransport mode: driving, transit, walking, cycling
sortstringprice, area, or scraped_at
dirstringasc or desc
pagenumberPage number (default: 1)
limitnumberResults per page (max: 50, default: 20)

Response fields

FieldDescription
data[].idUnique property ID
data[].urlCanonical property page on Minha Morada (share this link)
data[].source_urlOriginal listing URL (Imovirtual, Idealista, RE/MAX)
search_urlHuman-readable search page URL matching these filters (when district + typology + price_type are provided)

Example

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 /properties/:id

Get full details for a single property, including description.

Optional Query Parameters

ParamTypeDescription
near_latnumberCalculate commute from this latitude
near_lngnumberCalculate commute from this longitude

When near_lat/near_lng are provided, the response includes a commute array with all 4 transport modes.

Example

curl "https://minhamorada.pt/api/v1/properties/imovirtual_19072237?near_lat=41.15&near_lng=-8.63"

GET /stats

Market statistics: total properties, averages by district, breakdown by typology and source. Cached for 1 hour.

Example

curl "https://minhamorada.pt/api/v1/stats"

Rate Limiting

All endpoints share a limit of 100 requests per hour per IP address.

HeaderDescription
X-RateLimit-LimitMax requests per window (100)
X-RateLimit-RemainingRequests left in current window
X-RateLimit-ResetUnix timestamp when the window resets

When exceeded, returns 429 Too Many Requests.


Data Coverage

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