Cenogram Infrastructure API
Upcoming-infrastructure signals per municipality: public tenders, sewage-programme agglomerations, planned capital expenditure
Upcoming-infrastructure signals per municipality: public tenders, sewage-programme agglomerations, planned capital expenditure
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/cenogram-pl:cenogram-pl-infrastructure-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Cenogram Infrastructure API
version: 1.0.0
description: 'Property and parcel intelligence for Poland. 8M+ verified transactions from the official RCN registry (Rejestr Cen Nieruchomości) — prices from notarial deeds, not asking/listing prices, from 2003 to present, nationwide. On top of prices: the picture we hold of a parcel — cadastral core, the deed history recorded against it, and context layers (flood hazard, general-plan zoning, building permits, structures, heritage, landslide hazard, subsurface constraints from mining terrains and groundwater reservoirs, surroundings, transit access, road access, agricultural use), plus municipality-level demographics and infrastructure signals, and a comparable-based valuation estimate. Context layers are sourced from official public registers. Transaction coverage is nationwide; the cadastral parcel corpus is near-complete but not the whole register and not live — every parcel collection carries a `corpus_coverage` block measuring what we hold for the counties it addresses. Access is metered in tokens: a new account starts with a token allowance and a trial, after which a free account keeps calling on a recurring free allowance, and paid plans raise it. Current allowances, trial length and prices live at https://cenogram.pl/api and are deliberately not repeated here, because a figure frozen into this description goes stale on its own. A 402 response carries the current balance and, on a free account, the date the next tokens arrive. Every operation states its price both in prose and machine-readably, in the `x-cenogram-token-cost` extension field, generated from the one pricing table. Tokens and credits are the same unit under two names: the response headers (`X-Credits-Cost`, `X-Credits-Balance`, `X-Credits-Refunded`) and some older endpoint descriptions say credits. Working with an AI assistant? Give it https://cenogram.pl/api/llms.txt — this whole surface as one plain-text file, costs, refund rules and response conventions included.'
servers:
- url: https://cenogram.pl
security:
- apiKey: []
tags:
- name: Infrastructure
description: 'Upcoming-infrastructure signals per municipality: public tenders, sewage-programme agglomerations, planned capital expenditure'
paths:
/api/v1/infrastructure-signals:
get:
summary: Upcoming-infrastructure signals by municipality
tags:
- Infrastructure
description: 'Signals that a municipality is about to build infrastructure: public tenders for sewerage, water supply, roads, lighting, gas and cycling infrastructure; membership in a national sewage-treatment agglomeration; and the municipality''s own planned capital expenditure.
**Addressing**: `location` (city or county name) aggregates over every municipality in that county; a gmina name addresses that municipality alone, and a name shared by several units answers 400 with the candidates. A raw `teryt` of 6-7 digits addresses one municipality exactly; 4 digits aggregates a county.
**Known limits**: tenders come from the national bulletin, which carries below-EU-threshold contracts only (from 2021) — the largest investments are published elsewhere and are not visible here. A tender is attributed to the seat of the contracting authority, not to the works location; `by_category` therefore counts municipal authorities only, while `recent` lists everything with an `attribution_confidence` flag. No tenders in the data does NOT mean the municipality is not investing.
**Aggregated responses**: when a county is addressed, `capex.by_year[*].gmina_count` says how many municipalities were summed, and `doc_category` becomes `mixed` if they adopted different plan types. `tenders.recent` and `kposk.agglomerations` are capped at 20 entries each, with a `truncated` flag per section.
Costs 1 token per call.'
parameters:
- schema:
type: string
example: Krotoszyn
in: query
name: location
required: false
description: City, county or gmina name (a county is aggregated, a gmina is addressed alone; a name shared by several units returns the candidates)
- schema:
type: string
example: '300400'
in: query
name: teryt
required: false
description: 'TERYT code: 4 digits = county (aggregated), 6-7 digits = municipality'
x-cenogram-token-cost: 1
responses:
'200':
description: Default Response
operationId: getApiV1InfrastructureSignals
x-operation-id-source: derived
components:
securitySchemes:
apiKey:
type: apiKey
name: X-Api-Key
in: header