flatin.pt Find an apartment

API, MCP and open data

The same data the site shows, machine-readable: new-build developments with prices per typology and delivery dates, where-to-live guides, key figures for each municipality (INE), the construction barometer, IMT and stamp duty on purchase, IMI rates for all 308 municipalities. No key, no sign-up.

Updated on

HTTP API

JSON over HTTPS, no authentication. The OpenAPI schema is at the end of this list and is what tooling reads.

GET /api/v1/barometer/official.csv The official INE series the barometer is checked against
GET /api/v1/barometer/sce.csv ADENE energy-certificate statistics (SCE) for new housing
GET /api/v1/barometer/series The same barometer series as JSON, with attribution
GET /api/v1/barometer/series.csv Building-permit barometer: monthly case counts per municipality
GET /api/v1/construction-barometer Construction barometer: building-works cases and INE licences
POST /api/v1/consultation Send a request to flatin.pt, a licensed estate agency (two steps)
GET /api/v1/facts.json Dated facts about Portugal, each with its primary source
GET /api/v1/funnel Housing pipeline by municipality: cases, licences, completions
GET /api/v1/funnel.csv Housing pipeline of the 308 municipalities, as CSV
GET /api/v1/glossary Glossary of Portuguese home-buying terms: the list
GET /api/v1/glossary/{term} One glossary term: definition, law reference and page
GET /api/v1/imi/rates IMI rates for all municipalities
GET /api/v1/imi/rates-history.csv Every verified year of IMI rates in one CSV file
GET /api/v1/imi/rates.csv The same rates as one CSV file
GET /api/v1/imi/rates.geojson IMI rates with municipality boundaries (GeoJSON)
GET /api/v1/imi/rates/{codigo} IMI rate of one municipality
POST /api/v1/imt/calculate What a purchase costs on top of the price
GET /api/v1/licensing-duration Age of licensing cases in progress: Porto and Lisbon
GET /api/v1/licensing-duration.csv Age of licensing cases in progress, as CSV
POST /api/v1/mortgage/calculate Mortgage payment, minimum income and cash at the deed
GET /api/v1/municipalities/compare Compare 2 to 5 municipalities side by side
GET /api/v1/municipalities/{municipality}/stats Everything flatin.pt publishes about one municipality
GET /api/v1/newbuilds Search new-build projects in Portugal
GET /api/v1/newbuilds/{slug} One new-build project: prices, status, purchase cost, nearby
GET /api/v1/open-data-coverage The same open-data index as JSON, with attribution
GET /api/v1/open-data-coverage.csv Open data of the 308 municipalities: what each one publishes
GET /api/v1/reports/obra-nova.json Monthly report 'Obra nova em Portugal': list of editions
GET /api/v1/reports/obra-nova/{edition}.csv One edition of the monthly new-build report as CSV
GET /api/v1/reports/obra-nova/{edition}.json One edition of the monthly new-build report as JSON, with attribution
POST /api/v1/subscriptions Subscribe an email to new developments or construction
GET /api/v1/where-to-live Where-to-live guides: the list of cities and regions
GET /api/v1/where-to-live.csv Where to live in Portugal: the city guides compared, as CSV
GET /api/v1/where-to-live/{city} Where to live in a city: verdict by area, noise and safety
GET /api/openapi.json OpenAPI 3.1

MCP server

For assistants that call tools. Streamable HTTP transport, no sessions: POST JSON-RPC to the address below. A GET answers 405 — there is no SSE stream here, and the specification allows that.

https://flatin.pt/mcp

Tools the server offers

imt_calculate
Use this when asked what a home purchase in Portugal costs on top of the price: IMT, stamp duty and Casa Pronta registration, by the 2026 tables. Do not use it for the yearly property tax (imi_annual_cost) or to define a term such as VPT (glossary_lookup). Both taxes are charged on the higher of value and vpt: pass the VPT when known. tax_haven_company takes precedence over non_resident. buyer_is_young applies only when primary_home is true. For a non-resident buyer the answer says what the Tax Authority annuls later on request.
required_income
Use this when asked what net monthly income and savings it takes to buy a home in Portugal at a given price, under the Banco de Portugal rules. Do not use it for the purchase taxes alone (imt_calculate).
imi_rate
Use this when only the yearly IMI (municipal property tax) rate of one Portuguese municipality is needed, by name or code, with its history by year. Do not use it for the yearly amount on a VPT (imi_annual_cost) or for several municipalities side by side (compare_municipalities). Rates: Autoridade Tributária portal, all 308 municipalities. Where the rate is set per parish, the answer says so instead of giving a number.
imi_annual_cost
Use this when the yearly IMI amount on an urban property (prédio urbano) is needed, from its taxable value (VPT) and its municipality's urban rate. Do not use it for the rate alone (imi_rate) or for the one-off purchase taxes (imt_calculate). The VPT is the Tax Authority's valuation on the caderneta predial, not the price: ask the user for it. Only the urban rate is applied; rural property, AIMI and surcharges on vacant homes are not calculated. A municipality whose rate is set per parish is refused (rate_by_freguesia).
request_consultation
Use this when the person wants flatin.pt (licensed estate agency, AMI 28163) to contact them about buying a new-build apartment in Portugal. Do not use it to send the request (submit_consultation) or for emails about new projects (subscribe_digest). mode=link returns the form link and the consent text; mode=prepare checks the details and returns a summary, the GDPR (RGPD) consent text and a confirmation_token. Nothing is sent.
submit_consultation
Use this when the person has read the summary and consent text from request_consultation mode=prepare and explicitly agreed to send the request. Do not use it before that (request_consultation). Pass the same details, the token, consent=true and consent_text_version; never set consent=true on your own. Changed details, a token under 5 seconds or over 30 minutes old, or an outdated consent version are refused.
subscribe_digest
Use this when the person asks to be emailed about new-build projects matching a filter (daily) or new construction licensed in one municipality (weekly). Do not use it to have flatin.pt contact them (request_consultation) or to see what is on sale now (search_newbuilds). Ask the person first; nothing is active until they click the confirmation email. city is required for construction and parish works only there; typology, the prices and on_sale work only with new_developments. The answer is the same whether or not the address was already subscribed: never say it was.
where_to_live
Use this when the person is choosing a neighbourhood: a flatin.pt city guide's verdict area by area, with the reason, who each area suits and the sources. Do not use it for one municipality's figures (municipality_stats) or for new homes there (search_newbuilds). Without city it lists the cities and regions that have a guide. profile narrows the areas but never hides the ones we advise against. Noise and safety come as dated, sourced facts: a place's reputation, never a claim about its people. Show the guide's link to the user.
municipality_stats
Use this when the key figures of one of Portugal's 308 municipalities are needed, each with its source and date. They are the IMI rate and history, INE sale price per m² (actual sales), purchasing power, population, licensed dwellings, building cases, new builds. Do not use it to compare places (compare_municipalities), inside a city (where_to_live) or for monthly building (construction_barometer). A figure that is not published is null, not estimated. A name matching two municipalities is refused with candidates.
compare_municipalities
Use this when the person is choosing between two to five Portuguese municipalities, with the same figures for each as municipality_stats. Do not use it for a single municipality (municipality_stats) or for the areas inside one city (where_to_live). Names that point at the same municipality count once, and fewer than two distinct ones are refused (bad_count). One unknown or ambiguous name refuses the whole comparison.
construction_barometer
Use this when the question is how much is being built in Portuguese municipalities. It gives our monthly count of building-works cases entering licensing, where we collect them, and INE's yearly licensed buildings and new dwellings for all 308. Do not use it for other figures (municipality_stats). Without municipality it returns every municipality we collect and the panel index. measure and granularity change only our own series. A case is not a granted licence or a building.
municipality_housing_pipeline
Use this when one municipality's housing pipeline from licence to completion is needed: cases, INE licences and completions, units for sale. Do not use it for monthly building activity (construction_barometer). Periods differ by stage; unknown is null, not 0.
glossary_lookup
Use this when asked what a Portuguese home-buying or tax term means (CPCV, escritura, VPT…), with where it comes up and the article of law with a link. Do not use it to calculate anything: purchase taxes are imt_calculate, the yearly tax imi_annual_cost. Without term it lists all terms. A term without a translation comes in English; an unknown one is refused with close spellings, if any.
search_newbuilds
Use this when the person wants to find published new-build projects (empreendimentos) in Portugal on flatin.pt. Do not use it for one project's details (get_newbuild with its slug) or for how much is being built (construction_barometer). With typology, the budget applies to those typologies' prices; projects without a published price drop out when a budget is given. Pass next_offset as offset for the next page. A misspelt filter is refused, not ignored. Prices are as checked on developers' pages or agency listings, dated.
get_newbuild
Use this when one new-build project in Portugal is needed in detail, by slug (from search_newbuilds) or page URL. It gives units and prices per typology, price history, delivery promises and how often they moved, building permits, the developer, the purchase cost and what is nearby. Do not use it to search (search_newbuilds) or for taxes at another price or for a non-resident (imt_calculate). The purchase cost is at the cheapest available unit or the developer's from-price, for a buyer tax resident in Portugal. primary_home and buyer_is_young change only the purchase cost. An unknown slug is refused (not_found). Cite the page URL, given in all seven site languages.

Two actions are taken on the person's behalf. A request to flatin.pt (AMI licence no. 28163) goes through two tools: request_consultation with mode=prepare returns the consent text and a token and sends nothing; submit_consultation sends the request with that token, consent=true and the text version, only after the person has read the text and agreed. subscribe_digest only sends a confirmation email — nothing is active until the click. The same actions over REST: POST /api/v1/consultation and POST /api/v1/subscriptions.

Protocol revisions supported: 2025-06-18, 2025-11-25

Open data

Every municipality's IMI rate in one file under the CC BY 4.0 licence. The dataset page says what is inside and when it was last checked.

Also published on dados.gov.pt · data.europa.eu

Construction barometer

Our own monthly indicator: how many building-works cases enter the licensing procedure at each town hall. A case counts when it enters the procedure; it may still be refused or withdrawn, or never be built. Next to it, for comparison, are two other publishers' statistics, mirrored as published. Coverage is partial and growing; the methodology explains what is counted.

barometer/series.csv
flatin.pt counts this series from the town halls' own open data and publishes it under CC BY 4.0. Credit: flatin.pt, with a link to flatin.pt. Licence text: CC BY 4.0
barometer/official.csv
The official series the barometer is checked against, mirrored unchanged. Source: INE — Instituto Nacional de Estatística, Portugal, under the CC BY 4.0 licence. Credit this source when you reuse these numbers. Licence text: CC BY 4.0
barometer/sce.csv
Energy-certificate statistics for new housing, by month and municipality, mirrored unchanged: pre-certificates at design stage and certificates for completed buildings. A pre-certificate is issued for each dwelling at the design stage, before the building licence. Credit the source: ADENE — SCE. The publisher declares no licence for these statistics, and we grant none.
open-data-coverage.csv
Planning open data in Portugal's 308 municipalities — state of publication. CC BY 4.0

Our series is stored as snapshots, and every answer carries the date of the snapshot it came from. Quote that date and the number stays reproducible after the series is revised.

Also published on dados.gov.pt · data.europa.eu

Three rules

The numbers in the API are the numbers on the site. A second source of the same numbers would eventually contradict the first.

Every answer carries an attribution field: who computed it, from which table and which year, with a link. Show it to your reader — a number without a source cannot be checked.

Rate is limited: 120 requests per minute per address on REST and 60 on MCP. A refusal comes as 429 and says how many seconds to wait. The whole dataset comes as one file — there is no need to walk it municipality by municipality.

Service status, changelog and machine-readable descriptions: Status · Changelog · Rate limits · APIs.json · llms.txt