Instagram Profile Statistics Scraper
Pricing
from $1.01 / 1,000 profile extracteds
Instagram Profile Statistics Scraper
Check batches of public Instagram profiles and export identity, follower, following, post, verification, business, and recent engagement-summary metrics for creator qualification and monitoring.
Pricing
from $1.01 / 1,000 profile extracteds
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
2
Monthly active users
12 hours ago
Last modified
Categories
Share
Check batches of public Instagram accounts and export useful Instagram profile statistics without collecting full post histories. The Actor returns identity, followers, following, post count, verification, business status, and optional engagement summaries calculated from recent public post samples.
Use it to qualify creators, enrich lead lists, create account snapshots, or feed recurring profile-monitoring workflows. Inputs can be usernames, profile URLs, or both.
What does this Instagram profile statistics scraper do?
For every successfully resolved public profile, the Actor:
- normalizes usernames and
instagram.comprofile URLs; - removes duplicate profiles;
- retrieves public profile identity and account counts;
- optionally calculates average and median likes and comments;
- calculates a sampled engagement rate and follower/following ratio;
- evaluates optional creator-qualification filters;
- saves a typed record to the default Apify dataset.
It does not download media, scrape comments, or require users to supply Instagram login cookies.
Who is it for?
- Influencer marketers qualifying creators by audience, verification, and engagement.
- Sales and partnerships teams enriching Instagram lead lists.
- Analysts comparing account-level audience statistics.
- Agencies preparing repeatable profile snapshots for clients.
- Developers and data teams sending normalized profile records to spreadsheets, warehouses, or automation tools.
Why use this focused Actor?
This Actor is intentionally narrower than a full Instagram content scraper.
- Batch usernames and profile URLs in one run.
- Get account statistics without collecting an entire post feed.
- Calculate engagement summaries from the recent post sample already returned with the profile.
- Apply the same qualification rules to username and URL inputs.
- Pay only for profiles that are successfully fetched and saved.
- Continue useful batch work when an individual profile is unavailable.
What data can you extract?
| Field | Meaning |
|---|---|
profileId | Instagram profile ID |
username, fullName | Current handle and display name |
profileUrl | Canonical public profile URL |
biography, externalUrl | Public bio and external link |
followersCount | Current follower count |
followingCount | Current following count |
postsCount | Profile post count reported by Instagram, or null when that count is temporarily unavailable |
isVerified | Verification status |
isPrivate | Whether the account is private |
isBusinessAccount | Public business-account indicator |
businessCategoryName | Public business/creator category when available |
profilePicUrl | Public profile-picture URL when available |
recentPostsAnalyzed | Recent post samples used for engagement calculations |
averageLikes, averageComments | Mean engagement on the sample |
medianLikes, medianComments | Median engagement on the sample |
engagementRate | Average likes plus comments divided by followers, as a percentage |
followerFollowingRatio | Followers divided by following count |
matchedFilters | Whether all configured qualification filters matched |
scrapedAt | UTC collection timestamp |
Getting started
- Open the Actor input page.
- Add one or more values under Instagram usernames, or paste public profile URLs.
- Keep Calculate engagement summaries enabled if you need engagement fields.
- Optionally set follower, verification, or engagement filters.
- Enable Output matching profiles only to save only qualified profiles.
- Click Start.
- Open the Profile statistics dataset view or export the dataset as JSON, CSV, Excel, XML, or RSS.
A useful first input is:
{"usernames": ["instagram", "nasa", "nike"],"includeEngagementMetrics": true,"maxProfiles": 3}
Input parameters
| Input | Type | Default | Description |
|---|---|---|---|
usernames | string array | instagram, nasa | Usernames with or without @ |
profileUrls | request list | empty | Public instagram.com/<username>/ URLs |
maxProfiles | integer | 100 | Maximum unique profiles, from 1 to 1,000 |
includeEngagementMetrics | boolean | true | Calculate sampled engagement summaries |
onlyVerified | boolean | false | Require verification for a filter match |
minFollowers | integer | empty | Minimum followers for a filter match |
maxFollowers | integer | empty | Maximum followers for a filter match |
minEngagementRate | number | empty | Minimum sampled engagement percentage |
filterMatchedOnly | boolean | false | Save only records that match every filter |
maxRetries | integer | 2 | Bounded attempts for transient upstream errors |
When minEngagementRate is set, keep includeEngagementMetrics enabled. Duplicate usernames across both input lists are processed once.
Output example
The values below illustrate the current output shape; public account statistics change over time.
{"profileId": "528817151","username": "nasa","fullName": "NASA","profileUrl": "https://www.instagram.com/nasa/","biography": "Public profile biography","externalUrl": "https://www.nasa.gov/","followersCount": 104262117,"followingCount": 92,"postsCount": 4873,"isVerified": true,"isPrivate": false,"isBusinessAccount": true,"businessCategoryName": "Government organization","profilePicUrl": "https://scontent.example/profile.jpg","recentPostsAnalyzed": 12,"averageLikes": 244654.58,"averageComments": 1351.25,"medianLikes": 219560,"medianComments": 1268.5,"engagementRate": 0.236,"followerFollowingRatio": 1133283.88,"matchedFilters": true,"scrapedAt": "2026-08-10T14:20:00.000Z"}
Engagement fields are null and recentPostsAnalyzed is 0 when engagement summaries are disabled or no public recent-post sample is available. postsCount is null when Instagram's rate-limit fallback provides current profile statistics without a post total.
Creator qualification workflow
Use filters to turn a mixed profile list into an immediately usable shortlist:
{"usernames": ["instagram", "nasa"],"includeEngagementMetrics": true,"onlyVerified": true,"minFollowers": 1000000,"minEngagementRate": 0.01,"filterMatchedOnly": true}
With filterMatchedOnly: false, every successfully fetched profile is saved and matchedFilters explains qualification. With it enabled, nonmatching profiles are omitted and not charged as profile results.
Monitoring and integrations
A profile record is a current snapshot, not historical storage. For monitoring:
- save this Actor as an Apify Task;
- schedule the Task daily, weekly, or monthly;
- send each dataset to your warehouse, Google Sheets, Make, Zapier, or a webhook;
- compare
followersCount,postsCount, and engagement fields with the preceding snapshot.
Apify integrations can also trigger downstream Actors after a successful run. Use username as the stable comparison key, while retaining profileId for account identity checks.
How much does it cost to check Instagram profile statistics?
The Actor uses pay-per-event pricing:
- a one-time $0.0001 run-start fee;
- profile-result pricing with a $0.00168 BRONZE price per successfully saved profile, decreasing at higher platform tiers.
At the BRONZE tier, illustrative Actor charges are:
| Successfully saved profiles | BRONZE charge (USD) |
|---|---|
| 1 | 0.00178 |
| 10 | 0.01690 |
| 100 | 0.16810 |
Failed profiles and profiles omitted by filterMatchedOnly are not charged as profile results. Apify applies your active pricing tier and displays the maximum charge before a run. These examples will vary by tier.
Run through the Apify API
Set APIFY_TOKEN in your environment.
cURL
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~instagram-profile-stats-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"usernames":["instagram","nasa"],"includeEngagementMetrics":true}'
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/instagram-profile-stats-scraper').call({usernames: ['instagram', 'nasa'],includeEngagementMetrics: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientimport osclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/instagram-profile-stats-scraper').call(run_input={'usernames': ['instagram', 'nasa'],'includeEngagementMetrics': True,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
Use with MCP and AI agents
Add the Actor to Claude Code through Apify MCP:
claude mcp add --transport http apify \"https://mcp.apify.com?tools=automation-lab/instagram-profile-stats-scraper"
Claude Desktop
Add this server in Claude Desktop settings:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/instagram-profile-stats-scraper"}}}
Cursor
Use the same mcpServers JSON in Cursor's MCP settings.
VS Code
Add the same Apify MCP URL through VS Code's MCP server configuration.
Example prompts:
- “Check these Instagram usernames and return follower and engagement statistics.”
- “Keep only verified profiles above one million followers.”
- “Export these Instagram profile URLs as a creator qualification table.”
Limits and failure behavior
- Only public Instagram profile data is supported.
- Instagram can restrict or change public data surfaces without notice.
- Some profiles can fail because they are unavailable, renamed, region-restricted, or affected by an upstream profile-schema error.
- A partial batch continues and preserves successful profiles. Failed profiles are logged and not charged as results.
- A run fails when none of the requested profiles returns usable data.
- Engagement is calculated from the recent posts included in the public profile response, not the account's complete history.
- Hidden likes, private profiles, or sparse recent samples can produce
nullor less representative engagement values. - The Actor does not bypass login, private-account controls, or Instagram permissions.
For reliable batches, avoid repeatedly checking the same very large list within a short period. Use schedules appropriate to how often account-level metrics actually need to change.
Responsible use and legality
Use this Actor only for lawful purposes and public data you are entitled to process. Follow Instagram's terms, privacy requirements, applicable data-protection laws, and your organization's retention policies. Do not use public account statistics for harassment, discrimination, invasive profiling, or attempts to access private content.
You are responsible for your inputs, downstream decisions, and compliance obligations. Consider aggregation and limited retention when individual-level data is unnecessary.
Troubleshooting
Why is a requested username missing from the dataset?
Check the run log. The profile may not exist, may have been renamed, may be temporarily restricted, or may have returned an upstream schema error. Missing/failed profiles are not charged as profile results.
Why are engagement fields null?
Confirm includeEngagementMetrics is true. A private profile or a profile without a usable recent-post sample can still have account counts while engagement fields remain unavailable.
Why did filtering return zero rows?
Run once with filterMatchedOnly: false. Inspect matchedFilters, follower counts, verification, and engagement values, then adjust the thresholds. Zero rows can be a valid result when no fetched profile matches.
Can I scrape private profiles or provide login cookies?
No. This Actor is designed for autonomous public-profile statistics and does not accept Instagram credentials or session cookies.
FAQ
Does it accept both usernames and URLs?
Yes. Combine usernames and profileUrls; duplicates are removed before processing.
Does it scrape all Instagram posts?
No. It returns profile-level data and uses only the recent public post sample for engagement summaries. Choose a dedicated Instagram posts Actor when you need post records.
Can I export results to a spreadsheet?
Yes. Download the default dataset as CSV or Excel, or connect an Apify integration to Google Sheets, Make, Zapier, or your own webhook.
Can I schedule recurring checks?
Yes. Save a Task and add a schedule. Store each run's dataset externally if you need historical comparisons.
Are counts guaranteed to stay identical?
No. Public profile metrics change continuously, and Instagram may round, hide, or temporarily withhold fields.
Related automation-lab Actors
- Instagram Scraper for broader profile and content workflows.
- Instagram Profile Posts Scraper when you need individual post records.
- Instagram Related Profiles Scraper for public related-account discovery.
Use this Actor when the buyer job is a focused, low-overhead profile-statistics snapshot rather than media or comment extraction.