Bing Copilot Ads Scraper avatar

Bing Copilot Ads Scraper

Pricing

from $1.00 / 1,000 ads

Go to Apify Store
Bing Copilot Ads Scraper

Bing Copilot Ads Scraper

Bing Copilot Ads Scraper collects the sponsored ads Bing shows in AI Mode (Copilot Search): the Related Products carousel, text ads, and image ads. See who wins AI Mode for your keywords: which stores and brands advertise, at what price and discount, in which position, and next to which answer.

Pricing

from $1.00 / 1,000 ads

Rating

5.0

(1)

Developer

Gytis Ščipokas

Gytis Ščipokas

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Share

What does Bing Copilot Ads Scraper do?

Bing Copilot Ads Scraper collects the sponsored ads Bing shows in AI Mode (Copilot Search): the Related Products carousel, text ads, and image ads shown with Copilot's answer. See who wins AI Mode for your keywords: which stores and brands advertise, at what price and discount, in which position, and next to which answer.

Sponsored VPN products from McAfee, Bitdefender, and NordVPN in Bing AI Mode

Use cases

  • Competitor monitoring. See which stores advertise for your keywords, which products they push, at what price and discount.
  • Market research before buying ads. Find out how crowded a category is before you spend on Microsoft Ads.
  • Ad verification. Check that your own shopping and search ads show up in AI Mode, for which queries, and with the right details.
  • Trend tracking. Schedule daily runs over the same queries and build a history of the AI Mode ad market.

How to use it

  1. Open the Input tab.
  2. Add queries to Queries: a product type, like "best vpn", or a brand name, like "dyson".
  3. Click Start.
  4. Open the Output tab when the run finishes.

Input

FieldDescription
queriesWhat to ask Bing AI Mode. Every ad shown in the chat is saved. A product type ("best vpn", "best laptops for students") shows who advertises for it. A brand name ("nordvpn", "dyson") shows who advertises on it.
depthHow many chats each query gets: quick (8 chats, about $0.15 per query), standard (24, default, about $0.50), or deep (60, about $1.20). Prices include typical ads; the number of ads depends on what Bing shows. The run ends when every query has had its chats, so 3 queries at Standard means 72 chats. Bing rotates its ads, so more chats find more ads and advertisers.
countryTwo-letter country code, like US, GB, or CZ, picked from a list. Chats run from this country, so you see the ads and currency shown there. Default US.
saveScreenshotsSaves proof of the ads: a screenshot of the message with the ads Bing showed for it, and the ads' HTML with every field Bing sent. Linked from screenshotUrls and htmlUrl. Default off. Adds a few seconds per turn with ads, no extra charge.
includeOrganicLinksAdvanced. Also saves the links Bing cited in its answer, as organicLinks. Default off. Waits for the whole answer, so each chat takes about twice as long, and each chat is also charged an Answer links event.
followUpQueriesAdvanced. Optional, empty by default. Sent in order after each query, the same for every query. Bing shows its ads on the query itself, so follow-ups rarely bring more ads and add 30-40 seconds each. Each one sent is charged a Follow-up event. Up to 8.

See which brands advertise for a topic

{
"queries": ["best vpn", "best laptops for students"]
}

See who advertises on a brand name

A brand name shows who bids on it: the brand's own ads, competitors trying to win its customers, and resellers selling its products. Use it to see who targets your brand, or a competitor's.

{
"queries": ["nordvpn", "dyson"]
}

See the ads in another country

{
"queries": ["best vpn"],
"country": "GB"
}

Check that your own ads show up

Use the queries your customers ask and turn on Save ad proof. Filter the results by landingDomain to find your ads, with a screenshot of each.

{
"queries": ["dyson"],
"saveScreenshots": true
}

Output example

You get one dataset item per ad:

{
"query": "best running shoes",
"turn": 1,
"message": "best running shoes",
"country": "US",
"chatId": "f02e0a29-ffb8-40ae-b308-d31bb3b6ba48",
"adId": "f3460e9f3b7cf67a",
"format": "product",
"position": 2,
"advertiser": "Nike.com",
"adLibraryAdvertiser": "NIKE, INC.",
"adLibraryPaidBy": "PMG",
"adLibraryCountry": "US",
"adLibraryUrl": "https://adlibrary.ads.microsoft.com/advertiser/34001669",
"title": "Nike Vomero 18 Women's Road Running Shoes In White, Size: 8.5 | HM6804-113",
"body": null,
"displayUrl": null,
"price": 119.97,
"currency": "USD",
"priceText": "$119.97",
"originalPrice": 155,
"discountPercent": 23,
"badge": "SALE",
"extras": [],
"shipping": "Free shipping",
"condition": null,
"rating": 5,
"reviewCount": 10,
"reviewsUrl": "https://www.bing.com/product/reviews?upid=NXw4NzI0N35CMEQyQlE4WTda",
"bingProductId": "5|87247~B0D2BQ8Y7Z",
"highlights": [],
"callouts": [],
"sitelinks": [],
"cta": null,
"imageUrl": "https://th.bing.com/th/id/OPHS.eJSoBaDjxm74Ug474C474?pid=21.1",
"logoUrl": null,
"url": "https://www.nike.com/t/vomero-18-womens-road-running-shoes-...",
"landingDomain": "nike.com",
"trackingParams": { "cp": "27985120320_search_--o-267670120-...", "msclkid": "9cd212b87e5e109825437859c6310c0c" },
"organicLinks": [
{ "text": "1", "domain": "runnersworld.com", "url": "https://www.runnersworld.com/gear/a19663621/best-running-shoes/" }
],
"screenshotUrls": [
"https://api.apify.com/v2/key-value-stores/.../records/ad-...-1.png",
"https://api.apify.com/v2/key-value-stores/.../records/ad-...-1-2.png",
"https://api.apify.com/v2/key-value-stores/.../records/ad-...-1-3.png"
],
"htmlUrl": "https://api.apify.com/v2/key-value-stores/.../records/ad-...-1.html",
"scrapedAt": "2026-10-28T10:12:41.221Z"
}

turn and message tell you which message brought the ad. screenshotUrls is empty and htmlUrl null unless Save ad proof is on. The carousel scrolls sideways, so a turn takes several screenshots to show every product, and screenshotUrls lists them all.

  • format: product is a card in the Related Products carousel, with price, crossed-out price, and badge. text is a search ad with a headline and copy. image is a search ad with a picture and button.
  • adId: the same ad gets the same ID in every chat and run, so count unique ads by adId.
  • landingDomain: group by this rather than advertiser. The advertiser name doesn't always match the site (a "Bing merchant" product can link to 4camping.cz).
  • adLibraryAdvertiser, adLibraryPaidBy, adLibraryCountry, adLibraryUrl: who's behind the ad, from Microsoft's Ad Library: the advertiser's legal name, who paid for the ad (often an agency, like PMG for Nike), its country, and its Ad Library page.
  • url: the real landing page, decoded from Bing's click link.
  • rating, reviewCount, reviewsUrl: product ads only. Bing rounds big review counts down ("5K+"), so reviewCount is a lower bound for those.
  • highlights, callouts, sitelinks, logoUrl: the extras of a search ad, like "Site visitors: Over 1M in the past month", short selling points, and extra links with their own landing pages and, on some ads, a line of text under them.
  • imageUrl: the full-size image, not the thumbnail Bing shows.
  • trackingParams: the landing page's query params. They often name the advertiser's campaign, like sem:MICROSOFT:USA|Shopping|Performance Max|Footwear, so you see campaign types, targeting, and seasonal pushes.
  • bingProductId: Bing's catalog ID for the product, shared by every store selling it. Only for rated products.
  • organicLinks: the links Bing put in the same answer for free, usually the stores and sites it cites. Compare their domain with landingDomain to see who pays for the spot and who Bing recommends anyway. null unless Include answer links is on.
  • chatId: ads with the same chatId were shown in one chat. Use it with the CHATS record to get ads per chat.

You can download the dataset as JSON, CSV, Excel, or HTML, or get it through the Apify API.

Summary and chats

Chats without ads aren't in the dataset, so two more records in the Output tab show what happened:

  • Summary: for each query, the chats run, adRate (share of chats that showed at least one ad), ads found, and each advertiser's share of voice:
{ "name": "L.L.Bean", "ads": 21, "chats": 4, "shareOfVoice": 1, "avgPosition": 5.6, "minPrice": 99.99, "maxPrice": 280, "currency": "USD" }

shareOfVoice is the share of chats the advertiser showed up in, so 1 means every time. avgPosition is its average slot, 1 = first. Use adRate to compare queries and shareOfVoice to compare advertisers.

  • Chats: one line per chat attempt, with how it ended:
StatusMeaning
doneRan the query and all its follow-ups.
no-adsNo ad on the query (or by turn 3 with follow-ups), so it was stopped. If its query already showed ads, it runs once more in a new browser, charged once.
blockedAI Mode didn't load. Retried, not charged.
failedBroke mid-chat. Retried, not charged. If it already found ads, they're kept and it isn't retried.
cutStopped because the run timeout was near.
skippedIts query had no ads in 4 chats, so it didn't run. Not charged.

Tips

  • Pick product topics and brand names. The Related Products carousel shows for product queries, like "best vpn", "dyson", "best laptops for students".
  • Give it memory for big runs. The default 8 GB runs 4 chats at once. More memory runs more at once, so many queries or Deep finish sooner. Small Quick runs don't get faster.

Limitations

  • Logged-out view. You see the ads Bing shows to logged-out visitors.
  • Ads depend on the topic. Product queries show ads in almost every chat, but travel, insurance, and most services show few or none. Bing also rotates its ads, so the scraper runs many chats to see them all. Each chat uses proxies and compute, so each one is charged.
  • Residential proxies only. Bing refuses most datacenter IPs. Chats run through residential proxies in the chosen country, and a refused chat is retried on a new IP.

Pricing

You pay per event, at the prices on the Pricing tab:

EventWhen
AdEach ad saved to the dataset
ChatEach chat with Bing AI Mode, a small fee that covers running it, also when Bing shows no ads
Follow-upEach follow-up sent, only with Follow-up queries
Answer linksEach chat, only with Include answer links on

Platform usage and residential proxies are included. You don't pay extra for:

  • Retries. A chat that gets blocked is run again in a new browser, charged once. So is a chat that shows no ads, once its query has shown ads in another chat.
  • Chats that break. A chat that breaks after finding ads keeps them, and the chat isn't charged.
  • Topics with no ads. Once a query has had no ads in 4 chats, its chats that haven't started are skipped and not charged. Chats run several at once, so on Quick most have usually started by then.

Set Maximum cost per run to cap a run. It stops there and keeps everything found.

  • ChatGPT Ads Scraper: collects the sponsored ads ChatGPT shows in its answers. Run both to compare who advertises on Copilot and on ChatGPT.

  • Google AI Overview Ads Scraper: collects the sponsored ads Google shows in its AI Overviews. Run both to compare who advertises on Copilot and on Google.

Feedback

This scraper is under active development. Found a bug, missing data, or have an idea? Open an issue in the Issues tab.