Instagram Reels Scraper: Views, Likes, Audio & Video URL
Pricing
from $6.15 / 1,000 results
Instagram Reels Scraper: Views, Likes, Audio & Video URL
Scrape public Instagram Reels by username or reel URL. No login, no API key. Get views, plays, likes, comments, engagement rate, caption, hashtags, mentions, audio track, tagged users, thumbnail and the direct video URL. Built for influencer and social media analytics. Export JSON, CSV, Excel.
Pricing
from $6.15 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
38
Total users
7
Monthly active users
2 days ago
Last modified
Categories
Share
Instagram Reels Scraper: Views, Likes, Audio & Video URL
Here is one real result, with every field the actor returns (long media URLs are trimmed with ... for readability and one hyphen in the caption replaces a source em dash; all values are real):
{"imageUrl": "https://scontent-atl3-2.cdninstagram.com/v/t51.82787-15/764637906_18633750226049152_4753965783588088014_n.jpg?...","displayUrl": "https://scontent-atl3-2.cdninstagram.com/v/t51.82787-15/764637906_18633750226049152_4753965783588088014_n.jpg?...","thumbnailUrl": "https://scontent-atl3-2.cdninstagram.com/v/t51.82787-15/764637906_18633750226049152_4753965783588088014_n.jpg?stp=c0.420.1080.1080a_...","type": "reel","productType": "clips","shortcode": "Dbn-XJhk0_-","url": "https://www.instagram.com/reel/Dbn-XJhk0_-/","id": "3956405067326902270","ownerUsername": "nasa","ownerId": "528817151","ownerFullName": "NASA","ownerIsVerified": true,"ownerFollowerCount": 104387691,"ownerProfilePicUrl": "https://scontent-atl3-1.cdninstagram.com/v/t51.2885-19/29090066_159271188110124_1152068159029641216_n.jpg?...","caption": "Lunar landers, assemble. In clean rooms across the country, the next generation of commercial lunar landers is coming together. From @BlueOrigin and @FireflyAerospace to @IntuitiveMachines and @VoyagerTech_, we're taking you behind the scenes to see the spacecraft that will deliver NASA science and technology to the Moon - helping pave the way for humanity's first Moon Base. Visit the link in our bio to watch the full video and explore the latest progress. Credit: NASA #NASA #Moon #Exploration #Science","hashtags": ["NASA", "Moon", "Exploration", "Science"],"mentions": ["BlueOrigin", "FireflyAerospace", "IntuitiveMachines", "VoyagerTech_"],"accessibilityCaption": null,"videoUrl": "https://scontent-atl3-3.cdninstagram.com/o1/v/t2/f2/m86/AQP0XWA-IZtYgM60sxQGnTcDFXB9Qr-EQhcVIY3ka_HcKhek4fKaQD2iWGdl7pTcpiDXif3z1Qlej6QLPtOZ2QpOcr5NNocP8vK3n3Y.mp4?...","viewCount": 8373356,"playCount": 8373356,"likeCount": 246074,"commentCount": 2539,"topComments": [],"reshareCount": null,"commentsDisabled": false,"likeAndViewCountsDisabled": false,"viewerCanReshare": true,"isSponsored": false,"sponsorUsername": null,"isPinned": false,"isVideo": true,"hasAudio": true,"duration": 32.448001861572266,"takenAt": "2026-08-04T16:18:15.000Z","takenAtTimestamp": 1785860295,"locationName": null,"locationId": null,"musicTitle": "Original audio","musicArtist": "nasa","musicAudioId": "27499185986420436","shouldMuteAudio": null,"usesOriginalAudio": true,"musicInfo": {"songName": "Original audio", "artistName": "nasa", "audioId": "27499185986420436", "usesOriginalAudio": true, "shouldMuteAudio": null},"width": 1080,"height": 1920,"taggedUsers": [{"username": "nasamoonbase", "id": "44057602488", "fullName": "NASA Moon Base", "isVerified": true, "profilePicUrl": "https://scontent-atl3-3.cdninstagram.com/v/t51.82787-19/769182890_..._n.jpg?..."}],"coauthors": ["nasamoonbase"],"productTags": [],"isTrialReel": false,"ownerIsPrivate": false,"ownerFollowsCount": 92,"ownerPostsCount": 4879,"ownerBiography": "Making the seemingly impossible, possible. ✨","ownerCategory": null,"ownerExternalUrl": "https://www.nasa.gov","ownerBusinessEmail": null,"ownerBusinessPhone": null,"engagementRate": 0.2382,"observedAt": "2026-08-14T08:28:30.413Z","error": null,"aiSentiment": "positive","aiSentimentScore": 0.8,"aiTopics": ["lunar landers", "space exploration", "NASA", "commercial spaceflight", "moon base"],"aiCategory": "science"}
The most complete Instagram Reels scraper and data API available. Pull public Instagram Reels by username or reel URL with no login and no API key, and get every public field a reel exposes: views, plays, likes, comments, caption, hashtags, mentions, audio track, tagged users, product tags, coauthors and the direct video URL. It also adds derived analytics fields such as engagementRate and optional AI caption sentiment and topics, and gives you ten inputs and filters to target exactly the reels you need. Ideal for influencer marketing, social media analytics, competitor research and content trend tracking.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
Give the actor one or more public Instagram usernames, specific reel URLs, or both. For a username, it opens the account's public reels listing (no login), pages through the reels newest first, and writes one normalized record per reel. For a reel URL or shortcode, it reads that single reel's public page. Each record carries the engagement counts (views, plays, likes, comments), the full caption with parsed hashtags and mentions, the audio track, tagged users, coauthors, thumbnail and the direct videoUrl, plus account-level context (follower count, bio, external link). A derived engagementRate is computed from likes, comments, and follower count. Optional paid AI add-ons tag each caption's sentiment and topics.
Only public accounts are supported. Private accounts, and reels that are unavailable, return a single item with a populated error field instead of a record.
Popular use cases
- Influencer marketing: vet creators by real reel views, plays, likes, comments and
engagementRatebefore you spend. - Social media analytics: track a brand's or competitor's reel performance over time and by audio, hashtag or location.
- Content and trend research: find the top reels for an account, the audio tracks they use, and the hashtags and mentions that drive reach.
- Ad and creative intelligence: flag paid partnerships (
isSponsored,sponsorUsername) and shoppable reels (productTags). - Lead and outreach data: capture the owner bio, external link and any business email exposed on the profile.
How this compares
| Capability | This actor | Typical Instagram Reels scrapers |
|---|---|---|
| Input by username | Yes | Yes |
| Input by reel URL or shortcode | Yes | Usually |
| Date range filter (newer / older than) | Yes, both bounds | Often newer-than only |
| Min views / min likes filters | Yes | Rarely |
| Sort by views, plays, likes, comments, date | Yes | Rarely |
| Skip pinned / trial reels | Yes | Sometimes |
| Views, plays, likes, comments | Yes | Yes |
| Reshare count | Yes | Paid add-on elsewhere |
| Direct video URL + thumbnail | Yes | Usually |
| Audio track (title, artist, id, original-audio flag) | Yes | Usually |
| Tagged users, coauthors, product tags | Yes | Partial |
| Owner stats (followers, bio, link, business email) | Yes | Rarely |
Derived engagementRate | Yes | No |
| AI caption sentiment and topics (opt-in) | Yes | No |
| Login or API key required | No | No |
Field names follow the common Instagram scraper convention, so output is a drop-in replacement for most existing pipelines.
Quickstart
Open the actor, paste this into the input, and press Run. It returns the 5 most recent public reels from NASA.
{"usernames": ["nasa"],"maxReels": 5,"sortBy": "recent"}
Provide at least one of usernames, reelUrls, or shortcodes. Leave the filters empty to get each account's most recent reels.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
usernames | string[] | yes* | (empty) | Public Instagram usernames to scrape reels from, without the @, for example nasa. Private accounts return an error record. |
reelUrls | string[] | yes* | (empty) | Specific reel links, for example https://www.instagram.com/reel/CxAbCdEfGhi/. Post and TV links (/p/, /tv/) are also accepted. Each returns one reel record. |
shortcodes | string[] | no | (empty) | Reel shortcodes (the code in a reel URL, for example CxAbCdEfGhi) as an alternative to full URLs. |
maxReels | integer | no | (unlimited) | Maximum number of reels to collect across all inputs. |
withDetails | boolean | no | true | Enrich each profile reel from its public reel page to add duration and confirm view count and video URL. Turn off for a faster, lighter run. |
onlyPostsNewerThan | string | no | (empty) | Keep only reels posted after this point. Absolute date (2026-01-31 or ISO) or relative window such as 7 days, 2 weeks, 3 months. |
onlyPostsOlderThan | string | no | (empty) | Keep only reels posted before this point. Same formats as above. Combine both to target a date range. |
minViews | integer | no | (none) | Keep only reels with at least this many views. Instagram hides the view count on many reels; those are excluded when this is set. |
minLikes | integer | no | (none) | Keep only reels with at least this many likes. |
skipPinnedPosts | boolean | no | false | Exclude reels the account has pinned to the top of its profile. |
skipTrialReels | boolean | no | false | Exclude "trial reels" first shared only with non-followers. The trial flag is best-effort and not exposed on every reel. |
sortBy | enum | no | recent | Order before the results limit is applied. One of recent, oldest, views, plays, likes, comments. |
withAiSentiment | boolean | no | false | Paid AI add-on. Classifies each caption's sentiment (positive/neutral/negative with a score). Requires a paid Apify plan. Billed per enriched record. |
withAiTopics | boolean | no | false | Paid AI add-on. Tags each caption with a broad category and specific topic tags. Requires a paid Apify plan. Billed per enriched record. |
*Provide at least one of usernames, reelUrls, or shortcodes.
Output reference
One dataset item per reel. Types: string, integer, number, boolean, string[], object[], object, or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
imageUrl | string | Cover image URL (largest available). |
displayUrl | string | Same as imageUrl, the reel display image. |
thumbnailUrl | string | Smaller thumbnail image URL. |
type | string | Always reel. |
productType | string | Instagram media product type, for example clips. |
shortcode | string | The reel shortcode. |
url | string | Canonical reel URL built from the shortcode. |
id | string | Instagram media ID. |
ownerUsername | string | Account that posted the reel. |
ownerId | string | Numeric account ID. |
ownerFullName | string | Account display name. |
ownerIsVerified | boolean | Whether the account is verified. |
ownerFollowerCount | integer | Account follower count. |
ownerProfilePicUrl | string | Account profile picture URL. |
caption | string | Full reel caption text, or null. |
hashtags | string[] | Hashtags parsed from the caption (without #). |
mentions | string[] | Usernames mentioned in the caption. |
accessibilityCaption | string | Instagram accessibility caption, or null. |
videoUrl | string | Direct video file URL. |
viewCount | integer | View count, or null when Instagram hides it. |
playCount | integer | Play count, or null. |
likeCount | integer | Like count. |
commentCount | integer | Comment count. |
topComments | object[] | Preview comments carried by the listing (id, text, username, likeCount, createdAt). Empty when none. |
reshareCount | integer | Reshare/share count, or null. |
commentsDisabled | boolean | Whether comments are disabled. |
likeAndViewCountsDisabled | boolean | Whether like and view counts are hidden. |
viewerCanReshare | boolean | Whether the reel can be reshared. |
isSponsored | boolean | Whether it is a paid partnership. |
sponsorUsername | string | Sponsor username when sponsored, else null. |
isPinned | boolean | Whether the reel is pinned on the profile. |
isVideo | boolean | Whether the media is a video. |
hasAudio | boolean | Whether the reel has audio. |
duration | number | Video duration in seconds. |
takenAt | string | Post timestamp as ISO 8601. |
takenAtTimestamp | integer | Post timestamp as Unix seconds. |
locationName | string | Tagged location name, or null. |
locationId | string | Tagged location ID, or null. |
musicTitle | string | Audio track title (or Original audio). |
musicArtist | string | Audio track artist. |
musicAudioId | string | Instagram audio cluster/asset ID. |
shouldMuteAudio | boolean | Whether the audio should be muted, or null. |
usesOriginalAudio | boolean | Whether the reel uses original audio. |
musicInfo | object | Compact audio object (songName, artistName, audioId, usesOriginalAudio, shouldMuteAudio), or null. |
width | integer | Original media width in pixels. |
height | integer | Original media height in pixels. |
taggedUsers | object[] | Users tagged in the reel (username, id, fullName, isVerified, profilePicUrl). |
coauthors | string[] | Coauthor usernames. |
productTags | object[] | Shopping product tags on the reel (id, name, price, merchantUsername). Empty when the reel is not shoppable. |
isTrialReel | boolean | Whether the reel is a trial reel (shared to non-followers first), or null when the flag is not exposed. |
ownerIsPrivate | boolean | Whether the owner account is private. |
ownerFollowsCount | integer | How many accounts the owner follows. |
ownerPostsCount | integer | Total posts on the owner account. |
ownerBiography | string | Owner account bio text. |
ownerCategory | string | Owner account category, or null. |
ownerExternalUrl | string | External link in the owner bio, or null. |
ownerBusinessEmail | string | Business email parsed from the bio, or null. |
ownerBusinessPhone | string | Business phone, or null. |
engagementRate | number | Derived: (likes + comments) / followers as a percentage, or null when followers are unknown. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
aiSentiment | string | Paid add-on. Caption sentiment: positive, neutral, or negative. null when not enabled. |
aiSentimentScore | number | Paid add-on. Sentiment score from -1 to 1, or null. |
aiTopics | string[] | Paid add-on. Specific topic tags for the caption, or null. |
aiCategory | string | Paid add-on. Broad content category, or null. |
error | string | null on success. Error records (private/not found/rate-limited) carry a populated error and no reel fields. |
Example output record
The real NASA reel record is shown in full at the top of this page. Every field above appears there with real values (aiSentiment, aiTopics and aiCategory populated because the AI add-ons were enabled on that run).
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~instagram-reels-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"usernames":["nasa"],"maxReels":10,"sortBy":"views"}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~instagram-reels-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"reelUrls":["https://www.instagram.com/reel/Dbn-XJhk0_-/"]}'
Apify CLI:
apify call scrapers_lat/instagram-reels-scraper \--input '{"usernames":["nasa"],"maxReels":5}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per reel record returned (
resultevent). See the pricing tab for the current per-result price. - AI add-ons billed separately.
withAiSentimentandwithAiTopicsare optional paid events (ai_sentiment,ai_topics) charged only when they produce usable output, and only for paid Apify accounts. withDetailsenrichment charges adetailsevent only when the extra per-reel detail fetch succeeds.- No charge on failure. Error records (private account, not found, rate-limited) are written without a
resultcharge. - Free Apify plans are capped at 10 reels per run. Upgrade for higher
maxReels. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results.
FAQ and troubleshooting
A username returned an error instead of reels. Why?
The account is private, does not exist, has no public reels, or Instagram rate-limited the request. The record's error field explains which. Error records are not charged as results.
Why is viewCount null on some reels?
Instagram hides the view count on many reels. When minViews is set, reels with a hidden view count are excluded.
How do I get the most viewed reels?
Set sortBy to views and a maxReels limit. Sorting by views depends on Instagram exposing the count, which is not available for every reel.
Can I scrape a single reel by URL?
Yes. Put the reel URL in reelUrls (or its shortcode in shortcodes). Each returns one record.
Do the AI add-ons work on a free plan?
No. withAiSentiment and withAiTopics require a paid Apify plan and are disabled for free accounts.
Do I need an Instagram login, cookies, or an API key? No. The actor reads only public reel data and needs no login, no session cookies, and no Instagram or Meta API key. You only need your Apify token to start runs.
Can I scrape reels by hashtag or keyword search? Not directly. Input is by username, reel URL, or shortcode. To cover a hashtag or topic, pass the usernames or reel URLs you care about. Hashtags and mentions are still parsed out of every caption in the output.
How many reels can I get per username?
The actor returns the account's public reels newest first and paginates as far as Instagram will serve without a login. Instagram rate-limits and gates logged-out access, so per-username depth varies by account and moment. For higher volume, pass multiple usernames or specific reel URLs and use a maxReels limit. A reel that Instagram will not serve returns an error record and is not charged.
Is this an official Instagram tool? No. This actor is independent and has no affiliation with Instagram or Meta. It reads only publicly available reel data without logging in.
Related scrapers
- Instagram Caption & Hashtag Generator: AI captions, hashtags, and alt text for Instagram posts.
- iTunes Search Scraper: apps, music, and podcasts from the iTunes catalog.
- Ad Copy Generator: ready-to-run ad headlines and body copy.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with Instagram or Meta. Accesses only publicly available data without logging in. Use in accordance with Instagram's terms.
