How does ‘Trends’ work?

Trends is our resource to track the spending, targeting and messaging of online political ads around the world.

The system currently follows the activities of over 100,000 advertisers from over 750 political parties on Meta (Facebook, Instagram and other Meta ad platforms) and Google (Search, display and YouTube). It works in over 50 countries (with more to come).

This page sets out how we:

A note on data sources

Most of the data used to power this tool comes from the platform advertising libraries and APIs. These typically publish lots of ads (useful for identifying content), spending information (sometimes accurately, sometimes as a range, sometimes in a timely way, sometimes delayed) and targeting data (sometimes for each ad, sometimes aggregated across all of the ads an advertiser has run recently).

Advertiser classification

When platforms publish information about advertisers in their ad library, they often provide no information about the advertiser’s political affiliation.

This poses three challenges:

  1. How to associate an advertiser with one or more meaningful political entities (such as a party)
  2. How to decide which political entities are most relevant
  3. The sheer volume of advertisers

For the first, sometimes the association is obvious, but at other times we have to do some sleuthing to work it out. In many countries, the affiliations can be numerous, with advertisers associated with various parties and coalitions. Trends allows for this.

For the second, we try to ensure the data being presented is useful. In most democracies there are perfectly valid, serious, sustainable political parties that have absolutely no hope of winning seats or power. For the most part, we focus on the entities that will win, or be close to winning seats or other relevant offices. Usually this means creating two ‘catch all’ categories, for “Independents” and “Others”.

For the final challenge, we have to account for the fact that some countries produce a lot of advertisers. They tend to have large populations and many layers of democracy (the US, Brazil and India are the best examples). Here again, we have to make choices about how best to present data. For example, in the US, this means that we don’t classify advertisers running in local, city or judicial races by their political party, instead assigning them to a group that tracks them all (there are currently over 15,000 such smaller advertisers being tracked in our US data).

A note on frequency of updates: New advertisers – many thousands – are added to the system each day. We make every effort and work with many local partners to keep these lists of advertisers accurate and timely. That said, the data sometimes falls behind and gets out of date. When this happens, Trends will acknowledge this via an automated note added to country-level dashboards. If you have a particular interest in that data being updated, please get in touch.

Tracking advertiser spending

For Meta:

  • Each day, we download and parse the most recent lifetime Meta Ad Library Report.
  • We subtract the next most recent daily report to calculate the difference. This gives us a figure for the most recent day’s spending by each advertiser.
  • We store this data and plot it in Trends.
  • Note that Meta’s Ad Library Report data is typically delayed by three or four days.

For Google:

  • Each day, we download the latest copy of Google’s Ad Transparency data and calculate the latest spending figures.
  • Unlike Meta’s data, Google’s is usually only delayed by a few hours. However, it is more unreliable, with the system sometimes not updated for a few days at a time, and with more missing data (which is occasionally backfilled).

For spending, we present:

  • Charts showing daily spending, cumulative spending, share of spending over time and share of spending for the time period selected.
  • Tables of the top 20 spending accounts in a country or for an entity, and a .csv download of the top 100 accounts for each. It also shows their ‘rank’ versus the equivalent previous time period and the change in rank versus that period, as well as the percentage change in their ad spending.
  • A table that aggregates all spending by each entity, shows how many pages associated with the entity ran ads during the selected period.
  • By default, this shows spending for the nationally relevant parties across the whole country, though many countries have custom reports that provide data for specific areas or elections.

Monitoring targeting

Based on a method and code developed by Fabio Votta, MetaTargetr, we aggregate the targeting methods used by political entities to produce charts representing:

  • The methods they use, and the relative proportion of their advertising that uses each method.
  • The ‘interests’ or ‘behaviours’ they target, again, with relative proportions.
  • Demographics (age and gender)
  • Education levels and the jobs the ads are targeting.

On the country level summaries, we also produce a chart that shows the competition between the various political entities to reach people with the same interests.

Summarising content with a Large Language Model

We use a large language model (ChatGPT Turbo 3.5) to summarise the content of ads (currently, just Meta ads). The process involved is as follows:

  1. Each week, we download all of ads from the highest spending advertisers in all of our political entities from the Meta Political Ad Library API.
  2. We pre-process the data, to merge together ads with identical copy and add together their reach and spending.
  3. We then pass the data to the LLM, asking it to imagine it’s a political advertising analyst, tasked with summarising the content of the ads, detecting the primary themes of the ads, returning the results in a specific JSON format.
  4. We then repeat this for each of the top five spending advertisers, to produce individual summaries and themes for each.
  5. The weekly summaries are then stored and archived, meaning you can use Trends to access historical summaries for any weekly period for many parties and advertisers.

When the ads aren’t in English, our prompt also asks the LLM to translate the ads into English before taking the above steps.

The summaries are prone to all of the weaknesses associated with LLMs – inaccuracy, bias, hallucination and more. Despite that, based on our regular spot checking of their output, we feel they are a useful addition to our regular manual analysis of the content.