Instagram Profile Stats API
Pricing
Pay per event + usage
Instagram Profile Stats API
Public profile facts for up to 200 Instagram handles: followers, following, posts, bio, links, verification, account type, category, and business contacts. Direct API first, one optional residential fallback, no login. $1 per 1,000 successful profiles, plus Apify platform usage billed separately.
Pricing
Pay per event + usage
Rating
0.0
(0)
Developer
Tarek Etman
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
6 days ago
Last modified
Categories
Share
Fetch current public facts for up to 200 Instagram profiles: follower, following, and post counts; bio and links; verification and account type; category; public business contact fields; and profile images. The price is $1 per 1,000 successful profiles plus Apify platform usage. No Instagram login or cookies.
The scope is profile metadata. Post content, comments, follower lists, and Instagram search remain outside this Actor. One profile input produces one paid OK row or one uncharged diagnostic row.
Why this Actor
Each lookup starts at Instagram's public web_profile_info endpoint. A residential request is attempted once only when the direct response fails or cannot be parsed. There is no browser startup or media pagination.
Duplicate usernames produce an uncharged diagnostic rather than another network request. Every row includes its input index, access tier, attempt count, and HTTP status. Changed source data becomes BLOCKED_OR_UNPARSED, so a parser failure cannot masquerade as an empty profile.
Use it for creator-shortlist enrichment, partner CRM records, competitor dashboards, and scheduled profile snapshots when you already know the handles.
Input
usernames accepts 1 to 200 objects. Each object requires username, which can be a bare handle, @handle, or full instagram.com profile URL. label is optional.
{"usernames": [{ "username": "nasa", "label": "Space" },{ "username": "https://www.instagram.com/natgeo/", "label": "Media" }],"maxConcurrency": 3,"useResidentialFallback": true}
The hard run limit is 200 profiles and maximum concurrency is 5. These bounds reflect Instagram's aggressive rate limiting; larger lists should be split into separate runs.
Output
An OK row includes:
{"inputIndex": 0,"username": "nasa","label": "Space","status": "OK","instagramId": "123456","fullName": "NASA","followers": 63000000,"following": 76,"posts": 4469,"bio": "Exploring the universe and our home planet.","externalUrl": "https://www.nasa.gov/","bioLinks": [{ "title": "NASA", "url": "https://www.nasa.gov/" }],"isPrivate": false,"isVerified": true,"isBusinessAccount": true,"isProfessionalAccount": true,"categoryName": "Science","businessEmail": null,"businessPhoneNumber": null,"accessTier": "DIRECT_API","attempts": 1,"httpStatus": 200,"scrapedAt": "2026-07-22T10:00:00.000Z"}
Statuses are OK, NOT_FOUND, BLOCKED_OR_UNPARSED, FETCH_FAILED, INVALID_USERNAME, DUPLICATE_INPUT, or BUDGET_EXHAUSTED. Only OK is charged. Diagnostics make failed source access visible without pretending that a blocked or changed response means the profile has no data.
Datasets can be downloaded as JSON, CSV, Excel, or XML, or consumed through the Apify API and integrations.
Pricing and platform usage
The configured price is a $0.005 Actor-start event plus $0.001 per successfully returned profile (profile-scraped), or $1 per 1,000 successful profiles.
Platform usage is charged separately to the customer under the current Apify pricing configuration. Direct requests use compute, external data transfer, and storage. When residential fallback is used, its proxy traffic is also platform usage. The event price does not include or absorb those charges. Set useResidentialFallback to false when minimum cost matters more than fallback coverage.
Only OK rows are billed. The Actor validates Apify's returned paid-event count and stops assigning new work when the charge limit is reached.
Evidence boundary
The public JSON endpoint returned a direct HTTP 200 with the documented profile fields in a local check on 2026-07-22. The sanitized fixture preserves that verified field shape. This does not prove the same access rate from Apify cloud IPs; the residential fallback exists for that reason. Check OUTPUT_SUMMARY.accessTiers and the run's platform-usage breakdown after a bounded live deployment test.
Limits
- Scope is public profile metadata. Private content and authenticated surfaces are excluded.
- Instagram can change or restrict its public endpoint without notice.
- Public contact fields are nullable. Apply the privacy and marketing rules relevant to your use case.
- Each result is a current snapshot. Repeated scheduled runs can supply a time series.
Troubleshooting
Why did a profile return BLOCKED_OR_UNPARSED? Instagram returned a successful HTTP response without the profile structure this version recognizes. Check the access tier and HTTP status in that row. A run with this status needs source review; it is not a zero-follower result.
Why was residential proxy usage charged? The direct request failed or could not be parsed, and useResidentialFallback was enabled. The row's accessTier will be RESIDENTIAL_API.
Why is a duplicate handle present in the dataset? The duplicate row documents which input was skipped and points to the first input index. It creates no second network request or profile event.
What should I include in a support issue? Include the Actor run ID, the affected row statuses, and whether the direct or residential tier was used. Remove labels or downstream business data that should remain private.
STYLE AUDIT: passed 2026-07-22 against STYLE.md