InfraNode.dev
MCP InfraNode is also available as an MCP server for AI assistants like Claude and ChatGPT.

Quickstart

InfraNode serves normalised open data for German cities behind a single REST API. Every endpoint is publicly readable; your first call needs no key. Three steps and you are in.

Step 1, base URL

All endpoints live under the versioned base URL. Paths follow the pattern /api/v1/cities/{slug}/{resource}.

https://infranode.dev/api/v1

Step 2, first call

Fetch the weather for Hamburg. No header, no setup, one GET is enough.

curl "https://infranode.dev/api/v1/cities/hamburg/weather"

Step 3, read the response

Every response follows the same canonical envelope. At the top level you always read the same two blocks, no matter which resource you query:

Field Content
data The actual payload, typed per endpoint (here the weather values).
data[].attribution Not a separate top-level block: each data record carries an embedded attribution field with text, license_url and modified, that is licence and origin of the respective data.
meta Context about the request: city slug, timestamp, queried source, the source_status (ok, no_data or disabled) plus correlation_id and cache_status.

If a source returns nothing for a city, the status code stays 200 and source_status is set to no_data. That cleanly separates "no data" from a real error.

Rate limits

The API is open and needs no API key. Calls are limited per IP (abuse protection): up to 300 requests per minute (short bursts) and 6000 per hour (sustained). Every response carries the standard headers RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset. On overrun the API answers with status 429 and a Retry-After header. The MCP endpoint (mcp.infranode.dev) is rate limited separately to 480 requests per minute per IP.

Next steps

The left navigation lists every operation, with parameters, code samples in curl, JavaScript and Python, and a live console for the callable endpoints. The reference content is in German, the code samples are universal.