The midterm election is on November 3. Every dollar raised to fight it passes through the Federal Election Commission, and the FEC publishes the lot through an API that anyone can call. We wanted to know one thing before the final month began: how does 2026 compare with the midterms before it? The answer took twenty-one requests, all of them on the API's demo key, which is also why it took two days.
The API is OpenFEC, in the index as openfec. It is a plain GET-and-JSON service behind an api.data.gov key. You can register for one in a minute, but you don't have to: api_key=DEMO_KEY works, at ten requests a day. That constraint shaped the whole exercise: pick the aggregate endpoints, save every response to disk, and never send a request twice.
One endpoint, five midterms
The first request is the one that answers the question. totals/by_entity returns, for a two-year cycle, the cumulative receipts of every candidate committee, every PAC and every party committee, month by month, with the FEC's own adjustments to avoid counting the same dollar twice as it moves between committees:
GET https://api.open.fec.gov/v1/totals/by_entity/?cycle=2026&per_page=100&api_key=DEMO_KEY
Twenty-two rows come back, one per month from January 2025. Repeat it for 2022, 2018, 2014 and 2010 (the series starts with the 2008 cycle, so those are all the midterms it has) and you can lay the five cycles on top of each other.
June 30 is the honest comparison point. As of this week, every kind of filer has reported through it: the second-quarter reports were due July 15 and the June monthlies July 20. At June 30, 2026, the three kinds of committee had taken in $12.38 billion. At June 30, 2022, the figure was $9.19 billion. That is 35% more, far beyond inflation over the four years. The 2018 midterm was at $5.01 billion at the same point, 2014 at $3.09 billion and 2010 at $2.62 billion. Through August, counting only the committees that file monthly, 2026 stands at $13.37 billion, within $1.3 billion of the $14.67 billion that the entire 2022 cycle raised, with the most expensive quarter of any cycle still unreported.
In each of the four finished midterms, the June 30 total turned out to be between 58% and 65% of the final figure. Apply 2022's ratio to 2026 and the arithmetic lands near $20 billion. That is not a forecast, just what the pattern implies.
The extra money is PAC money
The same rows break the total into its three parts, and the growth is lopsided.
| Through June 30 | 2022 | 2026 | Change |
|---|---|---|---|
| Candidate committees | $2.12B | $2.41B | +14% |
| PACs (super PACs included) | $5.58B | $8.45B | +51% |
| Party committees | $1.48B | $1.53B | +3% |
| All three | $9.19B | $12.38B | +35% |
Candidates' own committees are up a modest 14% and the parties are flat. PAC receipts are up by more than half, and they account for $2.9 billion of the $3.2 billion increase. The FEC's PAC entity bundles traditional PACs with super PACs, and the API does not split them at this level, so the series can't say which kind grew. It can say where the money is not: in the candidates' hands. Candidate committees were 36% of all receipts at this point in 2010 and are 19% now.
The Senate, seat by seat
The second endpoint turns the cycle total into races. candidates/totals returns one row per candidate with receipts, disbursements and cash on hand from the latest report, and it filters by office and election year:
GET https://api.open.fec.gov/v1/candidates/totals/?cycle=2026&election_year=2026&office=S
&is_active_candidate=true&election_full=false&sort=-receipts&per_page=100&api_key=DEMO_KEY
Two pages cover the 200 best-funded of the 312 active Senate candidates, and the 112 we didn't fetch had raised less than $3.5 million between them. Summing by state gives the cost of each of the 35 seats on the ballot. Most of these totals run through June 30; the third-quarter reports arrive October 15 and will add a full quarter.
Texas is the most expensive seat so far at $107 million, two thirds of it raised by James Talarico, whose $68.6 million is eight times the $8.6 million reported by the incumbent, John Cornyn. Georgia is second at $93 million, 83% of it Jon Ossoff's; he also holds the most cash of any Senate candidate, $42.6 million. Ohio ($58 million, Sherrod Brown) and North Carolina ($47 million, Roy Cooper) follow the same shape: one dominant fundraiser. Maine ($51 million across ten candidates) and Michigan ($49 million across seven, with three Democrats within $3 million of each other) are the crowded ones. Illinois' $46 million is a reminder that the total measures money spent on a seat, not on a nominee: Raja Krishnamoorthi raised $31.6 million of it and lost the March primary.
Across the 200 campaigns, Democratic candidates had raised $561 million, 66% of the total, and a Democrat was the leading fundraiser in 21 of the 35 seats, including 13 of the 15 most expensive. In 11 of the 26 seats with an incumbent running, a challenger had out-raised the incumbent on the two-year window: Talarico in Texas, Brown in Ohio, Graham Platner over Susan Collins in Maine, Mary Peltola over Dan Sullivan in Alaska. The cheapest seats are Rhode Island, South Dakota, Wyoming, Idaho and Delaware, each under $4.5 million.
One caveat matters more than the others. These are the candidates' own committees. Super PAC spending on a race is reported elsewhere (schedules/schedule_e, independent expenditures by candidate) and is not in the seat totals, which is why a seat where the challenger raises eight times the incumbent's money is not a seat where the incumbent is being outspent eight to one.
Who the money comes from
Two Schedule A aggregates answer that, one campaign at a time, which on the demo key meant choosing. schedules/schedule_a/by_size buckets a committee's individual contributions by gift size, and it accepts a list of committee ids, so the twenty biggest Senate fundraisers fit in one request:
GET https://api.open.fec.gov/v1/schedules/schedule_a/by_size/?cycle=2026
&committee_id=C00916288&committee_id=C00264697&committee_id=...&per_page=100&api_key=DEMO_KEY
Across the twenty, half of the individual money arrived in gifts of $200 or less, and the range is the story. Ossoff raised 69% of his individual money in small gifts and Talarico 65%; Weil, whose Florida campaign last reported in September 2025, 81%. Susan Collins is at 14%. Two of the lowest shares sit on small bases: John Fleming's Louisiana total is mostly his own loans, and Krishnamoorthi's includes about $19 million transferred from his House committee. The same seat can hold both ends, Platner at 68% against Collins at 14% in Maine, Brown at 49% against Jon Husted at 19% in Ohio.
schedules/schedule_a/by_state/by_candidate says where the itemized gifts come from. Five candidates was all the budget allowed, and California is the first or second source state for every one of them. Ossoff raised 82% of his itemized money outside Georgia, with California alone, at 20%, ahead of Georgia at 18%. Brown's out-of-state share is 60%, Cooper's 48%, Talarico's 45%.
Notes for anyone building on it
- The demo key is ten requests a day, midnight to midnight UTC, and error responses count against it. The headers say so (
X-RateLimit-Limit: 10) and count you down; the 429 that follows carries aRetry-Aftermeasured in hours. A registered key is documented at 1,000 an hour. On the demo key, cache every response to disk and check parameters against the OpenAPI description before sending, because a 422 costs a slot too. - Every response is
{"api_version", "pagination": {"count", "page", "pages", "per_page"}, "results": [...]}.per_pagetops out at 100; the endpoints here page with a plainpage=N, though the biggest itemized ones use keyset paging withlast_index. election_fulldefaults to true, which gives senators their full six-year totals (Ossoff shows $98 million rather than $77 million). Set it to false for a like-for-like two-year window.candidates/totalsdoes not return unitemized (small-dollar) contributions. For those, callcandidate/{id}/totalsone candidate at a time, or the Schedule A aggregates such asschedules/schedule_a/by_size.- The Schedule A aggregates (
by_size,by_state/by_candidate) count donors attributed through joint fundraising committees, so their totals can exceed a campaign's own itemized line; don't divide one source by the other. Without acommittee_id,by_sizereturns one row per committee, 40,568 of them for 2026, not a total. cycle,election_yearandofficeaccept several values by repeating the key.cash_on_hand_end_periodcomes back as a string.- The cumulative series is stepped by the filing calendar, not by when money arrived. Compare cycles at quarter ends, never mid-quarter. The
by_entityseries starts with the 2008 cycle;cycle=2006returns nothing. - Responses took 0.4 to 1 second, except a first cold
by_entitycall at 22 seconds; there is a CDN in front (X-CacheandAgeheaders), so repeat requests are fast. - The OpenAPI description is at
/swagger/, 870 KB, no key needed.
The listing at /api/openfec has the base URL and the docs link. It is unclaimed. If you work at the FEC, it's yours.
Source: OpenFEC API, totals/by_entity for cycles 2010–2026, candidates/totals for 2026 Senate candidates, and the schedules/schedule_a aggregates by size and by state, pulled October 8, 2026. Receipts are as reported to the FEC through each committee's latest filing; candidate quarterlies through June 30, 2026, monthly filers through August 31. Third-quarter reports are due October 15.