🎬Instagram Single Reels Scraper with Video Hashtag Extractor avatar

🎬Instagram Single Reels Scraper with Video Hashtag Extractor

Pricing

$19.99/month + usage

Go to Apify Store
🎬Instagram Single Reels Scraper with Video Hashtag Extractor

🎬Instagram Single Reels Scraper with Video Hashtag Extractor

🚀Instagram Single Reels Scraper with Video Hashtag Extractor comprehensive data from Instagram reels including media information, comments, engagement metrics, and user details. Perfect for social media analysis, content research, and competitive intelligence.

Pricing

$19.99/month + usage

Rating

0.0

(0)

Developer

ScraperX

ScraperX

Maintained by Community

Actor stats

0

Bookmarked

20

Total users

7

Monthly active users

2 days ago

Last modified

Share

Instagram Reel Hashtag Scraper — Hashtags, Captions, Engagement

Paste any public Instagram Reel URL and get its hashtags, @mentions, caption text, creator identity, like/comment/view counts, video/thumbnail URLs and music metadata back as structured JSON — no Instagram login required. Hashtags and mentions are parsed straight out of the reel's own caption, with optional filters to keep only reels matching a specific hashtag or mention. Start a run from the Apify Store and read results as JSON or CSV.

What is the Instagram Single Reels Scraper with Video Hashtag Extractor?

It's an Apify Actor that takes one or more Instagram Reel links (full URL, username/shortcode, or a bare shortcode) and returns each reel's caption-derived hashtags and mentions alongside its creator identity, engagement counts, media URLs and music metadata as one JSON row per reel. No Instagram account or login is required — the actor authenticates its requests with tokens read from a public profile page shell, not a session cookie. It's built for social media analysts, growth marketers, and developers building AI/RAG pipelines who need structured data from specific reels rather than a full-account crawl.

What Instagram Reel data is publicly available to scrape?

Every field below is visible to any logged-out visitor on the reel's public page; only two surfaces need an authenticated Instagram session.

Data CategoryPublicly available (no login)Requires login/session
Caption, hashtags, mentionsYes
Creator username, full name, verified badgeYes
Like, comment and view countsYes
Video/thumbnail URLs, music metadataYes
Tagged users, co-authors, paid-partnership flagYes
First-page comment previewYes (small sample)
Full comment reply threadsNoAuthenticated session
Creator's follower countNo — not in the reel responseSeparate profile scrape

This actor only returns publicly visible data — what any visitor sees. Nothing behind a login wall.

What data can I extract with this Reel scraper?

Every run returns one JSON row per reel covering caption/creator identity, engagement and hashtag metrics, and media/music/run metadata.

Creator, reel and caption identity fields

Field NameDescription
urlThe Reel URL that was scraped
shortcodeInstagram's short media code (e.g. DOEMHa6iPoz)
mediaIdInstagram's internal numeric media ID
ownerUsernameCreator's username
ownerFullNameCreator's display name
ownerIdCreator's internal Instagram user ID
ownerIsVerifiedWhether the creator has a verified badge
ownerIsPrivateWhether the creator's account is private
ownerProfilePicUrlCreator's profile picture URL
captionTextThe reel's full caption text
takenAtIsoOriginal post timestamp, ISO-8601
mediaTypeInstagram's internal media type code
productTypeInstagram's internal product type (e.g. clips for reels)

Engagement, hashtag and mention metrics

Field NameDescription
likeCountLike count at scrape time
commentCountComment count at scrape time
viewCountView count; falls back to Instagram's play_count when view_count is absent
isPaidPartnershipBrand-partnership flag
sponsorTagsSponsor/brand tag objects, when present
hashtagsHashtags extracted from the caption text via regex, deduplicated
hashtagCountCount of hashtags
mentionedUsernamesUnion of caption @mentions and any matching tagged-user/co-author accounts
mentionCountCount of mentionedUsernames
structuredMentionsCaption mentions cross-matched against real tagged-user/co-author objects (username, id, isVerified, source)
externalLinksBare URLs found in the caption (bio/CTA links)

Media, music and run metadata

Field NameDescription
videoUrlBestBest-quality direct video URL
thumbnailUrlBest-quality thumbnail/cover image URL
videoWidth / videoHeightVideo dimensions in pixels
hasAudioWhether the video has an audio track
coauthorsCollab/co-author account objects (username, id, fullName, isVerified, profilePicUrl)
taggedUsersTagged account objects (username, id, fullName, isVerified, position)
musicAudioTypeAudio type reported by Instagram (e.g. original_sounds)
musicAssetIdInternal audio-track asset ID
musicArtistUsernameUsername of the audio track's original artist
musicIsOriginalAudioWhether the audio is the creator's own original sound
proxy_usedresidential or none
successWhether the reel's data was retrieved
errorReasonTyped failure reason when success is false (e.g. login_required, challenge_required, graphql_error, media_not_found)
attemptsNumber of fetch attempts made for this URL
scrapedAt / scraped_atISO-8601 timestamp of the scrape
media_infoFull raw Instagram media JSON object (unflattened), in the "Raw Media & Comments" dataset view
commentsThe reel's inline preview_comments sample, unflattened, in the same raw view

🤖 Add-on: Need additional Instagram data?

Need reels by username instead of by URL, at volume? Scraper Engine's Instagram Reels Scraper pages a whole account's reels with filters like results limit and post age. For hashtag-first discovery, Instagram Hashtag Scraper searches by hashtag or keyword instead of a specific reel link. For profile-level stats, Instagram Profile Scraper returns bio, follower and post counts.

How does this scraper differ from the official Instagram API?

Meta's Instagram Graph API is restricted to Professional (Business/Creator) accounts and has no endpoint for an arbitrary public Reel URL or shortcode; this scraper works on any public reel link with no Instagram account at all (Meta Instagram Platform docs, checked 2026-07-25).

FeatureInstagram Graph APIThis scraper
Account type requiredProfessional (Business/Creator) only — no consumer accountsNone
Access to an arbitrary reel by URLNot availableNative — paste a URL, username/shortcode, or shortcode
Other accounts' contentBusiness Discovery gives only basic profile fields for other Business/Creator accountsFull caption, hashtag, mention, engagement and music data per reel
Hashtag/mention discoveryHashtag Search/mentions endpoints scoped to your own linked accountRegex extraction on every reel's caption, with filterByHashtag / filterByMention
Approval processRequires Meta App ReviewNo approval step — run from the Apify Store
SetupBusiness verification, account conversion, App ReviewPaste a URL and click Start

Use the Graph API when you manage the account and only need your own content or insights. Use this scraper for caption, hashtag and engagement data from public reels you don't own, without Business verification or App Review.

How to use this Instagram Reel scraper

Run it from its Apify Store listing — no signup flow or catalog beyond the standard Apify console/API.

  1. Open the Actor on Apify and paste one or more links into Instagram Reel URLs / Shortcodes (reelUrls) — full URL, username/shortcode, or bare shortcode.
  2. (Optional) Set Filter By Hashtag to keep only reels whose caption contains a specific hashtag.
  3. (Optional) Set Filter By Mention to keep only reels mentioning, tagging, or co-authoring a specific username.
  4. Click Start.
  5. Export results as JSON, CSV or Excel, or read them via the Apify API/client.

How to scale to bulk Instagram single-Reel extraction

reelUrls is an array, so one run accepts a full list of reel links, username/shortcode pairs, or bare shortcodes — there's no separate "bulk mode" to enable. Each URL is processed sequentially with its own retry budget, so a single run scales from one reel to a large batch just by adding more entries to the list.

What can you do with Instagram Reel hashtag data?

  • A social listening analyst monitoring a campaign uses hashtags and filterByHashtag to pull every reel tagged with a branded hashtag and track adoption.
  • A growth marketer auditing collabs uses coauthors, taggedUsers and isPaidPartnership to see which accounts a creator partners with and which posts are sponsored.
  • A content researcher building a keyword dataset uses captionText, hashtags and mentionedUsernames to label reels for topic and trend analysis.
  • An audio/trend tracker uses musicArtistUsername and musicIsOriginalAudio to identify which reels ride a trending sound versus original audio.
  • An AI engineer building a RAG pipeline or agent tool feeds captionText, hashtags and structuredMentions as typed JSON directly into a vector store or LLM context window, with no HTML parsing step.

How does this scraper handle rate limits and blocking?

Every request routes through Apify's residential proxy, which the actor forces regardless of the proxy setting supplied in the input. On a failed request, a blocked response, or a 200-status page with no usable tokens (a soft block), the actor rotates to a freshly-issued residential proxy URL and retries, up to 8 attempts per URL, before giving up on that URL. A genuinely missing/deleted/private reel (media_not_found) is not retried, since a different proxy IP won't change that outcome. When a URL exhausts its retries or hits an unhandled exception, the actor still writes an uncharged dataset row with a typed errorReason instead of silently producing nothing, so a multi-URL run always gives honest per-URL accounting.

⬇️ Input

All 5 input parameters are optional — no field is required to start a run, though reelUrls must contain at least one entry for the actor to do anything.

ParameterRequiredTypeDescriptionExample Value
reelUrlsNoarrayInstagram reel inputs to scrape: full URL, username/shortcode, or a bare shortcode. (A base-shaped input using the key urls is still accepted for backward compatibility.)["https://www.instagram.com/cristiano/reel/DOEMHa6iPoz/"]
filterByHashtagNostringOnly keep reels whose caption contains this hashtag (with or without #). Leave empty to keep all reels."StayedForMore"
filterByMentionNostringOnly keep reels whose caption mentions, tags, or co-authors this username (with or without @). Leave empty to keep all reels."visitsaudi"
sessionIdNostringOptional Instagram sessionid cookie. Not required — the actor fetches reel data fully logged out by default. Used only for this run's requests, never stored.""
proxyConfigurationNoobjectProxy settings. The actor automatically uses RESIDENTIAL proxy for all requests regardless of this selection.{"useApifyProxy": true}

Example input

{
"reelUrls": [
"https://www.instagram.com/cristiano/reel/DOEMHa6iPoz/"
],
"filterByHashtag": "",
"filterByMention": "",
"sessionId": "",
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US"
}
}

⬆️ Output

Every run writes typed, normalized JSON to the default dataset with a consistent field set across runs — no post-processing needed. Export as JSON, CSV, Excel, or read it through the Apify API/client. The default dataset view surfaces the flattened fields below; the raw media_info/comments blobs live in the separate "Raw Media & Comments" view.

Example output

{
"url": "https://www.instagram.com/cristiano/reel/DOEMHa6iPoz/",
"shortcode": "DOEMHa6iPoz",
"mediaId": "3712145279353944627",
"ownerUsername": "cristiano",
"ownerFullName": "Cristiano Ronaldo",
"ownerIsVerified": true,
"ownerIsPrivate": false,
"captionText": "I came here to do what I love, but I #StayedForMore. The people, the energy, and...",
"hashtags": ["StayedForMore"],
"hashtagCount": 1,
"mentionedUsernames": [],
"mentionCount": 0,
"structuredMentions": [],
"externalLinks": [],
"likeCount": 1806539,
"commentCount": 20505,
"viewCount": null,
"isPaidPartnership": false,
"coauthors": [],
"taggedUsers": [],
"videoUrlBest": "https://instagram.ftun10-1.fna.fbcdn.net/o1/v/t2/f2/m86/AQN4j-akK4-Os0...mp4",
"thumbnailUrl": "https://instagram.ftun10-1.fna.fbcdn.net/v/t51.71878-15/539543640_1700...jpg",
"musicAudioType": "original_sounds",
"musicAssetId": null,
"musicArtistUsername": "cristiano",
"musicIsOriginalAudio": true,
"takenAtIso": "2025-09-01T15:01:00Z",
"proxy_used": "residential",
"attempts": 1,
"success": true,
"errorReason": null,
"scrapedAt": "2026-07-25T00:00:00Z"
}

How does it work?

Each reel URL is normalized to a shortcode, then the actor fetches a public Instagram profile page over a residential proxy using a Chrome-TLS-fingerprinted client, logged out. That page's shell still embeds an APP_ID and csrf_token, which the actor extracts and uses to POST directly to Instagram's own GraphQL endpoint for that shortcode — the same data Instagram's reel page used to pre-embed before it switched to a data-free SPA shell. Hashtags, mentions and every flattened field are derived from that one response, so no extra requests are made. Only publicly visible reel data is returned, and the output schema stays stable regardless of Instagram front-end changes, since the actor targets Instagram's underlying API responses rather than parsing rendered HTML.

Integrations

This actor runs on the Apify platform, so it works with anything that can call the Apify API — no separate SDK required.

Calling this scraper programmatically

from apify_client import ApifyClient
client = ApifyClient("<APIFY_API_TOKEN>")
run_input = {
"reelUrls": ["https://www.instagram.com/cristiano/reel/DOEMHa6iPoz/"],
"filterByHashtag": "",
}
run = client.actor("scraper-engine/instagram-single-reels-scraper-with-video-hashtag-extractor").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["shortcode"], item["hashtags"])

Works in Go, Ruby, Node.js, cURL — any language that can make an HTTP request.

No-code tools (n8n, Make, LangChain)

In n8n, use the Apify node's "Run Actor" action (or a plain HTTP Request node) pointed at this Actor's run endpoint, then read results from the resulting dataset. In Make, the Apify app's "Run an Actor" module does the same, letting you chain reel data straight into a scenario. In LangChain or any custom agent framework, call the Actor's run endpoint as a tool and pass the returned dataset items straight into your chain — the JSON is already typed and doesn't need HTML parsing.

Scraping publicly available data — the kind any logged-out visitor can see on a reel's page — is generally permitted, but legality depends on your jurisdiction and how you use the data. This actor only returns publicly available data: hashtags, captions, engagement counts and media that Instagram serves to anonymous visitors, nothing behind a login wall. Because that data includes creator usernames, names and other identifiers, it can qualify as personal data under regimes like GDPR and CCPA, which govern how you may store and reuse it, not whether you may view it. Consult legal counsel if your use case involves bulk storage of personal data.

Frequently asked questions

What Instagram Reel fields does this scraper return?

It returns captionText, hashtags, mentionedUsernames, likeCount and viewCount among 40+ flattened fields per reel — see the full fields tables above for creator identity, engagement, and media/music metadata.

Does this scraper require an Instagram account or login?

No. It runs fully logged out by default, authenticating its request with tokens read from a public profile page shell rather than a session cookie. The optional sessionId field only lets you attach your own sessionid cookie on top of that default behavior; it is never required and never stored.

How many reels can I extract in one run?

reelUrls accepts an array of any length — one run processes each entry sequentially, so a single run scales from one reel to a full list just by adding more entries.

What happens if a reel is deleted, private, or doesn't exist?

The actor returns media_not_found in errorReason and does not retry that URL, since a different proxy IP won't change a genuinely missing/private reel. The row is still written to the dataset, uncharged, with success: false.

Does the hashtag extractor analyze video content or just the caption text?

It parses the caption text only — hashtags and mentions are pulled from the reel's caption with a regex (#word / @username), then cross-referenced against Instagram's structured tagged-user and co-author data for verified matches. There is no frame-by-frame video or audio content analysis; a hashtag that only appears as on-screen text in the video itself, and not in the caption, is not captured.

Can I filter reels by hashtag or mention?

Yes. filterByHashtag keeps only reels whose caption contains a specific hashtag, and filterByMention keeps only reels that mention, tag, or co-author a specific username. Both are applied after a reel is successfully scraped, so filtered-out reels are never billed.

Does this scraper work with Claude, ChatGPT, and other AI agent tools?

Yes, as an HTTP endpoint. Any agent framework that can call an API — LangChain, a custom Claude tool, a ChatGPT plugin/action — can trigger a run and read back typed JSON dataset items.

Does this scraper return data in a format LLMs can use directly?

Yes. Output is typed, normalized JSON with consistent field names across runs — no HTML parsing, no selectors. Pass it directly to an LLM, index it into a vector store, or feed it to an agent tool.

What happens when Instagram changes its layout or blocking system?

The actor targets Instagram's underlying GraphQL response rather than parsed HTML, and is maintained against changes to that response and to Instagram's anti-bot behavior; the output schema stays stable across those updates. No specific update turnaround is guaranteed.

Can I use this scraper without managing proxies or browser infrastructure?

Yes. The actor always routes requests through Apify's residential proxy and handles retries and proxy rotation on blocks internally — you don't configure or run any proxy or browser infrastructure yourself.

Which fields work best for AI training data and RAG indexing?

For RAG, index captionText alongside hashtags and structuredMentions as high-information text/metadata. For training data, likeCount, commentCount, viewCount, hashtagCount and mentionCount return as consistent typed numbers across every row, with null (never a fabricated value) when Instagram omits a counter.

ScraperWhat it extracts
Instagram Reels ScraperBulk reels for one or more usernames, with results limit, date filter, and optional transcript/video download
Instagram Hashtag ScraperPosts and reels discovered by hashtag or keyword search
Instagram Mentions ScraperInbound posts where other accounts tag or @-mention a target handle
Instagram Profile ScraperProfile bio, follower/following/post counts, and verification status
Instagram Tagged & Mentions Posts & Location ScraperTagged/mentioned posts enriched with location and full carousel media

Your feedback

Found a bug or missing a field? Let us know through the Actor's Issues tab on Apify or by contacting Scraper Engine support — reports like these get triaged directly against this actor's source.