Bing Ads Library Scraper - Microsoft Ads Monitor (EU)
Pricing
from $1.50 / 1,000 ads
Bing Ads Library Scraper - Microsoft Ads Monitor (EU)
Track competitors' Bing ads from Microsoft's official Ad Library (EU/EEA). Search by advertiser or ad text, filter by country and date, get ONLY NEW ads since the last run, with impressions by country, targeting, paid-for-by and run dates.
Pricing
from $1.50 / 1,000 ads
Rating
0.0
(0)
Developer
Ivan Petrus
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 hours ago
Last modified
Categories
Share
Bing Ads Library Scraper: Microsoft Ads Monitor for the EU
Bing ads scraper built on Microsoft's official, public Ad Library API. Enter competitor advertiser names, advertiser IDs or words from the ad copy. You get every Bing ad Microsoft has recorded for them in the EU/EEA: title, description, display and landing URL, plus (with details) first/last shown dates, total impressions range, impression share by country, targeting types and "paid for by". With "Only new ads" on, every scheduled run returns only ads that appeared since the last run, so the dataset becomes a competitor-ads alert feed.
No login, no cookies, no browser: the actor reads Microsoft's documented public API, with retries, HTTP 429 handling and proxy rotation. Failed searches are never charged.
Sample output
One ad row from a real Apify cloud run (Oct 2026, advertiser "Booking.com B.V.", details on), shortened:
{"type": "ad","advertiserName": "Booking.com B.V.","adId": "79852171128411","title": "Mercato Centrale Florence - Mejor Precio Garantizado","description": "Booking.com Web Oficial – Hotel. Reserva Fácil, Rápida, Segura y Con Confirmación Inmediata.","destinationDomain": "booking.com","startDate": "2024-02-27","endDate": "2026-08-03","totalImpressionsRange": "100 - 250","impressionsByCountry": [{"countryCode": "ES", "impressionShare": 97.8}, {"countryCode": "IT", "impressionShare": 2.2}],"targetingTypes": ["Location", "MicrosoftAudiences"],"isNew": true}
What you get
| Data | Details |
|---|---|
| 🆕 New-ads diff | Remembers seen ads (named key-value store) and outputs only new ones on later runs. Each row has isNew. |
| ✍️ Ad copy | title, description, displayUrl, destinationUrl (with UTM/tracking parameters, which often reveal campaign names), destinationDomain |
| 🏢 Advertiser | advertiserName, advertiserId, paidForBy (when someone else paid, e.g. an agency) |
| 📅 Run dates | startDate, endDate, daysRunning (first/last impression recorded in the EU/EEA) |
| 📊 Reach | totalImpressionsRange ("10K - 25K"), numeric impressionsMin/impressionsMax, impressionsByCountry (% share per EU/EEA country), topCountry |
| 🎯 Targeting | targetingTypes (Location, Age, Gender, MicrosoftAudiences, AdvertiserAudiences) and alsoUsedForExclusion |
| 📋 Summary row (free) | Per advertiser / search term: ads in the library, ads fetched, new ads since last run, top advertisers, top countries |
Filters: countries (EU/EEA 2-letter codes), date range (lastDays, or dateFrom/dateTo), max ads per target. Advertiser names are resolved automatically (one brand often has several Microsoft Advertising accounts; best checks all accounts with the exact name).
Use cases
- Daily competitor alerts for Bing / Microsoft Advertising: schedule it every morning and get only the new ads by email, Slack, Google Sheets or webhook.
- PPC research in Europe: see which headlines, offers and landing pages competitors run on Bing, how long they keep them, and in which countries they get impressions.
- Agencies: monitor many advertisers in one run; the
paidForByfield shows which agency pays for an account. - Keyword / message research: search ad text ("car insurance", "crm software") to see who advertises on a theme.
- Compliance and brand protection: spot advertisers using your brand name in their ad copy.
Input examples
Daily monitor (new ads only):
{ "advertiserNames": ["Booking.com B.V."], "onlyNewAds": true, "maxAdsPerTarget": 100 }
Who advertises "car insurance" in Germany, last 30 days:
{ "searchTerms": ["car insurance"], "countries": ["DE"], "lastDays": 30, "onlyNewAds": false }
Exact account, fast copy-only export (no details):
{ "advertiserIds": ["4294969411"], "includeDetails": false, "maxAdsPerTarget": 500, "onlyNewAds": false }
Start monitoring silently (record current ads, output nothing on the first run):
{ "advertiserNames": ["Zalando SE"], "advertiserNameMatch": "allSimilar", "firstRunBehavior": "baselineOnly", "stateStoreName": "zalando-bing" }
Output example
{"type": "ad","target": "Booking.com B.V. (4294969411)","adId": "79852171128411","advertiserName": "Booking.com B.V.","advertiserId": "4294969411","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","destinationDomain": "booking.com","isNew": true,"paidForBy": null,"startDate": "2024-02-27","endDate": "2026-08-03","daysRunning": 889,"totalImpressionsRange": "100 - 250","impressionsByCountry": [ { "country": "Spain", "countryCode": "ES", "impressionShare": 97.8 }, { "country": "Italy", "countryCode": "IT", "impressionShare": 2.2 } ],"topCountry": "ES","targetingTypes": ["Location", "MicrosoftAudiences"],"alsoUsedForExclusion": ["Location"]}
Summary row (free): { "type": "summary", "target": "Booking.com B.V. (4294969411)", "totalAdsInLibrary": "1000+", "adsFetched": 50, "newAdsSinceLastRun": 3, "topCountriesInOutput": { "DE": 6, "ES": 6 } }
Failed searches appear as { "type": "error", "status": "failed", "error": "...", "hint": "..." } and are not charged.
Pricing (pay per event)
- $1.50 per 1,000 ads ($0.0015 per ad row), details included. With "Only new ads" on, you pay only for new ads.
- $0.002 per run start fee. No proxy or compute costs on top. Summary and error rows are free.
- Example: 10 competitors checked daily with ~5 new ads each costs about $0.08 per day.
Set Max ads per target or a maximum cost per run to cap spending. If the run stops at your limit, undelivered new ads are not marked as seen, so they arrive next time.
Limits you should know (from Microsoft's API)
- EU/EEA only. Microsoft publishes this library for the EU Digital Services Act, so it contains ads that got impressions in the EU/EEA (from advertisers anywhere in the world). Ads shown only in the US or UK are not in it.
- About 1,000 ads per query. The API returns at most ~1,000 results per search (
totalAdsInLibraryshows "1000+"). For very big advertisers, narrow withcountriesor a date range. - 1–3 day delay. New impressions appear in the library with a delay, so a "new" ad may have started a day or two earlier.
- Ordering is not chronological and paging can overlap; the actor removes duplicates, but for huge advertisers a single run may not see every ad. Running daily with a date window (
lastDays: 7) gives the best coverage. - Country filters are slow on Microsoft's side (sometimes 20–90 s per page). The actor waits longer and retries automatically.
- Rate limits. Unauthenticated calls are limited per IP. The actor paces requests and rotates Apify Proxy sessions on HTTP 429.
Daily alerts to Slack or email
- Fill in the input and click Save as a new task (one task per client or competitor set is a good pattern).
- In Schedules, create a schedule (for example every day at 08:00 in your time zone) and add the task.
- In the task's Integrations tab, add the Slack or Gmail integration to get a message when a run finishes,
or a webhook on "Run succeeded" that passes the run to Zapier, Make, n8n or your own endpoint. Those tools can read the rows from
https://api.apify.com/v2/datasets/{defaultDatasetId}/itemsand format them however you like.
Because monitor mode outputs only the ads that appeared since the previous run, every scheduled run's dataset is your alert list. An empty dataset (apart from free summary rows) means nothing changed. Turn on Apify's run-failure notifications too, so you hear about a failed run instead of silence.
Related actors
Part of a small competitor-intelligence suite by the same developer. Same conventions everywhere: pay per event, failed items are never charged, and the monitors return only what changed since the last run.
- Google Trends Scraper & API: interest over time, by region/city, top queries and Trending now for any country.
- Google Ads Transparency Scraper & New Ads Monitor: competitors' Google Search, Display and YouTube ads, with only-new-ads alerts.
- LinkedIn Ad Library Scraper & New Ads Monitor: competitors' LinkedIn ads without login, incl. EU impressions and targeting.
- ATS Jobs Scraper & Hiring Monitor: new and closed jobs from Greenhouse, Lever, Ashby, Workday and 6 more job boards, by company domain.
- App Store & Google Play Scraper: ratings, installs, versions, chart and keyword ranks of iOS and Android apps, with change rows.
FAQ
What is the Microsoft Ad Library? Microsoft's public repository of ads served on Bing (search, shopping and other Microsoft Advertising placements) in the EU/EEA, with the advertiser, payer, dates, reach and targeting. This actor returns the same data as the website adlibrary.ads.microsoft.com as JSON, CSV or Excel.
Do I need a Microsoft account or API key? No. The public API works without sign-up.
Does it show spend or clicks? No. Microsoft publishes impression ranges and country shares, not spend or clicks.
How do I find an advertiser ID? Just enter the advertiser name; resolved IDs are shown in the log and in the target field. Re-use them as advertiserIds for exact monitoring.
Can I get alerts? Yes. Schedule the actor and connect the dataset to email, Slack, Google Sheets, Zapier, Make or n8n. With "Only new ads", each run's dataset is your list of new ads.
Is it legal? It reads Microsoft's official public transparency API. You are responsible for how you use the data and for complying with applicable law.
Keywords: microsoft ads library scraper, bing ads library api, bing ads scraper, microsoft advertising competitor ads, bing ad spy, EU ad repository, DSA ad library, competitor ads monitor, new ads alert, ppc competitor research.