Instagram Reels API: Extract Reels Data & Analytics
Instagram Reels are the fastest-growing content format on the platform. But Instagram's official API doesn't give you much Reels data.
Need views, engagement, trending audio, or performance analytics? You need an Instagram Reels API.
What is an Instagram Reels API?
An API that extracts data from Instagram Reels—the short-form videos that dominate Instagram feeds. You get structured data about any public Reel without building your own scraper.
What Reels Data Can You Get?
| Data Point | Description |
|---|---|
| View count | Total plays |
| Like count | Hearts on the Reel |
| Comment count | Number of comments |
| Video URL | Direct link to video file |
| Thumbnail | Cover image |
| Caption | Text description |
| Duration | Length in seconds |
| Audio | Song/sound used |
| Hashtags | Tags in the caption |
| Author | Creator username and profile |
| Timestamp | When it was posted |
Why You Need Reels Data
Track Performance
See how Reels perform compared to regular posts. Reels typically get 2-3x more reach—but you need data to prove it.
Find Trending Audio
Discover which songs and sounds are going viral. Using trending audio can boost your Reels reach significantly.
Competitor Analysis
See what Reels your competitors are posting and how they're performing. Learn what works in your niche.
Influencer Vetting
Check if an influencer's Reels actually get views. Follower count means nothing if their content doesn't perform.
Content Research
Find top-performing Reels in any niche. Study what hooks, formats, and topics work best.
How to Get Instagram Reels Data
Get Reels from a Profile
const response = await fetch(
'https://api.sociavault.com/v1/scrape/instagram/reels?handle=garyvee',
{ headers: { 'x-api-key': 'YOUR_API_KEY' } }
);
const result = await response.json();
const reels = Object.values(result.data.items);
You can also use user_id instead of handle for faster response times. Pass trim=true for a smaller response.
Response:
{
"success": true,
"data": {
"success": true,
"items": {
"0": {
"media": {
"pk": "3827510363643067000",
"id": "3827510363643067000_270598518",
"code": "DUkABCxyz",
"play_count": 1433610,
"ig_play_count": 1433610,
"video_duration": 11.539,
"has_audio": true,
"like_count": 28500,
"comment_count": 312,
"video_versions": {
"0": { "url": "https://instagram...", "width": 480, "height": 852 }
},
"image_versions2": {
"candidates": {
"0": { "url": "https://instagram...", "width": 640, "height": 1136 }
}
},
"user": {
"pk": "270598518",
"username": "opi",
"full_name": "OPI",
"is_verified": true
}
}
}
},
"paging_info": {
"max_id": "QVFCVzNnS2lI...==",
"more_available": true
}
},
"credits_used": 1,
"endpoint": "instagram/reels"
}
Key fields per reel (under items[n].media):
- Views:
play_count - Likes:
like_count - Comments:
comment_count - Video URL:
video_versions[0].url - Thumbnail:
image_versions2.candidates[0].url - Duration:
video_duration(seconds) - Shortcode:
code
Note: This endpoint doesn't return reel captions. Use the Post Info endpoint with the reel URL to get captions.
Get a Single Reel's Details
Use the Post Info endpoint with the reel URL:
const response = await fetch(
'https://api.sociavault.com/v1/scrape/instagram/post-info?url=https://instagram.com/reel/DMA4eb1RC0D/',
{ headers: { 'x-api-key': 'YOUR_API_KEY' } }
);
const result = await response.json();
const reel = result.data.data.xdt_shortcode_media;
Get Reel Comments
const response = await fetch(
'https://api.sociavault.com/v1/scrape/instagram/comments?url=https://instagram.com/reel/DMA4eb1RC0D/',
{ headers: { 'x-api-key': 'YOUR_API_KEY' } }
);
const result = await response.json();
Use Cases
1. Calculate True Engagement Rate
Follower count is vanity. Engagement is what matters:
async function getReels(handle) {
const res = await fetch(
`https://api.sociavault.com/v1/scrape/instagram/reels?handle=${handle}`,
{ headers: { 'x-api-key': 'YOUR_API_KEY' } }
);
return res.json();
}
async function getProfile(handle) {
const res = await fetch(
`https://api.sociavault.com/v1/scrape/instagram/profile?handle=${handle}`,
{ headers: { 'x-api-key': 'YOUR_API_KEY' } }
);
return res.json();
}
async function getReelsEngagement(handle) {
const profileResult = await getProfile(handle);
const reelsResult = await getReels(handle);
const reels = Object.values(reelsResult.data.items).map(i => i.media);
const followers = profileResult.data.data.user.edge_followed_by.count;
const avgViews = reels.reduce((sum, r) => sum + r.play_count, 0) / reels.length;
const avgLikes = reels.reduce((sum, r) => sum + (r.like_count || 0), 0) / reels.length;
return {
followers,
avgViews,
avgLikes,
viewRate: ((avgViews / followers) * 100).toFixed(2) + '%',
engagementRate: ((avgLikes / avgViews) * 100).toFixed(2) + '%'
};
}
2. Benchmark Against Competitors
async function benchmarkReels(yourAccount, competitors) {
const results = [];
for (const account of [yourAccount, ...competitors]) {
const stats = await getReelsEngagement(account);
results.push({ account, ...stats });
}
// Sort by engagement rate
return results.sort((a, b) =>
parseFloat(b.engagementRate) - parseFloat(a.engagementRate)
);
}
Python Example
import requests
API_KEY = 'your_api_key'
def get_reels(handle):
response = requests.get(
'https://api.sociavault.com/v1/scrape/instagram/reels',
params={'handle': handle},
headers={'x-api-key': API_KEY}
)
return response.json()
# Get reels and analyze
result = get_reels('therock')
for item in result['data']['items'].values():
reel = item['media']
print(f"Views: {reel['play_count']:,} | Likes: {reel.get('like_count', 0):,}")
Official API vs Scraping API
Instagram's Graph API has limited Reels support:
| Feature | Official API | Scraping API |
|---|---|---|
| View count | ❌ Not available | ✅ Yes |
| Other users' Reels | ❌ No | ✅ Yes |
| Audio/sound info | ❌ No | ✅ Yes |
| Historical data | ❌ No | ✅ Yes |
| Requires approval | ✅ Yes | ❌ No |
For Reels analytics, a scraping API is currently the only practical option.
Getting Started
- Sign up at sociavault.com
- Get 50 free credits to test
- Copy your API key
- Start extracting Reels data
Frequently Asked Questions
Can I get view counts for any Reel?
Yes, you can get view counts for any public Instagram Reel. Private accounts cannot be accessed.
Does Instagram's official API provide Reels data?
Very limited. The Graph API doesn't expose view counts or let you access other users' Reels data.
Can I download the actual video file?
Yes, the API returns a direct URL to the video file that you can download.
How accurate is the view count?
The API returns the current view count as displayed on Instagram. It updates in real-time.
Can I get Reels by hashtag?
Yes, you can search for Reels using specific hashtags to find content in your niche.
Related guides:
Found this helpful?
Share it with others who might benefit
Ready to Try SociaVault?
Start extracting social media data with our powerful API. No credit card required.