Instagram Analytics Pro
Pricing
Pay per usage
Instagram Analytics Pro
Transform Instagram data into influencer analytics. Flattens nested childPosts, musicInfo & comments. Computes engagement rates, profile scores (0-100), comment sentiment, and trending audio from Reels. Compare multiple profiles with HTML dashboard. CRM-ready exports for marketing teams.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
CQ
Maintained by CommunityActor stats
4
Bookmarked
121
Total users
7
Monthly active users
18 days ago
Last modified
Categories
Share
Transform raw Instagram data into actionable influencer analytics. This Actor wraps Apify's Instagram scrapers and adds derived insights you can act on immediately.
How It Works (Data Source)
This Actor does not use the official Instagram Graph API and does not require you to provide credentials. On each run it calls three public Apify Instagram scrapers and then computes analytics on top of the returned data:
apify/instagram-profile-scraper— profile metadata (followers, following, post count, verification, business contact fields)apify/instagram-scraper— recent public posts for each profileapify/instagram-hashtag-scraper— recent public posts for each hashtag
The raw numbers (followers, likes, comments, captions, audio) are real, live public data fetched at run time. Everything else — engagement rate, profile score (0-100), sentiment, best posting times, hashtag/caption/content insights, and recommendations — is computed/estimated by this Actor from a limited sample of posts using heuristics (see Limitations). These are estimates, not official Instagram Insights figures.
🚀 Quick Start
- Click Start (default input analyzes a sample profile).
- Wait ~30-90 seconds for analysis to complete.
- View the HTML Dashboard in the key-value store (key:
REPORT) and the full dataset in the dataset tab.
Minimal Input
{"profiles": ["cristiano"],"maxPostsPerProfile": 20}
Multi-Profile Comparison
{"profiles": ["cristiano", "leomessi", "neymarjr"],"maxPostsPerProfile": 30,"maxCommentsPerPost": 10}
Hashtag + Monitoring Mode
{"hashtags": ["travelphotography", "foodporn"],"maxPostsPerProfile": 20,"monitoringMode": true,"changeThresholdPct": 15}
💰 Cost
Most of the cost of a run comes from the underlying Apify Instagram scrapers this Actor calls (apify/instagram-profile-scraper, apify/instagram-scraper, apify/instagram-hashtag-scraper), which are billed by their own usage-based pricing. This Actor adds only lightweight compute on top.
Total cost therefore scales with:
- the number of profiles and hashtags analyzed,
maxPostsPerProfile(more posts = more scraping),- whether comments are fetched for sentiment.
For exact figures, check the current pricing of the underlying scrapers on their Apify Store pages and your account's platform usage rates. Higher post/comment volumes cost proportionally more.
📦 Sample Output
Run Output (Key-Value Store OUTPUT)
This is the run summary object saved to the key-value store (not the dataset):
{"profilesAnalyzed": 3,"hashtagsAnalyzed": 0,"totalPostsProcessed": 90,"avgEngagementRate": 4.2,"avgProfileScore": 78,"leader": { "engagement": "cristiano", "followers": "cristiano", "score": "cristiano" },"reportUrl": "https://api.apify.com/v2/key-value-stores/.../records/REPORT","datasetUrl": "https://api.apify.com/v2/datasets/.../items?format=json","completedAt": "2026-04-24T12:00:00Z","runMode": "analysis","changesDetected": 0}
leader is an object (top username by engagement/followers/score) when 2+ profiles are compared, and null for a single-profile run.
Dataset Item (per profile, default standard format)
Field names below match the code exactly; values are illustrative. The exact fields depend on exportFormat (standard, flat, or nested):
{"username": "cristiano","fullName": "Cristiano Ronaldo","followers": 640000000,"following": 570,"posts": 3800,"verified": true,"engagementRate": 4.8,"avgLikes": 5200000,"avgComments": 42000,"profileScore": 87,"sentimentScore": 0.62,"topAudio": "Original audio","bestPostingDay": "Sunday","bestPostingHour": 18,"postingTimeRecommendation": "Post on Sundays around 6 PM for 45% higher engagement","bestContentType": "reel","topHashtags": ["#cr7", "#footballlegend"],"underperformingHashtags": ["#ad"],"captionRecommendations": ["Use emojis (+23% engagement)"],"insights": [{ "type": "tip", "category": "Timing", "message": "Post on Sundays around 6 PM ...", "action": "Schedule posts for Sunday at 6 PM." }],"postsAnalyzed": 30,"profileUrl": "https://instagram.com/cristiano","scrapedAt": "2026-04-24T12:00:00Z"}
Hashtag runs push a separate record shaped { "type": "hashtag_analysis", "hashtag": "#travel", "postsAnalyzed": 20, "audioTrends": {...}, "sentiment": {...}, "topPosts": [...] }, and multi-profile runs push a { "type": "comparison", ... } record.
Features
Core Analytics
- Data Flattening: Converts nested
childPosts,musicInfo, andlatestCommentsinto clean, structured data - Engagement Metrics: Calculates engagement rates, averages, and profile scores (0-100)
- Sentiment Analysis: Analyzes comment sentiment (positive/negative/neutral)
- Trending Audio Detection: Tracks audio usage patterns from Reels
- Profile Comparison: Compare multiple influencers side-by-side
Actionable Insights (NEW)
- Best Posting Times: Day/hour heatmap showing when posts get the most engagement
- Content Type Performance: Reels vs Carousels vs Images - which format works best
- Hashtag Analysis: Top-performing hashtags + underperformers to drop
- Caption Optimization: Emoji/CTA/question impact on engagement
- Top/Worst Posts: See what's working and what's not
- Rule-Based Recommendations: Specific suggested actions derived from your metrics (heuristic rules, not an LLM/AI model)
Output
- HTML Dashboard: Beautiful visual report with all insights
- CRM-Ready Export: Flat format with actionable fields for marketing tools
Use Cases
- Influencer Marketing: Evaluate potential partners before campaigns
- Competitor Analysis: Track competitor engagement and content strategy
- Content Strategy: Identify trending audio and high-performing content types
- Brand Monitoring: Analyze sentiment around branded hashtags
Input
| Parameter | Type | Default | Description |
|---|---|---|---|
profiles | Array | [] (prefilled ["nike"]) | Instagram usernames or URLs to analyze |
hashtags | Array | [] | Hashtags to analyze (without #) |
maxPostsPerProfile | Integer | 50 | Posts to analyze per profile (1-100) |
maxCommentsPerPost | Integer | 20 | Comments to analyze per post for sentiment (0-50) |
includeReels | Boolean | true | Include Reels in analysis |
includeCarousels | Boolean | true | Include carousel (multi-image) posts |
analyzeSentiment | Boolean | true | Perform lexicon-based comment sentiment analysis |
detectTrendingAudio | Boolean | true | Track audio/music usage patterns from Reels |
computeEngagement | Boolean | true | Calculate engagement rates, averages, and profile score |
generateReport | Boolean | true | Create the HTML dashboard (saved to key-value store as REPORT) |
exportFormat | String | "standard" | Dataset item shape: standard, flat (CRM-ready), or nested (full data) |
compareProfiles | Boolean | true | Generate a comparison record when 2+ profiles are analyzed |
monitoringMode | Boolean | false | Persist each run's state and compute deltas (follower/engagement/new posts) vs the prior run |
alertOnChange | Boolean | false | Send a webhook alert only when a delta exceeds changeThresholdPct (requires alertWebhookUrl) |
changeThresholdPct | Integer | 5 | Minimum % change in followers or engagement to trigger an alert (1-50) |
alertWebhookUrl | String | "" | Optional URL to POST a JSON alert to when change exceeds threshold |
If both
profilesandhashtagsare empty, the Actor falls back to analyzing the demo profilenikeso a run never starts with nothing to do.
Output
Standard Format
{"username": "nike","fullName": "Nike","followers": 306000000,"engagementRate": 0.42,"avgLikes": 128500,"avgComments": 1250,"profileScore": 95,"sentimentScore": 0.72,"bestPostingDay": "Wednesday","bestPostingHour": 14,"postingTimeRecommendation": "Post on Wednesdays around 2 PM for 45% higher engagement","bestContentType": "reel","contentBreakdown": { "reel": { "avgLikes": 150000 }, "image": { "avgLikes": 80000 } },"topHashtags": ["#justdoit", "#nike", "#sports"],"underperformingHashtags": ["#lifestyle", "#photooftheday"],"optimalCaptionLength": "medium","captionRecommendations": ["Use emojis (+23% engagement)", "Add CTAs (+18% engagement)"],"top5Posts": [{ "url": "...", "engagement": 250000 }],"insights": [{ "type": "tip", "message": "Reels perform best", "action": "Create more Reels" }]}
Flat Format (CRM-Ready)
{"ig_username": "nike","ig_followers": 306000000,"analytics_engagement_rate": 0.42,"analytics_profile_score": 95,"analytics_sentiment": 0.72,"best_posting_day": "Wednesday","best_posting_hour": 14,"best_content_type": "reel","top_hashtag_1": "#justdoit","top_hashtag_2": "#nike","emoji_boost_pct": 23,"cta_boost_pct": 18,"primary_insight": "Reels perform best with 150K avg engagement","primary_action": "Create more Reels to maximize engagement"}
Profile Score Calculation
The profile score (0-100) is calculated based on:
- Engagement Rate (40 points max): 6%+ = 40, 3%+ = 30, 1%+ = 20
- Follower Count (20 points max): 1M+ = 20, 100K+ = 15, 10K+ = 10
- Consistency (20 points max): Based on total post count
- Verification (20 points): Verified accounts get bonus
Sentiment Analysis
Comments are analyzed using keyword matching and emoji detection:
- Positive: love, amazing, fire, 🔥, ❤️, 😍, etc.
- Negative: hate, ugly, trash, 👎, 😡, etc.
- Neutral: No strong sentiment indicators
Score ranges from -1 (all negative) to +1 (all positive).
HTML Report
The generated HTML report includes:
- Profile cards with key metrics
- Engagement rate visualization
- Sentiment bars
- Top trending audio list
- Multi-profile comparison rankings
Access the report from the Key-Value Store under the REPORT key.
Pricing
Your total cost is driven by the underlying Apify Instagram scrapers this Actor calls (each billed on its own usage-based pricing) plus this Actor's own platform compute. Cost scales with the number of profiles/hashtags, maxPostsPerProfile, and whether comments are present to analyze. For current rates, check the pricing shown on the underlying scrapers' Apify Store pages and your account's platform usage pricing.
Example Usage
Single Profile Analysis
{"profiles": ["nike"],"maxPostsPerProfile": 50,"analyzeSentiment": true,"generateReport": true}
Multi-Profile Comparison
{"profiles": ["nike", "adidas", "puma"],"maxPostsPerProfile": 30,"compareProfiles": true,"exportFormat": "flat"}
Hashtag Trend Analysis
{"hashtags": ["fitness", "workout"],"maxPostsPerProfile": 100,"detectTrendingAudio": true}
Integrations
Export data to:
- Google Sheets (via Apify integration)
- HubSpot, Salesforce, Pipedrive (use flat format)
- Zapier/Make for automation
- Custom webhooks
❓ FAQ
Q: Do I need my own Instagram account or API keys? A: No. This Actor wraps Apify's Instagram scrapers which handle auth internally.
Q: How fresh is the data? A: Real-time at scrape time. Each run fetches the latest public posts from Instagram.
Q: Can I analyze private profiles? A: No. Only public profiles and public hashtag feeds are accessible.
Q: What's the difference between analysis and monitoring mode?
A: analysis is a one-shot insight report. monitoring tracks deltas between runs and triggers webhooks when metrics change by more than changeThresholdPct. Use monitoring for competitor tracking.
Q: Why is my avgEngagementRate so low?
A: Engagement rate = (likes + comments) / followers. Large accounts (1M+ followers) naturally have rates under 2%. Micro-influencers often see 5-10%.
Q: Can I export to Google Sheets automatically?
A: Yes. Use Apify's Google Sheets integration on the dataset tab. Choose flat export format for best CRM compatibility.
Limitations
- No official Instagram API / no login — data is obtained through third-party Apify Instagram scrapers, not the official Instagram Graph API. If those scrapers are unavailable or Instagram changes its site, runs can return partial or no data. If every requested profile/hashtag returns nothing, the run finishes cleanly and writes a single
{ "type": "no_results" }status record instead of failing or leaving an empty dataset. - Public data only — private accounts and any non-public fields are inaccessible and return no data.
- Metrics are estimates, not official Insights — engagement rate, profile score (0-100), best posting times, content/hashtag/caption analysis, and recommendations are computed heuristics derived from the fetched sample of posts (capped by
maxPostsPerProfile). They are not Instagram's own analytics and will differ from Creator/Business account Insights. - Sentiment is lexicon-based — comments are scored with a small fixed keyword and emoji dictionary (no machine learning / no LLM). It is biased toward English and can miss sarcasm, slang, and other languages.
- Recommendations are rule-based — "insights" and suggestions come from simple threshold rules, not an AI model.
- Sample-size sensitivity — trending-audio results need Reels with audio metadata; best-posting-time results need posts with usable timestamps; sparse data yields "not enough data" outputs.
- Rate limits — very large
maxPostsPerProfilevalues or many profiles/hashtags per run increase the chance the underlying scrapers hit Instagram throttling (maxPostsPerProfileis capped at 100). - Comments — sentiment only runs on the
latestCommentsthat the post scraper already returns;maxCommentsPerPostcaps how many of those are analyzed (0disables sentiment). The Actor does not perform a separate deep comment scrape. - Monitoring mode needs at least two runs — the first run only stores a baseline; deltas and threshold alerts appear from the second run onward.
- What it does NOT do — it does not post, schedule, like, follow, or otherwise write to Instagram; it does not provide follower demographics, Stories, DMs, or historical trend data beyond the posts fetched in the current run.
Support
For issues or feature requests, open a bug on the Apify Actor page or contact the author via the Apify Console.