Instagram Reels Scraper avatar

Instagram Reels Scraper

Pricing

$19.99/month + usage

Go to Apify Store
Instagram Reels Scraper

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

Scraper Engine

Maintained by Community

Actor stats

6

Bookmarked

214

Total users

8

Monthly active users

11 hours

Issues response

5 days ago

Last modified

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 CategoryPublicly AvailableRestricted behind Instagram login
Captions, hashtags, mentionsYes
Likes, comments, view/play countsYes
Video, audio, thumbnail URLsYes
Owner username, full name, IDYes
Timestamp, pinned statusYes
Auto-generated transcriptYes, when available
Preview comments (up to 12)Partial, best-effortFull comment threads
Private-account ReelsNoRequires 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 NameDescription
idInstagram's internal numeric ID for the Reel
shortCodeShort code used in the Reel's public URL
urlFull public URL of the Reel
inputUrlProfile URL that was scraped to find this Reel
typeMedia type — Video, Image, or Sidecar
productTypeInstagram's internal product type (e.g. clips)
ownerUsernameUsername of the account that posted the Reel
ownerFullNameDisplay name of the posting account
ownerIdInstagram'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.

FeatureInstagram Graph APIInstagram Reels Scraper
Access scopeYour own connected account, or limited public content via Hashtag SearchAny public account's Reels, by username
Account requirementBusiness/Creator account linked to a Facebook PageNone
Approval processMeta app review and business verificationNo approval — enter a username and run
Setup timeApp review and configuration before any data flowsMinutes
Third-party account dataNot accessible for arbitrary public accountsAccessible for any public account
Auto transcript / video downloadNot providedBoth 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.

  1. Open the Actor's page on Apify and go to the Input tab.
  2. Add one or more Instagram usernames, @handles, or profile URLs to the required username field.
  3. Set resultsLimit and, optionally, onlyPostsNewerThan or skipPinnedPosts to narrow the run.
  4. Click Start. Reels stream into the dataset as each one is scraped.
  5. 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, and musicInfo to see which formats and audio a rival brand is riding.
  • A creator-partnerships lead doing discovery uses likesCount, commentsCount, and videoViewCount across a creator's recent Reels to gauge real engagement before an outreach.
  • A social media manager doing trend tracking uses musicInfo and timestamp across many accounts to spot which audio tracks are recurring across a niche.
  • A growth analyst building reporting dashboards uses likesCount, commentsCount, videoViewCount, and videoPlayCount to chart a brand's own Reels performance over time.
  • An AI engineer building a content-research agent feeds caption and transcript into 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

ParameterRequiredTypeDescriptionExample Value
usernameYesarray of stringsAdd one or multiple Instagram usernames, @handles, or profile URLs to start scraping reels. Each is scraped independently.["natgeo", "cristiano"]
resultsLimitNointegerMaximum number of reels/posts to collect per username. Default 10, minimum 1, maximum 10000.25
onlyPostsNewerThanNostring (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"
skipPinnedPostsNobooleanTurn on to ignore pinned posts and focus on regular timeline content. Default false.false
includeSharesCountNobooleanInclude share count for each post when Instagram makes it available. Default false.true
includeTranscriptNobooleanExtract and include the caption/speech-to-text transcript in your output data. Default false.true
includeDownloadedVideoNobooleanDownload reel videos to the run's Key-Value Store and include a downloadable link in the output. Default false.false
proxyConfigurationNoobjectThe 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 ApifyClient
client = 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.

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.

Scraper NameWhat it extracts
Instagram Profile ScraperBio, follower counts, verification, and latest posts
Instagram Hashtag ScraperPosts and Reels tagged under a hashtag
Instagram Mentions ScraperInbound posts tagging or mentioning an account
Instagram Highlights ScraperStory highlight reels saved to a profile
Instagram Tagged Posts ScraperTagged posts with date and engagement analytics
Instagram Related Person ScraperProfiles 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.