Instagram Reels Scraper
Pricing
$19.99/month + usage
Instagram Reels Scraper
Instagram Reels Scraper lets you extract reels data quickly and efficiently. Gather video URLs, captions, hashtags, likes, views, comments, and user profiles. Ideal for research, analytics, and trend tracking with fast, reliable, and easy automation.
Pricing
$19.99/month + usage
Rating
4.1
(15)
Developer
Scraper Engine
Maintained by CommunityActor stats
6
Bookmarked
214
Total users
8
Monthly active users
11 hours
Issues response
5 days ago
Last modified
Categories
Share
Instagram Reels Scraper — Views, Likes, Captions and Audio Data
Instagram Reels Scraper pulls public Reels from any Instagram username and returns them as structured JSON — no browser, no login, no manual copy-paste. Each record includes caption, likesCount, commentsCount, videoViewCount, and musicInfo, plus video/audio URLs, hashtags, mentions, and an optional speech-to-text transcript. Results stream into the dataset row by row as they're scraped. Add a username below and start a run to see it in action.
What is Instagram Reels Scraper?
Instagram Reels Scraper is an Apify Actor that collects public Reels — captions, engagement counts, media URLs, owner details, comments preview, and audio metadata — from one or many Instagram usernames and returns them as clean, structured JSON. It runs entirely against Instagram's logged-out web endpoints: no Instagram account, password, or cookie is ever required. It's built for social media marketers, growth and content teams, and developers or AI engineers who need Reels data fed straight into a dashboard, pipeline, or agent without writing a scraper themselves.
What Instagram Reels data is publicly available to scrape?
A logged-out visitor to any public Instagram profile already sees its Reels, captions, and engagement counts — the data this Actor collects.
| Data Category | Publicly Available | Restricted behind Instagram login |
|---|---|---|
| Captions, hashtags, mentions | Yes | — |
| Likes, comments, view/play counts | Yes | — |
| Video, audio, thumbnail URLs | Yes | — |
| Owner username, full name, ID | Yes | — |
| Timestamp, pinned status | Yes | — |
| Auto-generated transcript | Yes, when available | — |
| Preview comments (up to 12) | Partial, best-effort | Full comment threads |
| Private-account Reels | No | Requires following + login |
Instagram Reels Scraper only returns publicly visible data — nothing behind a login wall.
What data can I extract with Instagram Reels Scraper?
Instagram Reels Scraper returns identity and ownership fields, engagement and media metrics, and full content fields (caption, audio, comments, transcript) for every Reel it collects.
| Field Name | Description |
|---|---|
id | Instagram's internal numeric ID for the Reel |
shortCode | Short code used in the Reel's public URL |
url | Full public URL of the Reel |
inputUrl | Profile URL that was scraped to find this Reel |
type | Media type — Video, Image, or Sidecar |
productType | Instagram's internal product type (e.g. clips) |
ownerUsername | Username of the account that posted the Reel |
ownerFullName | Display name of the posting account |
ownerId | Instagram's internal numeric user ID of the owner |
Identity & ownership fields
id, shortCode, url, inputUrl, type, productType, ownerUsername, ownerFullName, ownerId
Engagement & media metric fields
likesCount, commentsCount, videoViewCount, videoPlayCount, sharesCount (opt-in), videoDuration, dimensionsWidth, dimensionsHeight, isPinned, isCommentsDisabled, timestamp
Content, media & comments fields
caption, hashtags, mentions, alt, displayUrl, videoUrl, audioUrl, images, musicInfo, childPosts, firstComment, latestComments, transcript (opt-in), downloadedVideo (opt-in)
🤖 Add-on: Need additional Instagram data?
Reels are one slice of an account's activity. Pair this Actor with Instagram Profile Scraper for bio, follower counts, and business status, Instagram Hashtag Scraper to find Reels and posts by hashtag instead of username, or Instagram Mentions Scraper to track who's tagging a brand's account.
How does Instagram Reels Scraper differ from the official Instagram API?
Meta's Instagram Graph API is built for managing your own connected account, not for pulling another public account's content — Instagram Reels Scraper works on any public username with no account linking or app review.
| Feature | Instagram Graph API | Instagram Reels Scraper |
|---|---|---|
| Access scope | Your own connected account, or limited public content via Hashtag Search | Any public account's Reels, by username |
| Account requirement | Business/Creator account linked to a Facebook Page | None |
| Approval process | Meta app review and business verification | No approval — enter a username and run |
| Setup time | App review and configuration before any data flows | Minutes |
| Third-party account data | Not accessible for arbitrary public accounts | Accessible for any public account |
| Auto transcript / video download | Not provided | Both available as opt-in enrichments |
Use the Graph API when you manage the Instagram account yourself and need official insights tied to your business tools. Use Instagram Reels Scraper when you need Reels data from accounts you don't control — competitors, creators, or a broad watchlist.
How to use Instagram Reels Scraper
Instagram Reels Scraper runs on Apify like any other Actor — no separate signup or API key setup beyond your Apify account.
- Open the Actor's page on Apify and go to the Input tab.
- Add one or more Instagram usernames,
@handles, or profile URLs to the requiredusernamefield. - Set
resultsLimitand, optionally,onlyPostsNewerThanorskipPinnedPoststo narrow the run. - Click Start. Reels stream into the dataset as each one is scraped.
- Export results as JSON, CSV, Excel, or XML, or pull them via the Apify API/dataset endpoint.
How to scale to bulk Instagram Reels extraction
username is an array, so a single run already scrapes many accounts at once — add as many usernames as you need and each is scraped independently with its own resultsLimit. There is no separate "bulk mode" input; scaling up simply means adding more entries to the same array or raising resultsLimit per username (up to 10,000).
What can you do with Instagram Reels data?
- A content strategist doing competitor research uses
caption,hashtags, andmusicInfoto see which formats and audio a rival brand is riding. - A creator-partnerships lead doing discovery uses
likesCount,commentsCount, andvideoViewCountacross a creator's recent Reels to gauge real engagement before an outreach. - A social media manager doing trend tracking uses
musicInfoandtimestampacross many accounts to spot which audio tracks are recurring across a niche. - A growth analyst building reporting dashboards uses
likesCount,commentsCount,videoViewCount, andvideoPlayCountto chart a brand's own Reels performance over time. - An AI engineer building a content-research agent feeds
captionandtranscriptinto a RAG pipeline so the agent can answer questions about what a creator has been posting, in the creator's own words.
How does Instagram Reels Scraper handle rate limits and blocking?
Every request runs through Apify's residential proxy by default, with up to 3 attempts per request before it's given up on. If you supply your own custom proxy URLs, the Actor tries those first (1 attempt) and automatically escalates to residential on failure — once any request escalates, every later request in the run starts on residential too. Requests that come back 429, 401, 403, or any 5xx are treated as blocked or transient and retried with backoff (capped wait time) before escalating or giving up. A 404 (for example, a Reel with no transcript available) is treated as "not available," not an error. If one username fails unexpectedly, the Actor logs it, skips it, and continues scraping the remaining usernames in the same run rather than aborting the whole run. The Actor does not solve CAPTCHAs — if a request is blocked past its retry attempts, that item is skipped and logged.
⬇️ Input
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
username | Yes | array of strings | Add one or multiple Instagram usernames, @handles, or profile URLs to start scraping reels. Each is scraped independently. | ["natgeo", "cristiano"] |
resultsLimit | No | integer | Maximum number of reels/posts to collect per username. Default 10, minimum 1, maximum 10000. | 25 |
onlyPostsNewerThan | No | string (date picker) | Fetch only recent posts after a specific date. Use the date picker for an absolute date (YYYY-MM-DD) or type a relative window like 7 days, 2 weeks, or 1 month. Leave empty to fetch all. Default "" (no filter). | "7 days" |
skipPinnedPosts | No | boolean | Turn on to ignore pinned posts and focus on regular timeline content. Default false. | false |
includeSharesCount | No | boolean | Include share count for each post when Instagram makes it available. Default false. | true |
includeTranscript | No | boolean | Extract and include the caption/speech-to-text transcript in your output data. Default false. | true |
includeDownloadedVideo | No | boolean | Download reel videos to the run's Key-Value Store and include a downloadable link in the output. Default false. | false |
proxyConfiguration | No | object | The Actor always uses Apify's residential proxy (up to 3 attempts) as the reliability safety net. If you supply your own custom proxy URLs, the Actor tries those first and automatically falls back to residential on failure. Apify proxy group selections are ignored — residential is always the fallback. | {"useApifyProxy": true} |
Example input
{"username": ["natgeo", "cristiano"],"resultsLimit": 25,"onlyPostsNewerThan": "7 days","skipPinnedPosts": false,"includeSharesCount": true,"includeTranscript": true,"includeDownloadedVideo": false,"proxyConfiguration": {"useApifyProxy": true}}
⬆️ Output
Every scraped Reel is pushed to the dataset as one flat, typed JSON object, in the same schema on every run. Export it as JSON, CSV, Excel (XLSX), or XML directly from the dataset, or pull it via the Apify API. Every dataset item is a real, scraped Reel — the Actor does not push separate error or accounting placeholder rows, so nothing needs to be filtered out before counting or billing.
Example output
{"id": "3727980973477364718","type": "Video","shortCode": "DO8cvGViIPu","caption": "On the 95th Saudi National Day, sharing a message with the Saudi people 🇸🇦","hashtags": [],"mentions": [],"url": "https://www.instagram.com/p/DO8cvGViIPu/","commentsCount": 12381,"dimensionsHeight": 1920,"dimensionsWidth": 1080,"images": ["https://scontent.cdninstagram.com/v/example_thumb.jpg"],"videoUrl": "https://scontent.cdninstagram.com/v/example_video.mp4","likesCount": 1258268,"timestamp": "2025-09-23T18:20:37.000Z","ownerFullName": "Cristiano Ronaldo","ownerUsername": "cristiano","ownerId": "173560420","isPinned": false,"productType": "clips","videoDuration": 47.5,"inputUrl": "https://www.instagram.com/cristiano","firstComment": "Legend! 🔥","latestComments": [{"id": "18021394857203","text": "Legend! 🔥","ownerUsername": "fan_account","ownerProfilePicUrl": "https://scontent.cdninstagram.com/v/example_pic.jpg","timestamp": "2025-09-23T19:02:11.000Z","repliesCount": 2,"replies": [],"likesCount": 340,"owner": {"id": "998877665","is_verified": false,"profile_pic_url": "https://scontent.cdninstagram.com/v/example_pic.jpg","username": "fan_account"}}],"displayUrl": "https://scontent.cdninstagram.com/v/example_thumb.jpg","audioUrl": "https://video.xx.fbcdn.net/v/example_audio.mp4","alt": null,"videoViewCount": 37796913,"videoPlayCount": 37796913,"childPosts": [],"musicInfo": {"artist_name": "alnassr","song_name": "Original audio","uses_original_audio": true,"should_mute_audio": false,"should_mute_audio_reason": "","audio_id": "1161392755847777"},"isCommentsDisabled": false,"transcript": "On the 95th Saudi National Day, I want to send my love and respect to the Saudi people...","downloadedVideo": "","sharesCount": 4210}
sharesCount is only added when includeSharesCount is enabled, and is null (never a fabricated 0) when Instagram doesn't expose a share count for that Reel. transcript stays an empty string unless includeTranscript is on and Instagram returns a transcript. downloadedVideo stays an empty string unless includeDownloadedVideo is on. firstComment/latestComments are empty whenever Instagram's logged-out preview doesn't serve comment text for that Reel — commentsCount (the numeric total) is unaffected.
How does it work?
Instagram Reels Scraper talks directly to Instagram's own logged-out web endpoints instead of driving a browser. For each username, it fetches the public profile page to pick up the tokens Instagram's own front end uses (csrf_token, app_id, user ID), then pages through that account's Reels using Instagram's internal clips API. Every request goes through Apify's residential proxy, with automatic retries and, if you've configured a custom proxy, a fallback to residential when the custom proxy is blocked. Only what a logged-out visitor to Instagram.com can already see is returned — nothing from a private account and nothing that requires being logged in. Results are normalized into the same flat JSON schema on every run, so downstream code doesn't have to change when Instagram tweaks its own page layout.
Integrations
Instagram Reels Scraper runs on the Apify platform, so it works with anything that can call the Apify API or use an Apify integration — no separate SDK required.
Calling Instagram Reels Scraper programmatically
from apify_client import ApifyClientclient = ApifyClient("<APIFY_API_TOKEN>")run_input = {"username": ["natgeo"],"resultsLimit": 25,}run = client.actor("scraper-engine/instagram-reels-scraper-pay-per-events").call(run_input=run_input)for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["shortCode"], item["likesCount"])
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 the output 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.
Is it legal to scrape Instagram Reels?
Scraping publicly available data — the same data any logged-out visitor to Instagram.com can see — is generally lawful, and Instagram Reels Scraper only returns that kind of public data: no private accounts, no login-gated content. Because Reels output includes personal data about the posting account and commenters (usernames, full names, profile pictures), GDPR and CCPA apply to how you store and use it once collected — you need a lawful basis for that processing, and data subjects retain rights over it. This is factual framing, not legal advice — consult legal counsel if your use case involves bulk storage of personal data.
Frequently asked questions
What Instagram Reels fields does Instagram Reels Scraper return?
It returns caption, likesCount, commentsCount, videoViewCount, and musicInfo among 30+ fields per Reel — see the full field list above.
Does Instagram Reels Scraper require an Instagram account or login?
No. It authenticates each request using tokens pulled from Instagram's own public profile page, so no Instagram account, password, or cookie is ever needed.
How many reels can I extract in one run?
Up to resultsLimit (max 10000) per username, and you can add as many usernames as you want in the same username array — there's no separate cap on the number of usernames per run.
What happens if a username is private, doesn't exist, or has no reels?
The Actor logs the failure for that username and moves on to the next one rather than stopping the run — if a profile has no accessible Reels, it simply returns none for that username while the rest of the run continues.
Can I scrape multiple Instagram usernames at once?
Yes. username accepts an array of usernames, @handles, or profile URLs, and each is scraped independently with its own resultsLimit.
Does Instagram Reels 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.
How does Instagram Reels Scraper compare to other Instagram Reels scrapers?
It differs in the enrichments it bundles into one run: bulk usernames, a date filter, an optional speech-to-text transcript, and an optional actual video-file download, all in the same input schema rather than as separate add-ons.
Does Instagram Reels 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 or CSS selectors needed. Pass it directly into an LLM prompt, a vector store, or an agent tool.
What happens when Instagram changes its layout or anti-bot system?
The Actor is maintained against Instagram's endpoints, and the output schema stays the same regardless of front-end changes on Instagram's side. No specific turnaround time is guaranteed for any given change.
Can I use Instagram Reels Scraper without managing proxies or browser infrastructure?
Yes. It runs on Apify's residential proxy by default with built-in retries and escalation — there's no browser to manage, since it talks to Instagram's endpoints directly.
Which Instagram Reels fields work best for AI training data and RAG indexing?
For RAG, index caption and transcript — the highest-information text fields. For structured training data, likesCount, commentsCount, videoViewCount, and timestamp return as consistent typed primitives across every record.
Related scrapers
| Scraper Name | What it extracts |
|---|---|
| Instagram Profile Scraper | Bio, follower counts, verification, and latest posts |
| Instagram Hashtag Scraper | Posts and Reels tagged under a hashtag |
| Instagram Mentions Scraper | Inbound posts tagging or mentioning an account |
| Instagram Highlights Scraper | Story highlight reels saved to a profile |
| Instagram Tagged Posts Scraper | Tagged posts with date and engagement analytics |
| Instagram Related Person Scraper | Profiles Instagram lists as related to an account |
Your feedback
Found a bug or a missing field? Let us know through the Actor's Issues tab on Apify or your Scraper Engine support channel, and we'll take a look. Reports like these keep this Actor accurate as Instagram continues to change.