# Changelog of TikTok Scraper Pro (`netdesignr/tiktok-scraper-pro`) Actor

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

## Changelog

### 0.1.8 - 2026-10-15

- Keep completed results when a scrape pass reaches its time limit and report which targets timed out.
- Added a no-premium TikTok embed fallback for direct video URLs when TikTok returns a false 404 on the regular video page.
- Tightened the live smoke fixture so zero-result TikTok runs are no longer treated as passing quality evidence.
- Installed the Playwright-managed Chromium binary in the production image so profile, search, hashtag, and music browser paths do not fail after Playwright package updates.
- Recover profile video IDs from universal state and embedded lists/modules through the single-video and false-404 embed paths.
- Scroll the profile grid and wait up to 20 seconds for item lists, stopping once enough distinct videos arrive.
- Keep residential proxy retries off by default. Empty profiles still get one fresh-session retry on your configured connection. Opt into `retry` to use Apify Residential proxy in the US for empty profiles only; residential proxy traffic costs more. If a profile stays empty with residential retries off, show a `residential_retry_available` warning. Missing residential access is handled gracefully.
- Reuse a browser per proxy configuration per pass, keeping non-profile startup on Playwright defaults and isolating residential profile retries.
- Preserve request-specific stage HTTP/outcome diagnostics in item warnings, target summaries, and per-attempt RUN_META telemetry.
- Allow realistic profile startup and residential HTTP latency: use 13-second initial and 30-second retry stage budgets, 8-second profile startup, 5-second profile HTML, and parallel 4-second video/embed requests. Run search only with at least 4 seconds remaining. Successful browser recovery fits a configured 59.1-second budget; two fully stalled attempts can take 64.1 seconds before Apify service overhead.

### 0.1.7 - 2026-10-15

- Preserve original technical-failure conditions under explicit and legacy warning policies.
- Finalize empty runs through the shared guard with `retry_then_fail` as the default. Explicit warning policies succeed with a visible warning; legacy saved success policies normalize to warning.
- Preserve retries and actor telemetry while recording the final empty/non-empty outcome in `RUN_META`.

### 0.1.6 - 2026-05-29

- removed the external profile extraction fallback and the Python-based extractor runtime install from the production Docker image
- kept profile recovery on in-app browser fallbacks only, avoiding an external extractor dependency while preserving honest empty-run diagnostics

### 0.1.5 - 2026-05-29

- added `residentialProxyFallbackMode` and disabled automatic Apify Residential proxy retries by default to prevent hidden proxy spend on empty runs

### 0.1.4

- added a legacy external profile fallback so public TikTok profiles can still emit videos when browser collection returns empty or times out
- updated the runtime image to install the legacy extractor runtime and verified the recovery path against `@chakalakaresort`

### 0.1.3

- tightened runtime guardrails to reduce the risk of expensive long-running TikTok runs
- packaged the spend-protection release after lowering the live actor timeout and bounding scrape attempts more aggressively

### 0.1.2

- added a hard timeout for the initial scrape attempt so expensive stuck runs are cut off sooner
- aligned the actor for stricter operational guardrails to reduce wasted spend on zombie runs

### 0.1.1

- hardened profile scraping so public TikTok profile runs no longer hang indefinitely on retry
- added safer retry timeout handling and kept first-pass diagnostics when fresh-session retries do not improve results
- improved fallback logic for false profile `not_found` responses from TikTok
- refined empty-run exit semantics so `retry_then_warn` produces a technical success with honest `empty_result` diagnostics
- expanded test coverage for profile fallback and release-hardening paths

### 0.1.0

- launched `TikTok Scraper Pro`
- added TikTok target normalization for profiles, video URLs, searches, hashtags, and music pages
- added hybrid extraction flow with HTTP-first video and profile detail parsing plus browser API collection for richer surfaces
- added normalized TikTok video output with author, music, metrics, media URLs, and diagnostics
- added `RUN_META` and `SUMMARY.json` artifacts
- added Store-ready input schema, output schema, README, and Vitest coverage
