Snowflake Marketplace

US Broadcast Political Ad Buys 2026 (12 States)

TV and radio political ad orders from stations’ FCC political files, with the total each station printed, counted once per order, updated weekly.

12states
981stations tracked
3tables
Weeklyupdated
About this dataset

What’s in the listing

Every broadcast station must file each political ad order, with the rate charged, in its FCC political file. Civly reads the filings for 2026 races in 12 states: Colorado, Florida, Iowa, Kentucky, Michigan, North Carolina, Nevada, Ohio, Pennsylvania, South Carolina, Texas and West Virginia. Civly ties each order’s versions together: the original order, revisions, the signed contract and invoices. A revision often lists only the changed lines but prints the whole order’s total, so ORDERS counts each order once, at the total the station printed on its best reviewed version.

Common uses: tracking opponent and outside-group TV and radio spending by market and station, station political revenue, rate benchmarking (lowest unit charge flags where printed), and buy timing.

FactDetail
SourceFCC Online Public Inspection File (station political files), read by Civly
CoverageStations in the markets of 2026 races Civly tracks in 12 states, not every station nationally
PeriodJanuary 2026 to present
RefreshWeekly
Free trial30 days, Nevada only, all three tables
SubscriptionAll 12 states
Join keyORDER_ID joins ORDERS, FILINGS and BUY_LINES. FILING_ID joins FILINGS and BUY_LINES.
Coverage

How much is read so far

Civly finishes reading the 2026 filings in early October 2026. Until then the tables fill in each week. As of October 1, 2026: 711 orders from 115 stations.

StateOrdersStations
Michigan (MI)18228
Iowa (IA)15213
Ohio (OH)11517
North Carolina (NC)9811
Texas (TX)7225
Colorado (CO)3112
Nevada (NV)284
Pennsylvania (PA)263
Kentucky (KY)51
Florida (FL)21

Reading the data

South Carolina and West Virginia have no reviewed orders yet.

Accuracy

How the reading checks out

On a random check of 200 filings against their PDFs (October 1, 2026): the order total was read exactly on 191, missed on 9 (those orders fall back to the sum of their listed lines and are labeled listed_lines), and wrong on none. The order number matched on 198 of 200. The sample came from the first filings read.

Only reads that passed review are included. ORDERS.HAS_NEWER_UNREVIEWED_VERSION flags orders whose newest filing did not pass review.

Schemas

Data dictionary

Three tables, 72 columns in total: ORDERS, FILINGS and BUY_LINES. The same tables serve the trial and the subscription. During the free trial they return Nevada only. A subscription adds the other 11 states.

Schema

Data dictionary: ORDERS

One row per station ad order, counted once. The total comes from the order’s best reviewed version: the total the station printed, else the sum of that filing’s listed lines. Values are Civly’s AI reading of the station’s FCC political-file filing. Follow TOTAL_FROM_FCC_FILING_URL to the original.

ColumnTypeMeaning
ORDER_IDTEXTCivly’s id for the order: FCC facility id and the station’s order number, or facility id plus filing id when no order number is printed.
STATETEXTState of the station’s community of license.
MARKETTEXTMetro or micro area (Census CBSA) of the station.
CITYTEXTStation’s community of license.
CALL_SIGNTEXTStation call sign.
STATION_TYPETEXTTV or Radio.
FCC_FACILITY_IDNUMBERFCC facility id of the station.
ORDER_NUMBERTEXTThe station’s own order, contract or traffic number, as printed.
SPONSOR_NAMETEXTWho placed the buy, as printed (candidate committee, party committee, PAC, issue group or agency).
CANDIDATE_NAMETEXTCandidate named on the order, when printed.
OFFICE_SOUGHTTEXTOffice the candidate seeks, when printed.
ISSUE_SUBJECTTEXTIssue named on a non-candidate (issue) order, when printed.
FLIGHT_STARTDATEEarliest air date across the order’s filed lines.
FLIGHT_ENDDATELatest air date across the order’s filed lines.
ORDER_TOTALNUMBERGross dollars for the order, counted once (see TOTAL_SOURCE).
TOTAL_SOURCETEXTprinted means the total the station printed for the whole order. listed_lines means the sum of the filing’s listed lines because no whole-order total was read.
TOTAL_MAY_BE_PARTIALBOOLEANTrue when the total is a sum of listed lines and the order has several versions, so the filing may list only changed lines.
ORDER_SPOTSNUMBERSpot count for the order, from the same filing as ORDER_TOTAL.
VERSIONSNUMBERNumber of reviewed filings (order, revisions, contract, invoices) tied to this order.
FIRST_FILED_ONDATEDate the first of those filings was uploaded to the FCC.
LAST_FILED_ONDATEDate the latest of those filings was uploaded to the FCC.
HAS_NEWER_UNREVIEWED_VERSIONBOOLEANTrue when a newer filing of this order exists but its reading did not pass review, so the total may be out of date.
TOTAL_FROM_FILING_IDNUMBERFILINGS.FILING_ID of the filing the total comes from.
TOTAL_FROM_FCC_FILING_URLTEXTLink to that filing on files.fcc.gov.
UPDATED_ATTIMESTAMPWhen Civly last changed any filing of this order (UTC).
Schema

Data dictionary: FILINGS

One row per reviewed filing (order, revision, contract or invoice) with the total it prints and its change from the previous version of the same order. Values are Civly’s AI reading of the station’s filing.

ColumnTypeMeaning
FILING_IDNUMBERCivly’s id for the filing.
ORDER_IDTEXTThe order this filing belongs to (ORDERS.ORDER_ID).
STATETEXTState of the station’s community of license.
MARKETTEXTMetro or micro area (Census CBSA) of the station.
CITYTEXTStation’s community of license.
CALL_SIGNTEXTStation call sign.
STATION_TYPETEXTTV or Radio.
FCC_FACILITY_IDNUMBERFCC facility id of the station.
DOCUMENT_TYPETEXTorder, contract, revision, invoice or other, as read from the document.
ORDER_NUMBERTEXTThe station’s own order, contract or traffic number, as printed.
REVISIONNUMBERRevision number as printed (0 = original), when printed.
FILED_ONDATEDate the station uploaded the filing to the FCC.
VERSION_RANKNUMBER1 means the version an order total should use. Higher means older or less complete versions.
IS_ORDER_TOTAL_VERSIONBOOLEANTrue for the one filing per order that ORDERS takes its total from.
PRINTED_ORDER_TOTALNUMBERGross total the filing prints for the whole order, as read. Null when none was read.
PRINTED_ORDER_SPOTSNUMBERSpot total the filing prints for the whole order, as read.
CHANGE_FROM_PREVIOUS_VERSIONNUMBERThis filing’s printed total minus the previous filing’s printed total for the same order, in upload order.
LINE_COUNTNUMBERNumber of buy lines read from the filing (see BUY_LINES).
LISTED_LINES_GROSSNUMBERSum of the gross amounts on the filing’s listed lines. A revision often lists only the changed lines, so do not add these across filings.
LISTED_LINES_SPOTSNUMBERSum of spots on the filing’s listed lines.
FOLDER_PATHTEXTFolder of the filing in the station’s FCC political file.
FILE_NAMETEXTFile name of the filing as uploaded by the station.
FCC_FILING_URLTEXTLink to the filing on files.fcc.gov.
READ_CONFIDENCENUMBERThe reading model’s own 0 to 1 confidence. Only reads that passed review are included.
READ_ATTIMESTAMPWhen Civly read the filing (UTC).
UPDATED_ATTIMESTAMPWhen Civly last changed this row (UTC).
Schema

Data dictionary: BUY_LINES

Schedule lines read from each reviewed filing: daypart, spots, rate and gross. Revisions restate earlier lines, so never sum these across filings. Use ORDERS for totals.

ColumnTypeMeaning
LINE_IDNUMBERCivly’s id for the line.
FILING_IDNUMBERThe filing the line was read from (FILINGS.FILING_ID).
ORDER_IDTEXTThe order the filing belongs to (ORDERS.ORDER_ID).
STATETEXTState of the station’s community of license.
CALL_SIGNTEXTStation call sign.
IS_ORDER_TOTAL_VERSIONBOOLEANTrue when the line’s filing is the one ORDERS takes its total from.
LINE_INDEXNUMBERPosition of the line within its filing, from 0.
DOCUMENT_TYPETEXTorder, contract, invoice, revision or other, as read for this line.
SPONSOR_NAMETEXTWho placed the buy, as printed.
CANDIDATE_NAMETEXTCandidate named, when printed.
OFFICE_SOUGHTTEXTOffice sought, when printed.
ISSUE_SUBJECTTEXTIssue named on a non-candidate order, when printed.
FLIGHT_STARTDATEFirst air date of the line.
FLIGHT_ENDDATELast air date of the line.
SPOT_COUNTNUMBERNumber of spots on the line.
DAYPARTTEXTDaypart or program as printed, for example M-F 6a-10a, ROS, News AM.
PER_SPOT_RATENUMBERRate per spot in dollars.
GROSS_AMOUNTNUMBERGross dollars for the line.
LOWEST_UNIT_CHARGEBOOLEANTrue only when the filing says the rate is a lowest unit charge. Null when it does not say.
LINE_MATH_CHECKSBOOLEANTrue when spots times rate equals the line’s gross within $1 or 1%. False when it does not. Null when a value is missing.
UPDATED_ATTIMESTAMPWhen Civly last changed the line’s filing (UTC).
Matching

Joining the tables

Join ORDERS to FILINGS and BUY_LINES on ORDER_ID. Join FILINGS to BUY_LINES on FILING_ID. Use ORDERS for order totals. Do not sum FILINGS or BUY_LINES across the versions of one order: a revision often lists only the changed lines.

Getting started

Sample queries

After installing, set your worksheet’s database selector to the installed database and these run as written.

-- Spending by state, counting each order once
SELECT state, COUNT(*) AS orders, SUM(order_total) AS total_usd
FROM POLITICAL_AD_BUYS.ORDERS
GROUP BY state
ORDER BY total_usd DESC;

-- Largest sponsors in one market
SELECT sponsor_name, COUNT(*) AS orders, SUM(order_total) AS total_usd
FROM POLITICAL_AD_BUYS.ORDERS
WHERE market ILIKE 'Columbus%'
GROUP BY sponsor_name
ORDER BY total_usd DESC
LIMIT 20;

-- How one order changed across its filed versions
SELECT filed_on, document_type, revision, printed_order_total, change_from_previous_version, fcc_filing_url
FROM POLITICAL_AD_BUYS.FILINGS
WHERE order_id = (SELECT order_id FROM POLITICAL_AD_BUYS.ORDERS ORDER BY versions DESC LIMIT 1)
ORDER BY filed_on;
Provenance

Sourcing and attribution

Every broadcast station must keep and publish a political file (47 U.S.C. 315(e), 47 CFR 73.1943). The values in this dataset are Civly’s AI reading of each filing, not FCC content. Every row links to the original filing on files.fcc.gov. The underlying PDFs are not redistributed, and no buyer or station staff contact details are included.

This product uses the FCC Data API but is not endorsed or certified by the FCC.

For coverage or access questions: [email protected]