Korzy API
The Korzy API gives you structured land, infrastructure, energy, environmental and logistics records for the United States as JSON over HTTPS. The same operations are available to AI agents through the Korzy MCP server.
Seven operations cover it:
POST /v1/lookup: the parcels at an address or point, plus utilities, environment, logistics, data centers, power, grid, terrain and parcel boundary sections.POST /v1/enrich: selected parcel fields, including owner fields, for a batch of addresses, points or parcel IDs.GET /v1/records/{id}: one record by the ID a lookup or enrich returned.POST /v1/askandPOST /v1/ask/stream: a question about a place, answered from Korzy data with citations.POST /v1/support: report a data problem, request a feature or report a bug.GET /v1/fields: what each operation returns and costs.
Base URL
All requests go to https://api.korzy.co, under /v1. Use HTTPS only.
OpenAPI spec
The OpenAPI 3.1 spec at https://korzy.co/openapi.json describes every route in the API reference: request bodies, response schemas, errors and what each request costs (x-korzy-credits). Load it into an API client, a code generator or an agent's tool setup.
Quickstart
- Create an account and choose a plan.
- Create an API key on your account page. Store it as a secret, for example in the
KORZY_API_KEYenvironment variable. - Call the field catalog to see what's available. It's free.
curl --fail-with-body -sS \
-H "Authorization: Bearer $KORZY_API_KEY" \
https://api.korzy.co/v1/fieldsThen look up an address with its water and sewer service (2 credits):
curl --fail-with-body -sS \
-H "Authorization: Bearer $KORZY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"address":"714 Mordecai Towne Pl, Raleigh, NC","sections":["utilities"]}' \
https://api.korzy.co/v1/lookupPython
import os, requests
session = requests.Session()
session.headers["Authorization"] = f"Bearer {os.environ['KORZY_API_KEY']}"
response = session.post(
"https://api.korzy.co/v1/enrich",
json={
"items": [{"address": "714 Mordecai Towne Pl, Raleigh, NC"}],
"preset": "basic",
},
timeout=60,
)
response.raise_for_status()
for result in response.json()["results"]:
for record in result.get("records", []):
print(record["korzy_id"], record.get("parceladdr"), record.get("usedesc"))JavaScript
const id = "37183-676db8ae68362b7a3685";
const response = await fetch(`https://api.korzy.co/v1/records/${encodeURIComponent(id)}`, {
headers: { Authorization: `Bearer ${process.env.KORZY_API_KEY}` },
});
if (!response.ok) throw new Error(`${response.status}: ${await response.text()}`);
const { record } = await response.json();
console.log(record.parceladdr, record.usedesc, record.totalvalue);Conventions
- Coordinates are WGS 84
longitudeandlatitudein decimal degrees. - POST bodies are JSON objects of at most 64 KB. Responses are JSON, except
/v1/ask/stream, which sends server-sent events. - Missing values are
null; a null value means the source didn't publish it, not that it's zero. - Values keep the units and dates their sources publish. Each response carries provenance with
as_ofdates. - IDs are opaque strings. URL-encode them in paths.
- New fields can be added to responses at any time. Ignore fields you don't recognize.
Next
- Authentication: keys, scopes and sign-in for agents.
- Credits, limits and errors: what requests cost, refunds, rate limits and status codes.
- API reference: every route, its body and response, also as an OpenAPI spec.
- MCP server: connect Claude, ChatGPT, Codex and other agents.