Instagram Reels Scraper — Profiles, Hashtags & Keywords
Pricing
from $1.50 / 1,000 reel extracteds
Instagram Reels Scraper — Profiles, Hashtags & Keywords
Scrape Instagram Reels from profiles, hashtags, or URLs. Returns video URL, captions, likes, comments, music, tags. MCP-ready. $1.50/1K reels.
Pricing
from $1.50 / 1,000 reel extracteds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
1
Bookmarked
235
Total users
39
Monthly active users
13 hours ago
Last modified
Categories
Share
🎬 Instagram Reels Scraper — Profiles, Hashtags & Keywords
This Apify Actor helps creators, analysts, and AI workflows collect public Instagram Reels from profiles, hashtags, or direct reel URLs. Provide one input type at a time - usernames or profile URLs, hashtags, or direct URLs - and the Actor returns one dataset record per reel. Each record centers on reel identity and source context, with fields such as reel URL, username, display name, caption, hashtags, mentions, likes, comments, views, plays, duration, video URL, thumbnail URL, audio title, audio artist, sponsorship flag, pinned flag, posted time, scraped time, and source URL.
This Actor is usable through Apify MCP and through the Apify platform for runs, exports, scheduling, and API access.
Best fit and connected workflows
Use this Actor when your workflow starts with:
- a specific Instagram account and you want its Reels feed
- a topic or hashtag and you want Reels related to that theme
- a single Reel URL and you want one normalized record for that item
Common connected workflows include:
- content research from public Instagram Reels
- creator discovery from hashtag-based searches
- monitoring public Reel activity from known profiles
- downstream AI enrichment over caption, hashtag, and media metadata
- export into datasets, spreadsheets, or automation steps after the execution completes
Practical scenario
Maya is reviewing public Reels for a travel campaign. She starts with the hashtag travel, sets a per-source Reel cap, and receives records with reel URL, caption, likes, plays, comments, hashtags, posted time, and source URL. She uses the hashtag list and engagement fields to decide which creators to review next, then opens the reel URLs for manual evaluation.
Input fields
Fill in at least one of the three source sections. The input schema accepts profiles, hashtags, or direct reel links.
| Field | Type | Description | Default |
|---|---|---|---|
usernames | array of strings | Instagram usernames or profile URLs, such as natgeo or https://www.instagram.com/natgeo/ | - |
hashtags | array of strings | Hashtags without the # symbol, such as travel or fitness | - |
directUrls | array of URLs | Direct Instagram Reel URLs, such as https://www.instagram.com/reel/ABC123/ | - |
maxReelsPerSource | integer | Maximum number of reels collected per username, hashtag, or URL | 20 |
onlyReelsNewerThan | string | Optional date filter using YYYY-MM-DD, ISO timestamp, or relative strings like 30 days | - |
proxyConfiguration | object | Proxy settings. Built-in rotating residential proxies are available by default | - |
Focused input example
{"hashtags": ["travel"],"maxReelsPerSource": 5,"onlyReelsNewerThan": "30 days"}
Output fields
The dataset contains one record per extracted Reel. Unknown values can appear as null when the source does not provide them.
| Field | Type | Description |
|---|---|---|
reel_id | string | Instagram shortcode identifier for the reel |
reel_url | string | Direct link to the reel on Instagram |
username | string or null | Instagram handle of the posting account |
display_name | string or null | Display name of the posting account |
profile_url | string or null | Instagram profile URL for the author |
follower_count | number or null | Follower count captured at scrape time |
caption | string or null | Full caption text |
hashtags | array of strings | Hashtags extracted from the caption without # |
mentions | array of strings | Usernames mentioned in the caption without @ |
likes_count | number or null | Like count at scrape time |
comments_count | number or null | Comment count at scrape time |
views_count | number or null | View count at scrape time |
plays_count | number or null | Play count at scrape time |
duration_seconds | number or null | Reel duration in seconds |
video_url | string or null | Direct CDN URL to the video file |
thumbnail_url | string or null | Direct CDN URL to the thumbnail image |
audio_title | string or null | Audio track title |
audio_artist | string or null | Audio track artist or creator |
is_sponsored | boolean or null | Sponsorship indicator |
is_pinned | boolean or null | Pinned indicator |
posted_at | string or null | Original post timestamp in ISO 8601 format |
scraped_at | string | Timestamp when the record was collected |
source_url | string | Source page or reel URL used for collection |
Illustrative output record
{"reel_id": "DWqtP0-DS5B","reel_url": "https://www.instagram.com/reel/DWqtP0-DS5B/","username": "natgeo","display_name": "National Geographic","profile_url": "https://www.instagram.com/natgeo/","follower_count": 280000000,"caption": "A great white shark glides through the deep blue.","hashtags": ["nature", "wildlife", "ocean"],"mentions": ["disneynature", "wwf"],"likes_count": 45823,"comments_count": 312,"views_count": 1200000,"plays_count": 2300000,"duration_seconds": 29.5,"video_url": "https://scontent.cdninstagram.com/v/...","thumbnail_url": "https://scontent.cdninstagram.com/v/...","audio_title": "Ocean Waves","audio_artist": "NatGeo Sounds","is_sponsored": false,"is_pinned": false,"posted_at": "2025-04-01T14:30:00.000Z","scraped_at": "2025-04-03T10:15:00.000Z","source_url": "https://www.instagram.com/natgeo/reels/"}
How it works
The Actor accepts a profile source, hashtag source, or direct reel URL source. It collects public Reel metadata and stores each extracted reel as a dataset item. The live dataset contract includes a default overview view that surfaces reel URL, thumbnail, username, display name, caption, likes, plays, comments, duration, hashtags, sponsorship status, posted time, and scraped time. The output contract also writes compact OUTPUT and detailed RUN_SUMMARY records to the default key-value store.
Pricing
Instagram Reels Scraper — Profiles, Hashtags & Keywords uses Pay per event pricing with Apify platform usage charges applied separately according to your plan and account settings. The primary billed event is Reel Extracted, and the Actor also charges a small start event when a run begins.
The live Pricing tab shows the current pricing details for this Actor, including the event structure and any platform usage that applies to your account. A simple example: if a execution extracts one hundred reels, the billed result-item events correspond to one hundred extracted reels, plus the Actor start event for that run.
Use with AI agents (MCP)
This Actor is available as an Apify Actor usable through Apify MCP. It can be called by agents to retrieve structured Reel records for downstream reasoning, extraction, enrichment, or routing.
Tool description: scrape public Instagram Reels from profiles, hashtags, or direct URLs and return one dataset record per reel, with captions, engagement metrics, media links, audio metadata, and source provenance.
Actor identity: khadinakbar/instagram-reels-scraper
Find public Reels from the Instagram hashtag
travel, keep the first five results per source, and return structured records with caption text, engagement metrics, and reel URLs. Then summarize which creators look most active based on play and like counts.
How to interpret the output: each dataset item is one extracted Reel. The source_url shows which profile, hashtag page, or reel link produced the record. scraped_at shows when the item was collected. reel_url and video_url point to the reel and media asset, while caption, hashtags, mentions, and engagement fields support analysis.
Scope and provenance: the records come from the source pages you provide. reel_id and reel_url identify the reel, and the source context is preserved in source_url. Some fields can be null when the source page does not expose them at scrape time.
Pagination and cost guidance: increase maxReelsPerSource for broader collection across profiles, hashtags, or reel URLs. Because billing is event-based, larger result sets increase the number of charged reel extraction events. The live Pricing tab reflects the current per-event structure.
API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const run = await client.actor('khadinakbar/instagram-reels-scraper').call({usernames: ['natgeo'],maxReelsPerSource: 3,onlyReelsNewerThan: '30 days',});const dataset = await client.dataset(run.defaultDatasetId).listItems();console.log(dataset.items);
Best results and outcome guidance
- Use
usernamesfor a specific account andhashtagsfor a topic. - Use
directUrlswhen you already have a Reel link and want that item collected directly. - Keep
maxReelsPerSourceclose to your research scope: small values for checks, larger values for broader collection. - Use
onlyReelsNewerThanwhen recency matters for trend tracking or campaign review. - Review
likes_count,comments_count,views_count, andplays_counttogether, since they describe different parts of Reel engagement. - Use
video_urlandthumbnail_urlsoon after the run if you plan to download media assets, since CDN links can be time-sensitive.
Continue the workflow
- Then use Instagram Transcript Scraper to continue Instagram records selected with 🎬 Instagram Reels Scraper — Profiles, Hashtags & Keywords into a focused media workflow.
- Then use Instagram Trending Reels Research Scraper to extend 🎬 Instagram Reels Scraper — Profiles, Hashtags & Keywords research with a complementary discovery contract.
Design note
I found that the live output contract writes both a compact OUTPUT record and a detailed RUN_SUMMARY record to the default key-value store, in addition to the dataset records. That makes the run easier to inspect from both automation and human review paths.
FAQ
Which input should I use for a creator account?
Use usernames or a profile URL when you want Reels from a specific account.
Which input should I use for topic discovery?
Use hashtags when the starting point is a subject such as travel, fitness, or photography.
Which input should I use for a known Reel link?
Use directUrls when you already have a single Instagram Reel URL and want a direct scrape of that item.
What does one dataset record represent?
One record represents one extracted Reel, including the reel identity, source context, caption data, engagement metrics, and media URLs when available.
Where can I review the billed events and platform usage?
Open the live Pricing tab in the Apify console for this Actor.
Responsible use
Use this Actor for public Instagram content and for workflows that respect Instagram and Apify terms, account permissions, and applicable laws. Keep collection aligned with the source type you select, and review the returned source_url and timestamp fields when you need to trace provenance or refresh data later.