Instagram Hashtag Posts Scraper
Pricing
Pay per event
Instagram Hashtag Posts Scraper
Extract public Instagram hashtag posts with captions, timestamps, engagement metrics, creator metadata, and media links.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Share
Extract public Instagram hashtag posts for campaign monitoring, creator discovery, UGC research, and recurring content analysis. The Actor collects post and reel URLs, captions, timestamps, visible engagement, creator metadata, media previews, hashtags, and mentions without requiring an Instagram login.
Use a hashtag such as apify, a full public hashtag URL, or several campaign tags. Results are saved as typed records that can be exported to JSON, CSV, Excel, XML, RSS, or connected to an Apify integration.
What does Instagram Hashtag Posts Scraper do?
The Actor opens each public Instagram hashtag page, discovers visible post and reel cards, and optionally visits each post to enrich the record. Detail enrichment can add the published timestamp, full caption, creator display name, likes, and comments when Instagram exposes those values publicly.
It deliberately excludes private profiles and login-only content. Missing public fields are returned as null, never guessed or converted to zero.
Who is this Instagram hashtag scraper for?
- Social media managers monitoring campaign hashtags and public UGC.
- Influencer marketers finding creators active in a niche.
- Brand teams reviewing new posts under product and event tags.
- Researchers collecting repeatable public content samples.
- Agencies preparing hashtag reports for clients.
- Automation teams sending fresh post records to sheets, databases, or AI tools.
Why use this Actor?
- Accept hashtags with or without
#and full Instagram hashtag URLs. - Process up to 20 distinct hashtags in one run.
- Include or exclude reels.
- Enrich public posts with timestamps and visible engagement.
- Preserve stable shortcodes and canonical post URLs for deduplication.
- Export structured data through the Apify API and integrations.
- Run on a schedule for repeatable monitoring.
- Use direct access by default and configure Apify Proxy only when needed.
What Instagram hashtag post data can I extract?
| Field | Description |
|---|---|
hashtag | Normalized hashtag that produced the record. |
postUrl | Canonical public post or reel URL. |
shortcode | Stable Instagram shortcode from the URL. |
mediaType | post or reel. |
caption | Public caption text when available. |
timestamp | Public post timestamp in ISO 8601 format. |
likesCount | Visible public like count. |
commentsCount | Visible public comment count. |
viewsCount | Visible reel view count from the hashtag grid. |
authorUsername | Public creator username. |
authorDisplayName | Public creator display name when exposed. |
authorProfileUrl | Direct public creator profile URL. |
thumbnailUrl | Public media preview image URL. |
videoUrl | Public video URL when exposed during the run. |
hashtags | Unique hashtags parsed from the caption. |
mentions | Unique account mentions parsed from the caption. |
sourceUrl | Hashtag page used for discovery. |
scrapedAt | Timestamp when the Actor discovered the result. |
How much does it cost to scrape Instagram hashtag posts?
The Actor uses pay-per-event pricing: a small start charge plus one result event for each post or reel saved. BRONZE prices are $0.0022 per run and $0.00148 per saved result; the live Actor page remains the source of truth.
| Saved posts | BRONZE charge calculation |
|---|---|
| 5 | One start event plus 5 × the per-result price |
| 25 | One start event plus 25 × the per-result price |
| 100 | One start event plus 100 × the per-result price |
These examples cover Actor charges. Instagram route, proxy, and platform usage can vary. Start with a small limit, inspect the dataset, and increase it only when the output fits your workflow.
How to scrape Instagram posts by hashtag
- Add one or more hashtags, such as
apifyorwebscraping. - Optionally add full URLs such as
https://www.instagram.com/explore/tags/apify/. - Set the maximum number of posts per hashtag.
- Choose whether to include reels.
- Keep detail enrichment enabled for timestamps and engagement fields.
- Run the Actor and inspect the default dataset.
- Export the data or connect a schedule, webhook, or integration.
Input parameters
hashtags
A list of up to 20 hashtags. Values can include or omit the leading #.
["apify", "#webscraping"]
startUrls
Optional public Instagram hashtag URLs. URL inputs and hashtags are combined and deduplicated.
[{ "url": "https://www.instagram.com/explore/tags/apify/" }]
maxPostsPerHashtag
Maximum unique results saved for each hashtag, from 1 to 200. Instagram may expose fewer public cards than requested.
includeReels
When true, the Actor returns reels and regular posts. Set it to false when a campaign workflow requires only regular posts.
includeDetails
When true, each discovered public post is opened for caption, timestamp, visible engagement, and creator enrichment. Disable it for a faster URL-and-preview collection workflow.
proxyConfiguration
Optional Apify Proxy configuration. Direct access is the default. If Instagram limits a route, you can explicitly enable a datacenter or residential proxy configuration. The Actor never silently enables a paid residential fallback.
Example input
{"hashtags": ["apify"],"maxPostsPerHashtag": 5,"includeReels": true,"includeDetails": true,"proxyConfiguration": {"useApifyProxy": false}}
Example output
{"hashtag": "apify","postUrl": "https://www.instagram.com/reel/DX5rTD_soy2/","shortcode": "DX5rTD_soy2","mediaType": "reel","caption": "I literally used Claude (and Apify and LinkedIn) to get unlimited jobs\n#ai #aitools #claude #apify #linkedin","timestamp": "2026-05-04T03:14:57.000Z","likesCount": 13000,"commentsCount": 25000,"viewsCount": 458000,"authorUsername": "msbintel","authorDisplayName": "MSB Intel | Everything AI","authorProfileUrl": "https://www.instagram.com/msbintel/","thumbnailUrl": "https://scontent.cdninstagram.com/...jpg","videoUrl": null,"hashtags": ["#ai", "#aitools", "#claude", "#apify", "#linkedin"],"mentions": [],"sourceUrl": "https://www.instagram.com/explore/tags/apify/","scrapedAt": "2026-08-02T02:10:00.000Z"}
Public page layouts vary, so fields can be null. A null count means “not exposed,” not zero engagement.
Campaign monitoring workflow
For recurring hashtag campaign monitoring:
- Create one Actor task with the campaign tags.
- Keep shortcodes and timestamps in the output.
- Schedule the task hourly, daily, or weekly.
- Deduplicate downstream records by
shortcode. - Compare new rows with the previous dataset or your database.
- Send new creator or engagement records to a spreadsheet, Slack, or a review queue.
The Actor collects snapshots; it does not maintain a hidden cross-run history or send alerts by itself. Apify schedules, webhooks, and downstream storage provide those workflow steps.
Creator discovery workflow
Collect a focused niche hashtag, keep detail enrichment enabled, and group output by authorUsername. Use authorProfileUrl for public review and combine captions, mentions, and engagement fields to prioritize relevant creators. Do not treat one post’s engagement as a complete creator-performance metric.
Export and integrations
The default dataset works with:
- Google Sheets and Microsoft Excel exports.
- Make and Zapier automations.
- Slack or Discord webhook workflows.
- Airtable content-review queues.
- Data warehouses and BI tools.
- LLM classification or summarization pipelines.
- Apify schedules, webhooks, and dataset APIs.
API usage with JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/instagram-hashtag-posts-scraper').call({hashtags: ['apify'],maxPostsPerHashtag: 5,includeReels: true,includeDetails: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
API usage with Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('automation-lab/instagram-hashtag-posts-scraper').call(run_input={'hashtags': ['apify'],'maxPostsPerHashtag': 5,'includeReels': True,'includeDetails': True,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
API usage with cURL
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~instagram-hashtag-posts-scraper/runs?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"hashtags":["apify"],"maxPostsPerHashtag":5,"includeDetails":true}'
MCP setup
Use the Actor as a tool from an MCP-compatible assistant.
Claude Code:
claude mcp add --transport http apify \"https://mcp.apify.com?tools=automation-lab/instagram-hashtag-posts-scraper"
Claude Desktop setup
Add this JSON to Claude Desktop's MCP configuration:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/instagram-hashtag-posts-scraper"}}}
Cursor setup
Open Settings → MCP servers, add an HTTP server named apify, and use the same Actor-specific MCP URL shown above.
VS Code setup
In an MCP-compatible VS Code assistant extension, add an HTTP server named apify with the same URL, reconnect, and confirm the Instagram Hashtag Posts Scraper tool appears.
Example prompts:
- “Collect five public posts under #apify and summarize their captions.”
- “Find public creators posting under #webscraping and return profile links.”
- “Compare visible engagement for posts under #apify and #webscraping.”
Tips for reliable results
- Begin with 3–10 posts per hashtag.
- Prefer specific campaign tags over very broad tags.
- Keep detail enrichment enabled only when its extra fields are needed.
- Deduplicate downstream records by
shortcode. - Use a proxy only after a direct route is limited.
- Schedule small repeat runs instead of one unnecessarily large browser run.
- Treat changing counts as snapshots collected at
scrapedAt.
Limits and failure behavior
- Only public content visible without an Instagram login is supported.
- Private profiles and login-only posts are excluded.
- Instagram decides which cards and fields are publicly visible.
- The Actor can return fewer records than the requested maximum.
- Media URLs may be temporary CDN URLs.
- Detail enrichment may preserve grid fields when a specific detail page is unavailable.
- If no useful public records are found for the entire run, the Actor fails instead of returning a misleading successful empty dataset.
- Instagram layout or anti-automation changes can require an Actor update.
Responsible use and legality
Use the Actor only for lawful purposes and public data you are permitted to process. Follow Instagram’s terms, applicable privacy rules, intellectual-property requirements, and local laws. Avoid spam, harassment, surveillance, discriminatory profiling, or attempts to identify private individuals. Apply data minimization and retention controls appropriate to your use case.
FAQ
Does this Actor require an Instagram account?
No. It is designed for public hashtag pages and public post metadata visible without login.
Can it scrape private profiles?
No. Private, restricted, and login-only content is outside the supported scope.
Why are some engagement or timestamp fields null?
Instagram does not expose every field for every post, region, session, or media type. The Actor returns null rather than inventing a value.
Why did I receive fewer posts than requested?
The number is a maximum, not a guarantee. Instagram may expose fewer cards or stop loading more public results for the current route.
Should I enable a proxy?
Start with direct access. If your run is rate-limited or challenged, configure Apify Proxy explicitly and validate the output and cost for that route.
Can I monitor only new posts?
Schedule repeat runs and deduplicate by shortcode in a dataset, database, or integration. The Actor itself returns the current public snapshot and does not store a hidden historical state.
Related automation-lab Actors
- Instagram Comments Scraper for comment-level follow-up.
- Instagram Reels Audio Scraper for reel audio metadata.
- Instagram Mentions & Tagged Posts Scraper for account-centered mentions and tagged content.
- Instagram Scraper for broader profile and post workflows.
Support
If a public hashtag unexpectedly returns no records, include the Actor run ID, sanitized input, expected public hashtag URL, and whether a proxy was configured. That evidence helps distinguish an Instagram page change from a route-specific limit.