# Changelog of Instagram Scraper & Reels Downloader (`socialbeast/instagram-scraper-reels-downloader`) Actor

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

This changelog lists every change to Instagram Scraper & Reels Downloader, newest first.

#### 2026-10-13

*Fixes*

- A run moved to another server while nothing new had happened for a while no longer loses the `OUTPUT.downloads` entries made before the move.
- A run that stopped because too many links failed, with one lookup that never answered, no longer waits until its timeout.
- A share link that couldn't be resolved for now is tried again at the end of the run instead of failing.
- On the Free plan without the usage store, a keyword search page counted twice against the run's results. Now once.
- `OUTPUT.downloads` lists repeated links and inputs too, as duplicates of the first.
- A download whose connection dropped before Instagram answered is retried, like one that dropped mid-file.

#### 2026-10-12

*Changes*

- The pricing notes say the run start fee is per GB of memory: $0.003 for most runs, more for big runs that get 2 to 4 GB.
- Small runs start with 256 MB of memory (were 512 MB). Prices are the same.
- Runs start sooner: the Actor's image is 17% smaller, and the transcript model loads about 4 times faster. Transcripts are exactly the same.
- Downloads are charged by size: one download covers up to 50 MB of a post's files (almost every Reel), each further started 50 MB is one more, up to 300 MB a post (was 32 MB). Long Reels of 40 to 150 MB are saved now instead of getting only their direct links.
- 1080p costs one download more, charged only once the 1080p file is saved. If it can't be made you get the 720p file and pay for that only.
- A download is $0.0058 on Starter ($0.0043 on Business) and a transcript minute $0.0038 on Starter ($0.0029 on Business).
- Each files row says how many downloads its post was charged (`downloadCharges`).
- Big files go through disk, not memory: a 150 MB Reel uses no more memory than a small one.
- New *Download quality* **Audio only**: just each Reel's sound, as an .m4a file, for one download. A photo has no sound and is charged as a normal post.
- Each downloaded video keeps its cover picture too (`downloadedCover`), free: a preview that doesn't expire like Instagram's links.
- `OUTPUT.downloads` lists every link's result (its saved file, cover, size, quality and charges, or why it failed), so one `run-sync` API call gets everything.
- Instagram share links (`instagram.com/share/reel/...`) work in every mode.
- A download already charged is always saved in full, even when the run stops early because too many links failed (its files used to be cut off).
- When Instagram keeps throttling a run that hasn't returned anything yet, the run stops quickly instead of waiting up to 5 minutes. The links not looked up get a free row to run again in a few minutes.
- `OUTPUT.downloads` also lists the links a run stopped before, with the reason.
- A run that makes no progress for 12 minutes (Instagram or storage not answering) stops and keeps what it returned; the rest get a free row to run again. It used to wait until the run's timeout.
- A 1080p download with a transcript, at your maximum cost or results, no longer waits until the run's timeout.
- A download from Instagram that stops coming is resumed, then given up within about 2 minutes (was up to 12).
- *Maximum results per run* counts keyword search pages too, and on the Free plan a month used up buys no search page.
- Comments mode with thousands of comments a post keeps its memory steady: such posts are read a few at a time, and the run gets 512 MB or more.
- Every run keeps its memory use in check sooner, so a big run doesn't run out of memory.

#### 2026-10-11

*Features*

- Place rows are 2 results, like profile and hashtag rows (were 6): a place's page no longer costs extra.
- View counts (`videoViewCount`) are on by default, and still free. Turn off *Include view counts* to leave them out.
- In Reels mode pinned Reels are left out by default, so the newest Reels come back. Set *Skip pinned posts* to off to keep them.
- New **Search by keyword (Google)**: enter keywords and pick profiles or hashtags; each keyword is searched on Google and the profiles or hashtags it finds are scraped as usual, with the keyword in `searchTerm`. Each Google results page read is 5 results. Inputs written for the most used Instagram scraper (`search`, `searchType`, `searchLimit`) now search the same way.
- New **Downloads** option in *What to scrape*: each post's video (with sound) or photos are saved to your Apify storage with links that keep working. A download covers up to 32 MB a post; a bigger post is charged as a normal post and keeps its direct links.
- Each downloaded file is one record with one link, whatever its size. Files over 8 MB used to come in parts.
- Inputs with a `links` list, as written for other Reel downloaders, work unchanged.
- New *Download quality* option: **1080p** saves each Reel's full-quality video joined with its sound into one MP4 (VP9 video), at the same price. 720p (H.264, plays everywhere) stays the default.
- A new **Hashtags** view in the Output tab.
- The run's status and `OUTPUT.tooLargeToDownload` count posts over 32 MB that were charged as normal posts.

*Fixes*

- Hashtag details: Instagram's summary (`description`) has real line breaks and no footnote marks for sources it doesn't give.
- Profile and hashtag details take fewer requests: highlights pages Instagram refuses to logged-out visitors aren't asked again, and an empty related-accounts list is taken as it is.
- The older *Save files* inputs (`saveMedia`, `includeDownloadedVideo`) save files at the Downloads price instead of per MB.
- The input form is simpler: *What to scrape* comes first, four main fields show, and the rest is folded under *More options*, *Only new posts* and *Paid add-on*.
- Comments mode follows *Only posts newer than*: comments older than the date are skipped, and a post with none newer gets a free row that says so.
- On the Free plan, a post charged as a normal post because the month's download allowance was used up never has its files saved later in the run.
- A 1080p download whose video stream was much larger than Instagram stated could end with no file. It now saves the 720p file with sound instead, for the same one download.
- When your maximum cost ran out exactly at a download, that download was charged but its files weren't saved. They are now.
- A run with far more failed inputs than results lists the extra failed inputs together in grouped rows (up to 1,000 inputs a row, see `inputUrls`), so every input is still reported.

#### 2026-10-10

*Features*

- New prices: $1.08 per 1,000 results on the Free plan, $0.96 on Starter, $0.84 on Scale and $0.72 on Business.
- Transcripts are charged per started minute, as **Add-on: Transcript**.
- Transcript rows include each spoken part with its start and end time (`transcriptSegments`).
- A video with no speech (music only) gets a free note instead of a charged, empty transcript.
- Full profile details cost the same as Basic: 2 results.
- With *Only new posts*, a profile, hashtag or place checked with nothing new costs 2 results.
- Hashtag runs are faster: play counts shown on the hashtag's search page aren't fetched again.

*Fixes*

- Place links: Instagram now mostly hides a place's posts from logged-out visitors. The place gets one free `NEEDS_LOGIN` row instead of "not found", and its details row still works.
- A post that a profile or hashtag listed, but that is deleted or private by the time it's read, gets a free row with its `url`, counted in `OUTPUT.postErrors`.
- Failed inputs are checked with fewer requests, and a run where almost every input fails stops early with free `TOO_MANY_FAILURES` rows.

#### 2026-10-09

*Features*

- Pay per result: each kind of row is a fixed number of results, charged before its data is written. Failed links, duplicates and posts your filters skip are free.
- Free plan: up to 3,000 results, 120 transcript minutes and 300 MB of downloads a month, and 50 comments a post. Any paid Apify plan removes these limits.
- *Only new posts since the last run*: a scheduled run returns, and charges, only posts it hasn't returned before. Its memory is kept in your account and holds only hashes.
- New option *Maximum results per run*. Inputs it didn't reach get free rows.
- Profile details follow *Detail level*: Basic is a light row; Full adds the exact post count, the latest posts' likes and comments, and related accounts.
- Basic posts from a hashtag are complete like any other post: likes, comment count, size, length, music and every carousel slide.
- `OUTPUT` adds results by kind (`resultsBy`) and how each profile, hashtag or place listing ended (`sources`).

*Fixes*

- Every input gets exactly one row. Inputs a stop leaves (maximum cost, timeout, abort) get a free row saying why.
- The same post given twice is charged once; the repeat gets a free row with `duplicateOf`.
- A run moved to another server carries on where it was, without charging twice.
- Runs that ask for an older build stop at once and say which build to use.

#### 2026-10-05 to 2026-10-08

*Features*

- Comments mode goes back up to 10,000 comments a post, newest first.
- *Basic* detail level: every post field except the newest comments and topic labels, faster and cheaper.
- Reel transcripts (*$ Include transcript*), made inside the run.
- Profile details include the exact post count (`postsCount`) and whether the account has a story up.
- New Output views: Videos and Reels, and Failed inputs.
- Memory you don't set is picked from your input: 512 MB for small runs, more for big ones.

*Fixes*

- `isBusinessAccount` was false for every profile.
- Hashtags in Hindi, Tamil, Thai and other scripts with vowel signs were rejected.
- `isPinned` flagged posts that a collaborator, not the profile, had pinned.
- An *Only posts newer than* value that couldn't be read was ignored. The run now stops with a free `INVALID_DATE` row, and `-7 days`, `last 2 weeks`, `today` and `yesterday` work.
- A profile's tagged-tab link returned the account's own posts. It now gets a free `NEEDS_LOGIN` row, and a Reels-tab link returns only Reels.
- Big profiles no longer stop early without saying so.
- A public post was sometimes reported as private.
- Comments mode's summary counted every comment twice. The charge was always right.
- Photos report their full size in `dimensionsWidth` and `dimensionsHeight`, and `videoDuration` is as precise as Instagram gives it.

#### 2026-10-02 to 2026-10-05

*Features*

- First release: public posts and Reels from links, with direct video, audio and image links, and no Instagram account.
- Profiles, `@usernames`, `#hashtags` and place links work as input.
- Options and fields named as in the leading Instagram scrapers (`resultsType`, `resultsLimit`, `onlyPostsNewerThan`, `skipPinnedPosts`, `directUrls`, `username`), so their inputs work unchanged.
- Every post row includes its newest comments, and *Comments* mode returns one row per comment.
- *Details* for profiles, hashtags and places; Reels carry their play count (`videoPlayCount`).
- Share-button links, links without `https://` and links inside text work.

*Fixes*

- Runs of many links are about 60% faster.
- When Instagram throttles a run, it pauses and carries on instead of failing the remaining links.
- Deleted posts are reported as `not_found` straight away.
