EU ad transparency: the reach of any Facebook ad by age, gender and country
Commercial advertisers never had to publish how an ad performed. Since the Digital Services Act they do, for every ad shown in the European Union: the number of accounts reached, split by country, age range and gender, next to the audience settings and the names of the payer and the beneficiary. It is the only real performance number in the Ad Library, and almost nobody uses it.
Where it hides
Open any ad in the library, click See ad details and scroll to European Union transparency. The block appears for ads delivered to EU users, whether the advertiser is European or not; a US brand running ads in Germany has it. It shows the total reach, a table of age ranges by gender for each EU country the ad reached, the targeting the advertiser chose, and the payer and beneficiary that the law now requires.
Reading the table
A Czech insurance ad, live in September 2026: total EU reach 1.2 million accounts; audience set to ages 25 to 64, all genders, Czech Republic only. The breakdown shows the reach concentrated in the 45 to 64 ranges, with women slightly ahead in every band. Three things fall out of that single table:
- Who the advertiser actually reaches, which is not always who they targeted. A wide age setting with reach concentrated in one band means the algorithm found the buyers there.
- How big the campaign is. Reach is not spend, but a million accounts in one country over a month is a budget you can estimate within a factor of two if you know the market's CPMs.
- Who pays and who benefits, which exposes agencies, resellers and lead-gen intermediaries that the page name hides.
What it is good for
| Use | How |
|---|---|
| Media planning benchmarks | Export a niche keyword in your country with the details on. The reach distribution across competitors tells you which age bands the category actually buys in, before you spend a euro on tests. |
| Competitor audience audit | Export a rival's page. Compare their reach split with your own campaign reports. A gap in a band they reach and you do not is a targeting decision waiting to be made. |
| Agency reporting | A monthly export of the client's competitors with total reach and demographics is a slide that used to be guesswork. |
| Research and journalism | Payer and beneficiary names across thousands of ads, machine readable, with dates. The library page shows them one ad at a time. |
Exporting it in bulk
Switch on Include ad details in the Facebook Ads Library Scraper. Every record then carries ad_details.transparency_by_location.eu_transparency with eu_total_reach, the audience settings and age_country_gender_reach_breakdown, a list per country of age ranges with male, female and unknown counts, plus aaa_info.payer_beneficiary_data. The advertiser block next to it adds the page's likes, Instagram handle and follower count. There is no surcharge for the details; a hundred ads with them take about half a minute.
{"searchQueries": ["insurance"], "country": "DE", "activeStatus": "active", "scrapeAdDetails": true, "maxAds": 200}
Ads that were never shown in the EU return the block empty; that is the honest answer for them, not a failure.
Questions people ask
Does the block exist for Instagram ads?
Yes. It is attached to the ad, not the placement, and Instagram-only ads carry it as well.
Is there a UK or Brazil equivalent?
Separate transparency blocks exist for the UK and Brazil under their own rules; the export returns them next to the EU one when Meta shows them.
What does it cost?
$0.50 per 1,000 ads, details included, no start fee, platform usage included.