# Changelog of Instagram Downloader - Reels & Posts Video/Image (`logiover/instagram-media-downloader`) Actor

- **URL**: https://apify.com/logiover/instagram-media-downloader/changelog.md
- **Full Actor documentation**: https://apify.com/logiover/instagram-media-downloader.md

## Changelog

### 2026-09-23

- Fleet-wide quality audit. Verified end to end against live data and re-checked the input schema, the output columns and the run configuration.
- Output verified on a live run: 11 columns returned, 100.0% of cells populated.
- Run reliability reviewed: 94.7% of public runs succeeded in the last 30 days.
- Input schema, output schema and pricing configuration reviewed.

### 2026-09-01

- Fleet-wide health check. Verified against this Actor's real run history: 30-day success rate, output row counts, per-field fill rates, and peak memory against the configured memory limit.
- Reviewed for the failure patterns that have cost this fleet runs — unguarded proxy setup, retry loops that can outlast the run's own time budget, and full-page HTML parsing that can exhaust a small container.
- No change to input, output fields or scraping logic.

### 2026-08-11

- Maintenance release: refreshed the build and dependencies.
- Re-verified live execution, non-empty structured output and dataset field/type integrity.
- Reviewed reliability (retries, pagination) and output quality as part of a full-fleet QA pass.

### 2026-08-01

- Completed the August 2026 full health check: verified empty/programmatic default, Console UI default, and two source-informed alternative inputs on Apify.
- Confirmed successful live execution, non-empty structured output, dataset-field/type integrity, and logical sample quality within the 5-minute quality window.
- Replaced stale health-check/default examples with current public Instagram media: two live Reels for the bulk variation and a mixed eight-asset carousel for field/type coverage.
- Made Instagram's public shortcode embed the direct-first media and metadata route, retaining the downloader only as a Story/embed fallback; verified the resulting signed CDN URLs return real image/jpeg and video/mp4 content.
- Deduplicated repeated fallback responses by decoded source asset, preventing the verified eight-item carousel from being emitted and billed as 64 duplicate rows; duplicate source URLs are normalized and skipped too.
- Made all-invalid, private, deleted, expired, blocked, or otherwise zero-media batches fail explicitly instead of reporting a misleading successful empty dataset.
- Hardened Instagram URL/hostname validation and aligned the 11-field dataset schema, table view, README, signed-link lifetime guidance, media-type enum, and previously undocumented productType field with live output.
- Pinned patched transitive releases for adm-zip, axios, brace-expansion, and form-data, reducing the production dependency audit from five high-severity advisories to zero.

### 2026-07-18

- Maintenance & reliability pass — re-verified end-to-end against live data via the Apify API; confirmed the Actor completes successfully and returns non-empty, well-formed results within the 5-minute quality window on its default input.
- Refreshed build so the latest version is current; no change to inputs, output fields or scraping logic.

### 2026-07-12

- Empty input `{}` now returns data: when no links are given the Actor downloads a couple of popular public posts as a sample instead of exiting empty.
- `startUrls` is no longer required — the input is fully optional.
- Fixed the output "Results" link to point at the dataset items endpoint.
- Added per-field titles/descriptions to the dataset schema (likes/views formatted as numbers). No output field keys were renamed.

### 2026-06-28

- Health check passed — actor verified working end-to-end on Apify platform.
- Changelog refreshed for Store quality compliance.

### 2026-06-20

- Maintenance & reliability pass: re-verified end-to-end against live data and confirmed the Actor completes successfully within the 5-minute quality window on the default input.
- Refreshed the prefilled example input and tuned run defaults for faster, lower-cost runs.
