EU ad transparency: the reach of any Facebook ad by age, gender and country
For ads shown in the European Union, Meta can publish the number of accounts reached by country, age range and gender, next to the audience settings and the names of the payer and beneficiary. The reach block is useful public delivery data, though it does not tell you clicks, conversions or spend.
Where it hides
Open an ad in the library, click See ad details and look for European Union transparency. When Meta publishes it, the block shows total reach, age and gender ranges by EU country, audience settings, and payer and beneficiary data. Advertisers outside the EU can have it for ads delivered to EU users.
Reading the table
A real example: ad 2016127759183309 from Travis Scott in a successful scraper run on 19 September 2026 had an EU total reach of 15,011,800. Its audience settings included ages 18 to 65 and all genders. In Germany, the 55–64 band showed 15,089 female, 21,948 male and 1,416 unknown accounts reached. That is one band from a larger country breakdown.
{"adArchiveID":"2016127759183309","ad_details":{"transparency_by_location":{"eu_transparency":{"eu_total_reach":15011800,"age_country_gender_reach_breakdown":[{"country":"DE","age_gender_breakdowns":[{"age_range":"55-64","female":15089,"male":21948,"unknown":1416}]}]}}}}
Three useful questions come from the 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 widely the ad was delivered. Reach counts accounts, not spend, impressions, clicks or conversions. It cannot determine a reliable ad budget on its own.
- 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. The ad_details.transparency_by_location.eu_transparency block contains eu_total_reach, audience settings and age_country_gender_reach_breakdown when Meta provides them. The aaa_info.payer_beneficiary_data block contains payer and beneficiary data when available. There is no separate charge for details.
{"searchQueries": ["insurance"], "country": "DE", "activeStatus": "active", "scrapeAdDetails": true, "maxAds": 200}
Ads without published EU transparency data can return a null block; this is not a scraper 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.45 per 1,000 ads on Apify Free, $0.40 on Starter, $0.35 on Scale and $0.30 on Business. Details, platform usage and the default proxy are included, with no start fee.