Instagram Reels Scraper — Video, Audio & Thumbnail Assets
Pricing
$14.99/month + usage
Instagram Reels Scraper — Video, Audio & Thumbnail Assets
Scrapes Reels from Instagram by profile, hashtag, or explore feed, capturing video URLs, captions, hashtags, audio details, thumbnails, views, likes, comments, and timestamps. Ideal for trend research, influencer analysis, and large-scale Reels data extraction
Pricing
$14.99/month + usage
Rating
0.0
(0)
Developer
Scrapio
Maintained by CommunityActor stats
0
Bookmarked
32
Total users
5
Monthly active users
3 hours
Issues response
3 days ago
Last modified
Categories
Share
Instagram Reels Scraper — Extract Video, Audio and Thumbnail Assets
Instagram Reels Scraper — Video, Audio & Thumbnail Assets scrapes public Instagram Reels by creator handle and returns typed JSON for every reel plus every media-quality asset Instagram's own payload already carries: every bitrate/resolution in video_versions, an isolated audio-only track, and the scrubber thumbnail sprite grid used for the seek bar. Unlike scraping frameworks that return raw HTML, it returns typed JSON — ready for your model, your database, or your pipeline without any parsing. No Instagram login is required. This guide covers every input and output field, plus how content, research, and archival teams deploy it in production.
🧭 What Does Instagram Reels Scraper — Video, Audio & Thumbnail Assets Do?
Instagram Reels Scraper — Video, Audio & Thumbnail Assets takes one or more Instagram creator handles, walks each creator's Reels timeline through Instagram's own logged-out clips/user endpoint, and returns one structured row per reel — caption, engagement, comments, music credit, and carousel children — plus three asset layers already sitting in the same payload: every video quality Instagram generated, the isolated original-audio track, and the scrubber/thumbnail sprite grid. No Instagram account, login, or session cookie is required; every field and every download resolves from the same public, logged-out payload the base scraper already fetches.
Key capabilities:
- Bulk scraping by username,
@handle, or full profile URL, with a per-creator result cap - Every bitrate/resolution Instagram already generated for the reel, ranked highest → lowest (
videoVersions) - Selective multi-quality video download to the Key-Value Store — highest only, lowest only, or all qualities (
videoQualityMode) - Isolated audio-only track download, independent of the video toggle (
downloadAudioTrack) - Scrubber/thumbnail sprite-grid metadata and download (
captureThumbnailGrid) - Optional caption/spoken-audio transcript extraction (
generateCaptionTranscript) - Date filtering, pinned-post skipping, and share-count enrichment
⚡ Features & Capabilities
The Actor combines a standard Reels-scraping engine with an asset-harvesting layer built on fields Instagram's API already returns for free — no extra requests for the metadata, only for the actual file downloads.
Core features
- One row per reel with
shortCode,caption,hashtags,mentions,likesCount,commentsCount,videoViewCount,videoPlayCount,timestamp, andscrapedAt - Every video quality exposed, not just one —
videoVersionsis a ranked array of every resolution/bitrate Instagram generated, each withrank,isHighest,isLowest,width,height,bandwidth, andurl - Quality-selectable download —
videoQualityMode(highest/lowest/all) controls which tier(s) get saved to the Key-Value Store underdownloadedVideoVersions, each entry carrying its ownkvKeyandkvUrl - Isolated audio-only track —
audioUrlis the raw resolved stream URL;downloadedAudioUrlis the Key-Value Store link oncedownloadAudioTrackis on - Scrubber/thumbnail sprite grid —
scrubberSpritesheetexposes the full grid metadata (sprite dimensions, thumbnails-per-row, per-thumbnail duration) anddownloadedThumbnailGridUrlholds the saved file - Comment and music context —
latestComments(up to 12 per reel),firstComment, andmusicInfo(artist, song name, original-audio flag) - Carousel support —
childPostsfor sidecar/carousel items nested inside a reel-adjacent post - Backward-compatible input — every base field name (
username,resultsLimit,includeDownloadedVideo, etc.) still works as a fallback alongside the re-expressed names (creatorHandles,maxReelsPerCreator,downloadVideoAssets)
How does Instagram Reels Scraper — Video, Audio & Thumbnail Assets work inside AI coding agents?
The Actor is callable through Apify's own MCP Server, which exposes any Apify Actor as a tool an MCP-compatible agent can invoke mid-task:
npx -y @apify/actors-mcp-server --actors Scrapio/instagram-reels-scraper-video-audio-thumbnail-assets
Once registered, an agent running in Claude Desktop, Claude Code, or Cursor can call the Actor directly — passing creator handles and getting back typed reel rows with asset links — without leaving the IDE or writing a scraping script by hand.
Instagram Reels Scraper — Video, Audio & Thumbnail Assets within the Scrapio data stack
This Actor covers Reels: video/audio quality assets, thumbnail grids, captions, and comments. For a single reel looked up by URL or shortcode with a focus on creator/collaborator identity, use instagram-single-reels-scraper-with-creator-insights. For deeper comment threads beyond the 12-comment preview included here, use instagram-comments-scraper-with-engagement-analytics. For discovery by hashtag instead of known creator handles, use instagram-hashtag-engagement-scraper. For profile-level bio and contact fields to build your creator handle list, use instagram-profile-scraper-with-bio-link-email-extraction.
Why do developers and data teams scrape Instagram?
🏢 Content archiving, repurposing and creator-marketing teams
Marketing and social teams use creatorHandles to pull a client's or partner's Reels catalog on a schedule, download every video quality via downloadedVideoVersions for repurposing across other channels, and pull the isolated downloadedAudioUrl track for trend/sound sampling without re-encoding a full video file. The scrubber grid (scrubberSpritesheet, downloadedThumbnailGridUrl) feeds preview UIs that need the same seek-bar thumbnails Instagram itself generates. Output lands in the run's dataset (per-reel rows) and Key-Value Store (the actual media files), ready to sync into a DAM or content-repurposing pipeline.
📊 AI training data and RAG indexing
caption, transcript, and hashtags are the highest-information text fields for retrieval-augmented generation — a caption/transcript pair gives an LLM the actual spoken and written context of a reel, not just its metrics. For training data, the consistently structured numeric fields (likesCount, commentsCount, videoViewCount, videoPlayCount, videoDuration) and the nested musicInfo object give a stable schema across every record. Two concrete uses: (1) RAG enrichment — index caption + transcript per shortCode so an agent can answer "what did this creator say in their last five reels"; (2) training data — pair caption/hashtags with videoViewCount to model what content performs, without needing a computer-vision pass over the video file itself.
📱 Competitive and market intelligence
Track a competitor's or industry peer's creatorHandles on a recurring schedule and diff likesCount, commentsCount, and videoViewCount per shortCode between runs to see which specific reels are gaining traction after publish, and whether sharesCount (when Instagram exposes it) correlates with musicInfo.song_name choices across a content calendar.
🔬 Research and academic use
Academic and social-research projects use bulk creatorHandles input to build reel-level datasets for studying short-video content, caption/hashtag language patterns, or engagement dynamics — scoped strictly to what each creator has made public, with no login or private-account access involved.
🎥 Product and SaaS development
Teams building creator-analytics dashboards, content-moderation tooling, or media-monitoring products use this Actor as the ingestion layer — one Actor call per creator batch returns the full reel + asset schema, which a product then normalizes into its own database rather than maintaining its own Instagram scraping and asset-resolution code.
🍚 Input Parameters
No parameter is required — running with no input scrapes the prefilled example creator (natgeo). Every parameter below is read directly from .actor/input_schema.json.
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
creatorHandles | No | array | Instagram usernames, @handles, or profile URLs whose Reels to scrape. Also accepts the base field name username. | ["natgeo", "@nasa", "https://instagram.com/nike"] |
maxReelsPerCreator | No | integer | Maximum reels to collect per creator (min 1, max 10000). Also accepts resultsLimit. | 25 |
postsSince | No | string | Absolute date (YYYY-MM-DD) or relative duration (7 days, 2 weeks, 1 month, 1 year). Empty fetches all. Also accepts onlyPostsNewerThan. | "30 days" |
skipPinned | No | boolean | Ignore pinned posts and focus on regular timeline content. Also accepts skipPinnedPosts. | false |
showShareCount | No | boolean | Include share count for each reel when Instagram exposes it. Also accepts includeSharesCount. | true |
generateCaptionTranscript | No | boolean | Extract and include the caption/spoken-audio transcript text. Also accepts includeTranscript. | true |
downloadVideoAssets | No | boolean | Download the reel's video file(s) to the Key-Value Store, per the quality mode below. Also accepts includeDownloadedVideo. | true |
videoQualityMode | No | string (enum) | Which video quality tier(s) to save when video download is on: highest, lowest, or all. Default "highest". | "all" |
downloadAudioTrack | No | boolean | Save the isolated original-audio-only stream to the Key-Value Store. Default false. | true |
captureThumbnailGrid | No | boolean | Save the scrubber/thumbnail sprite-grid image to the Key-Value Store. Default false. | true |
proxyConfiguration | No | object | Proxy settings. The Actor always uses Apify's residential proxy (3 attempts) as a safety net; custom proxyUrls are tried first if supplied. | {"useApifyProxy": true} |
{"creatorHandles": ["natgeo"],"maxReelsPerCreator": 10,"postsSince": "30 days","generateCaptionTranscript": true,"downloadVideoAssets": true,"videoQualityMode": "all","downloadAudioTrack": true,"captureThumbnailGrid": true}
Supported URL types and input formats
creatorHandles accepts three interchangeable forms, all normalized internally to a bare username:
- Bare username —
natgeo @handle—@nasa- Full profile URL —
https://instagram.com/nikeorhttps://www.instagram.com/nike/
postsSince accepts either an absolute YYYY-MM-DD date or a relative duration matching <number> day(s)|week(s)|month(s)|year(s) (e.g. 7 days, 2 weeks, 1 month). An unparseable value is logged as a warning and treated as "fetch all."
📦 Output Format
The dataset returns one JSON object per reel, pushed to the Apify dataset as each page of results is captured (not batched to the end of the run). Field names are typed and normalized — no HTML, no manual parsing.
Output for Reels
{"id": "3412987654321098765","type": "Video","shortCode": "DO8cvGViIPu","caption": "A rare glimpse into the migration route no camera has captured before. #wildlife #conservation","hashtags": ["wildlife", "conservation"],"mentions": [],"url": "https://www.instagram.com/p/DO8cvGViIPu/","commentsCount": 1238,"dimensionsHeight": 1920,"dimensionsWidth": 1080,"images": ["https://scontent.cdninstagram.com/.../cover.jpg"],"videoUrl": "https://scontent.cdninstagram.com/.../video_101.mp4","likesCount": 125826,"timestamp": "2026-06-20T14:32:05.000Z","ownerFullName": "National Geographic","ownerUsername": "natgeo","ownerId": "787132","isPinned": false,"productType": "clips","videoDuration": 47.5,"inputUrl": "https://www.instagram.com/natgeo","firstComment": "Absolutely stunning footage!","latestComments": [{"id": "17983456712345","text": "Absolutely stunning footage!","ownerUsername": "wildlife_fan22","ownerProfilePicUrl": "https://scontent.cdninstagram.com/.../pfp.jpg","timestamp": "2026-06-20T15:01:12.000Z","repliesCount": 2,"replies": [],"likesCount": 340,"owner": {"id": "998877","is_verified": false,"profile_pic_url": "https://scontent.cdninstagram.com/.../pfp.jpg","username": "wildlife_fan22"}}],"displayUrl": "https://scontent.cdninstagram.com/.../cover.jpg","audioUrl": "https://video.xx.fbcdn.net/.../audio.mp4","alt": "Photo by National Geographic on June 20, 2026.","videoViewCount": 900000,"videoPlayCount": 875342,"childPosts": [],"musicInfo": {"artist_name": "natgeo","song_name": "Original audio","uses_original_audio": true,"should_mute_audio": false,"should_mute_audio_reason": "","audio_id": "1029384756"},"isCommentsDisabled": false,"transcript": "In the highlands, a migration route no camera has ever followed...","downloadedVideo": "https://api.apify.com/v2/key-value-stores/abc123/records/video-DO8cvGViIPu","videoVersions": [{ "rank": 1, "isHighest": true, "isLowest": false, "type": 102, "width": 720, "height": 1280, "bandwidth": 3245123, "url": "https://.../hd.mp4" },{ "rank": 2, "isHighest": false, "isLowest": false, "type": 101, "width": 480, "height": 853, "bandwidth": 1543210, "url": "https://.../mid.mp4" },{ "rank": 3, "isHighest": false, "isLowest": true, "type": 103, "width": 480, "height": 853, "bandwidth": 987654, "url": "https://.../low.mp4" }],"numberOfQualities": 3,"scrubberSpritesheet": {"fileSizeKb": 214,"spriteWidth": 1500,"spriteHeight": 1232,"renderedWidth": 100,"thumbnailWidth": 100,"thumbnailHeight": 176,"thumbnailsPerRow": 15,"totalThumbnails": 105,"thumbnailDurationSec": 0.45,"videoLengthSec": 47.5,"spriteUrls": ["https://scontent.cdninstagram.com/.../sprite.jpg"]},"downloadedVideoVersions": [{ "rank": 1, "width": 720, "height": 1280, "isHighest": true, "isLowest": false, "kvKey": "video-DO8cvGViIPu-q1-720x1280", "kvUrl": "https://api.apify.com/v2/key-value-stores/abc123/records/video-DO8cvGViIPu-q1-720x1280" }],"downloadedAudioUrl": "https://api.apify.com/v2/key-value-stores/abc123/records/audio-DO8cvGViIPu","downloadedThumbnailGridUrl": "https://api.apify.com/v2/key-value-stores/abc123/records/thumbgrid-DO8cvGViIPu","scrapedAt": "2026-07-25T09:14:22.000Z","sharesCount": 412}
sharesCount only appears when showShareCount is on, and it is returned as null (never a fabricated 0) on reels where Instagram doesn't expose a share count at all. numberOfQualities is a raw passthrough of Instagram's own number_of_qualities field and can be null even when videoVersions itself is populated. downloadedVideo is the base scraper's single default-quality download; downloadedVideoVersions is the new quality-selectable array — both populate together whenever downloadVideoAssets is on.
Output for Video, Audio & Thumbnail Assets
The three asset fields above have their own internal shapes, reusable independently of the full reel row:
{"videoVersions_item": {"rank": 1,"isHighest": true,"isLowest": false,"type": 102,"width": 720,"height": 1280,"bandwidth": 3245123,"url": "https://scontent.cdninstagram.com/.../hd.mp4"},"downloadedVideoVersions_item": {"rank": 1,"width": 720,"height": 1280,"isHighest": true,"isLowest": false,"kvKey": "video-DO8cvGViIPu-q1-720x1280","kvUrl": "https://api.apify.com/v2/key-value-stores/abc123/records/video-DO8cvGViIPu-q1-720x1280"},"scrubberSpritesheet": {"fileSizeKb": 214,"spriteWidth": 1500,"spriteHeight": 1232,"thumbnailsPerRow": 15,"totalThumbnails": 105,"thumbnailDurationSec": 0.45,"spriteUrls": ["https://scontent.cdninstagram.com/.../sprite.jpg"]}}
videoVersions ranks every bitrate/resolution Instagram generated by resolution (width × height) descending, with bandwidth as a tiebreak. downloadedVideoVersions is only populated for the tier(s) selected by videoQualityMode once downloadVideoAssets is on. downloadedAudioUrl and downloadedThumbnailGridUrl are plain Key-Value Store URL strings (not objects), populated only once downloadAudioTrack / captureThumbnailGrid are on and Instagram exposed the underlying asset for that reel.
Schema stability and export options
Every base-scraper field keeps its original name and value; the asset fields (videoVersions, numberOfQualities, scrubberSpritesheet, downloadedVideoVersions, downloadedAudioUrl, downloadedThumbnailGridUrl, scrapedAt) are purely additive on top, so existing integrations built against the base field set keep working unchanged. The dataset exports as JSON, CSV, or Excel (XLSX) directly from the Apify platform; downloaded media files live in the run's Key-Value Store and are fetched via the kvUrl/downloaded*Url links or the Apify API.
💡 Instagram Reels Scraper — Video, Audio & Thumbnail Assets Strategy Guide
🎯 Strategy 1: Real-time enrichment pipeline
Trigger a run whenever a creator is added to a watchlist: pass their handle in creatorHandles, run the Actor, then append videoViewCount, likesCount, numberOfQualities, and downloadedVideoVersions[].kvUrl to that creator's record in your CRM or content-ops database. Because results push to the dataset page-by-page rather than only at the end of the run, a downstream consumer polling the dataset sees new reels appear before the full creator batch finishes.
🎯 Strategy 2: Scheduled monitoring and alerting
Use an Apify Schedule to rerun the same creatorHandles list on a recurring cadence with postsSince set to a rolling window (e.g. "7 days"), then diff the new run's likesCount, commentsCount, and videoViewCount per shortCode against the previous run's values. Alert when the delta on videoViewCount or sharesCount crosses a threshold you define — the Actor itself has no built-in alerting, so the diff and threshold logic live in your own pipeline.
🎯 Strategy 3: Bulk dataset build
For a research or training dataset, pass a large creatorHandles list with maxReelsPerCreator set high (up to the schema's 10000 cap) and export the finished dataset as CSV or JSON. Internally, the Actor fans out comment, transcript, and media-asset fetches with limited concurrency (comment and transcript fetches run up to 8 at a time; video/audio/thumbnail downloads up to 4 at a time) to balance throughput against block risk — these are fixed properties of the Actor's own code, not user-configurable rate limits.
Strategy comparison at a glance
| Strategy | Best for | Run pattern | Output format |
|---|---|---|---|
| Real-time enrichment | Appending fresh reel/asset data to an existing record | One run per creator/event, triggered on demand | Dataset rows polled or pushed downstream |
| Scheduled monitoring | Tracking engagement or new-reel changes over time | Apify Schedule (cron), rolling postsSince window | Dataset diffed run-over-run |
| Bulk dataset build | Research or training-data corpora | One large run across many creator handles | Full dataset export (CSV/JSON) |
🌴 Related Instagram Scrapers & Tools
| Scraper Name | What it extracts |
|---|---|
| Instagram Single Reels Scraper With Creator Insights | Single reel lookup by URL/shortcode, focused on creator identity and collaborator signals |
| Instagram Comments Scraper With Engagement Analytics | Full comment threads beyond this Actor's 12-comment preview |
| Instagram Hashtag & Engagement Scraper | Reel/post discovery by hashtag instead of known creator handles |
| Instagram Profile Scraper With Bio Link & Email Extraction | Profile bio and contact fields to build a creator handle list |
| Facebook Reels & Engagement Analytics Scraper | Cross-platform Reels equivalent, with derived engagement metrics, on Facebook |
| Facebook Posts Scraper & Video Transcript | Cross-platform video-post and transcript equivalent on Facebook |
| Facebook Photos & Album Extraction Scraper | Photo/album asset harvesting, adjacent to this Actor's video/audio/thumbnail asset focus |
How to integrate Instagram Reels Scraper — Video, Audio & Thumbnail Assets with your stack
Instagram Reels Scraper — Video, Audio & Thumbnail Assets works with any language or tool that can make an HTTP request to the Apify API.
Python
import csvfrom apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")creator_handles = ["natgeo", "nasa", "nike"]rows = []for handle in creator_handles:run = client.actor("Scrapio/instagram-reels-scraper-video-audio-thumbnail-assets").call(run_input={"creatorHandles": [handle],"maxReelsPerCreator": 15,"generateCaptionTranscript": True,"downloadAudioTrack": True,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():rows.append({"shortCode": item.get("shortCode"),"ownerUsername": item.get("ownerUsername"),"likesCount": item.get("likesCount"),"videoViewCount": item.get("videoViewCount"),"numberOfQualities": item.get("numberOfQualities"),"downloadedAudioUrl": item.get("downloadedAudioUrl"),})with open("reels_export.csv", "w", newline="", encoding="utf-8") as f:writer = csv.DictWriter(f, fieldnames=rows[0].keys())writer.writeheader()writer.writerows(rows)print(f"Exported {len(rows)} reels to reels_export.csv")
Node.js
import { ApifyClient } from 'apify-client';import { writeFileSync } from 'fs';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('Scrapio/instagram-reels-scraper-video-audio-thumbnail-assets').call({creatorHandles: ['natgeo', 'nasa'],maxReelsPerCreator: 15,downloadVideoAssets: true,videoQualityMode: 'all',captureThumbnailGrid: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();const rows = items.map((r) => ({shortCode: r.shortCode,ownerUsername: r.ownerUsername,videoViewCount: r.videoViewCount,downloadedVideoVersions: r.downloadedVideoVersions,downloadedThumbnailGridUrl: r.downloadedThumbnailGridUrl,}));writeFileSync('reels.json', JSON.stringify(rows, null, 2));console.log(`Saved ${rows.length} reels to reels.json`);
MCP for AI agents
Register the Actor with Apify's MCP Server (npx -y @apify/actors-mcp-server --actors Scrapio/instagram-reels-scraper-video-audio-thumbnail-assets) and an MCP-compatible client — Claude Desktop, Claude Code, or Cursor — can call it as a tool: "pull the last 10 reels from natgeo with the audio track and thumbnail grid" resolves to a direct Actor call, with typed JSON returned straight into the agent's context.
Async and scheduled pipelines
For large creator batches, start the run asynchronously via the Apify API and poll the run's status or the dataset item count until it finishes, rather than blocking on a synchronous call — reels appear in the dataset page-by-page as the run progresses. For recurring jobs, use an Apify Schedule (cron-based) to rerun the Actor automatically; Apify's platform-level webhooks can notify your system when a run succeeds or fails instead of polling.
🎯 Who Needs Instagram Reels Scraper — Video, Audio & Thumbnail Assets? (Use Cases & Industries)
🏢 Content archiving, repurposing and creator-marketing teams
A marketing team managing a brand's own or a partner's Reels catalog runs the Actor against creatorHandles, downloads every quality tier via downloadedVideoVersions, and repurposes the highest-resolution file for other channels while archiving the lowest as a lightweight backup copy.
📊 AI training and RAG teams
Teams building retrieval or fine-tuning datasets index caption and transcript per shortCode, giving an LLM the actual spoken and written content of a reel rather than metrics alone, paired with the stable numeric fields for supervised signal.
📱 Competitive intelligence analysts
Analysts track a competitor's creatorHandles on a schedule and diff likesCount, commentsCount, and videoViewCount per shortCode run-over-run to flag which specific reels are outperforming the account's baseline.
🔬 Researchers
Academic and social-research projects use bulk creatorHandles input to assemble reel-level datasets for studying short-video engagement or caption/hashtag language, scoped to what each creator has made public.
🎥 Product and SaaS builders
Teams building creator-analytics dashboards or media-monitoring products use this Actor as their Instagram ingestion layer, normalizing the returned reel + asset schema into their own database instead of maintaining custom scraping and asset-resolution code.
Is it legal to scrape Instagram?
Scraping publicly accessible data is generally lawful in the United States — in hiQ Labs, Inc. v. LinkedIn Corp. (9th Cir. 2019, reaffirmed on remand in 2022), the court held that scraping data a platform makes publicly viewable does not violate the Computer Fraud and Abuse Act. That ruling addressed LinkedIn specifically, but its reasoning is widely applied to public data on other social platforms, including Instagram. Separately, scraping in violation of Instagram's Terms of Service can expose a user to civil claims (such as breach of contract) from Meta — this is a private civil risk, not a criminal one, and is distinct from the CFAA question. Because this Actor returns personal data about real people — creator usernames and full names, and commenter usernames and profile pictures — data protection law (such as GDPR or CCPA) can apply depending on your jurisdiction and use case; the lawful basis for storing and using that data is yours to establish. Instagram Reels Scraper — Video, Audio & Thumbnail Assets returns only publicly accessible data. What you do with that data is your responsibility — consult legal counsel for commercial applications involving personal data.
❓ Frequently asked questions
Does Instagram Reels Scraper — Video, Audio & Thumbnail Assets work without an Instagram account?
Yes. No Instagram login, session cookie, or app-review process is required — every field and every downloadable asset resolves from the same public, logged-out clips/user payload the Actor fetches for each creator.
How does it handle Instagram's anti-scraping measures?
Every request runs through Apify's residential proxy with up to three attempts by default. If you supply your own custom proxy URLs, the Actor tries those first (one attempt) and falls back to residential automatically on failure or a block response (HTTP 429/401/403, or 5xx), retrying with backoff before giving up on that request.
Can I run it at scale without getting blocked?
The Actor processes creator handles sequentially, with internal concurrency limits on comment, transcript, and media-asset enrichment (independent of the main scraping loop) to spread out request volume. No uptime or success-rate figure is published for this Actor — behavior depends on Instagram's own response to the traffic pattern at the time of the run.
How fresh is the data it returns?
Live — every run fetches directly from Instagram at request time and stamps each row with scrapedAt; nothing is served from a cache.
Which fields work best for AI training and RAG indexing?
For RAG, index caption and transcript per shortCode — these carry the actual spoken and written content of the reel. For training data, the consistently structured fields (likesCount, commentsCount, videoViewCount, videoPlayCount, videoDuration, musicInfo) hold the same shape across every record. All fields return as typed primitives, arrays, or objects — no string-parsing needed before use.
Does this Actor collect personal data, and who's responsible for its use?
Yes — creator usernames/full names and commenter usernames/profile pictures are personal data, but all of it is data the account owner or commenter made publicly visible on Instagram. The Actor does not authenticate or access anything private. Lawful basis for storing, processing, or redistributing that data — under GDPR, CCPA, or any other applicable regime — is the user's responsibility to establish.
Does it work with Claude, ChatGPT, and other AI agent tools?
Yes. It's registrable through Apify's MCP Server (npx -y @apify/actors-mcp-server --actors Scrapio/instagram-reels-scraper-video-audio-thumbnail-assets) for MCP-compatible clients like Claude Desktop or Claude Code, and callable as a standard HTTP/API Actor by any agent framework that can invoke the Apify API — every response is typed JSON, requiring no HTML parsing before it enters an LLM's context window.
What determines "highest" vs "lowest" video quality?
Resolution (width × height) descending, with Instagram's own reported bandwidth as a tiebreak, and the original array order as a final tiebreak — since Instagram tends to list its intended default/best version first.
Can I download only the audio track, without any video?
Yes — downloadAudioTrack is independent of downloadVideoAssets. Turning it on alone downloads just the isolated original-audio stream to the Key-Value Store.
What happens on reels Instagram doesn't have a transcript for?
The transcript request returns a 404 in that case (logged at debug level, not as an error), and the reel's transcript field stays an empty string rather than failing the whole run.
ℹ️ Disclaimer
Instagram Reels Scraper — Video, Audio & Thumbnail Assets extracts only publicly available data from Instagram. This tool is intended for lawful use cases only. Users are responsible for complying with Instagram's terms of service and applicable data protection laws in their jurisdiction.