Instagram Creator Analyzer — Influencer Intelligence & Engag... avatar

Instagram Creator Analyzer — Influencer Intelligence & Engag...

Pricing

from $80.00 / 1,000 profile analyzeds

Go to Apify Store
Instagram Creator Analyzer — Influencer Intelligence & Engag...

Instagram Creator Analyzer — Influencer Intelligence & Engag...

Vet any Instagram creator before you pay them. One username returns engagement rate, audience authenticity, niche, posting cadence, and a per-post sponsorship estimate — merged across 7 sources so one site change can’t blind you. No login, no cookies.

Pricing

from $80.00 / 1,000 profile analyzeds

Rating

0.0

(0)

Developer

Creator Fusion

Creator Fusion

Maintained by Community

Actor stats

3

Bookmarked

96

Total users

9

Monthly active users

9 days ago

Last modified

Share

Instagram Creator Analyzer — Engagement, Niche & Sponsorship Data API for AI Agents

Instagram creator and influencer analytics without login, cookies, or an official API key. Give it usernames or profile URLs; it returns typed JSON rows — schema below — with profile stats (followers, following, posts), engagement rate, content mix, posting cadence, detected niche, and a per-post sponsorship value estimate. Extraction survives Instagram changes by falling back across 7 independent sources (Google, Social Blade, Instagram direct, Ninjalitics, Bing, DuckDuckGo, Wayback Machine) and merging the results with outlier rejection — most single-source Instagram scrapers break the moment one site changes its markup.

Why AI agents use this Instagram creator analyzer

  • Deterministic typed output — every row follows the dataset schema (profile / analysis / meta objects); no HTML, no free-text parsing needed.
  • Honest degradation — when post data cannot be fetched, posting.frequency is "unknown" and engagement-based sponsorship adjustments are skipped, never faked. meta.dataCompleteness (0–100) tells you exactly how much was recovered.
  • Clear error semantics — failures are per-profile rows with analysis: null and a Fatal error: ... warning; the per-method attempt log (meta.methodResults) shows what was tried and why it failed.
  • No auth needed — no Instagram account, session cookies, or API keys. Multi-source fallback keeps working when any single source blocks.
  • Rate-limit handling built in — randomized delays between profiles and sources, per-method and per-profile time budgets, rotating browser fingerprints.

Input schema

FieldTypeRequiredDefaultDescription
usernamesarray of stringsyesInstagram usernames or profile URLs to analyze (e.g. "natgeo" or "https://instagram.com/natgeo")
includeRecentPostsbooleannotrueFetch and analyze recent posts for engagement metrics
maxPostsPerProfileintegerno12Maximum recent posts to analyze (1–12)
proxyConfigurationobjectnoApify proxy, RESIDENTIAL groupProxy settings. Residential proxy is only spent on the Instagram-direct method (Instagram blocks datacenter IPs); all search-engine and aggregator fallbacks run over the direct connection. Residential proxy traffic is billed to your Apify account.

Minimal input:

{ "usernames": ["natgeo"] }

Output schema

One dataset row per input username. Row shape: { profile, analysis, meta }.

profile — raw merged profile data

FieldTypeNullableDescription
profile.usernamestringnoHandle, lowercase, no @
profile.idstringyesInstagram internal user ID (instagram_direct only)
profile.fullNamestringyesDisplay name
profile.biographystringyesBio text (may be a search-snippet approximation from fallback sources)
profile.externalUrlstringyesLink-in-bio URL
profile.externalUrlsarrayyes{ title, url } objects
profile.followersCountnumberyesFollowers (consensus across sources, outlier-rejected)
profile.followsCountnumberyesAccounts followed
profile.postsCountnumberyesTotal posts (abbreviated counts like 30K are expanded to 30000)
profile.isBusinessAccountbooleanyesBusiness account flag
profile.businessCategoryNamestringyesBusiness category
profile.isPrivatebooleanyesPrivate account flag
profile.isVerifiedbooleanyesVerified badge
profile.profilePicUrl / profilePicUrlHDstringyesAvatar URLs
profile.relatedProfilesarrayyes{ username, fullName, isVerified } (instagram_direct only)
profile.latestPostsarrayyesUp to 12 posts: { id, shortCode, type, caption, hashtags, mentions, likesCount, commentsCount, videoViewCount, videoDuration, timestamp, displayUrl }. Rich fields require instagram_direct; search fallbacks may yield shortcodes only.

analysis — derived analytics (null if the profile failed entirely)

FieldTypeNullableDescription
analysis.audienceTierstringvia null analysisnano | micro | mid | macro | mega | celebrity
analysis.engagement.ratenumber(avg likes + avg comments) / followers × 100. 0 when no post data exists — absence of data, not low engagement
analysis.engagement.avgLikesPerPostnumberAverage likes per analyzed post
analysis.engagement.avgCommentsPerPostnumberAverage comments per analyzed post
analysis.engagement.avgViewsPerReelnumberyes (omitted)Average views across video/reel posts
analysis.engagement.likeToCommentRationumberAvg likes / avg comments
analysis.contentMixobject{ images, videos, reels, carousels } percentages
analysis.posting.frequencystringdaily | every_few_days | weekly | biweekly | monthly | inactive | unknown (unknown = no post data available)
analysis.posting.avgPostsPerWeeknumberAverage posts per week
analysis.posting.lastPostDatestringyes (omitted)ISO 8601 timestamp of latest analyzed post
analysis.posting.daysSinceLastPostnumberyes (omitted)Days since latest analyzed post
analysis.nichearrayUp to 3 detected niches (fitness, beauty, tech, finance, ...)
analysis.shortsFocusedbooleanTrue if >50% of analyzed posts are reels
analysis.sponsorshipEstimateobject{ low, medium, high, currency: "USD", adjustments }. Tier-based per-post rate with every applied adjustment listed as a string. When no post data exists, engagement adjustments are skipped and noted in adjustments.

meta — extraction metadata (always present)

FieldTypeDescription
meta.scrapedAtstringISO 8601 row timestamp
meta.methodsUsedarrayMethods that succeeded: google, socialblade, instagram_direct, ninjalitics, bing, duckduckgo, wayback
meta.methodResultsarrayPer-method attempt log: { method, success, data, error, latencyMs }
meta.dataCompletenessnumber0–100 field-coverage score; 0 = profile failed
meta.warningsarrayPer-method failure messages and fatal errors

Example row (successful profile)

{
"profile": {
"username": "natgeo",
"fullName": "National Geographic",
"biography": "See Instagram photos and videos",
"profilePicUrl": "https://scontent.cdninstagram.com/v/...",
"followersCount": 268796119,
"followsCount": 194,
"postsCount": 30400,
"isVerified": true
},
"analysis": {
"audienceTier": "celebrity",
"engagement": { "rate": 0, "avgLikesPerPost": 0, "avgCommentsPerPost": 0, "likeToCommentRatio": 0 },
"contentMix": { "images": 0, "videos": 0, "reels": 0, "carousels": 0 },
"posting": { "frequency": "unknown", "avgPostsPerWeek": 0 },
"niche": ["photography"],
"shortsFocused": false,
"sponsorshipEstimate": {
"low": 25000,
"medium": 75000,
"high": 150000,
"currency": "USD",
"adjustments": ["no post data: engagement adjustments skipped"]
}
},
"meta": {
"scrapedAt": "2026-08-15T04:15:33.564Z",
"methodsUsed": ["google", "socialblade", "instagram_direct"],
"methodResults": [
{ "method": "google", "success": true, "data": { "username": "natgeo" }, "latencyMs": 1672 },
{ "method": "socialblade", "success": true, "data": { "username": "natgeo", "followersCount": 268796119, "postsCount": 30400, "followsCount": 194 }, "latencyMs": 190 },
{ "method": "instagram_direct", "success": true, "data": { "username": "natgeo", "fullName": "National Geographic", "followersCount": 268000000, "followsCount": 195, "postsCount": 30000, "isVerified": true }, "latencyMs": 15705 }
],
"dataCompleteness": 84,
"warnings": []
}
}

Example row (failed profile)

{
"profile": { "username": "some_unreachable_user" },
"analysis": null,
"meta": {
"scrapedAt": "2026-08-15T04:20:00.000Z",
"methodsUsed": [],
"methodResults": [],
"dataCompleteness": 0,
"warnings": ["Fatal error: All extraction methods failed"]
}
}

Error semantics

  • Bad input (missing/empty usernames): the run logs an Invalid input error and produces zero dataset items. Treat a run with zero items as failed.
  • Invalid username format: skipped with a log warning; no row is produced for it.
  • Per-profile failure: the run continues to the next username; the failed profile still gets a row with analysis: null, meta.dataCompleteness: 0, and the error in meta.warnings. Retry logic: retry only usernames whose row has dataCompleteness === 0.
  • Partial data: sources that failed are listed in meta.warnings / meta.methodResults; the row is still produced from whatever succeeded. Check meta.dataCompleteness before trusting derived analytics.
  • Zero results: a run where every profile failed still completes; detect via item count or dataCompleteness values.

Use from AI agents (MCP)

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=apricot_blackberry/instagram-creator-analyzer",
"headers": { "Authorization": "Bearer <YOUR_APIFY_TOKEN>" }
}
}
}

Works in Claude, Cursor, ChatGPT deep research connectors, and any MCP client; the input schema above is the tool's parameter schema.

Use from code

curl:

curl -X POST "https://api.apify.com/v2/acts/apricot_blackberry~instagram-creator-analyzer/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"usernames": ["natgeo"], "includeRecentPosts": true, "maxPostsPerProfile": 6}'

JavaScript (apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('apricot_blackberry/instagram-creator-analyzer').call({
usernames: ['natgeo'],
includeRecentPosts: true,
maxPostsPerProfile: 6,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Python (apify_client):

from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("apricot_blackberry/instagram-creator-analyzer").call(run_input={
"usernames": ["natgeo"],
"includeRecentPosts": True,
"maxPostsPerProfile": 6,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items

Use from automation platforms

  • n8n / Make / Zapier: use the native Apify integration and pick instagram-creator-analyzer by name.
  • LangChain / LlamaIndex: use the Apify tool wrappers (ApifyActorsTool / Apify Actor loader) with the actor id above.
  • Webhooks: Apify can fire a webhook when a run finishes (or on other run-lifecycle events), so you can trigger a downstream pipeline step the moment fresh creator data lands — configure one from the actor's Integrations tab or the API.

Pricing & performance

Pay-per-event, billed by the Apify platform:

EventPriceCharged
Actor start$0.10Once per run (1 GB memory)
Profile analyzed$0.08Per creator row in the dataset

A typical profile analyzes in well under a minute; a batch of 50 creators completes in a few minutes for roughly $0.10 + 50 × $0.08 = $4.10 (~$0.082/creator). Residential proxy traffic (used only for the Instagram-direct method) is billed to your Apify account additionally. Rotation, rate limiting, and clean JSON output are included.

Instagram creator analytics use cases

  • Brand managers / influencer marketers: vet creators' real follower counts, engagement, and niche before committing budget.
  • Agencies: report accurate creator metrics to clients with a documented per-source audit trail (meta.methodResults).
  • Talent scouts: find emerging creators by tier (nanocelebrity) and posting cadence before they get expensive.
  • AI research agents: pull structured creator data on demand via MCP — audience tier, engagement rate, and sponsorship estimates in one typed row.

Works great with

FAQ

Does it need my Instagram login? No. It never logs in and only reads public data. Private accounts return profile-level stats only (isPrivate: true).

Why is engagement 0 for some profiles? Post-level data requires the Instagram-direct method to succeed. When it doesn't, engagement fields are 0, posting.frequency is "unknown", and no engagement-based sponsorship adjustment is applied — the row tells you what it doesn't know instead of guessing.

How accurate are follower counts? Counts are merged across up to 7 sources with outlier rejection; abbreviated figures (e.g. 268M) are expanded and cross-checked against exact values when available.

Are sponsorship estimates guaranteed? They are tier-based market estimates with every adjustment documented in sponsorshipEstimate.adjustments. Use them as a negotiation baseline, not a quote.

Changelog

2026-08-14

  • Output dataset schema published (.actor/dataset_schema.json) — rows are now validated and render a clean Overview table; README restructured for AI-agent consumption (MCP snippet, exact field tables, error semantics).
  • Fixed abbreviated-count parsing: 30K / 268M / 1.2B style figures in Instagram og-tags, Wayback snapshots, and Social Blade pages now parse correctly; fixed a Social Blade field mix-up that could report the following count as the posts count.
  • Honest sponsorship estimates: when no post data is available, the engagement-based adjustment is skipped (previously an unwarranted "low engagement −15%" was applied) and noted in adjustments.