Instagram Engagement Scraper avatar

Instagram Engagement Scraper

Pricing

from $18.00 / 1,000 profile analyses

Go to Apify Store
Instagram Engagement Scraper

Instagram Engagement Scraper

Analyze public Instagram profiles with separate feed and Reels engagement measures. Compare profile details, recent content mix, and engagement per 1,000 followers, with a Reels view measure when available.

Pricing

from $18.00 / 1,000 profile analyses

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

📊 Compare Instagram Profile Engagement

Use this Actor for influencer marketers, agencies, brand teams, and researchers who need to compare public Instagram profiles. Enter usernames and get profile details, recent feed and Reels sample counts, and separate engagement measures, including normalized values per 1,000 followers. Each username is checked separately, and the recent sample keeps feed posts and Reels distinct.

📈 Compare Feed and Reels Measures

The default dataset contains public Instagram profile analyses. It shows the profile identity and audience context, the recent content mix, and separate engagement measures for feed posts and Reels when the sample includes them. Reels view data is shown separately when it is available, so you can tell which measures have view support.

Profile context

Each row can show the public username, profile URL, display name, follower count, verification state, and post count.

Engagement context

Feed and Reels measures use their own fields. The content mix shows how many distinct feed posts and Reels were sampled, and per-1,000-follower values help compare profiles with different audience sizes.

▶️ Analyze Recent Instagram Profiles

Run steps

  1. Add one or more public Instagram usernames. Use the username with or without @.
  2. Choose how many recent feed posts and Reels to check for each username.
  3. Start the run and open the default dataset when it finishes.

The Actor checks each submitted username separately. It reads public profile data and does not require customer authentication. The sample is recent, not a lifetime archive of every post or Reel.

⚙️ Input

Input fields

FieldTypeWhat it does
usernamesarray of stringsRequired. Enter one or more public Instagram usernames. Use only the username, with or without @.
sampleDepthintegerChooses how many recent feed posts and Reels to check for each username. Clear it to return all available results until the source is exhausted. A larger number checks more content. The default is 1.

Clear sampleDepth to return all available results until the source is exhausted. The value applies to the recent feed-post and Reels sample for each username.

Example input

This is the smallest successful common input from the current beta run:

{
"usernames": [
"instagram"
],
"sampleDepth": 1
}

🧾 Output

The Output panel opens the default dataset. Rows always include profile and contentMix. The engagement objects can be omitted when the sample has no matching content, and reelsEngagement.per1000Views is omitted when Reels view data is not available.

Output link

FieldTypeWhat it does
datasetlinkOpens the Instagram profile analyses in the default dataset.

Profile row with feed and Reels measures

This shape has sampled feed posts and Reels. The Reels view measure is omitted when viewDataAvailable is false.

FieldTypeWhat it does
profile.usernamestringPublic Instagram username used for the analysis.
profile.profileUrlURL stringPublic Instagram profile URL.
profile.displayNamestringName shown on the public profile.
profile.followersCountintegerPublic follower count shown for the profile.
profile.isVerifiedbooleanWhether Instagram marks the profile as verified.
profile.postsCountintegerPublic number of posts shown for the profile.
contentMix.feedPostsSampledintegerNumber of distinct feed posts in the recent sample.
contentMix.reelsSampledintegerNumber of distinct Reels in the recent sample.
feedEngagement.per1000FollowersnumberAverage feed-post engagement for every 1,000 followers in the sample.
reelsEngagement.per1000FollowersnumberAverage Reels engagement for every 1,000 followers in the sample.
reelsEngagement.viewDataAvailablebooleanWhether sampled Reels include the view data needed for the view-based measure.

Genuine row

This complete row is from a successful current-beta run.

{
"profile": {
"username": "natgeo",
"profileUrl": "https://www.instagram.com/natgeo/",
"displayName": "National Geographic",
"followersCount": 268563511,
"isVerified": true,
"postsCount": 32000
},
"contentMix": {
"feedPostsSampled": 2,
"reelsSampled": 2
},
"feedEngagement": {
"per1000Followers": 0.15912064837430576
},
"reelsEngagement": {
"per1000Followers": 0.18753664566144285,
"viewDataAvailable": false
}
}

Reels-only row with view data

This shape has no feedEngagement object because no feed posts were sampled. It includes the Reels view measure because viewDataAvailable is true.

FieldTypeWhat it does
profile.usernamestringPublic Instagram username used for the analysis.
profile.profileUrlURL stringPublic Instagram profile URL.
profile.displayNamestringName shown on the public profile.
profile.followersCountintegerPublic follower count shown for the profile.
profile.isVerifiedbooleanWhether Instagram marks the profile as verified.
profile.postsCountintegerPublic number of posts shown for the profile.
contentMix.feedPostsSampledintegerNumber of distinct feed posts in the recent sample.
contentMix.reelsSampledintegerNumber of distinct Reels in the recent sample.
reelsEngagement.per1000FollowersnumberAverage Reels engagement for every 1,000 followers in the sample.
reelsEngagement.per1000ViewsnumberAverage Reels engagement for every 1,000 views when view data is available.
reelsEngagement.viewDataAvailablebooleanWhether sampled Reels include the view data needed for the view-based measure.

Genuine row

This complete row is from a successful current-beta run.

{
"profile": {
"username": "instagram",
"profileUrl": "https://www.instagram.com/instagram/",
"displayName": "Instagram",
"followersCount": 686677821,
"isVerified": true,
"postsCount": 8590
},
"contentMix": {
"feedPostsSampled": 0,
"reelsSampled": 1
},
"reelsEngagement": {
"per1000Followers": 1.0038084512416485,
"viewDataAvailable": true,
"per1000Views": 70.75793263197443
}
}

Reels-only row without view data

This shape has no feedEngagement object and no reelsEngagement.per1000Views value because the sample has no feed posts and no usable Reels view data.

FieldTypeWhat it does
profile.usernamestringPublic Instagram username used for the analysis.
profile.profileUrlURL stringPublic Instagram profile URL.
profile.displayNamestringName shown on the public profile.
profile.followersCountintegerPublic follower count shown for the profile.
profile.isVerifiedbooleanWhether Instagram marks the profile as verified.
profile.postsCountintegerPublic number of posts shown for the profile.
contentMix.feedPostsSampledintegerNumber of distinct feed posts in the recent sample.
contentMix.reelsSampledintegerNumber of distinct Reels in the recent sample.
reelsEngagement.per1000FollowersnumberAverage Reels engagement for every 1,000 followers in the sample.
reelsEngagement.viewDataAvailablebooleanWhether sampled Reels include the view data needed for the view-based measure.

Genuine row

This complete row is from a successful current-beta run.

{
"profile": {
"username": "natgeo",
"profileUrl": "https://www.instagram.com/natgeo/",
"displayName": "National Geographic",
"followersCount": 268563499,
"isVerified": true,
"postsCount": 32000
},
"contentMix": {
"feedPostsSampled": 0,
"reelsSampled": 1
},
"reelsEngagement": {
"per1000Followers": 0.2734250941525006,
"viewDataAvailable": false
}
}

💳 Pricing

Primary event

The Actor charges one Profile analysis event for each successfully analyzed public Instagram profile. The price depends on your Apify plan and is shown in the pricing panel.

🔌 Integrations

Dataset access

Open the default dataset from the Output panel, or read its items through the Apify API.

For a walkthrough, see:

❓ FAQ

Why is reelsEngagement.per1000Views missing?

That field appears only when reelsEngagement.viewDataAvailable is true. The per-1,000-follower Reels measure can still be available when view data is missing.

What does sampleDepth change?

It sets how many recent feed posts and Reels the Actor checks for each username. Clear it to return all available results until the source is exhausted. It does not request a lifetime archive.

Can I submit several usernames?

Yes. Add several public usernames to usernames, and the Actor checks each one separately.

Can I analyze a private or deleted profile?

No. The Actor is for public Instagram profiles. Private, deleted, or otherwise non-public profiles are outside its scope.

Can the same Reel be counted twice?

No. A Reel that appears in both the feed and Reels collections is counted once in the recent sample.

Does this return comments, liker lists, or post-level records?

No. This Actor returns profile-level analysis. It does not collect individual comments, liker lists, or post-level engagement records.

Does it track engagement changes across runs?

No. Each run analyzes its selected recent sample. Cross-run monitoring, historical trend storage, and alerts are outside this Actor's scope.

Do I need Instagram credentials?

No customer authentication is required. Submit public usernames and the Actor reads public profile data.

📝 Changelog

v0.0 (19-09-2026)

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré