All notable changes to Instagram Scraper are listed here, newest first.
- Small runs finish sooner: a run opens its connections to Instagram at the same time instead of one after another, which saves about a second on a run with one or a few URLs.
- Runs with one or a few URLs use less traffic: a run with one URL now does all its work over a single connection, and Post details runs share connections between URLs. A single post costs about 45% less traffic than before.
- Comments rows have a new field,
isHidden: true for a comment Instagram hides from people who aren't logged in. Instagram's site leaves those comments out of the thread; this dataset keeps them and marks them.
- Posts rows have a new field,
facebookLikesCount: the likes a post got on Facebook when it was shared there from Instagram. Instagram doesn't show this number on its site.
- A line that leads nowhere because of the input itself (an account or post that doesn't exist, a private account, an account with no posts, a post with no comments, or a login cookie Instagram refused) now returns an error row with
error and errorMessage instead of nothing. Each error row is charged as one result of the chosen mode. Failures on our side are not charged.
- Location posts work without an Instagram cookie: you get a place's recent and top posts, about 70 per place. Add a cookie to get more.
- Profile details no longer includes
relatedProfiles, the list of similar accounts Instagram suggests. Profile rows are faster and lighter without it.
- New README with step-by-step examples for common tasks: posts from the last 7 days, posts from a date range, reel views, comments, emails and phone numbers, followers, hashtags and places.
- Redesigned input form: an example input you can run right away, a date picker for the date filter, and short explanations for every section.
- The Output tab groups results into views by type of data: Posts & reels, Profiles, Contacts, Comments, Followers/following/likers, Stories & highlights, and Hashtags & places. Every field now has a description and an example.
- The Output tab also shows the run report: what was scraped from each line, what was skipped and why. In the Storage tab, the run report and the diagnostics file have their own tabs.
- Search for profiles returns up to your limit instead of stopping at 5 accounts.
- Following no longer lists the same account twice for one profile, so you are not charged for repeats.
- With a login cookie, a username that doesn't exist now returns a "not found" error row within a few seconds, instead of a long wait and a generic failure.
- A hashtag or place that doesn't exist now returns a "not found" error row. Before, a hashtag like that was reported as a login wall even with a working cookie.
- Followers and Following of a private account return a "private" error row instead of an empty result.
- Comments on large posts are logged with a reason if Instagram stops returning pages part-way.
- Comments from post URLs return every comment you ask for, not only the first 16 of each post.
- Runs with a login cookie no longer send the same request twice from your session when Instagram is slow to answer.
- Fixed a rare case where a run returned only a few posts or reels because Instagram briefly limited the connection when the run started.
- Tagged posts returns posts again. For some login cookies, Instagram refused the tagged feed and the run returned no rows.
- A post URL that points to a deleted post, or to a post from a private account, now fails right away with a clear message in Post details and Comments mode, instead of a technical HTTP error.
- Runs with usernames that don't exist finish several times faster.
- Profile posts runs with many posts finish about 20% faster.
- Location posts and Hashtag posts no longer download the first page of posts twice, so runs over many posts are cheaper and faster.
- Profile details, Stories, Highlights, Followers and Following find each account faster, especially with a login cookie.
- A run no longer waits on one slow connection: a request that timed out is retried from a different address.
- Fixed a rare case where the last rows of a run were not saved to the dataset. Those rows were not charged.
- Profile reels read fewer duplicate pages, so reel runs are cheaper.
- A run with a login cookie no longer advises you to add one.
- The highlight title and cover image of Highlights rows (
highlightTitle, highlightCoverUrl) are now listed in the output description.
- Profile reels lists the account's Reels tab, including reels that aren't shown on the profile grid, with play counts.
- Profile posts includes play counts for reels.
- New profile fields:
highlights, hasActiveStory, latestStoryAt, isMemorialized, newsRestrictedIn and threadsUsername.
- New post field:
sponsors, the brands of a paid partnership.
- With a login cookie, Profile posts, Profile reels and Comments return as many results as without one.
- A post with hidden likes shows an empty like count instead of a wrong number.
- Story rows include the author and a link to the story.
- Highlights work even when Instagram doesn't show the highlight list to your account.
- More ways to paste your cookie are accepted: the value alone, one cookie per line, URL-encoded text, text copied through a chat app, and "Copy as fetch" from the browser.
- Nine more countries in Country you use Instagram from: Czechia, Portugal, Romania, Vietnam, Philippines, Thailand, Nigeria, Egypt and Colombia.
- Runs with your cookie use the same address and browser for your account every time, so Instagram is less likely to ask you to verify your login.
- Every run reads Instagram from one country (the United States unless you choose another), so the same input gives the same results.
- A cookie that can't be read no longer stops modes that don't need one. The run continues without it and tells you.
- When your cookie stops working during a run, the run says so clearly.
- A deleted post is reported as no longer available.
- Profile details returns more fields for accounts that Instagram shows only partly to visitors who aren't logged in.
- You are no longer charged for rows without data: a profile row with only a name, or a post row without a date, likes or comments count.
- Comments and Likers accept a username: you get the comments or likers of the account's recent posts.
- The run tells you when Instagram cuts a follower or following list short.
- Image and video links open from any network.
- Hashtags with emoji no longer fail.
- A run with a working cookie no longer asks you to add one.
- A run that stopped early says so instead of reporting success.
- Search matches are charged as profile records, because each one is a full profile row.
- The form and README say correctly that Comments works without a login.
- Skipped lines are explained in plain words.
- A paste that mixes usernames and URLs keeps every line.
- Captions and bios show special characters correctly.
- Contacts no longer mistakes opening hours for phone numbers.
- Search mode uses the pasted line as the search phrase when the Search field is empty.
- The date filter returns every post inside the date range.
- One What do you want to scrape? list with 15 modes, and one field for URLs or usernames.
- New modes: Contacts, Followers, Following, Likers, Tagged posts, Stories and Highlights.
- Usernames and
@handles work without a full URL.
- Country you use Instagram from, so that Instagram doesn't challenge your login.
- The price depends on the type of result (post, profile, story, comment, or account from a list) instead of one price for every row.
- Business accounts that failed before now return data.
- Valid login cookies are no longer rejected.
- Runs with a short timeout return results.
- The run tells you up front when a mode needs a login cookie.
- First release: posts, reels, profile details and comments from profiles, posts, hashtags and places.
- Search for profiles, hashtags and places.
- Date filter for posts.
- Optional login cookie for data that Instagram shows only to logged-in users.
- Export to JSON, CSV, Excel and HTML, and access through the API.