# Changelog of TikTok Ads Library Scraper (`prodiger/tiktok-ads-library-scraper`) Actor

- **URL**: https://apify.com/prodiger/tiktok-ads-library-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/prodiger/tiktok-ads-library-scraper.md

## Changelog

### 0.1.1 (2026-09-29)

- Fix: every run failed with "TikTok API returned code undefined". TikTok's Ads Library now rejects `POST /api/v1/search` with `HTTP 421 system busy` unless it carries an `X-CCL-STR` header. The actor now performs the same handshake as the web app (`GET /api/v1/location`, then `GET /api/v1/support-regions` for the `config_str` token) with a consistent User-Agent, and sends the current search body (`ad_type`, `ad_status`, `ages`, `ad_reach`, `gender`).
- TikTok now returns at most 12 ads per request; `limit` values above 12 are fetched by following the `search_id` cursor.
- `query_type: "0"` (keyword) is mapped to TikTok's new keyword query type; `adv_biz_ids` now uses TikTok's advertiser query type and resolves the exact advertiser name from `search`.
- `sort: first_shown_date,*` is mapped to TikTok's new `create_time,*`.
- Non-JSON or HTTP error responses now fail with a clear message (status + body) instead of "code undefined". Transient errors are retried with a fresh session; on the Apify platform the actor falls back to Apify residential proxy after two failed direct attempts.
- New optional `proxyConfiguration` input.

### 0.1.0

- Initial TikTok Ads Library scraper actor.
