Advertising Data Provider: 15 Cataloged Datasets · Head-to-head

FEC Campaign Finance Data & OpenFEC API vs Google Ads API

Which advertising data provider: 15 cataloged datasets data fits your job: FEC Campaign Finance Data & OpenFEC API, or Google Ads API. API, files, or your warehouse. Daily, weekly, or hourly.

Advertising Data Provider: 15 Cataloged Datasets United States federal elections - House · Current cycles with master files reaching back to 1979-1980 and database dumps to 1975

FEC Campaign Finance Data & OpenFEC API

Advertising Data Provider: 15 Cataloged Datasets Global - all markets where Google Ads serves · Live account data

Google Ads API

Where the fields line up

No shared field names. These two answer different questions.

Field FEC Campaign Finance Data & OpenFEC API Google Ads API
committee_id FEC ID of the spending committee - the payer behind the expenditure. not in this set
payee_name Vendor or entity paid; typically the ad buyer, station or digital platform. not in this set
expenditure_amount Dollar amount of the specific expenditure. not in this set
expenditure_date Date the expenditure was made. not in this set
dissemination_date Date the ad was publicly disseminated. not in this set
support_oppose_indicator S = supports the named candidate, O = opposes. not in this set
candidate_name Name of the candidate supported or opposed. not in this set
candidate_office Office sought: H = House, S = Senate, P = President. not in this set
filing_form Source form type carrying the disclosure. not in this set
is_notice True when the record comes from a 24- or 48-hour notice rather than a periodic report. not in this set
pdf_url Link to the filed document image on docquery.fec.gov. not in this set
campaign.id not in this set Numeric identifier of the campaign resource.

Coverage, side by side

FEC Campaign Finance Data & OpenFEC API Google Ads API
Geographic United States federal elections - House, Senate, President Global - all markets where Google Ads serves
Temporal Current cycles with master files reaching back to 1979-1980 and database dumps to 1975 Live account data; reporting windows chosen per query, for example LAST_30_DAYS

What each contains

They tie on 1 attribute. Pick by fit, not by loyalty.

FEC Campaign Finance Data & OpenFEC API Google Ads API
Publisher Federal Election Commission (FEC) Google Ads
Subject lens Disclosed federal political ad money: independent expenditures, electioneering communications and committee disbursements Campaign management and performance reporting across Search, Display, YouTube and Shopping
Side of the ad Outside the campaign: what outside spenders and parties filed about their ad buys Inside the account: what your own campaigns actually served and spent
Field dictionary 14 documented fields sampled from the 81 carried on a Schedule E record, verified during research 11 documented resources, metrics and segments plus a queryable field catalog, verified during research
Geographic coverage United States federal elections - House, Senate, President Global - all markets where Google Ads serves
Temporal coverage Current cycles with master files reaching back to 1979-1980 and database dumps to 1975 Live account data; reporting windows chosen per query, for example LAST_30_DAYS
Detail level One row per expenditure, linkable to committees and candidates Customer > campaign > ad group > ad/keyword, segmentable by date and device
Formats JSON, CSV, ZIP, database dumps JSON, protobuf, GAQL result rows
Best for Disclosure research, political ad-spend tracking, media-buyer analysis Account automation, Smart Bidding, delivery and spend reporting

What each does better

FEC Campaign Finance Data & OpenFEC API

It makes political ad money a public record. Schedule E captures the independent expenditures super PACs and other outside spenders file, electioneering communications name a candidate within 30 days of an election, and Schedule B carries committee disbursements. The documented samples read like a newsroom wire: #VOTEPROCHOICE PAC reporting a $1,000 "Digital Advertising - Estimate" paid to Meta supporting House candidate Jasmine Clark, disseminated 15-MAY-26, alongside an electronic notice showing The American Centerpoint PAC Inc. - a super PAC - spending against New Jersey's 11th district.

Depth runs five decades. Master transaction files reach back to 1979-1980, database dumps to 1975, and independent-expenditure files start with the 2010 cycle - 54,400 candidate records to join against, and a documented warning that original and amended reports both appear, so totals must be deduplicated using amendment indicators and file numbers before summing.

The vendor is a field. payee_name names the buyer, station or platform behind each buy, memo_text often carries the filer's own campaign description, and pdf_url plus image_number point to the filed document image - an audit trail, not just a total.

Google Ads API

Structure reaches the keyword. The hierarchy runs customer, campaign, ad group, ad/keyword, and the documented use cases are operational: automated account management, custom reporting, inventory-based ad management and Smart Bidding strategy management.

Queries are a first-class language. GAQL executed through Search and SearchStream returns GoogleAdsRow objects; one documented example selects paused campaigns with over 1,000 impressions, segmented by date across a trailing 30-day window, and segments.device splits the same metrics by device. GoogleAdsFieldService publishes every queryable field with its type and compatibility metadata, so the dictionary interrogates itself. Officially supported client libraries span Java, .NET, PHP, Python, Ruby and Perl, with releases v22 through v25 documented.

Where they're equivalent

More than the contrast suggests. Both score 10/10, the ceiling of Datadory's rubric and above the 8.13 average of their own slice; both field dictionaries were verified during research; and both are delivered as managed feeds rather than raw pulls. Both put the same two atoms at the center of every row - an amount and a date - and both key their records to stable identifiers (committee_id, campaign.id) that join outward to richer reference data. Both are self-describing too, one through published file descriptions, the other through a queryable field catalog.

They share a symmetric blindness. Next to a disclosed $1,000 expenditure sit no impressions and no clicks; inside your own campaign report sits no record of anyone else's political buying. Whichever one you load, the other question stays open.

The verdict

Verdict: sample both - they answer opposite halves of one question, who bought the advertising and what the advertising did.

Accept its frame: disclosure follows the ad rather than preceding it, amendments must be deduplicated before summing, and no performance numbers ride along.

Sample both, pick by fit. See FEC Campaign Finance Data & OpenFEC API · See Google Ads API

Or take both in one feed

Yes - the seam sits exactly where they meet. Schedule E discloses platform ad buys directly: the documented sample shows Meta appearing as a payee for a super PAC's digital-ad estimate, so disclosed political spending on a platform can be set against that platform's own reporting for any accounts in scope. The working pattern: enumerate disclosed expenditures by race and cycle, group them by payee and dissemination date, then compare delivery and spend curves for the accounts you control against the disclosed totals around them.

Three things decide whether the merge holds. First, joins are fuzzy by design - payee_name strings against account names, since no shared identifier crosses the two. Second, calendars must be aligned: expenditure_date and dissemination_date against segments.date. Third, units: whole dollars against micros, off by a factor of a million until converted. Map those and the pair becomes one advertiser view. Delivered daily, weekly, or hourly - your call. Or take both in one feed.

API, files, or your warehouse. Daily, weekly, or hourly.

Fair questions

Do the two datasets cover the same ground?

Beyond that they fork. The FEC adds stance, payee, filing form and document images; Google Ads adds impressions, clicks, device segments and the account hierarchy.

Which dataset reaches further back in time?

The FEC record, by decades. Its master transaction files begin with 1979-1980, database dumps reach 1975, and independent-expenditure files start with the 2010 cycle - with about 1.69 million Schedule E records in the 2024 period alone. Google Ads reporting is live account data whose history depends on the window each query draws, LAST_30_DAYS being the documented example.

Can I measure ad performance with the FEC data?

No - it documents the buy, not the outcome. A Schedule E row carries the amount, dates, paying committee, vendor paid and whether the ad supported or opposed a candidate, but no impressions, clicks or conversions. Performance measurement lives on the platform side, in metrics such as `metrics.impressions` and `metrics.clicks`.