# Changelog of Facebook Posts Scraper (`scraper_creator/facebook-posts-scraper`) Actor

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

## Changelog

Dates record source changes, not Apify publication dates.

### 2026-10-22

- Remove the source default memory declaration and manage default run memory in Apify Console; add configuration coverage and documentation. Existing output, validation and proxy policies are unchanged.

- Lower the Actor definition's default run memory from 2048 MB to 1024 MB and add a configuration regression test. Output, completeness verification, proxy routing and traffic diagnostics are unchanged; explicit run memory settings still override the default.

- Bypass the configured proxy only for the exact host `static.xx.fbcdn.net`. Keep resource blocking, completeness verification and run-wide traffic diagnostics unchanged; other Facebook/CDN hosts retain the configured proxy.

- Add run-wide traffic diagnostics grouped by hostname and resource type, including blocked/failed counts and encoded request/response sizes; retain existing proxy and resource policies.

- Remove the unsupported video transcription input from the form, examples, and parser. Only `resultsLimit` selects posts mode; legacy `captionText` values are ignored.

- Stop retrying a profile as soon as a traversal is truncated by `resultsLimit`, reporting `RESULTS_LIMIT_BEFORE_END_OF_FEED` with attempt diagnostics. Buffered posts remain unpublished and do not trigger result billing; complete-feed verification and transient-error retries are unchanged.

- Add regression coverage for pagination and final-batch truncation, truncation after a transient failure, and failed paid runs without result billing. Exact-limit complete feeds still require matching independent traversals.

### 2026-10-20

- Count failed attempts separately from complete traversals so initial timeouts do not consume verification opportunities. Stop after three failed/incomplete attempts or three complete traversals (at most five attempts), still requiring two matching complete ID sets before output.

- Read `viewsCount` from the exact public `play_count`, rather than the different `video_view_count` counter. Missing or invalid plays remain `null` with a warning.

- Link this changelog from the Actor definition.

- Separate current operator-reported availability from dated cloud and local validation evidence.

### 2026-10-19

- Default `proxyConfiguration` to an Apify residential proxy in Malaysia (`MY`). In Apify cloud tests, direct connections were redirected away from the page and never received the timeline query (3/3 attempts); the Malaysian residential proxy read the first feed page (3/3 attempts).

- 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`. Local runs may still connect directly.

- Use one sticky proxy session per browser session, so a page, its cookies and its timeline requests share an IP.

- Record the page navigation status and a redirect flag after navigation, and severity, transience, API error code, error and story counts, and `page_info` presence on feed rejections. Error paths keep GraphQL field names and list indexes.

- Preserve safe per-attempt diagnostics for page navigation, initial feed waiting, HTTP failures, and profile/feed parsing, without persisting raw browser errors or response data.

- Add custom `result` pay-per-event billing for verified posts and standalone profiles, budget checks, and duplicate automatic billing protection. Budget-truncated output remains explicitly incomplete.

- Add required input-field descriptions so the cloud input schema validation can proceed.

- Merge optional fields across successful complete traversal attempts as well as within a traversal, preserving omitted fields and explicit text clears without adding internal metadata to output JSON.

- Include exact profile followers on every post row, using one count from the accepted session; retain standalone profile output.

- Verify complete post ID sets across independent browser contexts (two matching traversals, at most three attempts), recovering transient early ends and failing inconsistent or limit-truncated runs before post output.

- Preserve earlier text, hashtags, and original post links when duplicate responses omit those fields; retain explicit text updates and validate duplicate links before merging.

- Merge validated duplicate-post metrics before output, preserving known counts when later copies omit them and retaining actual zeroes.

- Reject numeric `story_fbid` links that conflict with the post ID; add duplicate and permalink regression tests.

- Add profile followers mode for inputs containing `startUrls` without post options, with exact-count and profile-identity validation.

- Add local public-page feed extraction with same-session cursor pagination.

- Preserve post and author identity, captions, dates, public reaction/comment/share/view counts, and missing metrics.

- Add per-page diagnostics, duplicate detection, and fail-closed handling of incomplete runs.

- Add input/output compatibility checks and pagination regression tests.

- Initial implementation was a local prototype; limited cloud feed checks were subsequently performed as described above.
