GovMoneyGraph2023–2024

For developers

The GovMoneyGraph API

The same federal campaign finance records and figures as the site, as JSON. Free and read-only, with no key or sign-up. Please credit GovMoneyGraph.

Quick start

Find a record with search, then follow its api_url:

curl "https://www.govmoneygraph.com/api/v1/search?q=jeff+hurd"
curl "https://www.govmoneygraph.com/api/v1/candidates/H4CO03357?cycle=2026"
{
  "data": {
    "id": "H4CO03357",
    "name": "HURD, JEFFREY",
    "party": { "code": "REP", "label": "Republican" },
    "office": { "code": "H", "label": "U.S. House" },
    "state": "CO", "district": "03", "cycle": 2026,
    "totals": { "receipts": 4168636.04, "cash_on_hand": 237767.58, "coverage_end": "2026-10-14", … },
    "top": { "contributors": [{ "name": "GROW THE MAJORITY", "amount": 605459.29, … }], … },
    "race": { "id": "2026_HOUSE_CO-3", "forecast": { "republican_win_probability": 0.6976, "rating": "Lean R", … } }
  },
  "meta": { "api_version": "v1", "attribution": "Data: GovMoneyGraph, based on FEC records.", "notes": […] }
}

The full description is at /api/v1/openapi.json (OpenAPI 3.1), for code generators and AI agents.

Endpoints

GET /api/v1/search

Search candidates, committees, contributors, employers and more by name.

  • q (required, 2+ characters)
  • cycle (optional)
  • limit (1–25, default 20)

Example: /api/v1/search?q=jeff+hurd

GET /api/v1/candidates/{id}

A candidate's registration, totals, top contributors, employers, industries and states, and race forecast.

  • id: FEC candidate id
  • cycle (optional; default the latest)

Example: /api/v1/candidates/H4CO03357?cycle=2026

GET /api/v1/committees/{id}

A committee's registration, totals, and top contributors, employers, industries and states.

  • id: FEC committee id
  • cycle (optional)

Example: /api/v1/committees/C00848333?cycle=2026

GET /api/v1/donors/{id}

An individual contributor's giving and every recipient committee.

  • id: from a search result or the /donors/{id} page URL
  • cycle (optional)

GET /api/v1/organizations/{id}

An organization's own contributions and every recipient committee.

  • id: from a search result or the /organizations/{id} page URL
  • cycle (optional)

GET /api/v1/races/{race_id}

Every candidate in a House or Senate race with their totals, and VotePredictor's forecast.

  • race_id: YEAR_SEN_ST or YEAR_HOUSE_ST-N (at-large is district 1)

Example: /api/v1/races/2026_HOUSE_CO-3

Conventions

Responses
Every success is { data, meta }. meta.notes says how to read the figures; keep them with any number you publish. Every record carries url, its page on GovMoneyGraph, and candidates and committees carry fec_url.
Errors
{ error: { code, message } } with status 400 (invalid_id, invalid_cycle, invalid_query, invalid_race), 404 (not_found), 429 (too many requests), 403 (a rapid burst stopped by DDoS protection) or 503 (unavailable).
Cycles
cycle=2026 means the 2025–2026 election cycle. Without it you get the latest loaded cycle; a cycle that is not loaded is an error, never silently replaced.
Ids
Candidates and committees use FEC ids. Contributors and organizations use the id in their GovMoneyGraph page URL, which search results include.
Values
Amounts are US dollars with cents, as reported. Dates are YYYY-MM-DD. null means not reported or not available, never zero. FEC codes come with labels: { "code": "REP", "label": "Republican" }.
Contributors
A contributor is FEC records grouped by reported name and ZIP code, not a verified person. Employers and occupations are as reported, and industries are GovMoneyGraph's classification. See Data & methodology before citing.

Limits & caching

Each IP address may make 60 requests a minute; past that, requests get status 429 until the minute is up. Space them out: automatic DDoS protection answers a rapid burst with 403 before the per-minute limit is reached. Responses are cached for up to an hour, and the data updates daily from the FEC. Cross-origin requests are allowed, so the API works from a browser.

For bulk research, the FEC's bulk files are the better source than paging through this API.

Attribution

Credit Data: GovMoneyGraph, based on FEC records. and link the record's url where you can.

Race forecasts come from VotePredictor and need its credit too. Its probabilities stay between 1% and 99%, basis says whether polls or fundamentals set them, and a race it withholds comes back as withheld, never estimated.