Instagram Reel Scraper avatar

Instagram Reel Scraper

Under maintenance

Pricing

from $2.60 / 1,000 reels

Go to Apify Store
Instagram Reel Scraper

Instagram Reel Scraper

Under maintenance

Instagram Reels Scraper extracts structured data from Instagram profiles and reel/post URLs, including captions, engagement metrics, video/media URLs, owner details, comments, hashtags, mentions, and timestamps for social media analytics, campaign tracking, and monitoring workflows.

Pricing

from $2.60 / 1,000 reels

Rating

5.0

(3)

Developer

Sovanza

Sovanza

Maintained by Community

Actor stats

0

Bookmarked

9

Total users

1

Monthly active users

7 days ago

Last modified

Share

Instagram Reels Scraper – Extract Videos, Comments, Music, Tags, Profiles & Engagement Data

Extract complete Instagram Reels data including video details, engagement metrics, comments (latest), music information, tagged users, and creator profile fields (when available). This actor is designed for marketers, analysts, and agencies who need deep, structured insights for trend analysis, competitor tracking, and influencer research.

Overview

This Instagram Reels Scraper extracts structured Reel-level data from Instagram using profile inputs (usernames / profile URLs / numeric profile IDs) or direct reel URLs (/reel/... or /p/...). It goes beyond basic scraping by combining page data, network payloads, and GraphQL enrichment when possible.

Output is compact: empty or missing fields are omitted so each row contains only what Instagram exposed for that reel.

Key benefits

  • Analyze Reel performance with views, likes, comments, shares (when available)
  • Build influencer/competitor datasets with creator identity + profile picture URL (best-effort)
  • Understand context via caption, hashtags, mentions, music, tags, location (when present)
  • Use latest comments for sentiment and engagement snapshots (optional)
  • Export clean datasets in JSON, CSV, or Excel via Apify

Core features

  • Scrape Reels from profiles or direct Reel URLs
  • Extract engagement metrics: viewsCount, likesCount, commentsCount, sharesCount, videoPlayCount (availability varies)
  • Capture caption, parsed hashtags and mentions
  • Extract music/audio info (musicInfo) when available
  • Extract tagged users (taggedUsers) and coauthors (coauthorProducers) when present
  • Extract video dimensions (dimensionsWidth, dimensionsHeight) and duration (videoDuration) when available
  • Optional latest comments (includeComments) and optional transcript (includeTranscript)
  • Optional delegation to the official Apify actor (useOfficialApifyActor) with fallback to built-in Playwright flow
  • Proxy + cookies support for reliability (Instagram is anti-bot heavy)

How to Use Instagram Reels Scraper on Apify

Using the Actor

  1. Open the Actor on the Apify platform and go to the Input tab.
  2. Configure input (see below): add usernames (profiles and/or reel URLs), set resultsLimit for profiles, and enable proxy + cookies if Instagram blocks you.
  3. Start the run. The Actor visits reels, merges page/network/GraphQL data where possible, and pushes compact items to the default dataset.
  4. Open the Dataset tab to browse, download JSON/CSV/Excel, or pull data via the Apify API.
  5. Schedule or integrate (optional): use schedules, webhooks, Zapier/Make, or your own code against the Apify API.

Input Configuration

Full schema: INPUT_SCHEMA.json. Example:

{
"usernames": [
"https://www.instagram.com/nasa/",
"https://www.instagram.com/reel/SHORTCODE/"
],
"resultsLimit": 25,
"downloadVideo": false,
"includeComments": true,
"includeTranscript": false,
"skipPreflightAuthCheck": false,
"useOfficialApifyActor": false,
"cookiesJson": "",
"cookiesFile": "",
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US"
}
}
  • usernames (required): Array of Instagram usernames, profile URLs, numeric profile IDs, or direct reel/post URLs.
  • resultsLimit (optional): Max reels to collect per profile (default 25, max 500). Ignored when every entry is already a reel/post URL.
  • downloadVideo (optional): If true, sets downloadedVideoUrl to the resolved video URL when available (same URL as videoUrl is still stored only once after compaction).
  • includeComments (optional): Include latest comments per reel (default true). When false, comment data is not added to items.
  • includeTranscript (optional): Attempt to capture on-page transcript when present (default false).
  • skipPreflightAuthCheck (optional): Skip the quick session check before scraping (default false).
  • useOfficialApifyActor (optional): If true, call apify/instagram-reel-scraper through the Apify API when APIFY_TOKEN is available; if the call fails, returns no items, or the token is missing, the Actor falls back to the built-in Playwright flow.
  • cookiesJson (optional): String — JSON array of Playwright cookies, or { "cookies": [ ... ] }. Helps with logged-in sessions.
  • cookiesFile (optional): Path to a cookies file inside the Actor, or a key-value store key whose value is that JSON.
  • proxyConfiguration (optional): Apify proxy; residential is recommended for Instagram.

Environment variables (optional)

VariablePurpose
APIFY_TOKENRequired for useOfficialApifyActor delegation to the official Instagram Reel Scraper.
USE_OFFICIAL_INSTAGRAM_ACTORSet to 1 / true / yes / on to enable official-Actor mode if the input flag is not set.
IG_POST_LOAD_SLEEPSeconds to wait after load for media/CDN capture (default ~1.7, clamped). Lower = faster, higher = slightly safer.
IG_EXTRACT_DOM_WAITExtra DOM wait before extraction (default ~1.2, clamped).
MIN_RAW_DATA_SCOREMinimum richness score before accepting embedded JSON as a valid reel (default 4).
PLAYWRIGHT_HEADLESSSet to 0 / false / no / off for headed Chromium (debugging locally).

Run locally

INPUT.json is gitignored. Copy INPUT.example.json to INPUT.json, add cookies if needed, set APIFY_TOKEN (or proxy password) for Apify proxy from your machine, then:

cd instagram-reels-scraper
pip install -r requirements.txt
playwright install chromium
cp INPUT.example.json INPUT.json
python main.py

Output

Results are stored in the Actor’s default dataset. Each item is a compact JSON object: fields that are empty or unknown are not included.

Typical fields (when data is available):

  • Identity & links: id, shortCode, reelUrl, inputUrl, videoUrl, downloadedVideoUrl (only if different from videoUrl after logic above).
  • Creator & profile: ownerUsername, ownerFullName, ownerId, ownerProfilePicUrl.
  • Video-level data: caption, hashtags, mentions, type, productType, videoDuration, dimensionsHeight, dimensionsWidth, displayUrl, images, alt.
  • Engagement: likesCount, commentsCount, sharesCount, viewsCount, videoPlayCount.
  • Music/audio: musicInfo (when available).
  • Tags & collaborators: taggedUsers, coauthorProducers.
  • Location: location (when present) and isCommentsDisabled.
  • Ads: isAd (best-effort).
  • Comments: latestComments (when enabled and non-empty).
  • Transcript: transcript (when enabled and found).
  • Meta: timestamp.
  • Errors: error (and sometimes inputUrl / reelUrl) on failure rows; summary rows may use inputUrl: "__summary__".

Example item (illustrative — real items only include keys that have values):

{
"id": "1234567890_987654321",
"shortCode": "AbCdEfGhIjK",
"ownerUsername": "examplecreator",
"ownerFullName": "Example Creator",
"caption": "Reel caption text",
"reelUrl": "https://www.instagram.com/reel/AbCdEfGhIjK/",
"videoUrl": "https://scontent.cdninstagram.com/.../video.mp4",
"displayUrl": "https://scontent.cdninstagram.com/.../image.jpg",
"images": ["https://scontent.cdninstagram.com/.../image.jpg"],
"likesCount": 1200,
"commentsCount": 45,
"viewsCount": 50000,
"videoPlayCount": 50000,
"videoDuration": 12.4,
"dimensionsWidth": 1080,
"dimensionsHeight": 1920,
"timestamp": "2025-01-01T12:00:00.000Z",
"type": "Video",
"productType": "clips",
"inputUrl": "https://www.instagram.com/reel/AbCdEfGhIjK/"
}

➡️ Output is structured for pipelines, warehouses, or spreadsheet export via Apify.

Use Cases

  • Influencer marketing: identify high-performing creators using engagement signals + creator metadata.
  • Trend analysis: track what captions, hashtags, and audio/musics appear alongside high engagement.
  • Competitor intelligence: monitor competitor profiles and compare posting frequency + performance.
  • Audience research: use latest comments (optional) for sentiment snapshots and interaction analysis.

Integrations & API

  • Run and fetch results through the Apify API
  • Use Python, Node.js, or HTTP clients against run and dataset endpoints
  • Connect Zapier, Make, Google Sheets, and other Apify integrations
  • Webhooks and schedules for recurring runs

Why Choose This Actor?

  • Output shape compatible with the official Instagram Reel Scraper expectations
  • Playwright + network capture + GraphQL enrichment where the page allows
  • Optional handoff to the official Apify Actor when you want their infrastructure to do the heavy lifting
  • Compact JSON — no noise from empty fields
  • Built for Apify datasets, exports, and API access

FAQ

How does Instagram Reels Scraper work?

It opens Instagram in a headless browser (unless you disable headless locally), captures JSON from network responses and embedded data, enriches with an in-page GraphQL shortcode request when possible, and merges DOM fallbacks (e.g. OG tags, video element metadata, view counts from aria-label when available).

Can I scrape multiple profiles or reels in one run?

Yes. Put multiple entries in usernames. Profiles are expanded into many reel URLs up to resultsLimit each; direct reel URLs are scraped as-is.

Do I need an Instagram API?

No. This Actor uses the public web app (and optionally the official Apify Instagram Reel Scraper API product). You must comply with Instagram’s terms and applicable laws.

Why am I seeing login walls or low data quality?

Instagram rate-limits and challenges automated traffic. Use fresh cookies from a stable session, residential proxy in a region consistent with the account, and moderate resultsLimit. The preflight step stops early with a clear dataset error if the session looks logged out or blocked.

What is useOfficialApifyActor?

When enabled and APIFY_TOKEN is set, the Actor tries to fetch items from apify/instagram-reel-scraper first. If that returns nothing or errors, it continues with the built-in browser scraper.

Can I speed up runs?

Slightly lower IG_POST_LOAD_SLEEP and IG_EXTRACT_DOM_WAIT (see table above). Very aggressive values may increase failures or incomplete video URLs.

Only you can ensure compliance. Use public data responsibly, respect Instagram’s Terms of Service, robots guidance, and local law.

What formats can I download?

JSON, CSV, and Excel from the Apify dataset UI, plus full access via the Apify API.

SEO Keywords

instagram reels scraper
instagram reel scraper apify
instagram scraper
reel data extractor
instagram profile reels
scrape instagram reels
instagram video url scraper
apify instagram
social media scraper
reel metadata api

Actor permissions

This Actor is intended to work with limited permissions: it reads your input and writes to its default dataset (and uses Apify proxy/KV as configured). It does not require broad access to unrelated account data.

To set limited permissions in Apify Console:

  1. Open your Actor on the Apify platform.
  2. Go to Source or Settings.
  3. Open Review permissions / Permissions.
  4. Choose Limited permissions and save.

Limitations

  • Instagram’s HTML and internal APIs change; the scraper may need updates.
  • Some fields (e.g. shares, transcripts, or exact view counts) may be missing depending on reel type, locale, and session.
  • Heavy use may require higher Apify memory, concurrency, and proxy budgets.
  • Logged-out or challenged sessions yield errors or empty runs — cookies + residential proxy are strongly recommended for production.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Get Started

Add your Instagram profiles or reel URLs, turn on a residential proxy, paste cookies if needed, and start your first run on Apify. 🚀