This changelog lists every change to Instagram Scraper & Reels Downloader, newest first.
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.
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.
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.
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.
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.
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.
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.