ChatGPT Ads Scraper collects the sponsored ads ChatGPT shows under its answers: advertiser, product, price, rating, image and landing page. Use it to see which brands advertise on your topics, check your own ads appear and match your Context Hints, or track ChatGPT ads over time.
adId: the same ad gets the same ID in every chat and run, so you can count unique ads instead of repeats.
chatId: ChatGPT's conversation ID. Ads with the same chatId were shown in one chat.
impressionId: ID of one showing of an ad.
position: the ad's slot in the Sponsored box, 1 = first.
landingDomain: the site the ad links to, like nike.com. More reliable than advertiser for grouping. Ads sent through ad networks like Criteo show the real site, not the network.
openAiAdId, campaignId, adGroupId: OpenAI's own IDs, when the advertiser's link includes them.
originalPrice and discountPercent: the crossed-out price and the discount, when the ad shows one.
answer: ChatGPT's answer the ad was shown under, without the ad's text.
organicLinks: the links ChatGPT put in the same answer for free, usually the stores it recommends. Compare them with landingDomain to see who pays for the spot and who ChatGPT recommends anyway.
priceSource: where the price came from. Brand and category ads have no price field, so when one names a single price in its text ("now $69.99"), that price is used and priceSource is "text".
Changed
depth replaces Chats per query in the form: quick (8 chats), standard (24), or deep (60). chatsPerItem still works from the API and wins over depth.
Country is picked from a list.
followUpQueries starts empty. Leave it empty to send the default follow-ups, or write your own and they're sent instead.
A chat with no ads only gets a free rerun once its query has shown ads. Queries ChatGPT never shows ads for stop sooner.
The default follow-ups include a fifth one, about reviews. It finds about a quarter more ads per chat.
A chat that breaks after finding ads keeps them and isn't run again from the start.
Fixed
Fewer chats time out and get retried: each browser now gets more of the run's CPU.
Ad screenshots now show the product photo for ads whose image is a .jpg or .png link. Before, those photos were blocked and showed as a broken image.
Ad screenshots no longer come out as an empty strip when ChatGPT scrolls the page while the screenshot is being taken. If the ad still can't be brought into view, the screenshot shows the ad alone, without the message and answer above it.
An ad's screenshot could show a different ad when its chat was retried, because the retry saved its screenshots under the same names. Each attempt now saves its own.