Instagram Engagement Scraper
Pricing
from $40.00 / 1,000 processed usernames
Instagram Engagement Scraper
Turn any public Instagram username into ready-to-use creator insights: follower stats, feed and Reels engagement rates by views, average views, content mix, and coverage signals, one clean record per creator. Perfect for influencer vetting, campaign planning, and creator analytics at scale.
Pricing
from $40.00 / 1,000 processed usernames
Rating
0.0
(0)
Developer
SilentFlow
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Turn public Instagram usernames into engagement-ready creator insights. Profile, feed, and Reels performance in one clean record per creator, in seconds, not hours.
Give it a handle. Get back follower stats, real engagement rates measured the right way (feed by followers, Reels by views), the creator's content mix, and quality signals that tell you how much of the sample you can trust. No spreadsheets, no manual math, no exporting raw posts.
How it works

- You enter Instagram usernames. One or many, with or without the @.
- The scraper reads each public profile, recent feed posts, and Reels. Feed posts and Reels are measured separately, because mixing them into one number is meaningless.
- You get one structured record per creator, ready to export, sort, or feed into a dashboard.
โจ Why teams choose this over other Instagram scrapers
Paying an influencer who looks big but converts nothing? Drowning in raw post exports you still have to crunch yourself? Comparing creators on numbers you do not fully trust?
- ๐ฐ Pay per result, not per minute. No compute costs, proxies included. You pay for creators delivered, period.
- ๐ฏ Engagement measured the right way. Feed posts are rated against followers, Reels against views. These are the correct denominators, so the rates actually mean something.
- ๐งฎ Honest sample size. Each Reel is counted once, even though Instagram shows it in both the grid and the Reels tab. Other tools double-count it and inflate the numbers. Yours stay accurate.
- ๐ A deeper read on Reels. Up to 50 Reels and 75 feed posts sampled per creator, so the Reels engagement rate sits on real data, not a handful of clips.
- ๐ Know what you can trust. Coverage fields tell you exactly how much of the sample had usable view data before you cite a metric.
- โ๏ธ Compare any creator, any size. Interactions per 1,000 followers removes audience-size bias, so a 30K micro-creator and a 30M mega-creator sit on the same scale.
- ๐งน One clean record per creator. Structured JSON that drops straight into a sheet, a dashboard, or an AI workflow.
๐ฏ What you can do with Instagram engagement data
| Team | What they build |
|---|---|
| Influencer marketing | Vet creators on real engagement before sending a single outreach message |
| Brand / growth | Shortlist creators for a campaign and compare them on one consistent scorecard |
| Agencies | Build client-ready creator reports without hand-pulling numbers from each profile |
| Talent management | Track a roster's engagement trend over time and prove value to brands |
| Competitive research | Watch how rival brands' chosen creators perform and where their content skews |
| Data / RevOps | Feed standardized creator metrics into models, lead scores, or BI dashboards |
๐ฅ Input parameters
| Field | Type | Required | Description |
|---|---|---|---|
usernames | array of strings | Yes | One or more public Instagram usernames. The @ is optional. |
That is the whole input. One field, no setup.
{"usernames": ["natgeo", "zachking", "nasa"]}
๐ Output data
One record per username. A successful creator returns three sections: creator, engagement, and coverage.
{"creator": {"id": "14805456","username": "zachking","fullName": "Zach King","followersCount": 29285783,"followsCount": 412,"verified": true,"postsCount": 1300,"profilePicUrl": "https://...","external_url": "https://youtu.be/..."},"engagement": {"overall_interactions": 13620153,"feed_avg_engagement": 0,"feed_avg_engagement_rate_by_followers": 0,"clips_avg_engagement": 272403.06,"clips_avg_views": 10271482.4,"clips_engagement_rate_by_views": 2.6521,"avg_interactions_per_content": 272403.06,"interactions_per_1k_followers": 465.06,"posts_contribution_pct": 0,"clips_contribution_pct": 100,"engagement_skew_clips_over_feed": null},"coverage": {"total_items": 50,"feed_count": 0,"clips_count": 50,"feed_view_coverage": 0,"clips_view_coverage": 1}}
If a username cannot be analyzed, you get a clear record instead of a silent gap:
{"error": "private","message": "@example is private","next_reset": null,"ran_at": "2026-06-21T04:41:31Z"}
๐๏ธ Data fields
Creator
| Field | What it tells you |
|---|---|
username | The handle analyzed |
fullName | Display name |
verified | Whether the account holds a verification badge |
followersCount | Audience size at run time |
followsCount | Following count, useful for follower-to-following ratio checks |
postsCount | Total lifetime posts |
profilePicUrl | Profile picture URL |
external_url | Link in bio, often a brand or personal site |
id | Instagram numeric account id |
Engagement (all rates are percentages)
| Field | What it tells you |
|---|---|
overall_interactions | Total likes plus comments across the sampled content |
feed_avg_engagement | Average likes plus comments per feed post |
feed_avg_engagement_rate_by_followers | Feed engagement divided by followers, the industry-standard feed rate |
clips_avg_engagement | Average likes plus comments per Reel |
clips_avg_views | Average views per Reel |
clips_engagement_rate_by_views | Reel engagement divided by views, the correct rate for Reels |
avg_interactions_per_content | Average interactions across all sampled content |
interactions_per_1k_followers | Interactions normalized per 1,000 followers, the best cross-creator comparison number |
posts_contribution_pct | Share of the sample made up of feed posts |
clips_contribution_pct | Share of the sample made up of Reels |
engagement_skew_clips_over_feed | Reel engagement divided by feed engagement. Above 1 means Reels outperform feed |
Coverage (data-quality signals)
| Field | What it tells you |
|---|---|
total_items | Unique content pieces analyzed (feed plus Reels) |
feed_count | Feed posts analyzed |
clips_count | Reels analyzed |
feed_view_coverage | Share of feed posts with usable view data. Often 0, which is normal for feed |
clips_view_coverage | Share of Reels with usable view data. 1 means full coverage |
๐ Examples
Analyze one creator
{ "usernames": ["natgeo"] }
Score a shortlist for a campaign
{ "usernames": ["zachking", "natgeo", "nasa", "9gag"] }
Compare two competitors' brand creators
{ "usernames": ["nike", "adidas"] }
Check a micro-creator before outreach
{ "usernames": ["your_target_creator"] }
Batch a full vetting list
{ "usernames": ["creator1", "creator2", "creator3", "creator4", "creator5", "creator6"] }
๐ค Copy to your AI assistant
Paste this block into Claude, ChatGPT, or Cursor to give it full context about this scraper:
You have access to the Instagram Engagement Scraper on Apify: silentflow/instagram-engagement-scraperInput schema:- usernames (required, array of strings): public Instagram handles, @ optionalOutput per creator (one record each), grouped in three objects:creator: id, username, fullName, followersCount, followsCount, verified, postsCount, profilePicUrl, external_urlengagement (rates are percentages): overall_interactions, feed_avg_engagement, feed_avg_engagement_rate_by_followers, clips_avg_engagement, clips_avg_views, clips_engagement_rate_by_views, avg_interactions_per_content, interactions_per_1k_followers, posts_contribution_pct, clips_contribution_pct, engagement_skew_clips_over_feedcoverage: total_items, feed_count, clips_count, feed_view_coverage, clips_view_coverageA username that cannot be analyzed returns: error, message, next_reset, ran_at.Pay per result, proxies included. Use apify-client for Python or JavaScript.
๐ป Integrations
Build a creator vetting list in Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("silentflow/instagram-engagement-scraper").call(run_input={"usernames": ["zachking", "natgeo", "nasa"]})rows = []for item in client.dataset(run["defaultDatasetId"]).iterate_items():if "creator" not in item:continuec, e = item["creator"], item["engagement"]rows.append((c["username"], c["followersCount"], e["interactions_per_1k_followers"]))# Rank creators by engagement per 1,000 followersrows.sort(key=lambda r: r[2], reverse=True)for username, followers, score in rows:print(f"{username:20} {followers:>12,} {score:>8.1f} / 1k")
Flag Reels-first creators in JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('silentflow/instagram-engagement-scraper').call({usernames: ['zachking', 'natgeo'],});const { items } = await client.dataset(run.defaultDatasetId).listItems();for (const item of items) {if (!item.creator) continue;const skew = item.engagement.engagement_skew_clips_over_feed;const verdict = skew && skew > 1.5 ? 'Reels-first' : 'feed-first or mixed';console.log(`${item.creator.username}: ${verdict}`);}
Export to CSV for the team
import csvfrom apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("silentflow/instagram-engagement-scraper").call(run_input={"usernames": ["nike", "adidas", "puma"]})with open("creators.csv", "w", newline="") as f:writer = csv.writer(f)writer.writerow(["username", "followers", "clips_ER_by_views", "interactions_per_1k"])for item in client.dataset(run["defaultDatasetId"]).iterate_items():if "creator" not in item:continuec, e = item["creator"], item["engagement"]writer.writerow([c["username"], c["followersCount"],e["clips_engagement_rate_by_views"], e["interactions_per_1k_followers"]])
๐ Performance
| Metric | Value |
|---|---|
| Output | One record per username |
| Sample depth | Up to 75 feed posts and 50 Reels per creator |
| Typical speed | Most creators process in under a minute |
| Reliability | High, proxies included |
| Input size | From one username to a large batch |
๐พ Data export
Results land in an Apify dataset. Export from the dataset tab as JSON, CSV, Excel, XML, or HTML, or pull them programmatically:
https://api.apify.com/v2/datasets/{DATASET_ID}/items?format=csv&token=YOUR_TOKEN
๐ก Tips for best results
- Benchmark by creator tier. Typical feed engagement rates: Nano under 10K followers 3 to 6 percent, Micro 10K to 100K 1 to 3 percent, Macro 100K to 1M 0.5 to 1.5 percent, Mega 1M and up 0.1 to 0.5 percent. A rate well below the range can signal an inflated or passive audience.
- For Reels, read
clips_engagement_rate_by_views. Above 2 percent is generally strong. Checkclips_view_coveragefirst; a low value means the rate sits on fewer Reels and deserves more caution. - Use
interactions_per_1k_followersto compare across sizes. It removes the audience-size advantage, so creators of any size line up fairly. - Watch
engagement_skew_clips_over_feed. Above 2 means a Reels-dominant creator, below 0.8 means feed-first. Brief them for the format they win at. - Send your highest-priority handles first when running a long list, so the creators you care about most come back at the top.
โ FAQ
What exactly does this scraper return? A profile snapshot, feed and Reels engagement metrics computed separately, aggregate volume and per-1k-follower numbers, the creator's content mix, and coverage-quality signals. One record per username.
Do I need an Instagram account or login? No. It reads publicly available profile and post data. No login, no API key.
How are feed and Reels measured differently? Feed engagement is rated against followers (the standard for grid posts). Reels are rated against views, because views are how Reels are distributed. Combining them into a single rate produces a meaningless number, so they are kept separate.
Why is my feed_view_coverage zero?
That is expected. Instagram does not consistently expose view counts on feed posts, so the feed view coverage is usually zero. It does not affect the like-and-comment based feed metrics.
How many posts does it look at? Up to 75 recent feed posts and 50 recent Reels per creator. Metrics reflect this recent sample, not the account's entire history.
Can it analyze private accounts?
No. Private accounts are not public, so they return a clear private record instead of metrics.
Can I analyze many creators at once? Yes. Pass a list of usernames and you get one record per creator. You only pay for usernames that are successfully processed.
Why might a creator show zero feed posts?
Some creators post almost entirely Reels. When their recent content is all Reels, feed_count is zero and clips_count carries the sample. The content-mix fields make this visible.
Is the sample size accurate if a creator posts the same Reel to the grid and the Reels tab?
Yes. Each piece of content is counted once. The same Reel appearing in both places is de-duplicated, so total_items reflects unique content.
โ๏ธ Legal
This Actor extracts publicly available data from Instagram. It does not bypass any login, paywall, or CAPTCHA, and it does not access private accounts. Users are responsible for complying with Instagram's terms of service and applicable laws in their jurisdiction. The data returned is informational; verify accuracy for regulated use cases.
๐ฌ Support
Need something this scraper does not do yet? We ship features fast.
- Feature requests go straight to our backlog
- Enterprise needs? We handle custom integrations and high-volume plans
- Pricing questions? Check the Monetization tab on the actor page
Check out our other scrapers: silentflow on Apify