Instagram Hashtag Scraper: Top Post Data avatar

Instagram Hashtag Scraper: Top Post Data

Pricing

$19.99/month + usage

Go to Apify Store
Instagram Hashtag Scraper: Top Post Data

Instagram Hashtag Scraper: Top Post Data

Monitor Instagram hashtags at scale with automated scraping. Extract media, captions, timestamps, engagement metrics, and account details. Great for social listening, market research, SEO insights, and influencer discovery. Clean, structured output ready for any workflow.

Pricing

$19.99/month + usage

Rating

5.0

(1)

Developer

API Empire

API Empire

Maintained by Community

Actor stats

0

Bookmarked

34

Total users

0

Monthly active users

11 days ago

Last modified

Share

Instagram Hashtag Scraper — Extract Reels, Audio & Engagement

This Instagram hashtag scraper pulls the top-performing Reels under any hashtag and returns them as clean, typed JSON — every reel's caption, creator, likes, comments, play count, structured audio metadata (song, artist, original-vs-licensed), and a derived engagement rank, section by section per hashtag. No HTML, no selectors, no manual filtering through photos and carousels. Feed the output straight into a spreadsheet, a dashboard, or an LLM/agent pipeline, and start spotting the trending sounds and top posts under any tag in minutes.

What is Instagram Hashtag Scraper: Top Post Data?

Instagram Hashtag Scraper: Top Post Data is a reels-only hashtag scraper: point it at one or more hashtags (or plain keywords) and it returns the Reels posted under that tag, ranked by how well each one actually performed. It requires a valid, logged-in Instagram sessionid cookie — Instagram's hashtag feed sits behind a login wall, so there is no cookie-free way to read it. Every reel is enriched with a structured audio block and a section-scoped engagement rank before it is written to the dataset.

  • Scrape Reels under any hashtag, URL, or resolved keyword
  • Extract structured audio/music metadata (song title, artist, original vs. licensed track)
  • Filter by minimum play count to cut low-reach content before it's billed
  • Get a derived play-to-like ratio and a per-hashtag engagement rank on every row
  • Export straight to JSON, CSV, or Excel from the Apify dataset — no parsing required

What data does Instagram Hashtag Scraper: Top Post Data collect?

Each run returns four layers of data for every qualifying reel: the post itself, its creator, its engagement numbers, and its audio track.

Data TypeKey FieldsJSON Field Names
Top reel postsID, short code, permalink, caption, hashtags, mentionsid, shortCode, url, caption, hashtags, mentions, type
Creator dataUsername, display name, internal owner IDownerUsername, ownerFullName, ownerId
Engagement & rankingLikes, comments, plays, views, derived ratio, section ranklikesCount, commentsCount, videoPlayCount, videoViewCount, playToLike, reelsEngagementRank
Audio & music metadataAudio ID, song title, artist, original-vs-licensed flag, usage countaudioMetadata (audioId, songTitle, artist, isOriginalAudio, audioUsageCount), musicInfo

Need more Instagram data?

If you need photos and carousels alongside Reels, or a discovery flow that also accepts direct reel URLs and usernames, the Instagram Reels Scraper By Hashtag & Keyword Search covers hashtag, keyword, URL, and username entry points into the same Reels dataset. If you're deciding which hashtags to target in the first place, the Instagram Related Hashtag Stats Scraper & Multi-Tag Comparison ranks multiple hashtags side by side and scores how much their tag universes overlap.

How does Instagram Hashtag Scraper: Top Post Data differ from the official Instagram API?

Meta's Instagram Graph API can look up hashtags, but only for approved Business/Creator accounts and only within a hard weekly cap; this Actor works from a single session cookie with no per-hashtag quota of its own.

FeatureInstagram Graph APIInstagram Hashtag Scraper: Top Post Data
Account requirementInstagram Business/Creator account linked to a Facebook Page, instagram_basic permission, plus Page-role tokenA single Instagram sessionid cookie
App approvalRequires the Instagram Public Content Access feature to pass Meta's app reviewNone — paste the cookie and run
Hashtag query volumeCapped at 30 unique hashtags within a rolling 7-day period, per Meta's documentationNo hashtag-count cap enforced by the Actor itself
Content-type targetingReturns recent/top media for a hashtag; no built-in Reels-only modeForces the clips tab and filters out every non-Reel item
Audio/music dataNot exposed by the endpointStructured audioMetadata block on every reel
Derived analyticsRaw counts onlyplayToLike ratio and reelsEngagementRank computed per hashtag
Setup timeApp review and business verification, which can take daysMinutes

Use the Graph API when you already run an approved Instagram Business integration and only need occasional, low-volume hashtag lookups within its 30-per-week cap. Use this Actor when you need reels-only hashtag data at volume, with audio and ranking already computed, without going through Meta's app review process.

Why do developers and teams scrape Instagram?

For marketers and brand teams

Brand and social teams use this Actor to see what's actually winning under a campaign or niche hashtag before greenlighting a content push. Point it at a competitor's or category hashtag, sort the returned rows by reelsEngagementRank, and read off which captions, creators, and audio tracks (audioMetadata.songTitle, isOriginalAudio) are driving plays right now. Setting minPlayCount filters out low-reach noise so a weekly trend report only reflects reels that actually broke through, without manually scrolling the hashtag page.

For AI engineers and agent builders

Agent pipelines that monitor social trends can call this Actor as a tool step, passing a hashtag and getting back typed JSON with no HTML to parse. Because audioMetadata and reelsEngagementRank are already structured, an LLM can be prompted directly on fields like songTitle, artist, and playToLike to summarize "what's trending under #dance this week" without a separate extraction or cleaning pass, and the output can be pushed straight into a RAG index or vector store.

For researchers and analysts

Academic and market researchers studying short-form video trends can use hashtag-scoped Reels data to track how audio and content patterns spread — all from data Instagram already serves publicly to any logged-in session, not from private or restricted endpoints. The per-section reelsEngagementRank and playToLike ratio give a consistent, comparable performance metric across hashtags and time periods without needing to compute it from raw counts by hand.

For developers building data products

Teams building trend-discovery or sound-licensing tools can schedule this Actor against a watchlist of hashtags and use audioMetadata.audioId plus audioUsageCount to detect which tracks are gaining traction under specific tags, then pipe the JSON output straight into their own database or API without writing an Instagram scraper themselves.

How to scrape Instagram (step by step)

  1. Open Instagram Hashtag Scraper: Top Post Data on its Apify Store page.
  2. Provide a valid Instagram sessionid cookie in the required sessionid field — this is the only mandatory input.
  3. Add one or more hashtags, hashtag URLs, or keywords to reelHashtags, and set maxReels, minPlayCount, keywordSearch, and includeAudioMetadata to shape the results.
  4. Start the run from the Apify Console or via the API.
  5. Download the results as JSON, CSV, or Excel from the run's dataset, or pull them programmatically through the Apify API.

What to do when Instagram changes its structure

The Actor is maintained, and its output schema is kept stable, so field names and types don't change on your end even when Instagram alters its internal endpoints. No specific turnaround time is promised for any given break-fix.

⬇️ Input

ParameterRequiredTypeDescriptionExample Value
reelHashtagsNoarrayOne or more hashtags, hashtag URLs, or keywords (with Keyword Search on). Each becomes its own reels section. Base key startUrls is also accepted.["dance"]
sessionidYesstringYour Instagram sessionid cookie, copied from DevTools → Application → Cookies → instagram.com. The hashtag feed is login-walled."YOUR_INSTAGRAM_SESSIONID"
keywordSearchNobooleanON resolves a keyword to its matching hashtag; OFF treats input as a literal hashtag. Default false.false
maxReelsNointegerReels to collect per hashtag, 1–1000. Default 20. Base key resultsLimit is also accepted.50
minPlayCountNointegerKeep only reels with at least this many plays. 0 (default) applies no filter.10000
includeAudioMetadataNobooleanAttach the structured audioMetadata block to every reel. Default true.true
proxyConfigurationNoobjectApify Proxy configuration; residential is recommended for Instagram.{"useApifyProxy": true}

Example input

{
"reelHashtags": ["dance", "#travel"],
"sessionid": "YOUR_INSTAGRAM_SESSIONID",
"keywordSearch": false,
"maxReels": 50,
"minPlayCount": 10000,
"includeAudioMetadata": true,
"proxyConfiguration": { "useApifyProxy": true }
}

The most common input mistake is an expired or already-flagged sessionid: the run won't crash, but it will finish successfully with a single free diagnostic row instead of reel data, so check that record's reason field first.

⬆️ Output

Every run writes typed, normalized JSON rows to the Apify dataset, exportable as JSON, CSV, or Excel directly from the Apify Console. Three structurally different row types can appear in the same dataset.

Section header row

One free, non-billed header row opens each hashtag's block of reels.

{
"section": "dance",
"isSection": true,
"rawQuery": "dance",
"contentType": "reels",
"sectionPosition": "1/2",
"inputUrl": "https://www.instagram.com/explore/tags/dance",
"label": "=== Section 1/2: #dance (reels) ==="
}

Reel (top post) row

The main, billed entity — one row per qualifying reel.

{
"section": "dance",
"id": "3512345678901234567",
"type": "Reel",
"shortCode": "C1a2b3c4D5e",
"url": "https://www.instagram.com/reel/C1a2b3c4D5e/",
"inputUrl": "https://www.instagram.com/explore/tags/dance",
"caption": "new routine 💃 #dance",
"hashtags": ["dance"],
"mentions": [],
"ownerUsername": "example.creator",
"ownerFullName": "Example Creator",
"ownerId": "9876543210",
"likesCount": 84213,
"commentsCount": 512,
"videoPlayCount": 1203400,
"videoViewCount": 1450200,
"playToLike": 14.29,
"reelsEngagementRank": 1,
"audioMetadata": {
"audioId": "1234567890123456",
"songTitle": "Original audio",
"artist": "example.creator",
"isOriginalAudio": true,
"audioUsageCount": null
},
"musicInfo": null,
"videoUrl": "https://scontent.cdninstagram.com/video.mp4",
"videoDuration": 14.5,
"displayUrl": "https://scontent.cdninstagram.com/thumb.jpg",
"images": ["https://scontent.cdninstagram.com/thumb.jpg"],
"dimensionsHeight": 1920,
"dimensionsWidth": 1080,
"timestamp": "2026-07-01T12:34:56.000Z",
"scrapedAt": "2026-07-09T09:00:00.000Z",
"productType": "clips",
"childPosts": []
}

Diagnostic row

A single free, unbilled record is pushed instead of reel data when a run collects nothing — a missing/expired sessionid, a hashtag with no reels, or a minPlayCount that filtered everything out.

{
"isDiagnostic": true,
"ok": false,
"reason": "Instagram returned no reels for the requested hashtag(s), or minPlayCount filtered them all out.",
"queries": ["dance"],
"contentType": "reels",
"note": "No reels were collected this run. The most common cause is an expired or flagged Instagram sessionid — provide a fresh 'sessionid' cookie in the input. A very high 'minPlayCount' can also filter every reel out. The actor itself is healthy; this record exists so the run does not fail. You were NOT charged for it."
}

How many results can you scrape with Instagram Hashtag Scraper: Top Post Data?

maxReels caps collection at up to 1000 reels per hashtag, and you can list as many hashtags or keywords in reelHashtags as you want in a single run — the Actor loops through every query in sequence. There is no hard cap on the number of hashtags themselves. If your Apify account's own per-run charge limit is reached mid-scrape, the Actor stops gracefully and keeps whatever reels it already collected and pushed rather than failing the run. Large maxReels values on high-volume hashtags will naturally take longer and cost more, since billing is one row_result event per reel actually returned.

Integrate Instagram Hashtag Scraper: Top Post Data and automate your workflow

Instagram Hashtag Scraper: Top Post Data works with any language or tool that can send an HTTP request.

REST API integration

import requests
TOKEN = "YOUR_APIFY_TOKEN"
ACTOR = "API-Empire~instagram-hashtag-scraper-top-post-data"
run = requests.post(
f"https://api.apify.com/v2/acts/{ACTOR}/run-sync-get-dataset-items",
params={"token": TOKEN},
json={"reelHashtags": ["dance"], "sessionid": "YOUR_INSTAGRAM_SESSIONID", "maxReels": 50},
)
reels = run.json()
for reel in reels:
print(reel.get("ownerUsername"), reel.get("videoPlayCount"))

Works in Python, Node.js, Go, Ruby, cURL.

Automation platforms (n8n, Make)

In n8n, use the Apify node to run this Actor as a step in a larger workflow and pass its dataset output to downstream nodes. In Make, the Apify module can trigger a run and fetch the resulting dataset items to feed into scenarios like spreadsheet updates or Slack alerts — configure both against this Actor's ID and your Apify API token.

Scraping publicly accessible Instagram data is generally legal; this Actor returns only reels and metadata visible on Instagram's public hashtag feed to a logged-in session, not private or restricted content. Because output includes creator personal data — ownerUsername, ownerFullName, and ownerId — anyone storing or processing it should have a lawful basis under frameworks like GDPR or CCPA, particularly for bulk collection or commercial use. Consult legal counsel for commercial use cases involving bulk personal data.

Frequently asked questions

Does Instagram Hashtag Scraper: Top Post Data work without an Instagram account?

No. It requires a valid, logged-in sessionid cookie from an Instagram account — the hashtag feed is login-walled, and there is no cookie-free way to read it.

How often is the scraped data updated?

Every run performs a live fetch against Instagram at the time you start it; nothing is served from a cache, so results reflect the hashtag's Reels at run time.

What happens if a hashtag has no reels or my filters return nothing?

The run still finishes successfully. Instead of reel rows, it writes a single free diagnostic record with a reason field explaining why — most commonly an expired sessionid or a minPlayCount set too high.

Can I scrape private Instagram content with this Actor?

No. It only returns Reels that are already visible on Instagram's public hashtag feed. Private accounts and content behind additional restrictions are not accessible.

Does this Actor work for AI agent workflows and LLM pipelines?

Yes. It's callable as a standard HTTP endpoint by any agent framework through the Apify API, and every response is typed JSON — there is no HTML or selector parsing step before passing results into an LLM context or agent tool.

How does this Actor handle Instagram's anti-bot system?

It uses a Chrome-fingerprinted HTTP client, a sticky proxy IP per run (so a single session doesn't hop IPs mid-scrape and trigger a checkpoint), a proxy fallback ladder (your chosen proxy → Residential → direct), retries with backoff on transient errors, and a live CSRF token pulled from Instagram's homepage rather than a purely synthetic one.

Does Instagram Hashtag Scraper: Top Post Data return data in a format LLMs can use directly?

Yes. Output is typed, normalized JSON with stable field names and no HTML — pass it directly into an LLM context window, a vector store, or an agent tool call.

Can I use this Actor without managing proxies myself?

Yes. Enable proxyConfiguration and the Actor builds its own fallback ladder (your proxy choice, then Residential, then a direct connection) and rotates IPs automatically when a request gets soft-blocked.

What happens when Instagram changes its structure or blocks the scraper?

The Actor is maintained, and its output schema stays stable — field names and types don't change on your end. No specific numeric turnaround time is promised for any given fix.

Your feedback

Found a bug or missing a field? We want to know. Open an issue through this Actor's Issues tab on its Apify Store page, or reach out via Apify's support channels — it's the fastest way to get a fix prioritized.