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 ofvalueandvpt: pass the VPT when known.tax_haven_companytakes precedence overnon_resident.buyer_is_youngapplies only whenprimary_homeis 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_consultationmode=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.cityis required for construction andparishworks only there;typology, the prices andon_salework 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). Withoutcityit lists the cities and regions that have a guide.profilenarrows 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). Withoutmunicipalityit returns every municipality we collect and the panel index.measureandgranularitychange 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 taximi_annual_cost. Withouttermit 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_newbuildwith its slug) or for how much is being built (construction_barometer). Withtypology, the budget applies to those typologies' prices; projects without a published price drop out when a budget is given. Pass next_offset asoffsetfor 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_homeandbuyer_is_youngchange 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.
- CSV 308 · 2025
- Portuguese property-tax rates as open data
- IMI rates for 308 municipalities: data for journalists
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.
- Building-permit barometer by municipality
- Barometer methodology
- From licence to finished home, municipality by municipality
- Planning open data in Portugal's 308 municipalities
- Terms of use
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