# KREF Watch — llms.txt > Searchable aggregation of Kentucky state & local campaign-finance filings > (Kentucky Registry of Election Finance public records), 2016–present. > 28 elections, ~537,000 contribution records, ~$466M. > An independent project of The Lexington Times (https://lexingtonky.news). > Not affiliated with the Registry. ## Open JSON data API (static, CORS-open, no auth, no key) All site data is plain JSON under `https://krefwatch.com/data/`: - `/data/elections.json` — index of elections (date, type, totals). Election keys are `YYYY-MM-DD` (e.g. `2026-05-19` = May 2026 primary). - `/data/candidates-index.json` — every candidate across all elections (name, slug, office, location, total). Use this to find a candidate's slug + election date. - `/data/e//summary.json` — KPIs, topCandidates, topDonors (named donors only), topSelfFunders, topEmployers, byOffice, byContributionType, monthly series, selfFundingTotal, unitemizedTotal. - `/data/e//races.json` — every race (office + location) with per-candidate totals. - `/data/e//donors.json` — per-donor aggregates with per-recipient breakdown (large file, up to ~6 MB). - `/data/e//employers.json` — employer-normalized rollup (canonical aliases merge "UK"/"University of Kentucky", "Commonwealth of Ky" variants, law-firm suffixes, etc.). - `/data/e//candidates/.json` — full itemized contributions for one candidate. Row fields: d=donor key, n=name, a=amount, t=type, m=mode, c=city, s=state, z=zip, e=employer, o=occupation, r=receipt date, k=in-kind description. Typical flows: - "Who raised the most in X election?" → `/data/e//summary.json` → `topCandidates` - "How much has raised?" → `/data/candidates-index.json` (find slug+date) → `/data/e//candidates/.json` - "What has donated?" → `/data/e//donors.json`, filter client-side - "Which employers' people gave the most?" → `/data/e//employers.json` Donor keys prefixed `candidate-self-`, `unitemized-`, `anonymous-`, `cash-unnamed-`, `unnamed-` are synthetic (self-funding, small-dollar bundles, unnamed cash) — not named people. ## Agent guide - `https://krefwatch.com/skill.md` — task-oriented guide for AI agents using this data. ## Caveats (important for accurate reporting) - Filings lag: pre-election report deadlines mean recent giving may not appear yet. Dataset build date is `generatedAt` in `/data/elections.json`. - Donor identity is grouped by name; same-name people can merge, misspellings can split. - Employer values are self-reported and normalized heuristically. - Amounts are as-filed (refunds included where present). Verify against KREF originals (https://secure.kentucky.gov/kref/publicsearch) before publication. - Federal races (US House/Senate/President) are NOT here — that's FEC data, not KREF. ## Source code Fully open source (pipeline + frontend): https://github.com/paul-codes-1/krefwatch ## Contact editor@lexingtonky.news · The Lexington Times · https://lexingtonky.news