Instagram Hashtag Scraper — Fast Posts, Reels & Metrics avatar

Instagram Hashtag Scraper — Fast Posts, Reels & Metrics

Pricing

from $1.00 / 1,000 posts

Go to Apify Store
Instagram Hashtag Scraper — Fast Posts, Reels & Metrics

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

subimpact

Maintained by Community

Actor 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-scraper at $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.

ActorPrice per 1,000 postsPlatform usage
subimpact/instagram-hashtag-scraper$1.00not billed separately
apify/instagram-hashtag-scraper$2.60see listing
apify/instagram-hashtag-analytics-scraper$2.30see listing
apidojo/instagram-hashtag-scraper$0.40 plus $16.00 per keyword querysee listing
scraping_solutions/instagram-hashtag-scraper-pro-no-cookies$1.25see listing

Prices are Apify Store list prices on the Free plan, checked 24 October 2026. Competitor prices can change; check their listings.


📥 Input Parameters

ParameterTypeRequiredDefaultDescription
hashtagsArray of StringsYes["malaysianfood"]List of Instagram hashtags to scrape (with or without #). Runs are capped at the first 20 hashtags.
resultsLimitIntegerNo20Max posts or reels to extract per hashtag (1–1000).
resultsTypeEnumNopostsposts or reels — which content type to scrape. When reels is requested, photo posts are never returned.
keywordSearchBooleanNofalseTreat 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.
dryRunBooleanNofalseRun input validation without extracting live posts or triggering billing.
proxyConfigurationObjectNo{ "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.
sessionCookieStringNoemptyOptional sessionid cookie for logged-in mode. Used for this run only, never stored or logged.
feedTypeEnumNotopLogged-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 RESIDENTIAL proxy group in the proxyConfiguration input, 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 sessionCookie input, either a raw Cookie: ... header string or just the sessionid value. 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_COOKIES environment variable as a JSON object. An input cookie takes precedence over the env var.
  • Feed types: top returns the ranked grid the hashtag page shows by default; recent returns 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_wall error 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 (KV OUTPUT) reports authMode, sessionStatus (ok, invalid, or not_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 install
npm test
npm start