Scrape the Microsoft Ads Library, the public EU archive of ads shown on Bing and the Microsoft Advertising Network, by keyword, advertiser or ad id. One row per distinct ad, charged once: ad copy, landing URL, first and last shown, impressions, countries, payer, targeting. JSON, CSV, API.
The status message and the free invalid row of a run refused for its input (also when the dataset refused that row) now say that only the run's start fee was charged; they said before that nothing was charged. The log line of an invalid input says the same. The stop on a dataset that cannot be read back now says nothing more is charged and that the start fee was, and the hint of the error row names the start fee next to the events charged before the error.
When Microsoft's Ad Library fails (a server error, no answer, a misshapen answer or its rate limit), the run still ends green, and its status message now says that Microsoft's Ad Library is failing, with the cause, how many searches could not be read in full, that nothing was charged for them, and to try again later.
The example input is an advertiser search (eBay Marketplaces GmbH) since 2026-10-20.
0.1 (2026-10-06)
First version. Search the Microsoft Ad Library by keyword, advertiser name or id, ad id or library URL; one row per distinct ad, each charged once per run.
Detail record per ad on request: payer, first and last day shown, impressions band with numeric bounds, impression share per country, targeting types.
Advertiser register search, advertiser country and verified status on request.
Deep search: a search the archive caps at 1,000 results is split by date.
Named memory: later runs deliver only ads not delivered before.
Free coverage row per search, free status row per miss, one summary row per run.