Quickstart
Get an API key
Request access. Once approved, open Settings → API keys in the Zonio app and create a key. Test keys start with zk_test_ and only see the sandbox; live keys start with zk_live_.
export ZONIO_API_KEY="zk_test_4f9c2b..."Find a parcel
Look up the parcel under a point, here Kraków's main market square:
curl "https://api.zonio.tech/v1/parcels/at?lng=19.9372&lat=50.0614" \
-H "Authorization: Bearer $ZONIO_API_KEY"import { Zonio } from '@zonio/sdk'
const zonio = new Zonio({ apiKey: process.env.ZONIO_API_KEY })
const parcel = await zonio.parcels.at({ lng: 19.9372, lat: 50.0614 })from zonio import Zonio
zonio = Zonio() # reads ZONIO_API_KEY
parcel = zonio.parcels.at(lng=19.9372, lat=50.0614){
"type": "Feature",
"id": "126101_1.0001.27/2",
"geometry": { "type": "Polygon", "coordinates": [[[19.9365, 50.0611], "…"]] },
"properties": {
"parcel_id": "126101_1.0001.27/2",
"area_sqm": 31260.4,
"gmina": "Kraków",
"teryt": "1261011"
}
}Ask what can be built there
curl "https://api.zonio.tech/v1/parcels/126101_1.0001.27%2F2/regulations" \
-H "Authorization: Bearer $ZONIO_API_KEY"You get the local plan zone, the general plan zone and any pre-emption rights. See Parcel due diligence for the full picture.
Search in plain language
curl https://api.zonio.tech/v1/search/natural-language \
-H "Authorization: Bearer $ZONIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "vacant plots over 1 ha zoned for housing in Wieliczka, within 800 m of a bus stop"}'The response contains the matching parcels and the structured filters Zonio derived from your sentence. See Plain-language parcel search.
Give the same powers to your agent
Claude Code
claude mcp add --transport http zonio https://mcp.zonio.tech/mcp \
--header "Authorization: Bearer $ZONIO_API_KEY"Then ask: "Which parcels in Wieliczka are zoned for single-family housing, vacant and bigger than 1,500 m²?" More clients in Connect your agent.