Instagram Hashtag Analytics Scraper
Pricing
Pay per event
Instagram Hashtag Analytics Scraper
Sample public Instagram hashtag posts and reels and return per-hashtag engagement aggregates, top posts, top authors, observed records, and snapshot time.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Create repeatable Instagram hashtag analytics snapshots from public hashtag pages. The Actor samples visible posts and reels, enriches public engagement metadata, and returns one typed result per hashtag with totals, averages, media mix, top posts, top authors, observed records, and snapshot time.
Use it to compare campaign hashtags, watch how a public content sample changes between scheduled runs, or feed hashtag-level metrics into a spreadsheet or dashboard. No Instagram login is required.
The results describe the records observed during the run. They are not Instagram's complete historical count or a guarantee that every post using a hashtag was visible.
What does Instagram Hashtag Analytics Scraper do?
For every requested hashtag, the Actor:
- opens the public Instagram hashtag surface;
- collects a bounded sample of unique post and reel URLs;
- optionally opens each public record to read available creator, caption, timestamp, like, and comment metadata;
- calculates observed totals and averages;
- ranks the top sampled posts and authors; and
- saves one timestamped analytics record to the default dataset.
The underlying observedRecords array stays in the same result, so analysts can audit which public records contributed to every aggregate.
Who is this Instagram analytics Actor for?
- Social media managers comparing branded and campaign hashtags.
- Marketing analysts collecting recurring observed-sample snapshots.
- Creator teams finding authors visible in a hashtag sample.
- Agencies exporting campaign evidence for clients.
- Data engineers loading structured hashtag snapshots into BI tools.
- Researchers studying publicly visible Instagram content without a login workflow.
Choose a post-level scraper instead when you need one dataset row per post rather than one aggregate row per hashtag.
Why use observed hashtag snapshots?
Instagram's public surface changes over time and does not expose a complete public historical API. This Actor makes that limitation explicit instead of presenting sampled metrics as platform-wide totals.
Each row includes:
snapshotAtfor recurring comparisons;sampleSizeso metrics retain their denominator;postsCountandreelsCountfor visible media mix;- nullable metric totals and averages when Instagram exposes them;
topPostsranked by known likes plus comments;topAuthorsranked within the observed sample; andobservedRecordsfor reproducibility.
What Instagram hashtag data can I extract?
| Field | Meaning |
|---|---|
hashtag | Normalized hashtag without # |
sourceUrl | Public hashtag URL sampled |
snapshotAt | ISO timestamp when analytics were calculated |
sampleSize | Number of unique public records observed |
postsCount / reelsCount | Media types in the sample |
totalLikes / averageLikes | Sum and average over records with public like counts |
totalComments / averageComments | Sum and average over records with public comment counts |
totalViews / averageViews | Sum and average when public view counts are exposed |
totalEngagementActions | Known likes plus comments in the sample |
averageEngagementActions | Known engagement actions divided by sample size |
observedEarliestAt / observedLatestAt | Public timestamp range found in the sample |
topPosts | Highest observed known engagement records |
topAuthors | Creator ranking within the sample |
observedRecords | Public records used to calculate the snapshot |
Nullable values mean Instagram did not expose that field publicly for the sampled record. They do not mean zero.
How to run the Actor
- Open Instagram Hashtag Analytics Scraper in Apify Console.
- Enter one or more hashtags, such as
apifyorwebscraping. - Keep
sampleSizesmall for a quick first run. - Leave detail enrichment enabled for engagement and creator fields.
- Click Start.
- Open the default dataset to review or export the hashtag snapshots.
- For monitoring, create an Apify Schedule and retain each run's
snapshotAtresults in your destination.
A small real input:
{"hashtags": ["apify"],"sampleSize": 3,"includePosts": true,"includeReels": true,"includeDetails": true,"topPostsLimit": 3,"topAuthorsLimit": 3,"proxyConfiguration": { "useApifyProxy": false }}
Input parameters
| Input | Type | Default | Notes |
|---|---|---|---|
hashtags | string array | ['apify'] | Up to 20 tags, with or without # |
startUrls | request list | empty | Instagram /explore/tags/ or /popular/ URLs |
sampleSize | integer | 12 | 1–50 observed records per hashtag |
includePosts | boolean | true | Include photo and carousel post cards |
includeReels | boolean | true | Include reel cards |
includeDetails | boolean | true | Open public record pages for engagement metadata |
topPostsLimit | integer | 5 | 0–20 ranked observed posts |
topAuthorsLimit | integer | 5 | 0–20 ranked observed creators |
proxyConfiguration | object | direct | Optional standard Apify Proxy; premium groups/country routing are rejected |
Hashtag text inputs and URL inputs are combined and deduplicated. At least one source is required. At least one of posts or reels must remain enabled.
Example output
A real local run for #apify returned one row shaped like this:
{"hashtag": "apify","sourceUrl": "https://www.instagram.com/explore/tags/apify/","snapshotAt": "2026-08-04T03:30:15.172Z","sampleSize": 2,"postsCount": 0,"reelsCount": 2,"totalLikes": 19472,"totalComments": 28150,"averageLikes": 9736,"averageComments": 14075,"totalEngagementActions": 47622,"averageEngagementActions": 23811,"observedLatestAt": "2026-05-04T03:14:57.000Z","topPosts": [{"postUrl": "https://www.instagram.com/reel/DX5rTD_soy2/","shortcode": "DX5rTD_soy2","mediaType": "reel","likesCount": 13000,"commentsCount": 25000,"authorUsername": "msbintel"}],"topAuthors": [{"username": "msbintel","observedPosts": 1,"totalEngagementActions": 38000}],"observedRecords": ["...the records used for this snapshot..."]}
Public values can change between runs. The exact record URLs are retained in actual dataset output.
How much does it cost to analyze Instagram hashtags?
Pay-per-event pricing has two parts:
- a $0.0035 Actor start charge once per run; and
- a $0.009064 BRONZE hashtag snapshot charge for each dataset result.
Top posts, top authors, and observed records are included in the snapshot event and have no separate event charge. Proxy transfer and platform compute may be billed by Apify according to your plan.
Examples at BRONZE pricing:
| Run | Event cost |
|---|---|
| 1 hashtag | $0.0126 |
| 5 hashtags | $0.0488 |
| 10 hashtags | $0.0941 |
| 20 hashtags | $0.1848 |
Tier discounts can reduce the per-snapshot price for higher Apify plan tiers. Always review the live pricing panel before a large run.
Compare campaign hashtags
Submit several tags in one run to create side-by-side snapshots with the same settings:
{"hashtags": ["webscraping", "apify"],"sampleSize": 10,"includePosts": true,"includeReels": true,"includeDetails": true}
Compare sampleSize, media mix, known engagement averages, and top creators.
Do not compare a 5-record snapshot to a 50-record snapshot without retaining the sample-size context.
Monitor hashtag trends with schedules
For a recurring workflow:
- save a production input as an Apify Task;
- attach a daily or weekly Schedule;
- send each completed run to Google Sheets, a webhook, or your data warehouse;
- use
hashtagplussnapshotAtas the snapshot key; and - compare changes in observed metrics and records.
The Actor produces snapshots but does not send alerts by itself. Use Apify integrations or your downstream automation for notifications.
Export and integration patterns
Default dataset results can be exported as JSON, CSV, Excel, XML, or RSS through Apify. Common workflows include:
- campaign comparison in Google Sheets;
- a dashboard grouped by
hashtagandsnapshotAt; - creator outreach research from
topAuthors; - sampled-content review from
topPosts; - post-level auditing by flattening
observedRecords; and - scheduled ETL through webhooks or the Apify API.
Keep the raw snapshot row when flattening nested arrays so the aggregate remains auditable.
Run through the Apify API
Replace YOUR_TOKEN with an Apify API token.
cURL
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~instagram-hashtag-analytics/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"hashtags":["apify"],"sampleSize":5,"includeDetails":true}'
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/instagram-hashtag-analytics').call({hashtags: ['apify', 'webscraping'],sampleSize: 5,includeDetails: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('automation-lab/instagram-hashtag-analytics').call(run_input={'hashtags': ['apify'],'sampleSize': 5,'includeDetails': True,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
Use with MCP and AI agents
Add the Apify MCP server in Claude Code:
claude mcp add --transport http apify \"https://mcp.apify.com?tools=automation-lab/instagram-hashtag-analytics"
Claude Desktop
Add this server object to Claude Desktop's MCP configuration:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/instagram-hashtag-analytics"}}}
Cursor
Open Settings → Tools & MCP → Add custom MCP and use the same server URL:
https://mcp.apify.com?tools=automation-lab/instagram-hashtag-analytics.
VS Code
Add the HTTP server URL to your workspace MCP configuration, then enable the automation-lab/instagram-hashtag-analytics Actor tool.
Example prompts showing MCP usage:
- “Using the Apify MCP tool, analyze the public Instagram #apify sample and summarize the top observed creators.”
- “Call Instagram Hashtag Analytics through MCP to compare #webscraping and #apify with the same sample size.”
- “Use MCP to run my campaign hashtag Task and format the returned snapshots for a spreadsheet.”
Accuracy, limits, and failure behavior
- Results cover the public sample visible to the run, not all Instagram posts.
- Public page ordering can favor popular content and is not guaranteed chronological.
- Login-only, private, removed, age-gated, or region-limited content is unavailable.
- Instagram may omit likes, comments, views, captions, creators, or timestamps.
nullmeans unavailable; zero is an observed numeric value.- Detail enrichment is slower than URL-only sampling.
- Instagram can rate-limit or challenge a network route.
- The Actor fails rather than returning a misleading empty success when no useful records are found.
- A large
sampleSizecan still yield fewer records when the public page exposes fewer unique cards.
Proxy guidance and troubleshooting
Direct access is the default and cheapest route. The optional proxy path supports standard Apify Proxy without a premium group or country setting. Premium groups and country-specific/residential routing are rejected because they are outside the measured pricing contract; the Actor never silently enables them.
If a run reports no public records:
- verify the hashtag is public and spelled correctly;
- try the
apifyprefill to distinguish input scarcity from route failure; - inspect the run log for navigation or challenge errors;
- enable an Apify Proxy configuration only when needed; and
- reduce
sampleSizefor a bounded diagnostic run.
If totals are null, confirm that includeDetails is enabled.
Instagram may still hide a metric on individual public records.
Responsible use and legality
This Actor accesses publicly visible Instagram pages without logging in. You are responsible for ensuring that your use complies with Instagram's terms, applicable laws, and your organization's policies.
Do not use the Actor to harass people, build sensitive-person profiles, infer protected attributes, or republish personal data without a lawful basis. Minimize retention, secure exported datasets, honor valid deletion requests, and collect only fields needed for your legitimate purpose. This documentation is not legal advice.
Related Automation Lab Actors
- Instagram Hashtag Posts Scraper — one row per sampled hashtag post or reel.
- Instagram Hashtag Scraper — hashtag-focused public content extraction.
- Instagram Profile Posts Scraper — public post records grouped by profile.
- Instagram Mentions & Tagged Posts Scraper — public mention and tagged-content workflows.
Use this Actor when the primary result should be a hashtag-level analytics snapshot rather than a post-level row.
FAQ
Does it require an Instagram login?
No. It reads public hashtag and record surfaces. It cannot access private or login-only content.
Is sampleSize Instagram's total hashtag post count?
No. It is the number of unique public records observed and used in the snapshot. The Actor does not claim a platform-wide total.
Can I compare snapshots over time?
Yes. Schedule the same Task and store rows by hashtag and snapshotAt.
Keep settings consistent when comparing observed metrics.
Why are view counts null?
Instagram does not consistently expose public views in the same metadata used for likes and comments. A nullable value prevents false zeros.
Can I analyze only reels?
Yes. Set includePosts to false and keep includeReels enabled.
The result still includes the sample media counts and observed records.
Why did my run fail with no records?
The hashtag may be empty, private, misspelled, or unavailable from the current network route. Try a known public hashtag, inspect logs, then configure a proxy if appropriate.
Are top authors global Instagram rankings?
No. They are ranked only within the records observed in that hashtag snapshot.