Instagram Reels Scraper: Views, Likes & Audio
Pricing
from $6.15 / 1,000 results
Instagram Reels Scraper: Views, Likes & Audio
Scrape public Instagram reels by username or reel URL, no login. Extract view count, likes, comments, duration, caption, audio track, thumbnail and video URL. Export to JSON, CSV or Excel.
Pricing
from $6.15 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
32
Total users
7
Monthly active users
21 hours ago
Last modified
Categories
Share
Instagram Reels Scraper: Views, Likes & Audio
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"],"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 available. It returns every public field a reel exposes (views, plays, likes, comments, caption, hashtags, mentions, audio track, tagged users, coauthors and the direct video URL), plus derived fields like engagementRate and optional AI caption sentiment and topics, and gives you nine inputs and filters to target exactly the reels you need. No login required.
📥 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.
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. |
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. |
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.
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.
