Instagram Profile Scraper - Engagement Rates avatar

Instagram Profile Scraper - Engagement Rates

Pricing

from $1.40 / 1,000 profiles

Go to Apify Store
Instagram Profile Scraper - Engagement Rates

Instagram Profile Scraper - Engagement Rates

Followers, engagement rate and recent post performance for any public Instagram profile. Paste 300 handles and get 300 rows. The spend cap is checked before every request and stops the run - it does not trim results after your money is gone. Filtered and private profiles are never charged for.

Pricing

from $1.40 / 1,000 profiles

Rating

0.0

(0)

Developer

Datalayer

Datalayer

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

a day ago

Last modified

Share

Instagram Profile Scraper — engagement rates, with a spend cap that holds

Follower counts, engagement rate and recent post performance for any public Instagram profile. Paste 300 handles, get 300 rows, and never spend more than you said you would.

The limit you set is the limit you get

The most-used Instagram scrapers on this store carry thousands of monthly users and ratings in the 3s. Their reviews explain why, in their own words:

"I set the limit but this actor fetched a lot of records and I spent hundreds of USD in vain. I want my credit back"

"Even though I set a limit on the request, it fetched thousands of records and simply used up hundreds of dollars"

Two different people, same actor, same complaint. So this one is built the other way round:

  • maxProfiles and maxCostUsd are checked before each request, not applied to the results afterwards. When the ceiling is reached the run stops fetching. Trimming the output after the money is gone is not a limit.
  • Filtered-out profiles are never charged for. Private accounts and profiles under your follower minimum cost nothing.
  • A date range that cannot be read stops the run instead of being silently dropped, which is the other complaint on the competing Twitter and Facebook scrapers.
  • Every run writes a summary telling you exactly what you spent against your cap.

What you get

One row per profile:

FieldNotes
followers, following, postsTotalLive counts
engagementRatePercentAverage interactions per post ÷ followers
avgLikes, avgComments, avgEngagementAcross the recent posts sampled
isVerified, isPrivate, isBusinessAccount, categoryAccount type
fullName, biography, externalUrlBio block, including the link
profilePicUrl, profileUrlFull-resolution avatar

One row per recent post, when includePosts is on: likes, comments, engagement, caption, hashtags, isVideo, videoViews, postedAt, postUrl.

Two honest limits, stated up front

Instagram returns the 12 most recent posts per profile. That is what the endpoint gives, and this Actor does not pretend to page deeper. Sampling 12 recent posts is exactly how engagement rate is normally calculated, but if you need a profile's entire history, this is the wrong tool and you should know that before you pay rather than after.

Hidden like counts return null, not 0. Instagram lets accounts hide likes. A zero there would quietly destroy any average you calculate, so the gap is left visible and posts with hidden counts are excluded from the averages.

What it is for

  • Influencer vetting — engagement rate across a shortlist, in one run. A 500k-follower account with 0.2% engagement is a different proposition to a 40k account at 6%.
  • Competitor monitoring — follower and posting trends across a category, on a schedule.
  • Agency reporting — client and competitor numbers pulled the same way every week.
  • Lead qualification — business accounts, categories and the link in bio.

Input

{
"profiles": ["nasa", "@bbcnews", "https://www.instagram.com/natgeo/"],
"maxProfiles": 100,
"maxCostUsd": 5,
"includePosts": true,
"minFollowers": 10000,
"skipPrivate": true
}

Usernames, @handles and full URLs all work, so a column pasted straight from a spreadsheet is fine.

Reliability

One bad handle never fails the run. A profile that does not exist, or is challenged by Instagram, is recorded in the run summary with the reason while everything else continues.

Instagram intermittently answers a valid handle with an error on one address and succeeds on the next. Rather than reporting that as "profile not found" — which would silently drop real profiles from a large list — the request is retried on a fresh address before it is ever reported as missing.

Requests go through Apify Proxy residential, which is the only route Instagram answers with data. Changing it will usually break the run.

FAQ

Do I need an Instagram account or login? No. The Actor reads the public profile endpoint Instagram serves to logged-out visitors. There is no account to get flagged or banned.

How is engagement rate calculated? Average interactions (likes + comments) across the recent posts sampled, divided by followers. Hidden like counts come back as null, never as a fake zero, so they cannot drag the average down.

How many posts do I get per profile? Up to 12 — the most recent posts the public endpoint carries. That is Instagram's ceiling, not ours, and we say so rather than promising 100 and delivering 12.

Can I export to CSV or Excel? Yes — every run's dataset downloads as CSV, Excel, JSON or JSONL straight from the platform, or via the API for pipelines.

Can I run it on a schedule? Yes. Create a Task with your handle list and schedule it hourly, daily or weekly. Each run writes a fresh dataset.

What happens when a profile fails? It is retried on a fresh IP before it is ever reported missing, and failures are listed per handle in the run summary — never silently dropped from your results.

Notes

Reads only public profile data, logged out — the same information any visitor sees without an account. No login, no cookies, no account of yours involved. Private accounts return no posts or counts by design. This Actor is unofficial and not affiliated with Instagram or Meta. Content belongs to the people who posted it; use it in line with applicable laws and terms.