Take the campaign-finance data with you.
Analyze it yourself, or give this page to an AI tool that can download files and run code. Every one of the 332,944 current records in our published Oregon ledger is available, with definitions and source IDs. No account, API key or pagination.
One download. The data and the context.
Six compressed Parquet tables, the full published evidence collection, a data dictionary, file checksums, and SQL examples. Includes all filing committees in our ledger, beyond the council and governor races.
Download complete analysis ZIP · 13.5 MBVerify the download
SHA-256: ee6de1590e95a43a31ce07deac5dc9a5e61f6a2ccf75d735a764e1a4027b5225
Exact size: 13,460,323 bytes. The download manifest lists hashes, sizes, table schemas and every archive member.
Point your AI at this page.
A browsing-only chat may be unable to fetch a ZIP or run calculations. In that case, download the archive and attach it to a chat with file analysis. Compression makes transfer smaller; it does not put the entire dataset into a model’s context.
Just the transaction table?
Smallest download
Parquet · 5.9 MB
All 332,944 rows, exact integer cents and typed columns. About 94% smaller than the 99.6 MB uncompressed CSV.
Download every transaction as ParquetPortable CSV alternative
CSV.gz · 11.8 MB
The same transaction rows in gzip-compressed UTF-8 CSV. Read directly with pandas or decompress first. Load IDs as text and amounts as integer cents.
Download every transaction as compressed CSVStart an independent analysis.
- Download and unzip the recommended bundle. Read
README.mdandschema.json. - Query
tables/transactions.parquet.analysis.sqlincludes examples for cash raised and donation mean, median, quartiles and tied modes. - Join
reviewed_matching_idsto separate City matching money. Use the reviewed candidate crosswalk and governor evidence for race links. - Cite the snapshot, the Lab and ORESTAR. Save your downloaded manifest and ZIP so the analysis can be reproduced after the next update.
-- After unzipping, run from the archive directory with DuckDB.
SELECT committee_id, max(committee_name) AS committee,
sum(amount_cents) / 100.0 AS cash_raised_dollars
FROM read_parquet('tables/transactions.parquet')
WHERE basis = 'cash_contribution'
GROUP BY committee_id
ORDER BY cash_raised_dollars DESC;Donations, payments, loans, refunds and unpaid bills are different accounting bases. Adding them together produces a misleading total. Transfers between committees can count the same money more than once statewide.
What “all the data” covers.
All current records held in our published Oregon ledger, not all ORESTAR history or a complete election cycle. Includes all observed filers, not only council/governor campaigns. Federal FEC records are excluded.
- Manual-export coverage is provisional; older-dated late filings, removals and amendments outside the supplied exports may be missing.
- Archived maps, balances, event interpretations and network tests retain their individual dates.
- No donor street addresses, donor-level ZIP codes, employer/occupation fields, unrestricted purpose descriptions or private research files are included.
Reported names and cities/states remain available. Donor groups are conservative filing matches, not verified unique people. Business records do not establish corporate size or ownership. A missing candidate is missing coverage, not $0 raised.
Curated data is available under CC BY 4.0; published editorial interpretations retain CC BY-ND 4.0. Underlying public records retain their source terms.
