# Changelog of Instagram Reels Scraper for Public Profiles (`datascraperes/instagram-public-reels-scraper`) Actor

- **URL**: https://apify.com/datascraperes/instagram-public-reels-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/datascraperes/instagram-public-reels-scraper.md

## Changelog

### Unreleased

- Validate the current proxy-backed runtime in local Docker with real public profiles, adaptive concurrency from 1 to 3, and long runs up to 300 requested Reels; terminal access redirects remain fail-closed.
- Use `curl_cffi` with Chrome TLS impersonation and identity encoding for production Instagram requests; keep the injected `httpx` transport for deterministic tests.
- Align profile pagination with Instagram's current `/api/graphql` Relay contract: use the initial query for page one and the dedicated `_connection` operation, graph ID, and `node` response root for cursor pages.
- Replace Instagram's login-gated anonymous REST feed with the current public profile GraphQL surface, including current JavaScript operation discovery and a verified fallback query ID.
- Distinguish authentication/access denials from temporary rate limits; do not retry denied requests or change sessions to retry a rate limit.
- Respect Retry-After and recognize authentication/verification errors returned with HTTP 200.
- Mark failed or incomplete collections as failed while preserving delivered Reels and billing evidence.
- Report profile-processing errors separately from output transactions and allow failed profiles to resume without duplicate results.
- Add regression tests for GraphQL pagination, operation discovery, partial collection, resumption, bulk failures, and cancellation.
- Add throttled customer-facing live progress to the Apify Console and run log, with collection phases, profile counts, page counts, Reel totals, and terminal state.
- Keep proxy, billing, transport, retry, and upstream diagnostics out of user-visible progress messages.

### 1.0.7 - 2026-08-26

- Replaced Instagram's retired login-gated Clips endpoint with the current public user-feed route.
- Added strict Reel-only filtering and stable fixed-size cursor pagination for mixed profile feeds.
- Added regression coverage for feed pagination, private profiles, response changes, and non-Reel exclusion.

### 1.0.6 - 2026-08-26

- Added account-tier pricing for unique delivered Reels: Free `$0.001`, Bronze `$0.0009`, Silver `$0.0008`, and Gold, Platinum, or Diamond `$0.00075`.
- Added durable replay-safe billing with stable idempotency across migrations and lost charge responses.

### 1.0.2 - 2026-07-22

- Reworked the public README into detailed customer documentation with guided setup, pricing scenarios, input recipes, output reference, API examples, automation guidance, limits, FAQ, and support instructions.
- Clarified that requesting 50 Reels from a profile with only 20 accessible Reels returns and charges for 20 results.
- Removed operational and implementation details from the customer-facing documentation.

### 1.0.1 - 2026-07-22

- Added private deployment settings for SEO metadata, categories, permissions, memory, timeout, example input, and PPE.
- Expanded public documentation around profile-only scope, automation, FAQ, and the unofficial-product disclaimer.
- Added regression checks that prevent accidental public configuration and pricing drift.

### 1.0.0 - 2026-07-22

- Initial local implementation for Reels from public Instagram profiles.
- Added anonymous profile-ID resolution and dedicated cursor pagination.
- Added adaptive concurrency, exact small-limit page sizing, retries, shared throttling, and proxy sessions.
- Added global/per-profile limits, deduplication, resume checkpoints, spend reservation, and PPE transaction checks.
- Added public schemas, tests, local smoke validation, and benchmark inputs.
