# Changelog of Facebook Reels & Video Scraper - MP4, Transcript, No Login (`apivault_labs/facebook-reels-video-scraper`) Actor

- **URL**: https://apify.com/apivault\_labs/facebook-reels-video-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/apivault\_labs/facebook-reels-video-scraper.md

## Changelog

### 0.3 — 2026-09-18 (MCP workflows and adaptive output)

- Added Auto / Video URLs / Search / Profiles / Combined workflow routing with machine-readable invalid-input diagnostics.
- Reorganized the Console form into seven numbered task sections and added safe array limits.
- Added Compact, Engagement, and Full output presets. Full remains the legacy-compatible default; compact presets remove long transcripts and low-priority fields from MCP responses.
- Set the Console/MCP `maxResults` default to 25 while retaining the legacy runtime fallback of 200 for existing API clients that omit the field.
- Added typed Dataset fields and stable `status`, `workflow`, `outputPreset`, `chargedRows`, and `nextSteps` summary fields.
- Added an MCP quick start to the README.

### 0.2.15 — 2026-09-16 (maximum profile coverage by default)

- Profile runs now request up to 200 videos per profile by default.
- The global default result limit is also 200, so it no longer silently caps a default profile run at 50 videos.
- The actual delivered count still depends on the public videos Facebook exposes and the available discovery candidates.

### 0.2.14 — 2026-09-16 (complete mode and output audit)

- Added dedicated Media & Transcript and Creator & Content dataset views alongside Engagement, Reels & Videos and the automatic All fields view.
- Added direct Run summary and Skipped/failed candidates links to Actor output.
- Fixed BYO-ASR when MP4 output is disabled: the video is now used internally and its URL is hidden only after transcription.
- Oversized ASR media is skipped cleanly instead of sending a truncated video file.
- Suppressed misclassified creator artwork from the music artwork field when no music attribution exists.
- Made `sinceDays` strict: videos without a verifiable publication time are no longer allowed through a date filter.
- Verified URL, Search, Profile, metadata-only, dedupe, keyword/date/cost filters, datacenter-only, proxy-country, fast enrichment and invalid-input modes on Apify.

### 0.2.12 — 2026-09-16 (compact engagement view)

- Added a compact Engagement dataset view with comments, reactions, shares and views next to the video and creator.
- The existing complete Reels & Videos and All fields views remain available.

### 0.2.11 — 2026-09-16 (one Dataset row per delivered video)

- Dataset now contains only delivered video records: one video produces one row.
- Run summary moved to the separate `SUMMARY` key-value record.
- Failed candidate diagnostics moved to `ERRORS` (first 100); they are not video results and are not charged as video events.
- Summary reports failed candidates and whether error diagnostics were truncated.

### 0.2.10 — 2026-09-16 (paste-safe URL input)

- Accept copied Markdown links and extract their actual Facebook target URL.
- Deduplicate Reel and Watch forms by video ID before fetching.
- Replace the non-existent placeholder prefill with a verified public Reel.
- Reject lookalike domains instead of matching any hostname containing `facebook.com`.

### 0.2 — 2026-09-15 (verified discovery and result replenishment)

- Added bounded public search pagination and query variants with configurable depth/reserve.
- Removed pre-filter result truncation: rejected candidates can be replaced from the reserve.
- Profile search results require matching owner identity or exact name with owner ID; unrelated videos are not delivered or charged.
- Keyword results must match the requested query in available title, caption, creator name or hashtags; irrelevant fallback results do not consume paid slots.
- Requested MP4 results without an MP4 URL are skipped rather than billed as downloadable videos.
- Candidate consumption is bounded by concurrency and stops when the delivered-result limit is reserved.

### 0.1.13 — 2026-06-21 (faster failures, no retry storms)

- **Terminal-failure detection**: a clean HTTP 200 page with no video data (private/removed/invalid ID) is now terminal — the Actor stops immediately instead of retrying across proxies and attempts. Blocks/transport errors stay retryable (escalate to residential). Fixes slow runs where one bad/private video burned ~50s.
- Added a fast 10s connect timeout so dead/slow proxy IPs fail quickly.
- Speed test (5 videos incl. invalid ones, concurrency 5): **~7s runtime, 0 crashes**; failed items return `videoStatus: removed_or_private` gracefully (was ~50s per bad video).

### 0.1.9 — 2026-06-21 (major cost cut: datacenter-first)

- **Proxy escalation**: datacenter proxy is now tried first (Facebook serves most public video data over it), with automatic residential fallback only when a video is blocked. Both can be geo-targeted via `proxyCountry`.
- Default run memory lowered to **256 MB** (halves compute; the actor is I/O-bound).
- Transcript caption fetch also routed over datacenter first.
- Load test (20 videos, 256 MB): **20/20 success, run cost ≈ $0.0009 total (~$0.00005/video)** — down ~37x from the residential-default build (~$0.0019/video).

### 0.1.8 — 2026-06-21 (lower latency + more fields)

- Latency: the two primary fetch strategies (mobile + desktop) now run **concurrently** and are merged (per-video latency ≈ the slower one instead of the sum; same bandwidth). Bot UA stays a sequential fallback.
- New fields: `videoType` (reel/video/live), `mentions[]`, `width`/`height`/`aspectRatio`/`orientation`, `musicTitle`/`musicArtist`, inline `thumbnailUrl` fallback (fixes null thumbnails).
- Dataset view shows videoType / orientation / music.

### 0.1.6 — 2026-06-21 (cost reduction under load)

- Search SERP fetches (DuckDuckGo/Bing) now go over the **datacenter proxy** instead of residential (10x cheaper, no residential IP needed).
- Search queries are now **resolved in parallel**.
- Streaming **early-stop**: page download halts as soon as the MP4 url + og:image are present (no longer reads the rest of multi-MB pages). Read cap lowered to 1.0 MB; per-video warm-up removed.
- Load test (20 videos, concurrency 10, 512 MB): **20/20 success, 0 errors, ~35s**. Per-video residential bandwidth −52% (~470 KB → ~226 KB), cost/video −59% (~$0.0046 → ~$0.0019).

### 0.1.5 — 2026-06-21 (real keyword search + monetization)

- Keyword/hashtag search now uses **search engines (DuckDuckGo + Bing)** to discover public reels/videos (far more reliable than Facebook's gated hashtag pages, which remain a fallback). Live test: query "cooking" → 3 videos with MP4 + creators + category.
- Monetization enabled (PAY\_PER\_EVENT): `video` event, tiered FREE $0.005 / BRONZE $0.004 / SILVER $0.0035 / GOLD-PLATINUM $0.003 / DIAMOND $0.0025, with "pay platform usage" on (profit guaranteed).

### 0.1.4 — 2026-06-21 (speed + completeness)

- Performance: one shared HTTP client per video (connection pooling + a single datr warm-up instead of one per strategy), read cap lowered to 1.2 MB, 64 KB chunks, early-exit once the record is rich. Live run ~11s runtime.
- `enrichDetailPage=false` is now a real fast mode (returns after the first usable strategy, fewer requests).
- Cleaned video `title` (strips "N views · M reactions | … | Facebook" noise).
- Multi-strategy field merge (mobile gives counts, desktop/bot give MP4 + creator), engagement recomputed after merge.
- New `videoStatus` (available / removed\_or\_private / unavailable) — listing status.
- New `transcriptSummary` (token-free extractive summary of the transcript).

### 0.1 — 2026-06-21

Initial release. Public Facebook Reels & Video scraper (no login).

- Input by URL / ID: `/reel/<id>`, `/watch/?v=<id>`, `/<page>/videos/<id>`, `fb.watch/...`, bare numeric IDs.
- Keyword / hashtag discovery (`searchQueries`).
- Multi-strategy stealth fetcher (mobile / desktop / bot UA rotation, datr warm-up).
- Extracts: title, caption, hashtags, derived category, language, thumbnail, MP4 (HD/SD), duration, publish time, views, reactions, comments, shares, composite engagement score, creator name/url/id/followers/rating.
- Native transcript: parses Facebook caption tracks (WebVTT / SRT) into text + timed cues.
- Optional BYO-ASR transcription via your own OpenAI-compatible speech-to-text key.
- Gap features vs competitors: date/recency filter, category taxonomy, detail-page enrichment, creator rating, geo-targeted residential proxy, real-time webhook, explicit retry control.
- Safety: PAY\_PER\_EVENT with charge-before-push, `maxResults` / `maxCostUsd` cost guards, deduplication, never fails on empty input, run-and-exit.
