TV and radio political ad orders from stations’ FCC political files, with the total each station printed, counted once per order, updated weekly.
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.
| Fact | Detail |
|---|---|
| Source | FCC Online Public Inspection File (station political files), read by Civly |
| Coverage | Stations in the markets of 2026 races Civly tracks in 12 states, not every station nationally |
| Period | January 2026 to present |
| Refresh | Weekly |
| Free trial | 30 days, Nevada only, all three tables |
| Subscription | All 12 states |
| Join key | ORDER_ID joins ORDERS, FILINGS and BUY_LINES. FILING_ID joins FILINGS and BUY_LINES. |
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.
| State | Orders | Stations |
|---|---|---|
| Michigan (MI) | 182 | 28 |
| Iowa (IA) | 152 | 13 |
| Ohio (OH) | 115 | 17 |
| North Carolina (NC) | 98 | 11 |
| Texas (TX) | 72 | 25 |
| Colorado (CO) | 31 | 12 |
| Nevada (NV) | 28 | 4 |
| Pennsylvania (PA) | 26 | 3 |
| Kentucky (KY) | 5 | 1 |
| Florida (FL) | 2 | 1 |
Reading the data
South Carolina and West Virginia have no reviewed orders yet.
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.
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.
ORDERSOne 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.
| Column | Type | Meaning |
|---|---|---|
ORDER_ID | TEXT | Civly’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. |
STATE | TEXT | State of the station’s community of license. |
MARKET | TEXT | Metro or micro area (Census CBSA) of the station. |
CITY | TEXT | Station’s community of license. |
CALL_SIGN | TEXT | Station call sign. |
STATION_TYPE | TEXT | TV or Radio. |
FCC_FACILITY_ID | NUMBER | FCC facility id of the station. |
ORDER_NUMBER | TEXT | The station’s own order, contract or traffic number, as printed. |
SPONSOR_NAME | TEXT | Who placed the buy, as printed (candidate committee, party committee, PAC, issue group or agency). |
CANDIDATE_NAME | TEXT | Candidate named on the order, when printed. |
OFFICE_SOUGHT | TEXT | Office the candidate seeks, when printed. |
ISSUE_SUBJECT | TEXT | Issue named on a non-candidate (issue) order, when printed. |
FLIGHT_START | DATE | Earliest air date across the order’s filed lines. |
FLIGHT_END | DATE | Latest air date across the order’s filed lines. |
ORDER_TOTAL | NUMBER | Gross dollars for the order, counted once (see TOTAL_SOURCE). |
TOTAL_SOURCE | TEXT | printed 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_PARTIAL | BOOLEAN | True when the total is a sum of listed lines and the order has several versions, so the filing may list only changed lines. |
ORDER_SPOTS | NUMBER | Spot count for the order, from the same filing as ORDER_TOTAL. |
VERSIONS | NUMBER | Number of reviewed filings (order, revisions, contract, invoices) tied to this order. |
FIRST_FILED_ON | DATE | Date the first of those filings was uploaded to the FCC. |
LAST_FILED_ON | DATE | Date the latest of those filings was uploaded to the FCC. |
HAS_NEWER_UNREVIEWED_VERSION | BOOLEAN | True 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_ID | NUMBER | FILINGS.FILING_ID of the filing the total comes from. |
TOTAL_FROM_FCC_FILING_URL | TEXT | Link to that filing on files.fcc.gov. |
UPDATED_AT | TIMESTAMP | When Civly last changed any filing of this order (UTC). |
FILINGSOne 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.
| Column | Type | Meaning |
|---|---|---|
FILING_ID | NUMBER | Civly’s id for the filing. |
ORDER_ID | TEXT | The order this filing belongs to (ORDERS.ORDER_ID). |
STATE | TEXT | State of the station’s community of license. |
MARKET | TEXT | Metro or micro area (Census CBSA) of the station. |
CITY | TEXT | Station’s community of license. |
CALL_SIGN | TEXT | Station call sign. |
STATION_TYPE | TEXT | TV or Radio. |
FCC_FACILITY_ID | NUMBER | FCC facility id of the station. |
DOCUMENT_TYPE | TEXT | order, contract, revision, invoice or other, as read from the document. |
ORDER_NUMBER | TEXT | The station’s own order, contract or traffic number, as printed. |
REVISION | NUMBER | Revision number as printed (0 = original), when printed. |
FILED_ON | DATE | Date the station uploaded the filing to the FCC. |
VERSION_RANK | NUMBER | 1 means the version an order total should use. Higher means older or less complete versions. |
IS_ORDER_TOTAL_VERSION | BOOLEAN | True for the one filing per order that ORDERS takes its total from. |
PRINTED_ORDER_TOTAL | NUMBER | Gross total the filing prints for the whole order, as read. Null when none was read. |
PRINTED_ORDER_SPOTS | NUMBER | Spot total the filing prints for the whole order, as read. |
CHANGE_FROM_PREVIOUS_VERSION | NUMBER | This filing’s printed total minus the previous filing’s printed total for the same order, in upload order. |
LINE_COUNT | NUMBER | Number of buy lines read from the filing (see BUY_LINES). |
LISTED_LINES_GROSS | NUMBER | Sum 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_SPOTS | NUMBER | Sum of spots on the filing’s listed lines. |
FOLDER_PATH | TEXT | Folder of the filing in the station’s FCC political file. |
FILE_NAME | TEXT | File name of the filing as uploaded by the station. |
FCC_FILING_URL | TEXT | Link to the filing on files.fcc.gov. |
READ_CONFIDENCE | NUMBER | The reading model’s own 0 to 1 confidence. Only reads that passed review are included. |
READ_AT | TIMESTAMP | When Civly read the filing (UTC). |
UPDATED_AT | TIMESTAMP | When Civly last changed this row (UTC). |
BUY_LINESSchedule 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.
| Column | Type | Meaning |
|---|---|---|
LINE_ID | NUMBER | Civly’s id for the line. |
FILING_ID | NUMBER | The filing the line was read from (FILINGS.FILING_ID). |
ORDER_ID | TEXT | The order the filing belongs to (ORDERS.ORDER_ID). |
STATE | TEXT | State of the station’s community of license. |
CALL_SIGN | TEXT | Station call sign. |
IS_ORDER_TOTAL_VERSION | BOOLEAN | True when the line’s filing is the one ORDERS takes its total from. |
LINE_INDEX | NUMBER | Position of the line within its filing, from 0. |
DOCUMENT_TYPE | TEXT | order, contract, invoice, revision or other, as read for this line. |
SPONSOR_NAME | TEXT | Who placed the buy, as printed. |
CANDIDATE_NAME | TEXT | Candidate named, when printed. |
OFFICE_SOUGHT | TEXT | Office sought, when printed. |
ISSUE_SUBJECT | TEXT | Issue named on a non-candidate order, when printed. |
FLIGHT_START | DATE | First air date of the line. |
FLIGHT_END | DATE | Last air date of the line. |
SPOT_COUNT | NUMBER | Number of spots on the line. |
DAYPART | TEXT | Daypart or program as printed, for example M-F 6a-10a, ROS, News AM. |
PER_SPOT_RATE | NUMBER | Rate per spot in dollars. |
GROSS_AMOUNT | NUMBER | Gross dollars for the line. |
LOWEST_UNIT_CHARGE | BOOLEAN | True only when the filing says the rate is a lowest unit charge. Null when it does not say. |
LINE_MATH_CHECKS | BOOLEAN | True 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_AT | TIMESTAMP | When Civly last changed the line’s filing (UTC). |
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.
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;
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]