Political ads on Meta and Google, 2018-2025
What is in this archive
The project's own classification of political ads on Meta and Google, 2018 to 2025, from the platforms' public ad libraries. Only ads the project classified as anti-trans are here. Spend is the bracket the platform reports (a low and a high figure), added over the ads whose dollars may be added: Google repeats an ad's bracket on each placement.
What is not
Television is not in this archive: it appears only as national yearly totals on the Money page. Ads of other kinds are not in it. Every advertiser with an anti-trans ad is named, candidates and committees included, except an advertiser whose name is withheld (they are counted together as other advertisers). Each ad shows the advertiser's own text, the platform's link to its record and the classifier's written reasoning where there is one.
Reading the numbers
Coverage differs by year and channel; a year that was only partly measured is a floor. A national buy's dollars are divided evenly across the states it names, and counted once per state. The crosswalk shows ads and bills in the same state and year: it does not say one caused the other.
Political ads on Meta and Google, 2018-2025
This archive is the published end of a classification pipeline, not a source. Everything here is derived from the Meta Ad Library and the Google political-ads transparency export. Nothing on this site is a primary record — the ad-library links in the explorer are.
What is in it
The Meta and Google political ads of 2018 to 2025 that the project classified as anti-trans, with the advertiser that ran each, the platform's disclosed spend, the states it ran in, the ad's own text with a link to the platform's record of it, and the classifier's written reasoning where it has one. Every advertiser with such an ad is named, candidates and committees included.
Television is not in this archive. It appears only as national yearly totals on the Money page.
What "anti-trans" means here
Each creative was judged on its own text by a classifier, with a second pass on disagreements. Only ads judged anti-trans are in this archive; ads that are about something else, and ads of any other stance, are not.
A label is a judgment. Each ad links to the platform's own record so it can be checked against the source.
Coverage — where the numbers are weak
A year marked not available is non-coverage. It is not a measured zero and must never be read as one. A year marked partly measured is a floor, not the full amount.
Rhetoric lexicon
The phrase set the Meta pull searched on, with the spend that attached to each. These are the terms of art the campaign itself uses.
Known gaps
- Channels with no public transparency are entirely absent — streaming video, most radio, direct mail, Snapchat and TikTok. There is no archive to query.
- Google's classification is the weakest. Google publishes no ad text; the label comes from scrapes where a creative was readable.
- Brackets are not amounts. Meta and Google publish spend ranges. Summing bracket floors and bracket ceilings gives a true range, not a point estimate, and the gap widens with the number of ads.
- A national buy's dollars are divided evenly across the states it names on the crosswalk and the state chart, and its ad counts once in each.