Instagram Hashtag Scraper — Fast Posts, Reels & Metrics
Pricing
from $1.00 / 1,000 posts
Instagram Hashtag Scraper — Fast Posts, Reels & Metrics
Native Instagram hashtag & explore scraper. Extract reels, posts, captions, view counts, likes, comments, and creators at an ultra-competitive price.
Pricing
from $1.00 / 1,000 posts
Rating
0.0
(0)
Developer
subimpact
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
4
Monthly active users
8 hours ago
Last modified
Categories
Share
Instagram Hashtag Scraper 📸
A high-performance, native Instagram hashtag scraper engineered for reliability, deep data fidelity, and ultra-competitive pricing.
1:1 Drop-in Replacement for
apify/instagram-hashtag-scraperat $0.0010/result, below Apify's $0.0026 Free-plan list price.
⚡ Features & Advantages
- Zero Upstream Dependencies: Powered by native browser extraction with stealth headers and proxy rotation. No 3rd-party actor delegation or hidden markups.
- Full Apify Schema Compatibility: Drop-in replacement for existing workflows, pipelines, and integrations.
- Pay-Per-Event Monetization: Only pay for the posts and reels you actually scrape ($0.0010 per post).
- Rich Data Extraction:
- Post metadata (ID, shortCode, URL, post type, captions, timestamps)
- Creator insights (ownerUsername, ownerId)
- Engagement metrics (likesCount, commentsCount, videoPlayCount, videoViewCount)
- Media assets (high-res displayUrl, direct videoUrl, alt accessibility text)
- Parsed hashtags and user mentions
💰 Pricing
$0.0010 per delivered result ($1.00 per 1,000 posts), plus a $0.00005 actor-start event. You are charged only for posts and reels that reach the dataset.
How this compares
The output schema matches apify/instagram-hashtag-scraper, so an existing pipeline swaps over without reshaping. At $1.00 per 1,000 posts it is below apify/instagram-hashtag-scraper ($2.60) and apify/instagram-hashtag-analytics-scraper ($2.30, plus a $0.001 start event per run and $0.007 per top-posts or latest-posts call). apidojo/instagram-hashtag-scraper lists $0.40 per 1,000 dataset items but charges $0.016 per keyword query on top, and scraping_solutions/instagram-hashtag-scraper-pro-no-cookies lists $1.25.
| Actor | Price per 1,000 posts | Platform usage |
|---|---|---|
| subimpact/instagram-hashtag-scraper | $1.00 | not billed separately |
| apify/instagram-hashtag-scraper | $2.60 | see listing |
| apify/instagram-hashtag-analytics-scraper | $2.30 | see listing |
| apidojo/instagram-hashtag-scraper | $0.40 plus $16.00 per keyword query | see listing |
| scraping_solutions/instagram-hashtag-scraper-pro-no-cookies | $1.25 | see listing |
Prices are Apify Store list prices on the Free plan, checked 24 October 2026. Competitor prices can change; check their listings.
📥 Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
hashtags | Array of Strings | Yes | ["malaysianfood"] | List of Instagram hashtags to scrape (with or without #). Runs are capped at the first 20 hashtags. |
resultsLimit | Integer | No | 20 | Max posts or reels to extract per hashtag (1–1000). |
resultsType | Enum | No | posts | posts or reels — which content type to scrape. When reels is requested, photo posts are never returned. |
keywordSearch | Boolean | No | false | Treat search terms as keyword phrases instead of single hashtags. Keyword search requires a logged-in session (sessionCookie): logged-out keyword terms hit Instagram's login wall, so the run stops after 2 consecutive walled terms and pushes one clear, un-charged error row per remaining term instead of retrying for hours. |
dryRun | Boolean | No | false | Run input validation without extracting live posts or triggering billing. |
proxyConfiguration | Object | No | { "useApifyProxy": true } | Apify Proxy configuration. Note: with the default options (no groups) the run uses Apify datacenter IPs, which Instagram heavily blocks. Enable the RESIDENTIAL proxy group — or supply sessionCookie, which uses its own residential lane — for reliable extraction. |
sessionCookie | String | No | empty | Optional sessionid cookie for logged-in mode. Used for this run only, never stored or logged. |
feedType | Enum | No | top | Logged-in mode only: top (ranked grid) or recent (newest posts first). |
🆘 When a run delivers 0 posts
Instagram blocks most datacenter IP ranges outright, so the default proxy options (Apify datacenter proxies, no session cookie) often yield 0 results for the logged-out lane. When that happens, the run is deliberately marked failed (never a silent success) with a status message that names the fix:
- enable the
RESIDENTIALproxy group in theproxyConfigurationinput, or - supply a
sessionCookie— the logged-in lane runs through its own sticky residential proxy.
Nothing is charged for the blocked run's placeholder/error rows.
🔐 Logged-in mode
Logged out, Instagram caps a hashtag at roughly 12 posts and hides play counts. With a session cookie, this actor calls the Instagram hashtag API directly instead and returns the full feed: up to resultsLimit posts per hashtag (hard cap 1,000), real videoPlayCount for reels, and a choice of feed.
- Bring your own cookie (optional): paste the
sessionCookieinput, either a rawCookie: ...header string or just thesessionidvalue. Credentials are used only to call Instagram from within the run and are never stored, logged, or included in the dataset. - Owner deployments: cookies can also be supplied through the
IG_SESSION_COOKIESenvironment variable as a JSON object. An input cookie takes precedence over the env var. - Feed types:
topreturns the ranked grid the hashtag page shows by default;recentreturns the newest posts first. Both paginate automatically with polite 1.5-3.5 s delays between page requests, capped at 40 pages per hashtag. - Graceful fallback, with a wall guard: if Instagram rejects the session (login wall, challenge, rate limit), the run logs a warning and automatically continues with the logged-out mode for the remaining hashtags. Logged-out keyword search is not available, so after 2 consecutive keyword terms hit the wall the run stops trying them (one un-charged
login_wallerror row per remaining term, no browser work) and the status message summarises delivered vs walled/skipped terms. Every term is also capped by a per-term time budget. The run summary (KVOUTPUT) reportsauthMode,sessionStatus(ok,invalid, ornot_provided) and the walled/skipped terms. - Account risk: use a secondary throwaway account, never your main one. Automated API calls from a shared hosting IP range may violate Instagram's terms and can lead to account restrictions. Rows produced by logged-in mode are marked
enrichmentSource: "session"in the dataset.
📤 Output Dataset Format
Every post pushed to the default dataset follows the standard schema:
{"id": "3350192837482910293","type": "Image","shortCode": "C7AB123xyZ","caption": "Delicious artisan coffee in Tokyo #tokyocafe #coffeelover Photo by @tokyobarista","hashtags": ["tokyocafe", "coffeelover"],"mentions": ["tokyobarista"],"url": "https://www.instagram.com/p/C7AB123xyZ/","commentsCount": 128,"displayUrl": "https://scontent.cdninstagram.com/v/t51/sample.jpg","alt": "Delicious artisan coffee in Tokyo #tokyocafe #coffeelover Photo by @tokyobarista","likesCount": 3420,"timestamp": "2026-05-01T12:00:00.000Z","ownerUsername": "tokyobarista","ownerId": "1029384756"}
🛠️ Local Development & Testing
npm installnpm testnpm start