Instagram Reels Scraper — Plays, Likes & Comments by Profile avatar

Instagram Reels Scraper — Plays, Likes & Comments by Profile

Pricing

from $1.00 / 1,000 reels

Go to Apify Store
Instagram Reels Scraper — Plays, Likes & Comments by Profile

Instagram Reels Scraper — Plays, Likes & Comments by Profile

The reels of public Instagram profiles in the order of the Reels tab (pinned first, then newest), each with its plays, likes and comment count and how it did against the profile's usual. Caption, exact time, duration and music on request. Only-new mode for monitoring. No login, no cookies.

Pricing

from $1.00 / 1,000 reels

Rating

0.0

(0)

Developer

Berkan Kaplan

Berkan Kaplan

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

1

Monthly active users

13 days ago

Last modified

Share

Instagram Reels Scraper — Plays, Likes & Comments by Profile 🚀

foXLabs Instagram series: Bulk Profile · Profile Posts · Post Details · Comments

🎉 Give this Actor Instagram profiles and it returns the reels of each profile's Reels tab, one row per reel: plays, likes, comment count, an approximate time, the cover image, and how the reel did against what's usual for that profile. On request it reads each reel by itself: caption, exact time, duration, music, video address, co-authors, topics.

It reads only what a signed-out visitor sees. No login, no cookies, nothing from your own Instagram account. Not affiliated with Instagram or Meta.

🔍 What is the Instagram Reels Scraper — and when should you use it?

Give this Actor profiles and it returns their reels with play/like/comment counts and a performance score — for content strategists, influencer marketing and trend research.

Use it when you need: a profile's reels with plays and engagement; how a reel did vs the profile's median; or reel details (caption, music, duration, co-authors).

Use something else when: you want profile-level metrics → Bulk Profile; photo posts and carousels → Profile Posts; a post's comments → Comments.

🤖 Use with AI agents

Already on the Apify MCP server? Ask for this Actor by name: foxlabs/instagram-reels-scraper. An agent can discover it, run it and read the dataset over MCP; the Actor is built to run in Standby mode for on-demand lookups.

Otherwise paste this into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

I want Instagram reels by profile using the Apify Actor
`foxlabs/instagram-reels-scraper`.
Input: `profiles` is a list of usernames/URLs; `maxReelsPerProfile` caps rows; `includeDetails`
reads each reel (caption, music, duration). Each row has playCount, likeCount, commentCount,
profileMedianPlays and playsVsProfileMedian.
Start with:
{ "profiles": ["natgeo"], "maxReelsPerProfile": 24 }
Ask me which profiles to analyse, run the Actor, then rank the reels by plays.

The machine-readable API, MCP config and OpenAPI definition live at apify.com/foxlabs/instagram-reels-scraper.md.

📋 Overview

Everything you need to turn a profile's Reels tab into clean, structured data — plays, engagement and a performance score — in one Actor, with no login, cookies or account.

Why teams pick this Actor:

  • ✅ Plays from the tab — the real tile play figure, not the embed page's lower "views".
  • 📊 Performance score — playsVsProfileMedian shows how a reel did vs the profile's usual.
  • 🎬 Optional details — caption, exact time, duration, music, co-authors, topics, video address.
  • 🎯 Honest — unknown is null never 0; a hidden like count stays null; limits spelled out.
  • 💰 Pay only for results — reel / reel-detailed events per row; status rows free.
  • 🤖 Agent-ready — MCP + Standby.

✨ Features

  • 🔍 Reels by profile — username/@handle/URL, up to 10,000 profiles a run.
  • ▶️ Metrics — playCount, likeCount (+ likesHidden), commentCount, approximate time, cover image, pin/position.
  • 📈 Benchmark — profileMedianPlays + playsVsProfileMedian.
  • 🎞️ Details (opt-in) — caption, hashtags, mentions, duration, video URL, music, co-authors, tagged users, topics, location.
  • 🔁 Only-new lists for recurring runs.

🎬 Quick Start

curl -X POST "https://api.apify.com/v2/acts/foxlabs~instagram-reels-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"profiles": ["natgeo"], "maxReelsPerProfile": 24}'

🚀 Getting Started (3 steps)

  1. List your profiles — one per line: natgeo, @natgeo or a URL.
  2. Set the cap & depth — maxReelsPerProfile; turn on includeDetails for caption/music/duration.
  3. Run and export — get a clean dataset as JSON, CSV or Excel.

📥 Input

FieldDefaultWhat it does
profilesrequiredUsernames, @handles or URLs, one per line (up to 10,000); a profile named twice is read once.
maxReelsPerProfile100Reels per profile from the top of its Reels tab.
maxReels100000Reel rows in total.
includeDetailsfalseRead each reel by itself (one more request per reel).
onlyNewReels, listNamefalse, defaultRemember delivered reels and skip them later.
proxyConfigurationautoNothing to change for normal use.
{ "profiles": ["nasa","nike","adidas"], "maxReelsPerProfile": 12, "includeDetails": true }

📤 Output

One row per reel (type: "reel"); a free type: "status" row for a line that brings no reels. Every row has 34 columns.

FieldDescription
reelId, shortCode, urlthe reel (reelId is the unique key)
profileUsername, inputthe profile whose tab listed it; your line
ownerUserId, ownerUsernamewho published it (a tab also shows reels co-published by others)
playCountthe tab tile's play figure (not the embed "views")
likeCount, likesHidden, commentCountlikes (null when hidden), hidden flag, comments
profileMedianPlays, playsVsProfileMedianthe profile's first-page median, and this reel vs it
takenAtApprox, isPinned, positionInProfile, displayUrlapprox time, pin/position, cover
Details (includeDetails)takenAt, caption, hashtags, mentions, durationSeconds, videoUrl, musicArtist, musicTitle, usesOriginalAudio, coauthors, taggedUsers, topics, locationName, detailsSource
scrapedAt, errorwhen made; reason on status rows

Without details the detail columns are null (lists too, so "not read" isn't mistaken for "none"); with details an empty list is [].

💼 Use cases

1. Reel performance analysis — a profile's reels ranked by plays and vs its median. Input: the profile, defaults. Output: reels + playsVsProfileMedian. Use: find what over-performs.

2. Influencer vetting — what a creator's reels really get. Input: the handles. Output: plays, likes, comments per reel. Use: judge real reach before a deal.

3. Trend & music research — captions, hashtags, music across reels. Input: profiles, includeDetails on. Output: caption/music/topics. Use: spot trends and sounds.

🔗 Integration

JavaScript / Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('foxlabs/instagram-reels-scraper').call({ profiles: ['natgeo'], maxReelsPerProfile: 24 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('foxlabs/instagram-reels-scraper').call(run_input={'profiles': ['natgeo'], 'maxReelsPerProfile': 24})
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item)

Written for apify-client 3 for Python, where call() returns a run object; with version 1 or 2 it returns a dict — write run['defaultDatasetId'] there.

Automation (n8n / Zapier / Make): schedule → HTTP request to the Actor API with your profiles → handle the JSON dataset → push to a sheet, CRM or dashboard.

📊 Pricing

Pay-per-event, one event per delivered row: reel (from the reels list) or reel-detailed (when Instagram answered the per-reel details request with at least its exact time). A reel asked with details that came without them carries reel. Status rows are free. View current pricing.

❓ FAQ

Do I need an Instagram login or cookies? No — only what a signed-out visitor sees; figures can differ from the app.

Is playCount the same as "views"? No — it's the Reels tab tile's play figure, which ran 2.4–7.7× the embed page's "views" in our measurements.

What's the performance score? playsVsProfileMedian = the reel's plays ÷ the profile's first-page median plays.

Can I get captions and music? Yes — turn on includeDetails (one more request per reel).

Can I export to CSV / Excel / JSON? Yes — directly from the Apify dataset.

🐛 Troubleshooting / What it does NOT do

  • Reels only — no photo posts/carousels, no comment texts (count only), no shares/saves/transcripts.
  • Nothing behind the login — no private profiles, stories, highlights, follower lists, search, tagged tab.
  • Signed-in-only / age-restricted / private profiles get a free status row (private reels aren't shown).
  • Hidden like count → likeCount: null, likesHidden: true (plays and comments still come).
  • Media isn't downloaded — videoUrl/displayUrl are Instagram's temporary addresses.
  • takenAtApprox is read from the reel id (median 77 s before the exact time); use takenAt (details) when the time matters.
  • A changed Instagram page ends the run with a message (not empty rows); a start-up check stops it before anything is charged.

⚠️ Trademark

Independent, third-party tool. Not affiliated with, endorsed by or connected to Instagram or Meta Platforms, Inc. "Instagram" and related marks belong to their owners and are used here for identification only.

Rows describe what an account published publicly; captions, co-authors, tagged accounts and places can be personal data. You decide why you collect them and are responsible for a lawful reason (GDPR and similar). Media belongs to its owners; the Actor gives no right to reuse it, and media addresses are temporary. The Actor writes only to your own run's storage. See Apify's blog post on the legality of web scraping.

🤝 Support & contact

Changelog

0.1.6 — 2026-10-10

  • After an independent README review: a details answer without the reel's exact time counts as no details (row carries reel, not reel-detailed); a Reels tab whose first page carries no play counts gets a status row; the status message names cut/own-less profiles; listName checked only when onlyNewReels is on; a proxy set in the input is the road of every request.

0.1 — 2026-10-09

  • First version: reels per profile with plays, likes, comment count and a score vs the profile's median; details on request; only-new lists; free status rows; requests ≥80 ms apart; measured on the Apify platform (500 reels in 15 s; 60 with details in 28 s; a restarted run delivered no reel twice). Standby mode prepared.