Instagram Engagement Metrics Scraper avatar

Instagram Engagement Metrics Scraper

Pricing

from $2.49 / 1,000 results

Go to Apify Store
Instagram Engagement Metrics Scraper

Instagram Engagement Metrics Scraper

Instagram Stats Scraper SD - Instagram Stats Scraper is an analytics tool that extracts engagement statistics of public Instagram accounts: engagement rate, average and median likes and comments, reel plays, posts per week, top hashtags and the best post.

Pricing

from $2.49 / 1,000 results

Rating

0.0

(0)

Developer

Neuro Scraper

Neuro Scraper

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

3

Monthly active users

11 days ago

Last modified

Categories

Share

Instagram Stats Scraper — engagement rate, averages and posting frequency

The Instagram Stats Scraper measures public Instagram accounts: followers and following plus statistics from the newest posts - engagement rate, average and median likes and comments, reel plays, posts per week, days since the last post, the post type mix, top hashtags, the best posts and the best posting time.

It runs on Apify, needs no Instagram login and no cookies, and exports to JSON, CSV, Excel or an API call. Every session key it needs (tokens, query ids, cursors) is read from Instagram on each run, so it keeps working when Instagram ships new code.

What the Instagram Stats Scraper does

  • Reads each profile and its newest posts from Instagram's own post list, which carries likes, comments, dates and the pinned flag, so the analysed posts need no extra request each.
  • Leaves pinned posts out by default: they are often months old and distort posting frequency (natgeo: 1.08 posts a week with its 2 pinned posts, 26.0 without, measured 2026-10-03).
  • Reads reel plays from the Reels tab list, the logged-out list that carries play counts.
  • Computes the engagement rate as (average likes + average comments) / followers x 100, plus a median version that one viral post cannot skew.
  • Adds the best posting day and hour (UTC), the 5 best posts, totals, average hashtags per post, bio, business category and account type.

Who uses the Instagram Stats Scraper

  • Influencer marketers vetting creators before a campaign.
  • Agencies benchmarking clients against competitors.
  • Brands tracking their own engagement month by month.
  • Researchers comparing accounts on the same metrics.

How the Instagram Stats Scraper works

Instagram serves every public page to logged-out visitors together with the queries that fill it.

The Actor loads the page the way a browser does, reads the session values Instagram puts into it, and then asks Instagram's own GraphQL endpoint for the next page with the cursor the previous page returned.

Query ids that a page does not preload are read from the JavaScript bundles that page lists. Large files from Instagram's CDN (images, videos) are fetched directly with their signed links, so proxy traffic stays small.

Nothing is guessed: if Instagram stops publishing a value the Instagram Stats Scraper needs, the run log names it and the item is skipped instead of being filled with a stale value.

Input of the Instagram Stats Scraper

FieldTypeDefaultWhat it does
usernamesarray["nasa", "natgeo"]One per line: a username (nasa), an @handle (@nasa) or a profile URL (https://www.instagram.com/nasa/).
postsToAnalyzeinteger12How many of the newest posts the averages, engagement rate and posting frequency are based on. Posts come from Instagram's own post list, about 12 per request;
includePostListbooleanFalseAdds the analysed posts (link, type, date, likes, comments, plays) to each row.
skipPinnedPostsbooleanTruePinned posts are often months old and distort posting frequency; they are left out of the analysed posts unless you turn this off.
maxItemsinteger0Stops the run after this many account rows.
proxyConfigurationobject{"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}Instagram limits logged-out visitors per IP address. Residential proxies (the default) give the most reliable results; the Actor switches to a fresh IP when Ins

Example input for the Instagram Stats Scraper:

{
"usernames": [
"nasa",
"natgeo"
],
"postsToAnalyze": 12,
"skipPinnedPosts": true
}

Output of the Instagram Stats Scraper

Each dataset row is one account (one row of statistics per username). These are the fields the Instagram Stats Scraper produced in its test runs:

FieldMeaning
accountTypepersonal, business or creator
avgCommentsAverage comments per analysed post
avgHashtagsPerPostHashtags per analysed post
avgLikesAverage likes per analysed post
avgReelPlaysAverage plays of those reels
bestPostThe analysed post with the most likes + comments
bestPostingDayWeekday with the best average likes + comments
bestPostingHourUtcHour (UTC) with the best average likes + comments
biographyBio text
businessCategoryNameBusiness category shown on the profile
daysSinceLastPostDays since the newest analysed post
engagementRateEngagement rate in percent: (average likes + average comments) / followers x 100
firstAnalyzedPostAtDate of the oldest analysed post
followersCountFollowers
followsCountAccounts followed
fullNameDisplay name
highlightsCountStory highlights on the profile
inputUsernameThe username or link as you entered it
isBusinessAccountTrue for business accounts
isPrivatePrivate account
isVerifiedVerified badge
lastPostAtDate of the newest analysed post
latestStoryAtTime of the newest story
likesHiddenPostsPosts with hidden like counts (left out of the averages)
medianCommentsMedian comments per analysed post
medianEngagementRateSame rate from the median likes and comments
medianLikesMedian likes per analysed post
medianReelPlaysMedian plays of those reels
noteWhy a statistic is missing, when one is
pinnedPostsSkippedPinned posts left out
postTypeMixAnalysed posts by type (Image, Video, Sidecar)
postsAnalyzedPosts the statistics are based on
postsPerWeekPosting frequency over the analysed posts
postsRequestedPosts you asked to analyse
profilePicUrlProfile picture link
reelsAnalyzedReels read from the Reels tab
scrapedAtWhen this row was read
topHashtagsMost used hashtags
topMentionsMost mentioned accounts
topPostsThe 5 best analysed posts

Fields that Instagram does not publish for an item are left empty rather than guessed. Download the dataset as JSON, CSV, Excel, XML or HTML, or read it through the Apify API.

Example row from a Instagram Stats Scraper test run

A real row from the local test run (long values shortened):

{
"username": "nasa",
"fullName": "NASA",
"url": "https://www.instagram.com/nasa/",
"isVerified": true,
"isPrivate": false,
"followersCount": 104283157,
"followsCount": 89,
"highlightsCount": 5,
"latestStoryAt": "2026-10-02T20:53:37.000Z",
"profilePicUrl": "https://scontent.cdninstagram.com/v/t51.2885-19/29090066_159271188110124_11520681590296...",
"postsAnalyzed": 12,
"postsRequested": 12,
"likesHiddenPosts": 0,
"avgLikes": 235928.42,
"medianLikes": 179467.0,
"avgComments": 944.92,
"medianComments": 781.5,
"reelsAnalyzed": 12,
"avgReelPlays": 5644134.42,
"medianReelPlays": 5458912.5,
"engagementRate": 0.2271,
"medianEngagementRate": 0.1728
}

Data quality of the Instagram Stats Scraper

  • Every value in a Instagram Stats Scraper row is read from Instagram during your run; nothing is filled from a cache or an old snapshot.
  • Rows are de-duplicated by id inside a run, so the same account never appears twice in one dataset.
  • Counts are numbers you can sort and sum (not "1.2K" text) wherever Instagram publishes the exact number.
  • Dates are UTC in ISO 8601 format, which Excel, Google Sheets, Python and SQL all read directly.

Instagram Stats Scraper test results

These numbers come from live test runs of the Instagram Stats Scraper on 2026-10-03 (home connection, no proxy). Runs on the Apify platform use residential proxies and can be faster or slower.

TestRowsTime
prefill input (regression)225 s
post list, pinned posts kept119 s
missing user + URL form116 s

Instagram Stats Scraper limits, stated plainly

  • Private accounts return only the public counters (followers, following, verified).
  • Posts whose owner hid like counts are counted in likesHiddenPosts and left out of the averages.
  • When Instagram refuses its post list, the Actor falls back to the profile grid and reads each analysed post with one request.
  • Measured locally: 2 accounts with 12 posts each in 18 to 25 seconds; natgeo with 24 posts in 19 seconds.

How to run the Instagram Stats Scraper

  1. Open the Instagram Stats Scraper in Apify Console and fill in the input fields described above.
  2. Keep the default residential proxy unless you have a reason to change it; Instagram limits logged-out visitors per IP address.
  3. Start the run, watch the log, and download the dataset when the status says Done.
  4. To automate it, call the Instagram Stats Scraper from the Apify API, schedule it, or connect it to Make, Zapier, n8n or Google Sheets through an integration or webhook.

Python example with the Apify API client:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"usernames": [
"nasa",
"natgeo"
],
"postsToAnalyze": 12,
"skipPinnedPosts": True
}
run = client.actor("neuro-scraper/instagram-stats-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

Instagram Stats Scraper pricing

The Instagram Stats Scraper uses pay-per-event pricing: you pay per dataset row (event "result"), plus the Apify platform usage of your run. Free-plan users get up to 30 rows per run, which is enough to test the Instagram Stats Scraper on real data.

Set a maximum cost per run in Apify and the Instagram Stats Scraper stops cleanly when it is reached.

Tips for large runs of the Instagram Stats Scraper

  • Start with a small limit to check the Instagram Stats Scraper output, then raise it; the first rows arrive within seconds.
  • Split very large jobs into several inputs and run them in parallel tasks; each run gets its own proxy sessions.
  • Set a maximum cost per run in Apify; the Instagram Stats Scraper stops cleanly when the budget is reached and keeps every row it already saved.
  • Schedule repeat runs instead of one huge run when you track the same targets over time.
  • Keep the residential proxy: datacenter IPs are refused by Instagram far more often for logged-out visitors.

Instagram Stats Scraper compared with copying by hand

Instagram Stats ScraperManual work
SpeedSeconds per page of resultsMinutes per item
FieldsEvery public field, same order every timeWhatever you copy
FormatJSON, CSV, Excel, APISpreadsheet you build yourself
RepeatableSchedule it dailyStart again each time
ErrorsLogged per itemUnnoticed typos

Using the Instagram Stats Scraper in a workflow

  • Send every new row to Google Sheets or Airtable with the Apify integration and keep a live table.
  • Trigger a Make, Zapier or n8n scenario with a webhook when the run finishes.
  • Load the JSON export into Python or BigQuery for analysis and dashboards.
  • Use the Apify API: start the Instagram Stats Scraper with a POST request and read the dataset items endpoint when the run finishes.
  • Chain it: pass the Instagram Stats Scraper output to another Apify Actor (for example a downloader or a transcript Actor) in an Apify task.
  • Export straight to Excel from the dataset tab when you only need a one-off report.

Troubleshooting the Instagram Stats Scraper

  • The run ends with no rows: open the log. The Instagram Stats Scraper writes one line per target saying what Instagram returned, for example a login wall or a missing item.
  • Fewer rows than expected: the target may have fewer public items, or Instagram may stop serving more pages to logged-out visitors. The log names the reason.
  • Slow run: large limits mean many pages; the Instagram Stats Scraper waits briefly between pages so Instagram keeps answering. Split big jobs into several runs.
  • Proxy errors: keep the RESIDENTIAL group. The Instagram Stats Scraper already switches to a fresh IP when one is blocked.
  • Free plan stops at 30 rows: that is the free-plan cap of the Instagram Stats Scraper; any paid Apify plan removes it.

What is in this first version of the Instagram Stats Scraper

  • Built in October 2026 on Instagram's logged-out web endpoints; every token, query id and cursor is read at run time.
  • Its options and fields were compared with the top 10 Instagram Actors of its kind on the Apify Store; everything that works logged out is included.
  • Residential proxy by default, with automatic switch to a fresh IP when Instagram blocks one.

The Instagram Stats Scraper reads only data that Instagram shows to any logged-out visitor. It never logs in and never touches private content. Personal data may still be in public posts, so check GDPR and the other laws that apply to you before you store or reuse it, and respect Instagram's terms.

ActorLink
Instagram Scraperneuro-scraper/instagram-video-scraper
Instagram Profile Scraperneuro-scraper/instagram-reels-scraper-downloader-pro
Instagram Posts Scraperneuro-scraper/instagram-posts-scraper
Instagram Reels Scraperneuro-scraper/instagram-reels-scraper
Instagram Hashtag Scraperneuro-scraper/instagram-reeel-scraper
Instagram Comments Scraperneuro-scraper/instagram-reels-scraper-and-downloader-premium
Instagram Search Scraperneuro-scraper/instagram-video-scraper-advanced
Instagram Video Downloaderneuro-scraper/instagram-video-downloader
Instagram Reels Downloaderneuro-scraper/instagram-reels-downloader
Instagram Image Downloaderneuro-scraper/instagram-video-scraper-and-downloader
Instagram Transcript Scraperneuro-scraper/instagram-video-scraper-and-downloader-pro
Instagram Mentions Scraperneuro-scraper/instagram-video-scraper-and-downloader-premium

Leave a review

If the Instagram Stats Scraper saved you time, please leave a star rating and a short review on its Apify page. Reviews help other users find the Instagram Stats Scraper and tell us what to improve next.

Frequently asked questions

How does the Instagram Stats Scraper calculate the engagement rate?

Engagement rate = (average likes + average comments) / followers x 100 over the analysed posts. The Instagram Stats Scraper also returns a median engagement rate, which one viral post cannot inflate.

Why does the Instagram Stats Scraper leave out pinned posts?

Pinned posts stay at the top of a profile for months. Counting them made natgeo look like it posts 1.08 times a week instead of 26 (measured 2026-10-03). Turn off "Leave out pinned posts" to include them.

Does the Instagram Stats Scraper need my Instagram login?

No. The Instagram Stats Scraper works logged out and never asks for your password or cookies. It reads only what Instagram shows to any visitor.

Do I need my own proxy for the Instagram Stats Scraper?

No. The Instagram Stats Scraper uses Apify residential proxies by default and switches to a fresh IP when Instagram blocks one. You can choose another proxy in the input.

What formats can I export from the Instagram Stats Scraper?

JSON, CSV, Excel, XML, HTML and RSS from the dataset tab, or any format through the Apify API, webhooks and integrations.

How fast is the Instagram Stats Scraper?

In the test runs above the Instagram Stats Scraper took between 16 and 25 seconds per run. Speed depends on how many items you ask for and on the proxy.

Why did the Instagram Stats Scraper return fewer rows than I asked for?

The Instagram Stats Scraper stops when Instagram has nothing more to show logged out, when your limit is reached, or when the free-plan cap of 30 rows applies. The run log always says which one happened.

Can I schedule the Instagram Stats Scraper?

Yes. Create a schedule in Apify Console to run the Instagram Stats Scraper daily or hourly and send the results to Google Sheets, Make, Zapier or n8n through an integration.

Can the Instagram Stats Scraper read private accounts or private groups?

No. The Instagram Stats Scraper reads public data only. Private content needs a login, and the Instagram Stats Scraper never logs in.

What happens when Instagram changes its website?

The Instagram Stats Scraper reads every key it needs from Instagram at run time, so routine changes are picked up automatically. If something can no longer be read, the log says so instead of returning wrong data.

Can I use the Instagram Stats Scraper with Make, Zapier or n8n?

Yes. Add the Instagram Stats Scraper as an Apify step in Make, Zapier or n8n, or send a webhook when the run finishes and fetch the dataset items from the Apify API.

Does the Instagram Stats Scraper work in every country?

The Instagram Stats Scraper reads Instagram through residential proxies that rotate across countries. Content that Instagram restricts by country follows those rules.

How do I collect only new items with the Instagram Stats Scraper?

Schedule the Instagram Stats Scraper and keep the item ids from earlier runs. Every row has a stable id, so a simple de-duplication against your previous export keeps only the new ones.

Can the Instagram Stats Scraper process many targets in one run?

Yes. Put as many targets as you like in the input; the Instagram Stats Scraper handles them one after another and a failing target never stops the others.