US Municipal Capital Projects API · city and county capital plans

What cities plan to build.

Capital budgets and capital improvement programmes from city and county open-data portals and budget documents, in one schema: each project with its department, category and status where the source gives them, and every published amount by fiscal year, amount type and funding source. Every amount says which dataset row or PDF page it was read from.

request
curl -s "https://api.olympus.new-odyssey.com/v1/municipal-capital-projects/projects?government=$GEOID&fiscal_year=2027" \
  -H "X-API-Key: $OLYMPUS_API_KEY"
200 OK (shape)
{
  "data": [{
    "project_id": "municap:…",
    "government": { "geoid": "…", "scheme": "OLY-US-CENSUS-PLACE", "name": "…", "state": "…", "government_type": "city" },
    "source_kind": "socrata",
    "name": "…", "department": "…", "category": "…",
    "status": "construction", "status_as_published": "…",
    "location": { "description": "…", "latitude": …, "longitude": …, "district": "…" },
    "fiscal_year_min": …, "fiscal_year_max": …, "amount_lines": …,
    "provenance": { … }
  }],
  "meta": {
    "datasets": [ … ],
    "notices": [{ "code": "as_published", "message": "…" }],
    "pagination": { "limit": 25, "has_more": true, "next_cursor": "…" }
  }
}
Read this first

As each government publishes it.

Each city and county publishes its capital plan its own way: a table of budget lines, a project tracker or a PDF budget document. Names, amounts, statuses and fiscal years are kept as published and mapped onto one schema. Nothing is estimated, inflated or reconciled between a government's datasets.

Amounts of different types (a year's budget, spending to date, a loan authorization) must not be added together. Totals this API computes, normalised statuses and fiscal years worked out from a column definition or a document title are marked as derived.

Endpoints

Projects, governments, coverage.

Coverage lists every source with its licence or terms as the publisher states them, and the rows that were not published.

EndpointWhat it returns
GET/v1/municipal-capital-projects/projectsSearch projects
GET/v1/municipal-capital-projects/projects/{project_id}One project with every published amount
GET/v1/municipal-capital-projects/governments/{geoid}One government's published capital data
GET/v1/municipal-capital-projects/coverageWhat is served, from which sources, under which terms
Amounts

Seven amount types.

Each amount names the column or printed heading it came from. Governments are identified by their Census GEOID and carry the shared entity_id, identifiers and related blocks.

amount_typeMeaning
budgetBudgeted, appropriated, adopted or programmed for the fiscal year or years given.
cumulative_budgetBudget or appropriation to date, over the project's life.
actualSpent in the fiscal year.
cumulative_actualSpent to date.
committedEncumbered or committed.
authorizationBorrowing or loan authorization.
total_costA stated total project cost.
Know before you build

Limits

Some governments only

Only the cities and counties listed by the coverage endpoint, for the fiscal years their sources publish. Sources differ in what they give: some publish status and location, some only amounts.

Documents are checked

Rows read from PDF budget documents are published only when every check passes for the document, including the printed totals. Anything held for review is counted, not served.

No people

Columns naming people, such as project managers and their contact details, are never read.

Source: City of Roseville, CA · Source: Office of the City Manager, City of Worcester, MA · Fulton County Government (GA), licensed under CC BY 4.0