# Changelog of Instagram Reels Discovery Scraper - No Login (`datascraperes/instagram-reels-discovery-scraper`) Actor

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

## Changelog

### Progress update - 2026-09-30

- Use the official SDK log formatter and separate detailed logs from concise run-status milestones.
- Show truthful preparation, discovery, saving and finalization stages with delivered counts, percentage, pages received, discovered creators, skipped duplicates and active collections.
- Keep visible heartbeat updates during long stages, throttle status API calls even on failures, and preserve collection behavior when the optional page observer fails.
- Validate delivery-before-progress and summary-before-completion ordering, live page updates, safe SDK formatting and bounded status updates.

### Unreleased - 2026-09-30

- Bind request document IDs to the bootstrap context of each session.
- Count unique media IDs toward chain limits and exclude IDs already delivered to the Dataset.
- Preserve earlier-page results across transient retries and terminal later-page failures; deliver valid partial results through the existing deduplication and billing path.
- Preserve finished parallel sessions and earlier pages from cancelled sessions when the global deadline is reached, while reporting incomplete targets honestly.
- Share the remaining collection budget between parallel sessions to reduce excess requests and retained raw data.
- Bound each discovery scheduling quantum to 32 new media IDs per session after the 5,000-result probe exposed excessive deadline finalization work. Collection continues in further bounded batches toward the requested target.
- Scale the deadline for targets above 500 rows instead of imposing the small-run 270-second deadline on a 5,000-row collection; the maximum internal allowance is 2,700 seconds, within the current 3,600-second default cloud timeout.
- Make the local PPE fixture explicitly price the synthetic Dataset event at zero, matching its unconfigured production behavior rather than the SDK's unknown-event test price.
- Add deterministic regression cases and an isolated, resource-limited Docker stability matrix. Production remains on build 1.2.15 until an authorized deployment is validated.

### 1.2.15 - 2026-09-26

- Updated the logged-out Reels client to Instagram's current `/api/graphql` Relay contract, including dynamic preloader document IDs, Chrome TLS impersonation, complete browser form fields, XSSI decoding, cursor pagination, and same-author expansion.
- A completed target is now reported as successful even if an extra parallel discovery session fails after the requested rows are already durable; incomplete targets still fail closed.
- Limited each discovery chain to the remaining requested result count to reduce unnecessary requests and keep the default Docker run well below the five-minute quality-test budget.
- Added a 270-second global safety deadline, bounded retry-after handling, response-size guards, safe failure-code aggregation, and a three-batch circuit breaker for repeated session failures.
- Unexpected exceptions from one parallel session are isolated so durable rows from the other sessions can still complete the run; resumable state now includes a safe checkpoint snapshot.
- Revalidated the current proxy-backed Docker runtime with real regional discovery runs up to 500 unique Reels; the 256 MiB container completed without OOM, failed sessions, duplicate output, or non-200 responses in the long-run matrix.
- Updated the Actor image to the Apify Python SDK 4.x line so local Docker validation exercises the current PPE runtime contract.
- Fixed resumable tiered-budget accounting so SDK event history and durable outbox rows are not charged twice after a process restart; added concurrent budget-guard regression tests.
- Added a read-only remote cost-drift audit and a 128 MiB lower-bound Docker probe. The local manifest remains at the lowest volume-validated 256 MiB default.
- Published build `1.2.15` as public `latest` after remote US/10, ES/200, and US/500 canaries passed within the five-minute run budget.
- Removed the `UNDER_MAINTENANCE` notice only after the final latest smoke and tiered-pricing validator passed with Dataset, charges, and durable outbox evidence.
- Excluded local APK research, validation evidence, and Python caches from the Actor upload so the deployment package contains only runtime sources and public documentation.
- Cost auditing now compares the remote default run memory with the manifest and records build-time memory separately.

### 1.2.11 - 2026-09-17

- Removed the fixed eight-page discovery cap. Each Relay chain now follows valid cursors until Instagram reports no more pages, a cursor repeats, or the Actor's requested result limit is already fulfilled.
- Added bounded per-request result handling and regression coverage for multi-page chains, user limits, and cursor termination.

### 1.2.9 - 2026-09-17

- Classify Instagram HTTP 401/403 and logged-out GraphQL authentication errors as terminal access failures instead of retrying them as transient errors.
- Fail closed when a discovery session cannot be collected, preserving already delivered Reels and recording the incomplete run in the Actor status and `SUMMARY`.

### 1.2.5 - 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.2.0 - 2026-07-22

- Expanded the validated discovery-country dropdown from 50 to 100 markets.
- Added regional browser-language alignment for every newly supported country.
- Extended schema/runtime parity checks and the complete customer country reference.

### 1.1.1 - 2026-07-22

- Replaced free-text country entry with a validated dropdown containing 50 selected markets plus a global option.
- Added runtime and schema catalog parity tests so misspelled or unsupported countries cannot start a run.
- Added the complete supported-country reference to the customer README.

### 1.1.0 - 2026-07-22

- Added country-level regional discovery through the `countryCode` input, with `US` as the default and `AUTO` for an unrestricted sample.
- Kept proxy rotation inside the selected country and aligned browser language signals for common markets.
- Added `discoveryCountry` to schema version 2 dataset rows and regional targeting fields to the free run summary.
- Added country validation, proxy-targeting tests, customer documentation, and a repeatable ES/US/BR live measurement tool.

### 1.0.0 - 2026-07-22

- Initial private release candidate.
- Added anonymous public Reels discovery and creator-chain expansion.
- Added dynamic Relay operation discovery with safe fallbacks.
- Added run-wide media-ID deduplication, resume state, adaptive concurrency, retry isolation, traffic metrics, and PPE-safe dataset writes.
- Added customer documentation, Apify schemas, automated validation, and full test coverage.
