Instagram Reels Scraper avatar

Instagram Reels Scraper

Pricing

from $0.90 / 1,000 reels

Go to Apify Store
Instagram Reels Scraper

Instagram Reels Scraper

Instagram reels scraper: export reels from public profiles or reel URLs with plays, likes, comments, caption, date, video, music, location and tags. No login or cookies needed.

Pricing

from $0.90 / 1,000 reels

Rating

0.0

(0)

Developer

Keklik Technologies

Keklik Technologies

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 hours ago

Last modified

Share

Instagram Reels Scraper lets you scrape Instagram reels from any public profile, or single reels by URL, and export reel data to JSON, CSV or Excel: play count, likes, comment count, caption, date, video and cover links, duration, music, location, tagged accounts and collab co-authors. Paste a few usernames, press Start and get one row per reel in a minute or two. No Instagram account, no login and no cookies are needed.

What data can you extract from Instagram Reels?

Each reel becomes one row with 31 fields:

GroupFields
ReelReel URL, reel ID, shortcode, product type, caption, publication date (Unix and ISO 8601 in UTC), pinned flag, paid partnership flag
AuthorUsername, display name, user ID
EngagementPlays (views_count), likes, comment count
MediaVideo URL, cover image, duration in seconds, dimensions
MusicAudio ID, song name, artist, original audio or licensed track, trending and explicit flags
LocationTagged place ID and name
PeopleCollab co-authors, tagged accounts, @mentions in the caption
HashtagsEvery hashtag in the caption
SettingsWhether comments are turned off, whether like and view counts are hidden
Comments (optional)The reel's newest comments in a latest_comments list: text, date, likes, edited flag, GIF, and each commenter's ID, username, verified badge and profile picture

Use cases

  • Influencer marketing: compare creators by plays, likes and comments per reel before you sign a deal, and check that sponsored reels carry the paid partnership label.
  • Competitor and brand monitoring: track what rival brands post on Reels, how often, and which formats and sounds win.
  • Trend research: find the audio, hashtags and lengths behind the best-performing reels in a niche.
  • Campaign reporting: export the reels of a campaign with their play counts on a schedule and feed them to a dashboard.
  • Academic and social research: build datasets of public short-form video with captions, dates and engagement.
  • Audience research: with comments on, read what people say under a creator's latest reels.

How to scrape Instagram reels

  1. Open Instagram Reels Scraper in Apify Console and go to the Input tab.
  2. In Profiles or reels, paste one Instagram profile URL, username or reel URL per line.
  3. Set Max reels per profile (for example 50) and, if you only want recent reels, Newer than (for example 30d).
  4. Optionally set Comments per post to add each reel's newest comments.
  5. Press Start and watch the reels appear in the Output tab.
  6. Download the results as JSON, CSV, Excel, XML or HTML, or fetch them with the Apify API.

Input

FieldWhat it does
Profiles or reelsOne per line. A profile URL or username (https://www.instagram.com/natgeo/, https://www.instagram.com/natgeo/reels/, @natgeo, natgeo) scrapes the profile's reels, newest first. A reel URL (https://www.instagram.com/reel/DeTUk4sDSp-/) scrapes that one reel.
Max reels per profileStops each profile after this many reels. Leave empty for every reel.
Newer thanOnly reels published after a date (2026-01-31 or 2026-01-31 18:00, UTC) or within a duration back from now (24h, 7d, 2w).
Skip pinned reelsLeaves out the reels pinned to the top of a profile.
Comments per postOff (0) by default. Adds up to this many of each reel's newest comments in a latest_comments list.
Max resultsStops the whole run after this many reels.
{
"urls": ["https://www.instagram.com/natgeo/", "https://www.instagram.com/reel/DeTUk4sDSp-/"],
"maxReelsPerProfile": 50,
"newerThan": "30d",
"commentsPerPost": 0
}

Output

A shortened row from a real run (the full row has 31 fields):

{
"reel_url": "https://www.instagram.com/reel/DehZj9wggt0/",
"reel_id": "4008597565992995700",
"shortcode": "DehZj9wggt0",
"product_type": "clips",
"owner_username": "natgeo",
"owner_full_name": "National Geographic",
"owner_id": "787132",
"views_count": 820288,
"likes_count": 36646,
"comments_count": 261,
"caption": "Keeping up with a pack of hunting wolves is just another day at the office for @bertiegreg …",
"hashtags": ["#WolvesUpClose"],
"mentions": ["bertiegregory", "DisneyPlus", "hulu"],
"timestamp": 1792090802,
"timestamp_datetime": "2026-10-15T19:00:02+00:00",
"video_duration_seconds": 30.037,
"media_dimensions": "1080x1920",
"music_info": {
"audio_id": "28762088093432459",
"song_name": "Original audio",
"artist_name": "natgeo",
"uses_original_audio": true,
"is_trending": false,
"is_explicit": false
},
"co_authors": [
{
"id": "1284886006",
"username": "bertiegregory",
"full_name": "Bertie Gregory",
"is_verified": true
}
],
"is_sponsored": false,
"is_pinned": true,
"source_url": "https://www.instagram.com/reel/DehZj9wggt0/",
"scraping_time": "2026-10-16T11:15:06+00:00"
}

You can export the dataset to JSON, CSV, Excel, XML and HTML from the Output tab or through the API. The Output tab's Overview table shows each reel's link, author, date, plays, likes, comments, length, caption, pinned flag and cover.

What to know about the data

  • Play counts: reels scraped from a profile come with their play count. A single reel URL gets its play count when the reel is among its author's 60 latest reels; an older reel URL comes back with every other field but an empty views_count. To get play counts for older reels, scrape the author's profile instead.
  • Collab reels: a profile's reels include the reels it co-authored, as on Instagram. On those rows owner_username is the main author, which can be another account.
  • Pinned reels come first on a profile whatever their date. With Newer than, older pinned reels are left out but do not stop the profile.
  • Media links expire: Instagram video and image URLs stop working after a while. Download the media soon after the run if you need it.
  • No duplicates: a reel appears only once per run, even if it is on two of your profiles (collabs) or entered twice.

Comments

Set Comments per post to add each reel's newest comments to its row, in a latest_comments list. Comments come newest first and are top-level only: replies and Instagram's "most relevant" order are not available. Reels with no comments, or with comments turned off, have no list. Comments make a run slower. If Instagram refuses a reel's comments, the reel is still saved without them and the run's status message says how many reels are missing comments. For many comments per reel, or one row per comment, use the Instagram Comments Scraper on the reel URLs.

How much does it cost to scrape Instagram reels?

Instagram Reels Scraper uses pay-per-event pricing: you pay per reel in the dataset and nothing for the platform usage behind it.

  • $1.50 per 1,000 reels on the Apify Free plan.
  • Bronze, Silver and Gold Apify plans pay less: $1.30, $1.10 and $0.90 per 1,000 reels.
  • Comments are optional and charged per comment: $1.00 per 1,000 comments on the Free plan, and $0.90, $0.80 and $0.70 on Bronze, Silver and Gold. With Comments per post at 0 (the default) you pay for reels only.

For example, 50 reels from each of 10 profiles is 500 reels, about $0.75 on the Free plan. Failed inputs add no rows, so they cost nothing. Use Max results to cap what a run can spend.

Integrations and API

Run Instagram Reels Scraper from your own code with the Apify API. The Actor ID is kekliktech/instagram-reels-scraper.

Python, with apify-client:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("kekliktech/instagram-reels-scraper").call(
run_input={"urls": ["natgeo"], "maxReelsPerProfile": 20}
)
for reel in client.dataset(run["defaultDatasetId"]).iterate_items():
print(reel["reel_url"], reel["views_count"])

Node.js, with apify-client:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('kekliktech/instagram-reels-scraper').call({
urls: ['natgeo'],
maxReelsPerProfile: 20,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

You can also:

  • Schedule runs (daily, weekly) to track a creator's reels and play counts over time.
  • Use webhooks to get notified, or trigger your own pipeline, when a run finishes.
  • Connect the results to Make, Zapier, Google Sheets, Slack, Airbyte and other tools through Apify integrations.
  • Let AI agents run the scraper through the Apify MCP server, for example from Claude or Cursor.

FAQ

This scraper collects only public data that Instagram shows to visitors who are not logged in. Reels can still contain personal data, such as the usernames of tagged accounts and commenters. Personal data is protected by laws such as the GDPR in the EU, so make sure you have a lawful reason to collect and use it. If in doubt, ask a lawyer.

Do I need an Instagram account?

No. You don't need an Instagram account, a login or cookies. Your own account is never used, so it cannot be blocked.

Can I scrape private profiles?

No. Instagram shows a private profile's reels only to approved followers, so private profiles are skipped.

Can I scrape photo posts and carousels?

No. A post URL that is not a video is skipped. Use the Instagram Post Scraper for photos and carousels.

Why did some inputs fail?

Inputs that fail are listed, with the reason, in the FAILED record of the run's key-value store (Storage tab), not in the dataset:

  • invalid_input: not a profile, username or reel URL (for example an explore or stories URL).
  • not_found: the profile or reel does not exist or was removed.
  • private, or private_or_no_posts: the profile is private (or, for the second, has no posts at all).
  • no_reels: the profile has no reels.
  • not_a_reel: the URL is a photo or carousel post.
  • blocked: Instagram refused every attempt. Run it again later.
  • instagram_error: Instagram answered with an error the scraper does not recognise. Please report it.

Why is the play count empty on some reels?

This happens only for reel URLs older than their author's 60 latest reels. Scrape the author's profile to get those play counts. Likes are also empty when the author hides like counts (like_and_view_counts_disabled).

Can I get comment replies?

No. Instagram doesn't show replies to visitors who are not logged in, so only top-level comments are available.

Support

Found a bug or need a field that isn't there? Open an issue on the Issues tab and we'll look into it. Need a scraper for another site or a custom version of this one? Get in touch through the Issues tab too.