# Changelog of Tiktok Video Scraper (`scraper_creator/tiktok-video-scraper`) Actor

- **URL**: https://apify.com/scraper_creator/tiktok-video-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/scraper_creator/tiktok-video-scraper.md

## Changelog

Changes to the TikTok Video Scraper.

Dates record source changes, not Apify publication dates.

### 2026-10-19

#### Changed

- `proxyConfiguration` now defaults to an Apify residential proxy in Malaysia (`MY`). In Apify cloud tests, direct connections returned empty video lists and a residential proxy without a country failed; residential proxies in Malaysia and Singapore succeeded.
- On Apify, a missing `proxyConfiguration` now falls back to the Malaysian residential proxy in code as well, and a run with no proxy stops immediately with `PROXY_REQUIRED` instead of returning empty video lists. Local runs may still connect directly.
- The browser user agent now reports the operating system the browser runs on instead of always claiming Windows.

#### Fixed

- Each profile now uses one proxy session, so its page and video-list requests share an IP.

#### Added

- Run summaries include safe diagnostics for failures to open a profile (stage, fixed error code, navigation status, redirect flag, TikTok status code) and for invalid video-list responses (content type, byte count, body kind, signing-parameter names).

### 2026-10-18

#### Documentation

- Explain that budget exhaustion or an abort can stop collection while `partial` remains `false`, and how to check run status and requested profile coverage.
- Replace the Unreleased section with dated change entries.

### 2026-10-17

#### Added

- Collect public posts from the Videos section of 1–5 TikTok profiles, including videos and photo slideshows.
- Follow profile video-list pagination by scrolling the page. `resultsPerPage` limits successfully returned posts per profile to 1–10,000 (default: 100), rather than setting the size of an individual network request.
- Return post IDs, URLs, captions, hashtags, publication dates, content type, author details, and public engagement counts. Missing optional counts remain `null`; confirmed zero counts remain `0`.
- Read the current follower total from profile data and include it as `authorMeta.fans` on each post after verifying the author's identity.
- Support optional proxy configuration under Advanced settings, with direct connections by default.
- Validate profile ownership and pagination cursors, and remove duplicate post IDs across pages. When restarting with the same dataset, skip posts already saved.
- Skip invalid individual posts and continue to the next profile when a profile fails. Record errors and partial-result status in `RUN-SUMMARY`, preserving valid results already collected.
- Fail runs with errors and no valid posts. Storage or charging failures stop the run.
- Support a configurable `video` pay-per-event hook and stop collecting when its run budget is exhausted. Pricing is not enabled or set by the code.

#### Changed

- Use the page's own video-list requests instead of replaying signed requests from an earlier session.
- Prefer `statsV2` numeric fields, including the profile follower total, with a fallback to `stats` when a field is absent.
- Preserve existing API input fields and output field names for integrations. The Latest profile section includes pinned posts, so results are not guaranteed to be strictly chronological.

#### Fixed

- Preserve caption line breaks and blank paragraphs from TikTok's `contents` lines so EagleAim derives new Content titles from the first line instead of including the full caption and hashtags. Fall back to `desc` when the line data is unavailable or malformed.

#### Documentation

- Rewrite the README in English with input examples, output fields, data accuracy notes, and partial-result handling, and add a changelog.

#### Known limitations

- Some public profiles expose follower totals but return invalid or empty video-list responses. These are reported as errors rather than treated as confirmed empty profiles.
- Profiles with no returned posts do not produce standalone follower rows. A follower total read successfully may be available in `RUN-SUMMARY` instead.
- Local pagination checks do not establish Apify cloud availability, deep-pagination coverage, or long-term reliability.
