# Changelog of ChatGPT Ads Scraper (`gytelio1/chatgpt-ads-scraper`) Actor

- **URL**: https://apify.com/gytelio1/chatgpt-ads-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/gytelio1/chatgpt-ads-scraper.md

## Changelog

### 0.0 (unreleased)

#### Added

- `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.
