# Changelog of Instagram Scraper (`automation-lab/instagram-scraper`) Actor

- **URL**: https://apify.com/automation-lab/instagram-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/automation-lab/instagram-scraper.md

## Changelog

### 2026-09-26

*Reliability*

- Post URL and comments modes now accept a valid legacy post URL when the newer post URL list is present but empty after switching modes. Requests with no usable post URL still fail clearly.

### 2026-09-24

*Reliability*

- Profile and posts requests now try public embed and search recovery when Instagram's primary profile API returns a missing-user response, rather than failing before checking those independent routes. Fully unavailable profiles still fail clearly.

### 2026-09-23

*Reliability*

- Public post embeds now recover posts when Instagram's ordinary logged-out page omits media data. Unresolved post URLs emit uncharged error rows; fully unresolved batches still fail.
- Post-URL and comments batches now preserve useful results and finish with a partial-result status when only some post URLs are unavailable. Batches with no resolved posts still fail clearly.

### 2026-09-21

*Reliability*

- Mixed profile and posts batches now finish successfully when at least one requested profile returns useful output, while preserving uncharged structured error rows and a clear partial-result status for unresolved inputs.
- Fully unresolved batches and missing required inputs still fail instead of returning an empty success.

### 2026-09-14

*Reliability*

- Profile and posts batches now correctly read Instagram's escaped public profile-embed data when the primary profile API is rate-limited or affected by an upstream schema error.
- Valid public profiles recovered through the embed fallback retain honest partial-failure reporting for inputs that remain unavailable.
- Post and reel URL fallbacks now keep the supplied canonical path, avoiding duplicate large challenge downloads that could exhaust memory on rejected bulk inputs.

### 2026-09-08

*Changes*

- Bulk profile and post runs now add an uncharged structured error row for every unresolved input, so automated workflows can identify and retry missing usernames without parsing logs.
- Successful results are preserved, duplicate normalized inputs produce only one error row, and incomplete runs still fail clearly.

### 2026-09-02

*Reliability*

- Public profile lookups now use a coherent Instagram mobile identity, rotate blocked residential sessions, and recover through Instagram's public profile embed when the full profile API remains unavailable.
- Exhausted profile lookups still fail clearly without charging unresolved profiles or hiding missing output.

### 2026-08-05

*Reliability*

- Partial profile batches now show a concise run status with saved profile/post counts and clarify that unresolved profiles are not charged.

### 2026-08-03

*Reliability*

- Post URL and comments modes now retry through Instagram's authenticated media endpoint when a session cookie is supplied, and clearly fail with every unresolved shortcode instead of silently succeeding with missing output.
- Hashtag discovery now uses a direct route before residential fallback, and unresolved post pages use bounded proxy retries to reduce runtime and proxy transfer without removing coverage.

*Changes*

- Documentation and public examples now state which workflows require an Instagram session and no longer advertise a cookie-free comments task that Instagram currently rejects.

### 2026-07-29

*Reliability*

- Partial profile and posts batches now identify every unresolved username and fail the run after preserving successful output, instead of silently reporting complete success with missing inputs.

### 2026-07-27

*Reliability*

- Profile and posts modes now fail clearly when Instagram rejects every profile lookup route, instead of reporting success with an empty dataset. The error explains when a logged-in session cookie is required.

### 2026-07-22

*Reliability*

- Restored authenticated mentions scraping after Instagram removed a field used by its web profile query. Mentions now use a separate authenticated profile lookup and fail clearly instead of reporting success with no results when Instagram rejects the required requests.

### 2026-06-19

- Updated the default comment limit to match the documented 20 comments per post.

### 2026-04-18

- Improved profile scraping reliability with user-agent rotation and a fallback search endpoint when Instagram blocks the primary profile endpoint.

### 2026-03-07

- Added hashtag search, date filtering, richer post and profile fields, plus authenticated hashtag-post and mentions scraping modes.
