Microsoft Ads Library Scraper: Bing Ads & Impressions
Pricing
from $1.50 / 1,000 ads
Microsoft Ads Library Scraper: Bing Ads & Impressions
Scrape the Microsoft (Bing) Ads Library: every Bing search ad an advertiser ran in the EU/EEA, with ad copy, URLs, images and optional details (first/last shown, impressions range, impressions by country, targeting). Official public API, no login. $1.50 per 1,000 ads. Unofficial.
Pricing
from $1.50 / 1,000 ads
Rating
0.0
(0)
Developer
Kyungmin Lee
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
What does Microsoft Ads Library Scraper do?
Microsoft Ads Library Scraper pulls every Bing search ad an advertiser has run in Europe out of the Microsoft Ads Library, Microsoft's public ad transparency database. Type a brand name (Nike, Booking) or paste advertiser IDs. You get each ad as a clean row: headline, description, display URL, landing page, images, the advertiser's verified identity and a link to the ad's Library page. Turn on ad details to also get first and last shown dates, total impressions range (with numeric min/max), impression share by country, targeting types and who paid for the ad.
It calls Microsoft's publicly documented Ad Library API (adlibrary.api.bingads.microsoft.com) without any account, login or browser, so runs are fast and cheap. The Library covers ads shown in the European Economic Area (EU + Iceland, Liechtenstein, Norway) since June 2023.
Using Google too? Pair this Actor with Google Ads Transparency Center Scraper for Google + Bing search ads transparency with the same workflow and field names.
Why use Microsoft Ads Library Scraper?
- PPC competitor research: see every Bing/Microsoft Advertising ad a competitor runs, their copy, landing pages and which EU markets they target.
- Agency reporting: schedule a weekly run per client or competitor and send new ads to Sheets, Slack or your dashboard.
- Reach estimates: impressions ranges and per-country impression shares show where a campaign actually ran and how big it was.
- Compliance and brand protection: find advertisers using your brand in their ads and check "paid for by" and restriction information published under the EU Digital Services Act.
- Ad copy datasets: collect thousands of real search ad headlines and descriptions for creative research or AI training.
How to use Microsoft Ads Library Scraper
- Enter one or more Advertiser names (for example
Nike) or Advertiser IDs / advertiser page URLs. - Optionally pick Countries (
Germany,FR,NL...) and a date window (Shown from / Shown until, absolute or relative like30 days). - Set Max ads per advertiser (default 100) and switch on Include ad details if you need dates, impressions and targeting.
- Click Start. Ads appear in the Dataset tab; export JSON, CSV, Excel or HTML, or read them through the Apify API.
Each name is resolved to the best-matching advertiser account. Microsoft's own search also returns unrelated names that merely contain your text ("nike" inside "Kliniken"); the Actor ignores those and logs which advertiser it picked. Raise Advertisers per name to include sister accounts (for example several Booking.com B.V. accounts).
Input
| Field | Type | Default | Description |
|---|---|---|---|
advertiserNames | array | ["Nike"] (prefill) | Brand or company names; IDs and advertiser URLs also work |
maxAdvertisersPerName | integer | 1 | Matching advertiser accounts to scrape per name |
advertiserIds | array | – | Numeric IDs (4295000966) or https://adlibrary.ads.microsoft.com/advertiser/... URLs |
countries | array | all EU/EEA | Names, ISO codes or Microsoft codes; with no advertiser, lists all advertisers' ads there |
dateFrom, dateTo | string | – | YYYY-MM-DD or relative (30 days, 3 months) |
maxAdsPerQuery | integer | 100 | Max ads per advertiser (up to 10,000) |
includeAdDetails | boolean | false | Dates, impressions, country shares, targeting, paid-for-by |
keywords | array | – | Experimental keyword search in ad copy (see FAQ) |
proxyConfiguration | object | off | Apify Proxy, only if you see repeated rate limits |
{"advertiserNames": ["Nike", "Booking"],"countries": ["Germany", "FR"],"dateFrom": "3 months","maxAdsPerQuery": 200,"includeAdDetails": true}
Output
One dataset item per ad (duplicates removed by adId):
{"adId": "79852171128411","advertiserId": "4294969411","advertiserName": "Booking.com B.V.","advertiserCountry": "Netherlands","advertiserVerified": true,"title": "Mercato Centrale Florence - Mejor Precio Garantizado","description": "Booking.com Web Oficial – Hotel. Reserva Fácil, Rápida, Segura y Con Confirmación Inmediata.","displayUrl": "www.booking.com","destinationUrl": "https://www.booking.com/hotel/it/piazza-del-mercato-centrale.es.html?aid=2276447","landingDomain": "booking.com","imageUrls": [],"detailsIncluded": true,"paidForBy": null,"firstShown": "2024-02-27","lastShown": "2026-08-03","daysShown": 889,"impressionsRange": "100 - 250","impressionsMin": 100,"impressionsMax": 250,"impressionsByCountry": [{ "country": "Spain", "countryCode": "ES", "impressionSharePercent": 97.8 },{ "country": "Italy", "countryCode": "IT", "impressionSharePercent": 2.2 }],"targetingTypes": ["Location", "MicrosoftAudiences"],"targetingExcludedTypes": ["Location"],"restrictionReason": null,"libraryUrl": "https://adlibrary.ads.microsoft.com/ad/79852171128411","advertiserLibraryUrl": "https://adlibrary.ads.microsoft.com/advertiser/4294969411","searchType": "advertiserName","searchQuery": "Booking","scrapedAt": "2026-10-15T03:07:09+00:00"}
A SUMMARY record in the run's key-value store lists which advertiser each name matched, how many ads Microsoft reports per query, and the events charged.
Data fields
| Field | Description |
|---|---|
adId, libraryUrl | Microsoft ad ID and its public Ad Library page |
advertiserId, advertiserName, advertiserLibraryUrl | Advertiser account or verified legal entity |
advertiserCountry, advertiserVerified | Registration country and verification status (filled for advertisers you search by name or ID) |
title, description, displayUrl | Ad copy as shown on Bing (for dynamic ads, a recent representative version) |
destinationUrl, landingDomain | Landing page and its domain |
imageUrls, assets | Images attached to the ad (shopping and multimedia ads) |
firstShown, lastShown, daysShown | First/last recorded EEA impression (details only) |
impressionsRange, impressionsMin, impressionsMax | Total EEA impressions bucket, e.g. 250K - 500K, plus numbers (details only) |
impressionsByCountry | Impression share per EU/EEA country (details only) |
targetingTypes, targetingExcludedTypes | Targeting used: Location, Age, Gender, MicrosoftAudiences, AdvertiserAudiences (details only) |
paidForBy, restrictionReason | Payer if different from the advertiser; why an ad was restricted (details only) |
searchType, searchQuery | Which of your inputs produced the ad |
Pricing
Pay per event, no subscription. You pay only for ads saved to the dataset:
| Event | Price | When |
|---|---|---|
ad | $1.50 per 1,000 ads ($0.0015 each) | Each ad saved without details |
ad-details | $2.00 per 1,000 ads ($0.002 each) | Each ad saved with details (charged instead of ad) |
Examples: one competitor's 100 newest ads ≈ $0.15; 1,000 ads with full details ≈ $2.00. Unknown advertisers, empty searches, failed requests and the experimental keyword search are never charged. Ads whose details Microsoft refuses to return are still saved and charged at the ad price. Set a maximum charge per run and the Actor stops exactly there.
Tips
- Use the legal or account name shown on adlibrary.ads.microsoft.com when a brand name is ambiguous, or paste the advertiser ID.
- Microsoft returns at most 1,000 ads for one query and its pages overlap. The Actor removes duplicates and, when you ask for more than one query can give, splits the query by country and date range automatically.
- Listing ads is quick (about 1,000 ads in 5-8 minutes). Details need one rate-limited request per ad (roughly 5 s each), so 100 ads with details take about 8-10 minutes.
- Schedule a weekly run with
dateFrom: "7 days"to track only recent ads. - For a few very large advertisers (for example Booking.com) Microsoft's API never answers when countries and dates are combined. The Actor detects this, skips that advertiser without charging and tells you; run it again with only countries or only a date range.
- Leave the proxy off. The Actor already spaces requests and backs off on HTTP 429.
FAQ
Is this an official Microsoft product? No. This is an unofficial tool, not affiliated with or endorsed by Microsoft. It uses Microsoft's publicly documented, unauthenticated Ad Library API and returns only what Microsoft publishes for transparency.
Which ads are included? Ads shown on Bing in the EU/EEA, recorded since June 2023. Ads shown only outside Europe (for example US-only campaigns) are not in the Library.
Can I search by keyword in ad copy? Not right now. Microsoft's keyword search endpoint currently fails on their server (HTTP 500 or timeout). The Actor tries it once, logs a warning, skips keywords and charges nothing for them. It will work automatically once Microsoft fixes it. Until then, search by advertiser name, ID or country.
Do I get spend or clicks? No. Microsoft publishes impressions ranges and country shares, not spend or clicks.
Is it legal? The data is published by Microsoft for anyone to view without login under the EU Digital Services Act. You are responsible for how you use it. Advertiser names are the business identities Microsoft discloses; no other personal data is collected.
Something broken or missing? Open an issue in the Issues tab with your input and we will fix it quickly.