User Tools

Site Tools


design:platforms:ad_archives

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
design:platforms:ad_archives [2026/09/08 11:19] – Screen the 44 lowercase-only papers by hand (7 SDK, 1 bibliography entry, 1 pure substring collision in a Node.js file-upload paper); state it as a screen, not an audit. Authored by Claude karel.kubicek.claudedesign:platforms:ad_archives [2026/09/08 11:43] (current) – Generic-review fixes: the 7-year window is rolling, so Edelson's and Capozzi's corpora have already aged out of the live archive; Google's political section is region-limited not worldwide; 48pc restated as an upper bound; Bouchaud's 92.3pc is a labelling karel.kubicek.claude
Line 1: Line 1:
 ====== Ad-Transparency Archives ====== ====== Ad-Transparency Archives ======
  
-An **ad-transparency archive** is a repository, published by an advertising platform, of the ads it carried: the creative, who paid, when it ran, and sometimes how it was targeted and how many people saw it. Meta's Ad Library, Google's Ads Transparency Center, TikTok's Commercial Content Library and the ten other repositories the Digital Services Act obliges are all of this kind.+An **ad-transparency archive** is a repository, published by an advertising platform, of the ads it carried: the creative, who paid, when it ran, and sometimes how it was targeted and how many people saw it. Meta's Ad Library, Google's Ads Transparency Center, TikTok's Commercial Content Library and the ten others in the inventory below are all of this kind.
  
 For a measurement researcher, an archive is an unusually good instrument and an unusually treacherous population. It is good because it is bulk, retrospective, queryable and free: no crawler, no sock puppets, no rate limit worth the name, and a window that reaches years further back than you could ever crawl. It is treacherous because **the platform decides what goes in it**, using a classifier of its own, and both directions of that classifier's error land in your denominator. A prevalence computed on an archive is a prevalence among //ads the platform put in the archive//, which is not the same as ads that ran, and is very much not the same as ads that were submitted. For a measurement researcher, an archive is an unusually good instrument and an unusually treacherous population. It is good because it is bulk, retrospective, queryable and free: no crawler, no sock puppets, no rate limit worth the name, and a window that reaches years further back than you could ever crawl. It is treacherous because **the platform decides what goes in it**, using a classifier of its own, and both directions of that classifier's error land in your denominator. A prevalence computed on an archive is a prevalence among //ads the platform put in the archive//, which is not the same as ads that ran, and is very much not the same as ads that were submitted.
Line 8: Line 8:
  
 <WRAP important> <WRAP important>
-**The corpus figure this page's parent published was wrong, and the correction is the point.** [[Design:Platforms]] reports "**69** papers name an Ad Library or ad archive", from a full-text probe for %%/Ad Library|Ads? Archive API/i%%. That probe is defeated by a homonym. In mobile-security writing an "ad library" is an **advertising SDK linked into an Android app**; in platform-transparency writing "the Ad Library" is **Meta's public ad archive**. Of the 69, **44** contain only the lowercase sense, and the probe additionally matches the substring inside "re[ad librar]y" and "uplo[ad librar]ies" — one of the 69 is a paper about Node.js file uploads.+**Four things to take away before you design anything.**
  
-Hand-auditing every candidate paper against its own full text gives the real number: of the **5,855** papers in the [[literature:corpus|publication corpus]] with extractable full text (seven venues, 2010–2026), **11** use an ad-transparency archive as a data source or measure the archive itself. Eight more mention one only in their bibliography. The old probe's precision for this question was **14.5%**. +  - **The archive's inclusion rule is a classifier the platform runs and does not publish**, so a prevalence you compute on it is a prevalence among ads that classifier admitted. Both directions of its error land in your denominator, and the field has measured both: **55%** false positives and **4.5%** false negatives on Facebook's political enforcement {[lepochat2022_audit]}, **7.7%** moderation recall and **60.4%** over-inclusion in the EU {[bouchaud2024_beyond]}. 
- +  - **The archive cannot tell you what it is missing**, so an archive study needs a second, independent view of the same ads — a donation panel, your own campaign, or your own collector. See [[#Getting the Other Side of the Gap]]. 
-Eleven papers is a small literature, and this page says so rather than inflating it. But it is a **coherent** eleven — four of them measure the archive's own accuracy, and they agree — and it is growing: 2 papers in 2020, 4 in 2023–2024, 3 in 2025–2026.+  - **If your subject is EU political advertising, the instrument closed on 6 October 2025**, and the window it holds is rolling rather than frozen. See [[#The Regulatory Floor, and the October 2025 Cliff]]. 
 +  - **A regulator has already itemised what two of these repositories are missing.** Read the enforcement record before you write your limitations section: [[#The enforcement record is a published error budget]].
 </WRAP> </WRAP>
  
 <WRAP tip> <WRAP tip>
-**If you are planning an EU political-ad study in 2026, read [[#The Regulatory Floor, and the October 2025 Cliff]] first.** Both Meta and Google stopped carrying political advertising in the EU in October 2025 in response to Regulation (EU) 2024/900. The historical ads stay in the archives; new ones do not arrive. Every EU political-ad paper in this corpus studies a window that has closed.+**This page also corrects its parent's paper count, from 69 to 11.** [[Design:Platforms]] reported "**69** papers name an Ad Library or ad archive" from a probe for %%/Ad Library|Ads? Archive API/i%%, and that probe cannot separate Meta's **Ad Library** from an Android **advertising SDK** — the ordinary meaning of "ad library" in mobile-security writing. Hand-auditing every candidate gives **11** papers of **5,855** with extractable full text that use an ad-transparency archive or measure one. The audit, the residue and the arithmetic are in [[#The inclusion rule, and the homonym that decides the count]]; the parent has been corrected. 
 + 
 +Eleven is a small literature and this page does not inflate it. But five of the eleven measure the archives' own accuracy and none finds them accurate, and the per-year series — 2020:2, 2021:1, 2022:1, 2023:3, 2024:1, 2025:1, 2026:2 — is one to three papers a year with no trend worth naming.
 </WRAP> </WRAP>
  
Line 26: Line 29:
   * {[lepochat2022_audit]} (USENIX Security 2022) — **both error directions, measured simultaneously**, on 33.8 million ads retrieved from the Ad Library. A **55%** false-positive rate among the ads Facebook itself flagged as political in the US, a **4.5%** false-negative rate worldwide, and — the finding that should change your study design — false negatives of **0.85%** in the United States against "//considerably worse in other countries//". A single global recall figure hides a factor of fifty.   * {[lepochat2022_audit]} (USENIX Security 2022) — **both error directions, measured simultaneously**, on 33.8 million ads retrieved from the Ad Library. A **55%** false-positive rate among the ads Facebook itself flagged as political in the US, a **4.5%** false-negative rate worldwide, and — the finding that should change your study design — false negatives of **0.85%** in the United States against "//considerably worse in other countries//". A single global recall figure hides a factor of fifty.
   * {[bouchaud2024_beyond]} (IMC 2024) — the same two-sided analysis on the **DSA-expanded** archive, which since August 2023 holds "//all advertisements targeting individuals within the EU//". Across 16 EU countries, "//only 7.7% of undeclared political ads ... were moderated as political by Meta//" while "//60.4% of ads moderated by Meta did not align with Meta's criteria for political advertising//". Read it for how to calibrate a classifier against the platform's own published guidelines rather than against your intuition.   * {[bouchaud2024_beyond]} (IMC 2024) — the same two-sided analysis on the **DSA-expanded** archive, which since August 2023 holds "//all advertisements targeting individuals within the EU//". Across 16 EU countries, "//only 7.7% of undeclared political ads ... were moderated as political by Meta//" while "//60.4% of ads moderated by Meta did not align with Meta's criteria for political advertising//". Read it for how to calibrate a classifier against the platform's own published guidelines rather than against your intuition.
-  * {[benzaamia2026_year]} (PoPETs 2026) — **the archives measured against a donated ground truth**, across four platforms at once. Matching 48,511 real ads collected through the //Who Targets Me// extension back to the platforms' DSA repositories yields "//181 out of 351 matches on Facebook (48% missing from the repository) and 399 out of 438 on Instagram (9% missing)//". Two repositories under the same legal obligation, five times apart on completeness.+  * {[benzaamia2026_year]} (PoPETs 2026) — **the archives measured against a donated ground truth**, across four platforms at once. Matching real ads collected through the //Who Targets Me// extension back to the platforms' DSA repositories yields "//181 out of 351 matches on Facebook (48% missing from the repository) and 399 out of 438 on Instagram (9% missing)//" — read those as upper bounds on missingness, since an unmatched ad is not a proven absence. Two repositories under the same legal obligation, five times apart. Also the only paper here that bought its own ads to test what the repository says about them.
   * {[gkiouzepi2023_collaborative]} (IEEE S&P 2023) — **the alternative**, and its limits. Argues that ad libraries cannot deliver targeting transparency and proposes inferring the targeting formula from a panel of monitored users instead. Honest about the cost: correct inference in 17 of 45 controlled campaigns, rising to "//65%//" only "//where our ad has been received by ten or more monitored users//".   * {[gkiouzepi2023_collaborative]} (IEEE S&P 2023) — **the alternative**, and its limits. Argues that ad libraries cannot deliver targeting transparency and proposes inferring the targeting formula from a panel of monitored users instead. Honest about the cost: correct inference in 17 of 45 controlled campaigns, rising to "//65%//" only "//where our ad has been received by ten or more monitored users//".
  
Line 39: Line 42:
 | **Donation or crowdsourced ad corpus** — Who Targets Me, Ad Observer, Australian Ad Observatory | one **impression**, pooled across consenting users | ads real users actually saw, with a panel-shaped bias | a browser extension, not the platform | | **Donation or crowdsourced ad corpus** — Who Targets Me, Ad Observer, Australian Ad Observatory | one **impression**, pooled across consenting users | ads real users actually saw, with a panel-shaped bias | a browser extension, not the platform |
  
-The confusion is not academic. {[bryson2025_characterizing]} (IEEE S&P 2025) is a usability study of **22** US ad-transparency //systems// — the second and third rows, not the first — and finds that "//more than two-thirds of all questions and more than half of desired actions went unanswered or unaddressed//". {[benzaamia2026_year]} measures the second row (48,511 explanations) and uses it to audit the first. {[breuer2026_ad]} (PoPETs 2026) wanted the first row as ground truth for an experiment on the second and concluded it could not be used. If you write "ad transparency" in a methods section without saying which of the four you queried, a reviewer cannot tell what your denominator is.+The confusion is not academic. {[bryson2025_characterizing]} (IEEE S&P 2025) taxonomises **22** US ad-transparency //systems// — the second and third rows, not the first — and then runs a usability study on **eight** of them, "//25 per ATS//" for 200 participants, finding that "//more than two-thirds of all questions and more than half of desired actions went unanswered or unaddressed//". {[benzaamia2026_year]} measures the second row (48,511 explanations) and uses it to audit the first. {[breuer2026_ad]} (PoPETs 2026) wanted the first row as ground truth for an experiment on the second and concluded it could not be used. If you write "ad transparency" in a methods section without saying which of the four you queried, a reviewer cannot tell what your denominator is.
  
 For the third row see [[Privacy:consent]] and [[Design:Platforms]]; for the fourth, [[Statistics:Biases]] on what a donation panel is a sample of. For the third row see [[Privacy:consent]] and [[Design:Platforms]]; for the fourth, [[Statistics:Biases]] on what a donation panel is a sample of.
Line 45: Line 48:
 ===== The Archives, One by One ===== ===== The Archives, One by One =====
  
-[[#The Regulatory Floor, and the October 2025 Cliff|DSA Article 39]] requires an ad repository of every platform the European Commission designates as a very large online platform or search engine, and the inventory below is the **thirteen** repositories Mozilla and Check First listed when they tried them all in 2024. Read that as //the set somebody has actually exercised//, not as the current designation list: the Commission's list has moved since and was last updated 24 July 2026.((The designation list is at https://digital-strategy.ec.europa.eu/en/policies/list-designated-vlops-and-vloses; [[Design:Platforms]] records it as "Information updated on 24 July 2026" from a 2026-08-27 fetch. Mozilla and Check First tested **twelve services from eleven companies** — "//AliExpress, Apple App Store, Bing, Booking.com, Alphabet (Google Search and YouTube), LinkedIn, Meta (Facebook and Instagram), Pinterest, Snapchat, TikTok, X, and Zalando//" — while their annex of repository links names **thirteen**, adding Amazon. The table below follows the annex.))+[[#The Regulatory Floor, and the October 2025 Cliff|DSA Article 39]] requires an ad repository of every platform the European Commission designates as a very large online platform or search engine, and the inventory below is the **thirteen** repositories Mozilla and Check First listed in 2024, twelve of which they tested. Read that as //the set somebody has actually exercised//, and treat it as a **floor**. The Commission's designation list has grown since: as of its own "Information updated on 31 August 2026" it carries **28 active designations**, adding Shein (26 April 2024), Temu (31 May 2024), WhatsApp (26 January 2026) and Reddit, Roblox and ChatGPT-as-a-search-engine (all 31 August 2026), while Stripchat's designation was terminated on 27 May 2025.((https://digital-strategy.ec.europa.eu/en/policies/list-designated-vlops-and-vloses — fetched 2026-09-08, "Information updated on 31 August 2026". Newly designated platforms get a compliance deadline four months after designation, so the August 2026 cohort is not yet obliged. https://www.temu.com/ads-repository already returns HTTP 200; a headless browser was redirected to a bot-verification challenge, so its **contents** were not verified here. Guessed paths for Shein and Roblox returned 404, and no repository URL was established for them. Mozilla and Check First tested **twelve services from eleven companies** — "//AliExpress, Apple App Store, Bing, Booking.com, Alphabet (Google Search and YouTube), LinkedIn, Meta (Facebook and Instagram), Pinterest, Snapchat, TikTok, X, and Zalando//" — while their annex of repository links names **thirteen**, adding Amazon. Amazon was excluded from the testing for a specific reason the report states: "//We did not examine Amazon Store because Amazon had been granted an exemption from making its ad repository publicly available by the European Court of Justice//" — an interim order that was set aside six months later; see [[#DSA Article 39 is the floor]]. The table below follows the annex.))
  
 These are not comparable instruments, and the differences are exactly the ones that decide whether your study is possible. These are not comparable instruments, and the differences are exactly the ones that decide whether your study is possible.
Line 55: Line 58:
 | **Google Ads Transparency Center** ((https://support.google.com/adspolicy/answer/13733850 and https://adstransparency.google.com/political/faq — both fetched 2026-09-08.)) | all ads from advertisers serving on Search, Display, Gmail and YouTube; a separate political section restricted to **verified election advertisers** | **two BigQuery public datasets** — ''bigquery-public-data.google_political_ads'' for the political subset ((https://cloud.google.com/blog/topics/developers-practitioners/how-get-started-political-ads-transparency-report-dataset — Google Cloud blog dated 25 January 2023, fetched 2026-09-08: dataset ''bigquery-public-data.google_political_ads'', table ''creative_stats'', "//which begins in 2018 and retains ads for 7 years//".)) and ''bigquery-public-data.google-ads-transparency-center'' for the centre as a whole ((Attested by {[breuer2026_ad]}, which queried it and reports its ''surface_serving_stats'' and ''creative_page_url'' fields, citing https://console.cloud.google.com/marketplace/details/bigquery-public-data/google-ads-transparency-center retrieved 28 February 2025. That console page is an authenticated JavaScript application: on 2026-09-08 it returned HTTP 200 with a 3 MB shell containing no dataset metadata, so it could **not** be independently rendered and this page relies on the paper.)) — plus the web interface, which is **not the same data** | election ads **7 years** after last impression | **3** | | **Google Ads Transparency Center** ((https://support.google.com/adspolicy/answer/13733850 and https://adstransparency.google.com/political/faq — both fetched 2026-09-08.)) | all ads from advertisers serving on Search, Display, Gmail and YouTube; a separate political section restricted to **verified election advertisers** | **two BigQuery public datasets** — ''bigquery-public-data.google_political_ads'' for the political subset ((https://cloud.google.com/blog/topics/developers-practitioners/how-get-started-political-ads-transparency-report-dataset — Google Cloud blog dated 25 January 2023, fetched 2026-09-08: dataset ''bigquery-public-data.google_political_ads'', table ''creative_stats'', "//which begins in 2018 and retains ads for 7 years//".)) and ''bigquery-public-data.google-ads-transparency-center'' for the centre as a whole ((Attested by {[breuer2026_ad]}, which queried it and reports its ''surface_serving_stats'' and ''creative_page_url'' fields, citing https://console.cloud.google.com/marketplace/details/bigquery-public-data/google-ads-transparency-center retrieved 28 February 2025. That console page is an authenticated JavaScript application: on 2026-09-08 it returned HTTP 200 with a 3 MB shell containing no dataset metadata, so it could **not** be independently rendered and this page relies on the paper.)) — plus the web interface, which is **not the same data** | election ads **7 years** after last impression | **3** |
 | **TikTok Commercial Content Library** ((https://developers.tiktok.com/products/commercial-content-api — fetched 2026-09-08: "//in this phase we are ONLY including data from EU countries, while a researcher/professional who is requesting it can be located in any country//".)) | paid ads and other commercial content, **EU countries only** | **Commercial Content API**, by application | not stated on the access page | **0** | | **TikTok Commercial Content Library** ((https://developers.tiktok.com/products/commercial-content-api — fetched 2026-09-08: "//in this phase we are ONLY including data from EU countries, while a researcher/professional who is requesting it can be located in any country//".)) | paid ads and other commercial content, **EU countries only** | **Commercial Content API**, by application | not stated on the access page | **0** |
-| **X Ads Repository** ((https://ads.x.com/ads-repository — fetched 2026-09-08 with a headless browser; the page offers "//Download the full commercial communications dataset: Commercial Communications CSV//" behind a country and date filter.)) | commercial communications served in the EU | **full-dataset CSV download**, no application | not stated | **0** | +| **X Ads Repository** ((https://ads.x.com/ads-repository — fetched 2026-09-08 with a headless browser; the page offers "//Download the full commercial communications dataset: Commercial Communications CSV//" behind a country and date filter.)) | commercial communications served in the EU | **per-advertiser CSV download**, no application | not stated | **1** | 
-| **Apple App Store Ad Repository** ((https://adrepository.apple.com/ — HTTP 200 on 2026-09-08.)) | App Store ads | web; free without an account per {[benzaamia2026_year]}'s cited stress test | not stated | **1** |+| **Apple App Store Ad Repository** ((https://adrepository.apple.com/ — HTTP 200 on 2026-09-08. {[breuer2026_ad]} reports that "//Apple provides a web interface and an API for its Ad Repository including documentation//".)) | App Store ads | **web interface and an API** | not stated | **1** |
 | **LinkedIn Ad Library** ((https://www.linkedin.com/ad-library/home — HTTP 403 to ''%%curl%%'' on 2026-09-08; existence verified from the Mozilla/Check First inventory, not re-rendered.)) | ads served on LinkedIn | web | back to its DSA obligation date | **0** | | **LinkedIn Ad Library** ((https://www.linkedin.com/ad-library/home — HTTP 403 to ''%%curl%%'' on 2026-09-08; existence verified from the Mozilla/Check First inventory, not re-rendered.)) | ads served on LinkedIn | web | back to its DSA obligation date | **0** |
 | **Microsoft / Bing Ad Library** ((https://adlibrary.ads.microsoft.com/ — HTTP 200 on 2026-09-08.)) | Bing ads | web | not stated | **0** | | **Microsoft / Bing Ad Library** ((https://adlibrary.ads.microsoft.com/ — HTTP 200 on 2026-09-08.)) | Bing ads | web | not stated | **0** |
 | **Snapchat Ads Gallery** ((https://adsgallery.snap.com/ — HTTP 200 on 2026-09-08.)) | Snapchat ads | web; **no API** as of the Mozilla stress test | not stated | **0** | | **Snapchat Ads Gallery** ((https://adsgallery.snap.com/ — HTTP 200 on 2026-09-08.)) | Snapchat ads | web; **no API** as of the Mozilla stress test | not stated | **0** |
-| **Pinterest, Booking.com, AliExpress, Amazon, Zalando** ((Pinterest https://ads.pinterest.com/ads-repository, Booking https://www.booking.com/ad-repository.html, AliExpress https://www.aliexpress.com/p/ad-search-page/index.html and Amazon https://advertising.amazon.com/API/docs/en-us/guides/ad-library/overview all returned HTTP 200 on 2026-09-08; https://en.zalando.de/ads-repository/ returned a connection failure to ''%%curl%%'' and a "Site can't be reached right now" page to a headless browser, so this page makes **no claim** about it.)) | that platform's own ads | mixed; AliExpress had **no API** as of the stress test | mostly back to the DSA obligation date | **0** |+| **Amazon Store Ad Library API** ((https://advertising.amazon.com/API/docs/en-us/guides/ad-library/overview — HTTP 200 to ''%%curl%%'' but JavaScript-rendered, so read with a headless browser on 2026-09-08. Verbatim: "//The Ad Library API is available at no cost//", "//accessible to anyone who visits Amazon EU stores//" subject to "//a developer account and a Login with Amazon (LwA) security profile//", "//up to 1,000 results for each request//" with a ''nextToken'' pagination token. The bare endpoint https://advertising-api-eu.amazon.com/ returns HTTP 400 to an unauthenticated GET, as expected.)) | all ads **and affiliate marketing content** on Amazon EU stores in DE, ES, FR, IT, NL, PL, SE, BE and IE | **API only, free**, 1,000 results per page | not stated | **0** | 
 +| **Pinterest, Booking.com, AliExpress, Zalando** ((Pinterest https://ads.pinterest.com/ads-repository, Booking https://www.booking.com/ad-repository.html and AliExpress https://www.aliexpress.com/p/ad-search-page/index.html all returned HTTP 200 on 2026-09-08; https://en.zalando.de/ads-repository/ served no repository to either tool on 2026-09-08 — ''%%curl%%'' reported a connection failure and a headless browser rendered "Site can't be reached right now"; a reviewer re-fetching hours later got a branded HTTP 403 "Not Found" page and a headless timeout. The mechanism is unstable; either way no repository content was seen, so this page makes **no claim** about it.)) | that platform's own ads | mixed; AliExpress had **no API** as of the stress test, Zalando and Pinterest did | mostly back to the DSA obligation date | **0** |
 | **The EU "European repository for online political advertisements"** | //in principle// all political ads published in the EU, from publishers large and small | a common data structure and API were specified by Commission Implementing Regulation (EU) 2026/818 of 9 April 2026 ((https://eur-lex.europa.eu/eli/reg_impl/2026/818/oj/eng — "OJ L, 2026/818, 10.4.2026", "In force", fetched 2026-09-08; it enters into force on the twentieth day after publication.)) | transparency notices **7 years** after last publication (Reg. 2024/900 Art. 12) | **0** | | **The EU "European repository for online political advertisements"** | //in principle// all political ads published in the EU, from publishers large and small | a common data structure and API were specified by Commission Implementing Regulation (EU) 2026/818 of 9 April 2026 ((https://eur-lex.europa.eu/eli/reg_impl/2026/818/oj/eng — "OJ L, 2026/818, 10.4.2026", "In force", fetched 2026-09-08; it enters into force on the twentieth day after publication.)) | transparency notices **7 years** after last publication (Reg. 2024/900 Art. 12) | **0** |
  
 Three readings of that table matter more than the rows. Three readings of that table matter more than the rows.
  
-  * **Nobody in these seven venues has published from any archive other than Meta's and Google's.** TikTok's Commercial Content Library, X's Ads Repository, LinkedIn's, Bing's, Snap's and the retail platforms' appear in **zero** of 5,855 papers. That is not evidence they are unusable — X's repository hands you the whole EU commercial-communications dataset as a CSV with no application at all, which is the least gated bulk access of anything on this page. It means **there is no methods section to copy**, and if you use one you are the first, in these venues. +  * **Four archives out of thirteen have ever been used in these seven venues, and one paper accounts for three of the four.** Hand-assigning each of the 11 audited papers to the archive it actually queried gives **Meta 8, Google 3, X 1, Apple 1** (a paper can use several, and {[gkiouzepi2023_collaborative]} queries none — it critiques ad libraries and works from Facebook's Ads Manager instead). {[benzaamia2026_year]} alone supplies the only X use and one of the Google uses; {[breuer2026_ad]} supplies the only Apple use. **TikTok's Commercial Content Library, LinkedIn's, Bing's, Snapchat's, Amazon's, the four retail repositories and the EU political-ad repository have zero users.** That is not evidence they are unusable — Amazon's API is free and X's CSV needs no application at all. It means **there is no methods section to copy**, and if you use one you are close to first, in these venues. 
-  * **The scopes do not line up, so a cross-platform rate is a cross-scope rate.** Meta's archive is worldwide for political ads and EU-only for everything else; TikTok's and X's are EU-only for everything; Google's political section is worldwide but restricted to verified advertisers. A "share of ads that are X" computed across platforms is comparing different populations unless you cut all of them down to the intersection, which in practice means the EU and one year. +  * **The scopes do not line up, so a cross-platform rate is a cross-scope rate.** Meta's archive is worldwide for political ads and EU-only for everything else; TikTok's and X's are EU-only for everything; Google's political section is limited both to **verified election advertisers** and to the regions where Google operates election-ads verification at all — "//Google has different requirements for political and election advertising based on region//", and its policy lists those regions one by one.((https://support.google.com/adspolicy/answer/6014595 — fetched 2026-09-08 with a headless browser: "//In some regions, election ads may run only if the advertiser is verified by Google//", followed by named per-region sections. Google Cloud's own introduction to the dataset says it "//supports election advertising verification in over 35 countries//" (https://cloud.google.com/blog/topics/developers-practitioners/how-get-started-political-ads-transparency-report-dataset, 25 January 2023). An earlier draft of this page called that section "worldwide"; it is not.)) A "share of ads that are X" computed across platforms is comparing different populations unless you cut all of them down to the intersection, which in practice means the EU and one year. 
-  * **Bulk access is the discriminator, not the existence of a repository.** Of the thirteen, four offer something you can compute on at scale: Meta's API, Google's BigQuery dataset, TikTok's API and X's CSV. The rest are search boxes. A repository you can only query one advertiser at a time is a transparency gesture, not an instrument.+  * **Bulk access is much more widely available than the corpus's silence suggests.** Mozilla and Check First's annex records an ads-repository **API** for Alphabet, Amazon, Apple, Bing, LinkedIn, Meta, TikTok, X and Zalando as of March 2024, and none for AliExpress or Snapchat.((The annex table has three columns — //Ad Repository//, //Commercial Content// and //Ads Repository API// — and the API column is populated for nine of the thirteen rows; ''Booking.com'' and ''Pinterest'' rows carry only two links each in the extracted text, so their API status was read as unclear rather than absent. https://www.mozillafoundation.org/documents/363/Full_Disclosure_Stress_Testing_Tech_Platforms_Ad_Repositories_3FepU2u.pdf, page 53, extracted with ''pypdf'' on 2026-09-08.)) The five confirmed from the provider's own current documentation are Meta's Graph API, Google's BigQuery datasets, TikTok's Commercial Content API, X's CSV and Amazon's free Ad Library API. **None of them was exercised for this page** — no query was issued and no file downloaded, and the provenance page says so. So the right reading is not "the data is locked up" — it is that **programmatic access exists across most of the thirteen and almost nobody in these venues has used it**.
  
 The one independent cross-platform comparison is not from these venues: Mozilla commissioned Check First to stress-test twelve of them against DSA-derived criteria, published **16 April 2024**, and concluded that "//even the best approaches don't meet our baseline//" and that "//our accuracy testing found many cases where ads in the user interface were not located in the ad repository//".((//Full Disclosure: Stress testing tech platforms' ad repositories//, Mozilla Foundation, dated 16 April 2024 on its research-library page, https://www.mozillafoundation.org/en/research/library/full-disclosure-stress-testing-tech-platforms-ad-repositories/ and the 55-page report at https://www.mozillafoundation.org/documents/363/Full_Disclosure_Stress_Testing_Tech_Platforms_Ad_Repositories_3FepU2u.pdf — both fetched 2026-09-08. Testing was "//as of March 18, 2024//". {[benzaamia2026_year]} cites this work as 2023; Mozilla's own page dates it 2024, and this page follows Mozilla.)) It is now two years old, which is why the statuses above were re-checked rather than taken from it — but it is the only source that has tried them side by side, and it should be your starting inventory rather than a vendor listicle. The one independent cross-platform comparison is not from these venues: Mozilla commissioned Check First to stress-test twelve of them against DSA-derived criteria, published **16 April 2024**, and concluded that "//even the best approaches don't meet our baseline//" and that "//our accuracy testing found many cases where ads in the user interface were not located in the ad repository//".((//Full Disclosure: Stress testing tech platforms' ad repositories//, Mozilla Foundation, dated 16 April 2024 on its research-library page, https://www.mozillafoundation.org/en/research/library/full-disclosure-stress-testing-tech-platforms-ad-repositories/ and the 55-page report at https://www.mozillafoundation.org/documents/363/Full_Disclosure_Stress_Testing_Tech_Platforms_Ad_Repositories_3FepU2u.pdf — both fetched 2026-09-08. Testing was "//as of March 18, 2024//". {[benzaamia2026_year]} cites this work as 2023; Mozilla's own page dates it 2024, and this page follows Mozilla.)) It is now two years old, which is why the statuses above were re-checked rather than taken from it — but it is the only source that has tried them side by side, and it should be your starting inventory rather than a vendor listicle.
Line 75: Line 79:
 Concrete, because the archive-by-archive table above does not say how long you will be waiting. Verified against each provider's own documentation on 2026-09-08. Concrete, because the archive-by-archive table above does not say how long you will be waiting. Verified against each provider's own documentation on 2026-09-08.
  
-  * **Meta Ad Library API.** You need a Facebook account, then identity **and location** verification at ''facebook.com/ID'' — the same process an advertiser must complete to run political ads, and Meta's own page says "//It can take a few days to confirm the information you submit//" — then a Meta for Developers account and an app. Queries then go through the Graph API, and Meta publishes a script repository with a command-line interface. So: **days, and a verified identity tied to your real name and location.** Plan it before the deadline, not after. +  * **Meta Ad Library API.** You need a Facebook account, then identity **and location** verification at ''facebook.com/ID'' — the same process an advertiser must complete to run political ads, and Meta's own page says "//It can take a few days to confirm the information you submit//" — then a Meta for Developers account and an app. So: **days, and a verified identity tied to your real name and location** — which is the measurement-relevant part, because it is not anonymous access and your institution may have a view. Plan it before the deadline, not after. 
-  * **Google's BigQuery public datasets.** No application, no account review: you need a Google Cloud project and you pay for bytes scanned, not for the data. ''bigquery-public-data.google_political_ads'' (table ''creative_stats'') is the political subset; ''bigquery-public-data.google-ads-transparency-center'' is the whole centre. **Minutes, and a credit card.** This is the cheapest bulk archive access described anywhere on this wiki.+  * **Google's BigQuery public datasets.** No application, no account review: you need a Google Cloud project and you pay for bytes scanned, not for the data. ''bigquery-public-data.google_political_ads'' (table ''creative_stats'') is the political subset; ''bigquery-public-data.google-ads-transparency-center'' is the whole centre. **Minutes, and a credit card.**
   * **TikTok Commercial Content API.** A TikTok for Developers account and an application TikTok reviews. [[Design:Platforms]] records a stated turnaround of "//within 4 weeks//" for the sibling Research API. **Weeks, and an institutional eligibility test.**   * **TikTok Commercial Content API.** A TikTok for Developers account and an application TikTok reviews. [[Design:Platforms]] records a stated turnaround of "//within 4 weeks//" for the sibling Research API. **Weeks, and an institutional eligibility test.**
-  * **X Ads Repository.** No application at all: pick a country and a date on the page and download the commercial-communications CSV. **Minutes.** Nobody in these seven venues has done it, so nobody has reported what the file actually contains — see [[#Open Questions]].+  * **X Ads Repository.** No application at all: pick a country and a date on the page and download the commercial-communications CSV. **Minutes.** One paper in these venues has used it — {[benzaamia2026_year]} pulled the per-advertiser, per-campaign CSVs and matched **1,458 of 2,190** entries back to its own ads by Tweet ID — and nobody has characterised the whole file. Note the enforcement history in [[#The enforcement record is a published error budget]] before you treat it as complete.
  
-The pattern is worth naming: **the archives with the most published research behind them are the ones with the highest access friction**, and the two with no friction at all have none. That is not a statement about data quality. It is a statement about who has looked.+Access friction alone does **not** explain who has published: Meta's route is the most gated and has 8 papers, Google's is nearly free and has 3, and X's CSV needs nothing at all and has 1. Two obvious confounders are age and agenda — Meta's political archive has existed since 2018 while X's CSV and the all-ads BigQuery dataset date from 2023, and almost all of this literature is about political advertising, which is where Meta's disclosures are richest. Do not read the distribution as a ranking of the archives.
  
 ===== What an Ad Archive Structurally Cannot Contain ===== ===== What an Ad Archive Structurally Cannot Contain =====
Line 104: Line 108:
 An archive built around a category — "political", "social issue", "election" — is the output of a classifier the platform runs and does not publish. That classifier has a false-positive rate and a false-negative rate, and **an archive study inherits both**. Papers that report only one of them are reporting half the error. An archive built around a category — "political", "social issue", "election" — is the output of a classifier the platform runs and does not publish. That classifier has a false-positive rate and a false-negative rate, and **an archive study inherits both**. Papers that report only one of them are reporting half the error.
  
-Four papers in this corpus have measured it. They used different platforms, years, regions and ground truths, and they agree that both rates are large.+Five papers in this corpus have measured it, on different platforms, years, regions and ground truths. They agree that the error is **material and strongly region-dependent** — but only **two** of the five measured both directions, and the rest could only reach one. That asymmetry is itself the finding: measuring over-inclusion needs an independent definition of the category, and measuring omission needs ads the archive never received.
  
 ^ Study ^ What was measured ^ Miss rate (false negatives) ^ Over-inclusion (false positives) ^ Denominator the paper used ^ ^ Study ^ What was measured ^ Miss rate (false negatives) ^ Over-inclusion (false positives) ^ Denominator the paper used ^
Line 110: Line 114:
 | {[silva2020_facebook]} TheWebConf 2020 | archive recall against an independent collector | **only 34 of 835** ads their classifier called political had a matching ad in the archive | — | 38,110 ads collected from volunteers in Brazil, 2018 | | {[silva2020_facebook]} TheWebConf 2020 | archive recall against an independent collector | **only 34 of 835** ads their classifier called political had a matching ad in the archive | — | 38,110 ads collected from volunteers in Brazil, 2018 |
 | {[lepochat2022_audit]} USENIX Sec 2022 | Facebook's own political-ad enforcement | **4.5%** worldwide; **0.85%** in the US against up to **45%** elsewhere | **55%** of ads Facebook flagged as political in the US were not political | 33.8 M ads observed; 4.2 M political and 29.6 M non-political from all 215,030 pages that ran political ads | | {[lepochat2022_audit]} USENIX Sec 2022 | Facebook's own political-ad enforcement | **4.5%** worldwide; **0.85%** in the US against up to **45%** elsewhere | **55%** of ads Facebook flagged as political in the US were not political | 33.8 M ads observed; 4.2 M political and 29.6 M non-political from all 215,030 pages that ran political ads |
-| {[bouchaud2024_beyond]} IMC 2024 | Meta's EU moderation under the DSA | **92.3%** of undeclared political ads were not moderated as political (recall **7.7%**) | **60.4%** of the ads Meta did moderate did not match Meta's own criteria | all EU ads via the Ad Library API, Aug 2023 – Feb 2024; 29.5 M ads used for inference | +| {[bouchaud2024_beyond]} IMC 2024 | Meta's EU political //labelling//, not archive membership | moderation recall **7.7%** — the other 92.3% of undeclared political ads were **in** the archive but not labelled political | **60.4%** of the ads Meta did moderate did not match Meta's own criteria | all EU ads via the Ad Library API, Aug 2023 – Feb 2024; 29.5 M ads used for inference | 
-| {[benzaamia2026_year]} PoPETs 2026 | repository completeness against donated impressions | **48%** of Facebook ads and **9%** of Instagram ads seen by real users were missing from the repository | — | 351 Facebook and 438 Instagram ads matched from 48,511 donated ad explanations |+| {[benzaamia2026_year]} PoPETs 2026 | repository completeness against donated impressions | **≤48%** of Facebook and **≤9%** of Instagram ads seen by real users could not be matched to a repository entry — an **upper bound** on missingness, because a failed match is not proof of absence | — | 351 Facebook and 438 Instagram ads matched from 48,511 donated ad explanations | 
 + 
 +<WRAP tip> 
 +**There is one positive control on this page, and it matters.** {[breuer2026_ad]} ran the same completeness check against **Apple's** Ad Repository that it ran against Google's, and it passed: "//We did not detect missing entries by comparing randomly selected samples of our dataset to Apple's Ad Repository//". Apple's failure was different and narrower — it does not publish the number of service recipients that Art. 39(2)(g) requires, only aggregate per-country totals in a separate transparency report. So "archives are incomplete" is not a law of nature; it is a finding about particular archives, and at least one of the thirteen survived a sampled check. 
 +</WRAP>
  
 Three consequences for a study design, in the order they will bite you. Three consequences for a study design, in the order they will bite you.
Line 125: Line 133:
 ^ Second view ^ What it buys ^ What it costs ^ Used by ^ ^ Second view ^ What it buys ^ What it costs ^ Used by ^
 | **Donation panel** — a browser extension on consenting users' real sessions | ads as actually delivered, with the per-impression explanation attached | population is whoever installed the extension: a convenience sample with an activist skew | {[benzaamia2026_year]} (Who Targets Me), {[ali2023_problematic]} and {[chen2026_when]} (Ad Observer / Australian Ad Observatory) | | **Donation panel** — a browser extension on consenting users' real sessions | ads as actually delivered, with the per-impression explanation attached | population is whoever installed the extension: a convenience sample with an activist skew | {[benzaamia2026_year]} (Who Targets Me), {[ali2023_problematic]} and {[chen2026_when]} (Ad Observer / Australian Ad Observatory) |
-| **Your own ad campaign** — buy ads with known parameters, then look for them | exact ground truth about targeting, spend and category, because you set them | you are an advertiser now: money, platform terms, ethics review, and it does not scale | {[gkiouzepi2023_collaborative]}, {[breuer2026_ad]}, {[venkatadri2019_auditing]} | +| **Your own ad campaign** — buy ads with known parameters, then look for them | exact ground truth about targeting, spend and category, because you set them | you are an advertiser now: money, platform terms, ethics review, and it does not scale | {[gkiouzepi2023_collaborative]}, {[benzaamia2026_year]}, {[venkatadri2019_auditing]} | 
-| **Independent crawl or collector** — find ads yourself and match them back | catches ads the archive never received; works where no panel exists | matching is the hard part, and a failed match is ambiguous between "missing" and "not matched" | {[silva2020_facebook]}, {[zeng2021_polls]}, {[bitaab2025_scammagnifier]} |+| **Independent crawl or collector** — find ads yourself and match them back | catches ads the archive never received; works where no panel exists | matching is the hard part, and a failed match is ambiguous between "missing" and "not matched" | {[silva2020_facebook]}, {[zeng2021_polls]}, {[bitaab2025_scammagnifier]}, {[breuer2026_ad]} |
 | **The platform's own moderation labels** — compare declared against detected | free, and it is the platform grading itself, which is the auditable claim | only exists where the platform publishes a moderation signal, which in practice means Meta political ads | {[lepochat2022_audit]}, {[bouchaud2024_beyond]} | | **The platform's own moderation labels** — compare declared against detected | free, and it is the platform grading itself, which is the auditable claim | only exists where the platform publishes a moderation signal, which in practice means Meta political ads | {[lepochat2022_audit]}, {[bouchaud2024_beyond]} |
  
 Two practical notes. **Matching is where these studies actually fail**, not collection: {[benzaamia2026_year]} links each donated ad to a repository record "//when a unique match can be determined using shared identifiers//", and its headline 48%-missing figure is really "48% we could not uniquely match", which is an upper bound on missingness. Say which it is. And **the donation route is the one that is growing** — 25 papers in this corpus mention data donation, 11 of them in 2025 — but only 4 mention //Who Targets Me// and 5 //Ad Observer// or an //Ad Observatory//, so the panels themselves are still nearly unused in these venues. Two practical notes. **Matching is where these studies actually fail**, not collection: {[benzaamia2026_year]} links each donated ad to a repository record "//when a unique match can be determined using shared identifiers//", and its headline 48%-missing figure is really "48% we could not uniquely match", which is an upper bound on missingness. Say which it is. And **the donation route is the one that is growing** — 25 papers in this corpus mention data donation, 11 of them in 2025 — but only 4 mention //Who Targets Me// and 5 //Ad Observer// or an //Ad Observatory//, so the panels themselves are still nearly unused in these venues.
  
-Both //Who Targets Me// and //Ad Observer// were still operating when checked on 2026-09-08; the Australian Ad Observatory's first phase closed in March 2024 and a second phase runs to 2027.((https://whotargets.me/en/ and https://adobserver.org/ both HTTP 200 on 2026-09-08. The Australian Ad Observatory's own page — https://www.admscentre.org.au/adobservatory/, fetched 2026-09-08 — states that "//The first phase of the Australian Ad Observatory project was completed in March 2024//", reports "//328,107 unique ads//" from "//1,909 citizens//" in phase one, and announces "//The Australian Ad Observatory P.2 (2024-2027)//". Note that {[chen2026_when]} describes the dataset it was given as "//over 700,000 ad observations ... from over 2,000 Australian Facebook users//": impressions are not unique ads and the two figures are not in conflict, but do not mix them. ''%%adobservatory.org%%'' does not resolve.))+Both //Who Targets Me// and //Ad Observer// still had live sites on 2026-09-08 — which is not the same as still collecting, and neither was tested; the Australian Ad Observatory's first phase closed in March 2024 and a second phase runs to 2027.((https://whotargets.me/en/ and https://adobserver.org/ both HTTP 200 on 2026-09-08. The Australian Ad Observatory's own page — https://www.admscentre.org.au/adobservatory/, fetched 2026-09-08 — states that "//The first phase of the Australian Ad Observatory project was completed in March 2024//", reports "//328,107 unique ads//" from "//1,909 citizens//" in phase one, and announces "//The Australian Ad Observatory P.2 (2024-2027)//". Note that {[chen2026_when]} describes the dataset it was given as "//over 700,000 ad observations ... from over 2,000 Australian Facebook users//": impressions are not unique ads and the two figures are not in conflict, but do not mix them. ''%%adobservatory.org%%'' does not resolve.))
  
 ===== The Regulatory Floor, and the October 2025 Cliff ===== ===== The Regulatory Floor, and the October 2025 Cliff =====
Line 141: Line 149:
 For services the European Commission has designated as very large online platforms or search engines, Article 39 of the Digital Services Act requires an ad repository "//through a searchable and reliable tool that allows multicriteria queries and through application programming interfaces//", covering "//the entire period during which they present an advertisement and until one year after the advertisement was presented for the last time//". The mandated fields are the ad content, the person it is presented on behalf of, the payer if different, the run period, whether it was targeted "//including where applicable the main parameters used to exclude//" groups, branded content identified under Art. 26(2), and "//the total number of recipients of the service reached and, where applicable, aggregate numbers broken down by Member State//". For services the European Commission has designated as very large online platforms or search engines, Article 39 of the Digital Services Act requires an ad repository "//through a searchable and reliable tool that allows multicriteria queries and through application programming interfaces//", covering "//the entire period during which they present an advertisement and until one year after the advertisement was presented for the last time//". The mandated fields are the ad content, the person it is presented on behalf of, the payer if different, the run period, whether it was targeted "//including where applicable the main parameters used to exclude//" groups, branded content identified under Art. 26(2), and "//the total number of recipients of the service reached and, where applicable, aggregate numbers broken down by Member State//".
  
-Three things follow that a fresh reader gets wrong.+Four things follow that a fresh reader gets wrong.
  
   * **"Through application programming interfaces" is in the text.** A platform that offers only a search box is not obviously compliant. That is a lever, and Mozilla's stress test found several platforms with no API at all.   * **"Through application programming interfaces" is in the text.** A platform that offers only a search box is not obviously compliant. That is a lever, and Mozilla's stress test found several platforms with no API at all.
   * **One year is the floor, not the practice.** Political archives at Meta and Google run to seven years. The DSA all-ads repositories run to one.   * **One year is the floor, not the practice.** Political archives at Meta and Google run to seven years. The DSA all-ads repositories run to one.
-  * **Article 39 is not Article 40.** Art. 39 is the public ad repository, open to anyone; Art. 40 is the vetted-researcher regime for non-public data, which [[Design:Platforms]] covers and which nobody in this corpus has published through. Conflating them is the most common error in this area, and this corpus shows how thin the DSA literature really is: "//Digital Services Act//" appears in 29 of 5,855 papers, and Article 39 appears near a DSA mention in **4**.+  * **Article 39 is not Article 40.** Art. 39 is the public ad repository, open to anyone; Art. 40 is the vetted-researcher regime for non-public data, which [[Design:Platforms]] covers and which nobody in this corpus has published through. They are easy to conflate, and this corpus shows how thin the DSA literature really is: "//Digital Services Act//" appears in **25** of 5,855 papers, and Article 39 appears near a DSA mention in **4**.((25 is the case-sensitive count, which is the figure [[Design:Platforms]] publishes for the same probe. Case-insensitively it is 29; the four extras are lowercase renderings inside bibliography titles. The number is given case-sensitively here so the two pages agree.)) 
 +  * **It has been litigated, and the platform lost.** Amazon challenged its designation and obtained interim suspension of the ad-repository obligation from the President of the General Court on 27 September 2023 (Case T-367/23 R) — which is why Mozilla's stress test could not test it. On **27 March 2024** the Vice-President of the Court of Justice set that part of the order aside and dismissed the application: "//Amazon's request to suspend its obligation to make an advertisement repository publicly available is rejected//" (Case C-639/23 P(R), //Commission v Amazon Services Europe//).((https://curia.europa.eu/jcms/upload/docs/application/pdf/2024-03/cp240060en.pdf — Court of Justice press release No 60/24, 27 March 2024, fetched and extracted 2026-09-08. This is the interim-measures branch only; the outcome of Amazon's underlying action for annulment was not established for this page.)) Amazon now publishes a free Ad Library API. Article 39 is an obligation with a litigation history, not a voluntary transparency programme, and that is part of why these archives are worth building a method on. 
 + 
 +==== The enforcement record is a published error budget ==== 
 + 
 +This is the single most useful thing on this page that is not in a paper. The Commission has opened proceedings about **ad repositories specifically**, and its findings are a regulator's own, adversarial assessment of exactly the completeness and searchability properties an archive study depends on. One of the four archives anyone in these venues has published from — X's — was fined over its repository; TikTok's, which nobody has used, was found in breach and then remediated; and Snapchat's was independently audited and found effectively unreachable. 
 + 
 +^ Platform ^ What the Commission found, and when ^ Where that leaves a study ^ 
 +| **X** | **Fined €120 million on 5 December 2025** — the first DSA non-compliance decision — and the ad repository is one of the three grounds. "//X's advertisement repository fails to meet the transparency and accessibility requirements of the DSA//"; "//X incorporates design features and access barriers, such as excessive delays in processing, which undermine the purpose of ad repositories//"; and it "//lacks critical information, such as the content and topic of the advertisement, as well as the legal entity paying for it//".((https://digital-strategy.ec.europa.eu/en/news/commission-fines-x-eu120-million-under-digital-services-act — European Commission, decision of 5 December 2025, page carries "Last update 16 January 2026", fetched 2026-09-08. The other two grounds are the deceptive design of the blue checkmark and researcher access to public data; [[Design:Platforms]] covers the third.)) | The bulk CSV is still there and still ungated, and it is now the //least// safe of the four to treat as complete. If you use it, cite the decision as your known-limitations paragraph — a regulator has already itemised what is missing, which is a stronger limitation statement than you could write yourself. | 
 +| **TikTok** | Preliminary findings of **15 May 2025**: TikTok "//does not provide the necessary information about the content of the advertisements, the users targeted by the ads, and who paid for the advertisements//", and the repository "//does not allow the public to search comprehensively//". On **5 December 2025** the Commission accepted binding commitments: full ad content including link URLs, updates "//within a maximum of 24 hours//", "//the targeting criteria selected by advertisers, along with aggregated user data (including gender, age group and Member State//)", and "//additional search options and filters//".((https://digital-strategy.ec.europa.eu/en/news/commission-preliminarily-finds-tiktoks-ad-repository-breach-digital-services-act (15 May 2025) and https://digital-strategy.ec.europa.eu/en/news/commission-accepts-tiktoks-commitments-advertising-transparency-under-digital-services-act (5 December 2025, page carries "Last update 1 April 2026") — both fetched 2026-09-08.)) | The Commercial Content Library you query in 2026 is a **remediated** repository, and the remediation is dated. A longitudinal study across December 2025 has an instrument change in the middle of it, not a platform change. | 
 +| **Snapchat** | Not a Commission proceeding but an independent audit: AI Forensics, published **13 May 2026**, found the Ad Gallery "//searchable only by advertiser name//", commercial communications "//not labeled as such on the web//", and — the striking one — that "//The repository was unavailable 99.7% of the time during the observation period//". After the finding was shared with Snap, "//A fix, deployed on April 29, led to service availability rising from almost 0% to nearly 100%//".((https://aiforensics.org/work/snapchat-dsa-ad-transparency — AI Forensics, dated 13-05-2026, fetched 2026-09-08. AI Forensics is a European non-profit that runs platform audits; this is a research organisation's report, not a regulator's decision, and is cited as such.)) | A repository can be nominally compliant and effectively absent. Before you plan around one, measure whether it answers — and note that this one only started answering in late April 2026, so a 2025 pull of it is not comparable to a 2026 pull. | 
 + 
 +Two general lessons a fresh reader should take from that table. **The archive's error rate is partly a published, adversarially-established fact**, so the limitations section of an archive paper should cite the enforcement record rather than only the platform's documentation. And **repositories are being remediated under legal pressure**, which means the instrument is non-stationary in a way the platform will not announce in a changelog: date every pull, and check whether a proceeding closed inside your window.
  
 ==== Regulation (EU) 2024/900 removed the subject matter ==== ==== Regulation (EU) 2024/900 removed the subject matter ====
Line 158: Line 178:
 For a measurement plan in 2026 the consequences are concrete, and they cut in opposite directions. For a measurement plan in 2026 the consequences are concrete, and they cut in opposite directions.
  
-  * **EU political-ad archives are now historical corpora.** The seven-year retention means {[bouchaud2024_beyond]}'s and {[capozzi2023_thin]}'s windows remain queryable, but nothing new arrives. A "current state of EU political advertising" study is not available through this instrument, and a longitudinal series must be labelled as ending in October 2025. +  * **EU political-ad archives are now closing corpora, not frozen ones.** Nothing new arrives, and **the retention window is rolling**: Meta's API covers political ads "//delivered anywhere in the world during the past 7 years//", and Google's election ads "//remain available for seven years after the ad's last impression//". So the archive is losing its oldest material at the same rate it always did, while gaining nothing in the EU. {[bouchaud2024_beyond]}'s Aug 2023 – Feb 2024 window survives to about 2031; {[capozzi2023_thin]}'s April–May 2019 ads and {[edelson2020_security]}'s May 2018 – June 2019 corpus have **already aged out**. **The foundational papers of this literature can no longer be reproduced against the live archive**, which is the reproducibility lesson: an ad archive is a moving window, so deposit your pull rather than the query that produced it (see [[:Artifacts]]), and a longitudinal EU series must be labelled as ending in October 2025. 
-  * **The EU commercial-ad repositories are unaffected and under-used.** DSA Art. 39 covers ads of every kind, and that obligation did not move. Meta's all-EU-ads scope, X's CSV and TikTok's API are all still there, and zero papers in these venues have used the latter two.+  * **The EU commercial-ad repositories are unaffected and under-used.** DSA Art. 39 covers ads of every kind, and that obligation did not move: Meta's all-EU-ads scope, X's CSV, Amazon's API and TikTok's API are all still there.
   * **Political-ad measurement outside the EU is unaffected**, and Meta's worldwide political archive still has its 7-year window. {[coelho2023_propaganda]} and {[lepochat2022_audit]} are US studies and their route is intact.   * **Political-ad measurement outside the EU is unaffected**, and Meta's worldwide political archive still has its 7-year window. {[coelho2023_propaganda]} and {[lepochat2022_audit]} are US studies and their route is intact.
   * **The corpus has not noticed any of this.** Regulation (EU) 2024/900 appears, under any phrasing, in **zero** of 5,855 papers — including the two 2026 papers whose subject is EU ad transparency. Whatever you write about the EU here in 2026, there is no prior methods section that accounts for the cliff.   * **The corpus has not noticed any of this.** Regulation (EU) 2024/900 appears, under any phrasing, in **zero** of 5,855 papers — including the two 2026 papers whose subject is EU ad transparency. Whatever you write about the EU here in 2026, there is no prior methods section that accounts for the cliff.
Line 169: Line 189:
 ==== The inclusion rule, and the homonym that decides the count ==== ==== The inclusion rule, and the homonym that decides the count ====
  
-A paper counts if an ad-transparency archive is a **data source** for it, or if the archive **itself** is what it measures. A bibliography entry does not count. A mention of an Android advertising SDK does not count, and that is the whole problem: **"ad library" is a homonym**, and the SDK sense is far more common in these seven venues than the archive sense.+A paper counts if an ad-transparency archive is a **data source** for it, if the archive **itself** is what it measures, or if the archive is the explicit baseline the paper critiques and sets out to replace. A bibliography entry does not count. A mention of an Android advertising SDK does not count, and that is the whole problem: **"ad library" is a homonym**, and the SDK sense is far more common in these seven venues than the archive sense. 
 + 
 +The third clause of that rule is load-bearing for exactly one paper and it is stated here rather than left implicit: {[gkiouzepi2023_collaborative]} queries **no** archive — it argues ad libraries cannot deliver targeting transparency and proposes a panel-based alternative. **Excluding it gives 10 rather than 11**, and a reader who prefers the narrower rule should read every "11" on this page as "10, plus one critique".
  
 ^ What %%/Ad Library|Ads? Archive API/i%% actually matched, over 5,855 full texts ^ Papers ^ ^ What %%/Ad Library|Ads? Archive API/i%% actually matched, over 5,855 full texts ^ Papers ^
Line 182: Line 204:
 ^ Verdict ^ Papers ^ What these are ^ ^ Verdict ^ Papers ^ What these are ^
 | **archive as instrument or as object** | **11** | the audited set this page reports | | **archive as instrument or as object** | **11** | the audited set this page reports |
-| bibliography or related-work mention only | 8 | six of them cite {[edelson2020_security]} and nothing else |+| bibliography or related-work mention only | 8 | **three** cite {[edelson2020_security]} and nothing else; the other **five** are citing a paper called //Longitudinal Analysis of Android Ad Library Permissions//, which is about advertising SDKs |
 | Android advertising SDK | 8 | e.g. a table column headed "Ad Library" listing AdMob and Unity | | Android advertising SDK | 8 | e.g. a table column headed "Ad Library" listing AdMob and Unity |
 | an ad archive in another sense | 2 | a crowdworker stimulus corpus; the ad ecosystem's own inventory | | an ad archive in another sense | 2 | a crowdworker stimulus corpus; the ad ecosystem's own inventory |
Line 200: Line 222:
 | 2024 | IMC | {[bouchaud2024_beyond]} | Meta Ad Library API, DSA all-EU scope | the archive is the object | | 2024 | IMC | {[bouchaud2024_beyond]} | Meta Ad Library API, DSA all-EU scope | the archive is the object |
 | 2025 | NDSS | {[bitaab2025_scammagnifier]} | Meta Ad Library | secondary corpus for scam ads | | 2025 | NDSS | {[bitaab2025_scammagnifier]} | Meta Ad Library | secondary corpus for scam ads |
-| 2026 | PoPETs | {[benzaamia2026_year]} | four platforms' DSA repositories | the repositories are the object | +| 2026 | PoPETs | {[benzaamia2026_year]} | Meta, Google and X repositories (Facebook, Instagram, YouTube, X) | the repositories are the object | 
-| 2026 | PoPETs | {[breuer2026_ad]} | Google Ads Transparency Center via BigQuery | intended ground truth, rejected |+| 2026 | PoPETs | {[breuer2026_ad]} | Google Ads Transparency Center via BigQuery, and Apple's Ad Repository | intended ground truth; rejected for Google, passed for Apple |
  
-Per venue: TheWebConf 3, IEEE S&P 2, IMC 2, PoPETs 2, USENIX Security 1, NDSS 1. Per year: 2020:2, 2021:1, 2022:1, 2023:3, 2024:1, 2025:1, 2026:2. **2025 and 2026 are provisional** venue-years — CCS 2026 and IMC 2026 have not been held, and IEEE S&P 2026 and TheWebConf 2026 abstracts are not in OpenAlex, so those years are under-represented by construction rather than by relevance ([[literature:corpus]]).+Per venue: TheWebConf 3, IEEE S&P 2, IMC 2, PoPETs 2, USENIX Security 1, NDSS 1. Per year: 2020:2, 2021:1, 2022:1, 2023:3, 2024:1, 2025:1, 2026:2. **2025 and 2026 are provisional** venue-years: CCS 2026 and IMC 2026 have not been held, and OpenAlex has DOIs before abstracts for much of 2026 — **563** papers have a DOI and no abstract, dominated by TheWebConf 2026 (324) and IEEE S&P 2026 (194) — so, since selection screens on abstracts, those venue-years are under-covered by construction rather than by relevance ([[literature:corpus]]).
  
-Eight of the eleven used Meta's archive; three used Google's; **none** used any of the other eleven DSA repositories. Set against a floor of **180** papers in this corpus whose measured phenomenon is advertising-shaped, the audited set is **10** of them — about **5.6%** of advertising measurement in these venues touches an archive.((The 180 is a candidate set over the free-text ''%%detection.phenomenon%%'' field and therefore a floor, not a population: a paper that measured advertising without using an ad-shaped word in that field is invisible to it. The field is only about 20% stable run-to-run, so treat 180 as an order of magnitude and 5.6% as a ratio between two candidate sets.))+Hand-assigned per paper from its own methods section, the archives used are **Meta 8, Google 3, X 1, Apple 1** — a paper can use several, so these do not sum to 11, and {[gkiouzepi2023_collaborative]} queries no archive at all. Nine of the thirteen repositories have **no** user in these venues. The assignment is by hand and not by regex on purpose: {[zeng2021_polls]} writes "//Google's (or others') political ad transparency reports//", whose parenthetical defeats any pattern for //Google's political ad …//, and {[benzaamia2026_year]} studies four platforms' repositories at once. Set against a floor of **180** papers in this corpus whose measured phenomenon is advertising-shaped, the audited set is **10** of them — about **5.6%** of advertising measurement in these venues touches an archive.((The 180 is a candidate set over the free-text ''%%detection.phenomenon%%'' field and therefore a floor, not a population: a paper that measured advertising without using an ad-shaped word in that field is invisible to it. The field is only about 20% stable run-to-run, so treat 180 as an order of magnitude and 5.6% as a ratio between two candidate sets.))
  
 ==== Measured results you can cite ==== ==== Measured results you can cite ====
  
-Each figure with the paper's own denominator, and each quote verified against the paper's full text (see [[provenance:design:platforms:ad_archives]] for the check, which needed a ''pypdf'' fallback for 11 of 51 strings).+Each figure with the paper's own denominator, and each quote verified against the paper's full text. The checker covers **67** strings and all 67 resolve, but **11** of them needed a live ''pypdf'' extraction because the corpus's de-columned rendering had spliced the sentence, and two more needed a ligature-folded match; see [[provenance:design:platforms:ad_archives]].
  
 ^ Finding ^ Denominator the paper used ^ ^ Finding ^ Denominator the paper used ^
Line 215: Line 237:
 | **55%** false-positive rate among US ads Facebook flagged as political; **4.5%** false negatives worldwide (**116,963** ads), **0.85%** in the US against up to **45%** elsewhere; **40%** of ads detected in under a day {[lepochat2022_audit]} | 33.8 M unique ads observed; 4.2 M political and 29.6 M non-political from all 215,030 pages that ran a political ad, mid-2020 to early 2021 | | **55%** false-positive rate among US ads Facebook flagged as political; **4.5%** false negatives worldwide (**116,963** ads), **0.85%** in the US against up to **45%** elsewhere; **40%** of ads detected in under a day {[lepochat2022_audit]} | 33.8 M unique ads observed; 4.2 M political and 29.6 M non-political from all 215,030 pages that ran a political ad, mid-2020 to early 2021 |
 | **7.7%** moderation recall on undeclared political ads; **60.4%** of Meta's own moderations outside Meta's stated criteria; a conservative **1,217** undeclared political ads launched daily; **92** pages moderated 28+ times, **82** still active {[bouchaud2024_beyond]} | all EU ads via the Ad Library API, 16 countries, Aug 2023 – Feb 2024; 29.5 M ads for inference | | **7.7%** moderation recall on undeclared political ads; **60.4%** of Meta's own moderations outside Meta's stated criteria; a conservative **1,217** undeclared political ads launched daily; **92** pages moderated 28+ times, **82** still active {[bouchaud2024_beyond]} | all EU ads via the Ad Library API, 16 countries, Aug 2023 – Feb 2024; 29.5 M ads for inference |
-| **48%** of Facebook and **9%** of Instagram ads seen by real users were missing from the platform's DSA repository; **98.9%** of YouTube explanations "//cite only the main targeting form//" {[benzaamia2026_year]} | 351 Facebook and 438 Instagram ads matched, from 48,511 donated ad explanations across four platforms |+| **≤48%** of Facebook and **≤9%** of Instagram ads seen by real users could not be matched to a DSA repository entry (an upper bound on missingness); **98.9%** of YouTube explanations "//cite only the main targeting form//"; **1,458 of 2,190** X repository entries matched by Tweet ID {[benzaamia2026_year]} | 351 Facebook and 438 Instagram ads matched, from 48,511 donated ad explanations across four platforms |
 | Only **34 of 835** ads a classifier judged political had a matching archive entry {[silva2020_facebook]} | 38,110 ads collected from Brazilian volunteers, 2018 | | Only **34 of 835** ads a classifier judged political had a matching archive entry {[silva2020_facebook]} | 38,110 ads collected from Brazilian volunteers, 2018 |
-| Play Store ads were "//entirely missing from the Ad Transparency dataset//"; a location-only campaign was listed in the repository with **three** targeting parameters the advertiser never selected {[breuer2026_ad]} | 257,820 ads and 378,057 recommendations from 249 accounts on the EU Apple and Google app stores |+| Play Store ads were "//entirely missing from the Ad Transparency dataset//", and the web interface showed fewer ads than the BigQuery dataset for the same advertiser {[breuer2026_ad]} | 257,820 ads and 378,057 recommendations from 249 accounts on the EU Apple and Google app stores | 
 +| A campaign the authors bought themselves, targeted on **location only**, was listed in Google's repository with **three** targeting parameters — including demographics and contextual signals the advertiser never selected {[benzaamia2026_year]} | one controlled YouTube campaign created through Google Ads Manager, targeting France |
 | Targeting formula inferred correctly in **17 of 45** controlled campaigns, **65%** where 10+ panel users received the ad; **86 of 1,021** ad receptions went to users lacking a targeted attribute {[gkiouzepi2023_collaborative]} | 420 panel users in Brazil, 51,681 Facebook Ads Manager audience-size queries | | Targeting formula inferred correctly in **17 of 45** controlled campaigns, **65%** where 10+ panel users received the ad; **86 of 1,021** ad receptions went to users lacking a targeted attribute {[gkiouzepi2023_collaborative]} | 420 panel users in Brazil, 51,681 Facebook Ads Manager audience-size queries |
 | **44,949** ads from 39 parties; populist parties reached **50%** more male audiences {[capozzi2023_thin]} | Meta Ad Library API, 57 party and leader pages, five EU countries, April–May 2019 | | **44,949** ads from 39 parties; populist parties reached **50%** more male audiences {[capozzi2023_thin]} | Meta Ad Library API, 57 party and leader pages, five EU countries, April–May 2019 |
Line 228: Line 251:
 Every query, the report script and its unedited output, the full hand-audit with its rejected residue, the quote checks with their fallback modes, and every external source with its fetch date and the ones we rejected are on **[[provenance:design:platforms:ad_archives]]**. Corpus-level caveats — the seven-venue scope, the provisional 2025–2026 slice, field stability — are on [[literature:corpus]]. Every query, the report script and its unedited output, the full hand-audit with its rejected residue, the quote checks with their fallback modes, and every external source with its fetch date and the ones we rejected are on **[[provenance:design:platforms:ad_archives]]**. Corpus-level caveats — the seven-venue scope, the provisional 2025–2026 slice, field stability — are on [[literature:corpus]].
  
-Four limits worth restating here. The corpus is **seven security, privacy and measurement venues**: political-advertising measurement also lives in ICWSM, CHI, FAccT, //Political Communication// and the internet-policy journals, none of which are in it, so **eleven papers is a count for these seven venues and certainly not for the field**. The audited set is small enough that **every figure about it is a count, not a rate** — do not compute confidence intervals on eleven papers. The archive-by-archive table rests on **provider documentation**, which is the primary source but also the interested party. And the negative rows — TikTok 0, X 0, LinkedIn 0 — are **probe results over full text**: a paper that used X's CSV without naming the repository is invisible to them, though at these counts that is unlikely to hide more than one or two papers.+Four limits worth restating here. The corpus is **seven security, privacy and measurement venues**: political-advertising measurement also lives in ICWSM, CHI, FAccT, //Political Communication// and the internet-policy journals, none of which are in it, so **eleven papers is a count for these seven venues and certainly not for the field**. The audited set is small enough that **every figure about it is a count, not a rate** — do not compute confidence intervals on eleven papers. The archive-by-archive table rests on **provider documentation**, which is the primary source but also the interested party. And the zero rows — TikTok, LinkedIn, Bing, Snapchat, Amazon and the retail repositories — are **probe results over full text**: a paper that used one without naming it is invisible to them, though at these counts that is unlikely to hide more than one or two papers.
  
 ===== Which Methods Are Current ===== ===== Which Methods Are Current =====
  
 ^ Method ^ Verdict ^ Evidence ^ ^ Method ^ Verdict ^ Evidence ^
-| Meta Ad Library API for **worldwide political** ads | **current** | 7-year retention, verified 2026-09-08; 8 papers in this corpus |+| Meta Ad Library API for **worldwide political** ads | **current** | 7-year retention, verified 2026-09-08; **8** of the 11 audited papers used Meta's archive in some form |
 | Meta Ad Library API for **EU political** ads | **historical from October 2025** | Meta stopped delivering EU political ads on 6 October 2025; the back catalogue remains for 7 years | | Meta Ad Library API for **EU political** ads | **historical from October 2025** | Meta stopped delivering EU political ads on 6 October 2025; the back catalogue remains for 7 years |
 | Meta Ad Library API for **all EU ads** (DSA scope) | **current, and the largest under-used surface here** | scope added August 2023 {[bouchaud2024_beyond]}; 1-year window | | Meta Ad Library API for **all EU ads** (DSA scope) | **current, and the largest under-used surface here** | scope added August 2023 {[bouchaud2024_beyond]}; 1-year window |
 | Google political-ads **BigQuery** public dataset | **current outside the EU; EU inflow stopped** | Google's own FAQ: "//published as a public data set on Google Cloud BigQuery//"; EU political ads ended before October 2025 | | Google political-ads **BigQuery** public dataset | **current outside the EU; EU inflow stopped** | Google's own FAQ: "//published as a public data set on Google Cloud BigQuery//"; EU political ads ended before October 2025 |
 | Google **Ads Transparency Center** for commercial ads | **current, BigQuery-backed, and demonstrably incomplete on both surfaces** | {[breuer2026_ad]} found Play Store ads entirely absent from the dataset, and found the web interface showing //fewer// ads than the BigQuery dataset for the same advertiser | | Google **Ads Transparency Center** for commercial ads | **current, BigQuery-backed, and demonstrably incomplete on both surfaces** | {[breuer2026_ad]} found Play Store ads entirely absent from the dataset, and found the web interface showing //fewer// ads than the BigQuery dataset for the same advertiser |
-| TikTok **Commercial Content API** | **current, EU-only, zero published use in these venues** | primary docs 2026-09-08; 0 of 5,855 papers | +| TikTok **Commercial Content API** | **current, EU-only, remediated under DSA pressure in December 2025, zero published use** | primary docs 2026-09-08; 0 of 5,855 papers; binding commitments accepted 5 December 2025 | 
-| X **Ads Repository** bulk CSV | **current, least gated, zero published use** | full commercial-communications CSV, no application, verified 2026-09-08 |+| X **Ads Repository** CSV | **current and least gated — and the subject of the DSA's first fine** | no application, verified 2026-09-08; **1** paper {[benzaamia2026_year]}; the Commission found it "//fails to meet the transparency and accessibility requirements of the DSA//" on 5 December 2025 | 
 +| **Apple** App Store Ad Repository | **current, and the one archive that passed a sampled completeness check** | {[breuer2026_ad]} "//did not detect missing entries//", but Apple omits the per-ad recipient count Art. 39(2)(g) requires | 
 +| **Amazon** Store Ad Library API | **current, free, EU-only, zero published use** | own documentation 2026-09-08; obligation upheld by the Court of Justice on 27 March 2024 |
 | The **EU European repository** for political ads | **specified, not yet a usable instrument here** | Implementing Reg. (EU) 2026/818, 9 April 2026; 0 papers | | The **EU European repository** for political ads | **specified, not yet a usable instrument here** | Implementing Reg. (EU) 2026/818, 9 April 2026; 0 papers |
-| Treating an archive as **ground truth** | **superseded** | {[breuer2026_ad]} rejected it explicitly; {[silva2020_facebook]}, {[lepochat2022_audit]}, {[bouchaud2024_beyond]}, {[benzaamia2026_year]} all measure the archive's error instead |+| Treating an archive as **ground truth** | **don't** | not a method that was standard and got replaced: {[breuer2026_ad]} tried it in 2026 and could not, and four papers spanning 2020–2026 measure the archive's error instead of assuming it away. Using an archive as a **corpus** is a different and perfectly current thing — {[capozzi2023_thin]}, {[coelho2023_propaganda]} and {[bitaab2025_scammagnifier]} all do it |
 | **Two-sided error analysis** against the platform's published criteria | **current best practice** | {[lepochat2022_audit]}, {[bouchaud2024_beyond]} | | **Two-sided error analysis** against the platform's published criteria | **current best practice** | {[lepochat2022_audit]}, {[bouchaud2024_beyond]} |
 | **Donation panel** as the archive's control | **current and rising** | {[benzaamia2026_year]}, {[ali2023_problematic]}, {[chen2026_when]}; 25 papers mention data donation, 11 in 2025 | | **Donation panel** as the archive's control | **current and rising** | {[benzaamia2026_year]}, {[ali2023_problematic]}, {[chen2026_when]}; 25 papers mention data donation, 11 in 2025 |
-| **Own-campaign** ground truth | **current, small-scale, expensive** | {[gkiouzepi2023_collaborative]}, {[breuer2026_ad]}, {[venkatadri2019_auditing]} |+| **Own-campaign** ground truth | **current, small-scale, expensive** | {[gkiouzepi2023_collaborative]}, {[benzaamia2026_year]}, {[venkatadri2019_auditing]} |
 | **LLM classification** of archive ad text | **new: first appearances 2024–2026** | {[bouchaud2024_beyond]} uses an LLM to examine non-moderated ads; {[chen2026_when]} runs zero-shot Gemini over donated ad sequences, reaching 76.38% gender and 41.60% party accuracy at user level | | **LLM classification** of archive ad text | **new: first appearances 2024–2026** | {[bouchaud2024_beyond]} uses an LLM to examine non-moderated ads; {[chen2026_when]} runs zero-shot Gemini over donated ad sequences, reaching 76.38% gender and 41.60% party accuracy at user level |
 | **CrowdTangle** for adjacent organic content | **withdrawn** | discontinued 14 August 2024; see [[Design:Platforms]] | | **CrowdTangle** for adjacent organic content | **withdrawn** | discontinued 14 August 2024; see [[Design:Platforms]] |
Line 264: Line 289:
  
 <WRAP todo> <WRAP todo>
-  * **Nobody has published from TikTok's Commercial Content API or X's Ads Repository in these seven venues.** X's is a no-application bulk CSV of all EU commercial communications — the cheapest large ad dataset described anywhere on this wiki. The first paper to use it writes the methods section that does not exist.+  * **Nine of the thirteen repositories have never been used in these seven venues** — TikTok's, LinkedIn's, Bing's, Snapchat's, Amazon's free API and every retail one. X's has a single user, who matched into it from a donated set rather than characterising the file itself. Any of the nine would be a first methods section.
   * **What does the October 2025 cliff do to EU political-ad research?** The instrument that produced this literature's best work no longer receives new data in its most-studied jurisdiction, and zero papers in this corpus have noticed. Somebody has to write the post-TTPA design.   * **What does the October 2025 cliff do to EU political-ad research?** The instrument that produced this literature's best work no longer receives new data in its most-studied jurisdiction, and zero papers in this corpus have noticed. Somebody has to write the post-TTPA design.
   * **Is the European repository going to be usable?** Implementing Reg. (EU) 2026/818 specifies a data structure and an API. Whether it aggregates small publishers usefully, and whether it is queryable in bulk, is an empirical question nobody has answered.   * **Is the European repository going to be usable?** Implementing Reg. (EU) 2026/818 specifies a data structure and an API. Whether it aggregates small publishers usefully, and whether it is queryable in bulk, is an empirical question nobody has answered.
-  * **Only one paper has compared archives across platforms**, and it did so through a donation panel of 48,511 ads on four platforms {[benzaamia2026_year]}. A direct comparison across all of them on DSA-mandated fields has been done once, by Mozilla and Check First in 2024 over twelve services, and never in a peer-reviewed venue. +  * **Only two papers have compared archives across platforms**, and neither covers more than four: {[benzaamia2026_year]} through a donation panel of 48,511 ads on Facebook, Instagram, YouTube and X, and {[breuer2026_ad]} on Google's and Apple's app-store repositories. A direct comparison across all thirteen on DSA-mandated fields has been done once, by Mozilla and Check First in 2024 over twelve services, and never in a peer-reviewed venue. 
-  * **The archives' error rates have only been measured for political ads.** Every two-sided error figure on this page is about a political classifier. Nobody has measured whether the DSA all-ads repositories are complete for **commercial** ads, where there is no category classifier to be wrong — only ingestion to fail. {[benzaamia2026_year]}'s 48% is the closest thing, and it is about matching.+  * **The archives' //two-sided// error has only been measured for political ads.** Every false-positive figure on this page is about a political classifier, because a commercial-ad repository has no category classifier to be wrong — only ingestion to fail. Pure completeness has been measured for commercial ads exactly twice, both by {[breuer2026_ad]}, with opposite results on Google (total absence for Play Store ads) and Apple (no missing entries in a sample), on a small sample each. Whether the EU all-ads repositories are complete at scale is open.
   * **Removed ads are the interesting ads, and Article 39(3) redacts them.** No paper in this corpus has tried to measure what is behind that redaction, or to check whether platforms apply it as narrowly as the text allows.   * **Removed ads are the interesting ads, and Article 39(3) redacts them.** No paper in this corpus has tried to measure what is behind that redaction, or to check whether platforms apply it as narrowly as the text allows.
 </WRAP> </WRAP>
design/platforms/ad_archives.1788866367.txt.gz · Last modified: by karel.kubicek.claude