Instagram Hashtag Scraper - Posts, Reels & Media
Under maintenancePricing
$0.40 / 1,000 post returneds
Instagram Hashtag Scraper - Posts, Reels & Media
Under maintenanceScrape any Instagram hashtag for top & recent posts and reels: captions, likes, comments, media URLs, owner & timestamp. Bulk hashtags, clean flat records, pay per post (failed runs free), export JSON/CSV/Excel or deliver to Notion.
Pricing
$0.40 / 1,000 post returneds
Rating
0.0
(0)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
⚡ Instagram Hashtag Scraper — Posts by Hashtag
Pull top & recent posts under any Instagram hashtag and get back clean, flat records — caption, like & comment counts, media URLs, owner, hashtags, mentions and timestamp. Feed it a list of hashtags (or /explore/tags/ URLs), set a cap, and export to JSON, CSV or Excel, hit it from the API, or have results delivered straight to Notion. Just $0.40 per 1,000 posts — billed only for posts actually returned.
Instagram gates hashtag feeds behind a login. This actor handles that the same way every paid IG service does — you supply one or more throwaway-account
sessionidcookies and it rotates the account pool + residential IPs for you. No app, no bearer token, no business API approval.
Why this scraper wins
- 🍪 Account-pool rotation — add several throwaway
sessionidcookies and the actor cycles accounts and fresh residential IPs every few hops, so one flagged session never sinks the run. - 🏠 Residential by default — Instagram hard-blocks datacenter IPs, so the actor forces Apify RESIDENTIAL proxy out of the box. Leave it as-is and it just works.
- 💸 Cheaper, pay-per-result — $0.40 / 1,000 posts, charged per post returned. Empty or blocked runs cost nothing.
- 🧹 Clean, flat output — one tidy record per post, ready for spreadsheets, dashboards or LLM pipelines. No raw nested soup.
- 🔁 Auto-dedupe — the same post is never returned (or charged) twice in a run.
- 📬 Built-in delivery — optionally push every run straight into Notion via Apify connectors, zero extra code.
- 🚦 Honest errors — if Instagram blocks or returns nothing, you get a clear
errorCodediagnostic row (RATE_LIMITED,BLOCKED,NO_RESULTS) instead of silent emptiness.
What you can scrape
| Mode | Input | Notes |
|---|---|---|
| Hashtag feed | hashtags (with or without #) | Top and recent posts under each tag |
| Hashtag URLs | startUrls (/explore/tags/<tag>/) | Same as above, paste-friendly |
Input
hashtags— list of hashtags to scrape, e.g.nature,travel(the#is optional).startUrls— or pastehttps://www.instagram.com/explore/tags/<tag>/URLs instead.resultsLimit— max posts per hashtag (default50, up to2000). You pay per post.sessionCookies(required) — one or more logged-insessionidcookies from throwaway accounts; the actor rotates them. From a logged-ininstagram.com: F12 → Application → Cookies → copy thesessionidvalue. Paste one per line.proxyConfiguration— Residential is preconfigured and required; leave the default.notionConnector/notionParentId— optional, deliver results to a Notion data source.
Output (one record per post)
{"ok": true,"type": "image","shortCode": "C1aBcDeFgHi","url": "https://www.instagram.com/p/C1aBcDeFgHi/","caption": "Golden hour over the fjord 🏔️ #nature #travel","hashtags": ["nature", "travel"],"mentions": [],"likesCount": 18423,"commentsCount": 204,"videoViewCount": null,"displayUrl": "https://instagram.fxxx.fna.fbcdn.net/v/....jpg","videoUrl": null,"images": ["https://instagram.fxxx.fna.fbcdn.net/v/....jpg"],"isVideo": false,"dimensions": { "height": 1080, "width": 1080 },"ownerUsername": "wanderlust","ownerId": "1789456123","timestamp": "2026-06-21T07:14:02.000Z","hashtag": "nature"}
Pricing
$0.40 per 1,000 posts ($0.0004 per post, pay-per-event). You are charged only for posts actually returned — failed, blocked or empty runs cost nothing.
FAQ
Why do I need sessionid cookies? Instagram's hashtag feed is login-gated — there is no keyless path. This is exactly how every paid IG hashtag service works. Use throwaway accounts and add several for resilience.
How many cookies should I add? More is better. The actor rotates accounts every few IP hops, so 3–5 throwaway sessions keep success rates high on sustained runs.
Why is residential proxy required? Instagram hard-blocks datacenter IP ranges. Residential is preconfigured so runs actually return data — leave the default.
It returned an errorCode row — why? That's the actor telling you exactly what happened (RATE_LIMITED, BLOCKED, NO_RESULTS) instead of failing silently. Add more sessions, lower volume, or retry.
Can I deliver to Notion? Yes — set notionConnector and notionParentId and every run lands in your Notion data source automatically.