Skip to content
Open data
No API key required

Take the data with you

Every number on the dashboard is available as JSON or CSV, free for journalists, researchers, students, and anyone else building on Portland's public data.

Portland Civic Commons

Start with a question. Find a source, download a dated Finance or Parks edition, and reproduce an analysis with your own tools or agent. Packages include definitions, checksums, examples and limitations.

Explore the Commons →

Campaign finance: the complete public ledger

Download every published Oregon campaign-finance transaction with definitions, candidate links, evidence and example queries. One compact ZIP for independent analysis, with Parquet and compressed CSV alternatives.

Download the data or give your AI the analysis guide →

JSON endpoints

Each dashboard topic has a JSON endpoint with the headline metric, trend, time series, source attribution, and insights:

GET https://www.portlandciviclab.org/api/dashboard/{topic}

{
  "headline": "...",          // plain-language summary
  "headlineValue": 1234,      // the key number
  "trend": { "direction": "up", "percentage": 5, "label": "vs last year" },
  "chartData": [ { "date": "2026-04", "value": 1234 }, ... ],
  "source": "Portland Bureau of ... ",
  "insights": [ "..." ]
}

Available topics:

climatehousingsafetyhomelessnessfiscaleconomyeconomic-healtheducationqualityaccountability

CSV downloads

The same topics download as CSV. These are the identical files behind the “Export CSV” button on each dashboard page:

GET https://www.portlandciviclab.org/api/dashboard/{topic}/export

Ground rules

  • Free to use, no key, no signup. Attribution to Portland Civic Lab (and the original government source, listed in every response) is appreciated.
  • Responses are cached for up to an hour; please don't poll more often than that.
  • Know the caveats: the methodology page documents each source's lag, bias, and known issues.
  • These endpoints are young and their shapes may change. If you build something on them, tell us so we don't break you.