For journalists & researchers

This site is built so you can go from a question to a sourced answer in minutes. Here's how to work with it.

1. Browse to find the record

Start in the explorer. Votes lists every council roll-call — open one to see the full tally and how each member voted. Council profiles each member with their complete voting record; Bills covers Oregon Legislature legislation. Every list is searchable.

2. Check the provenance

Every record shows where it came from — the source dataset, the fetch date, and a link back to the origin. Before you publish, follow that link and confirm the underlying document says what the record says. The data is a faithful projection of public sources, but the source is always the citation of record.

3. Pull it programmatically

For a dataset rather than a page, use the public API. Lists and search come over REST; relational questions ("every vote this member cast", "the full roll call for this measure") come over GraphQL in one round trip.

GET /v1/vote-events?limit=25&q=forestry
GET /v1/persons

Full endpoint reference and a GraphQL example are on the About page; the REST schema is self-describing at /v1/openapi.json.

Citing pdxcivic

Cite the original source for the fact, and pdxcivic as the dataset you accessed it through (with the date you pulled it). Coverage grows over time — the changelog records what was available when. If you spot a discrepancy between a record and its source, that's a data bug worth reporting.