Get Instagram reels that use a specific audio
List the reels that use one Instagram sound, with views, likes, comments and who posted each, by audio ID. 10 credits per page of 12 reels.
To list the reels that use one Instagram sound, call GET /v1/instagram/audio/reels with the track's audio_id. Each page returns 12 reels with their view, like and comment counts and the account that posted them, plus the track's title, artist and the total number of reels that use it. It costs 10 credits a page. Meta's Instagram Graph API has no way to list reels by audio, which is why this endpoint exists.
Cost
10 credits per page of 12 reels. Walking 10 pages (120 reels) costs 100 credits. Asking for the same page again within 6 hours is answered from the shared cache for 2 credits. Failed calls and empty results are free.
How do I find the audio ID?
The audio_id is the number in the sound's page URL: https://www.instagram.com/reels/audio/1392969992841787/ has the ID 1392969992841787. Open a reel, tap the sound name, and copy the URL.
If you only know the song's name, GET /v1/instagram/search/music (50 credits) looks it up by keyword. Every reel this endpoint returns also carries the ID in post.ext.audio_cluster_id, so you can hop from one reel to everything else that uses its sound.
Make the request
curl "https://api.insightsocial.app/v1/instagram/audio/reels?audio_id=1392969992841787" \
-H "x-api-key: $INSIGHTSOCIAL_API_KEY"What comes back
A real response from 2026-10-14, shortened: one reel instead of 12, long URLs cut, and the poster's account replaced with a placeholder.
{
"success": true,
"endpoint": "/v1/instagram/audio/reels",
"schema_version": "2",
"data": {
"items": [
{
"post": {
"id": "3916378119790708418",
"url": "https://www.instagram.com/reel/DZZxSZsPMbC/",
"kind": "short",
"content": { "text": "O processo é um tanto delicado…", "duration_seconds": 16.415 },
"author": { "id": null, "username": "example_creator", "display_name": "Example Creator", "verified": false },
"engagement": { "views": 145694, "likes": 5733, "comments": 83, "shares": null, "saves": null },
"published_at": "2026-06-10T10:52:09.000Z",
"ext": { "media_type": "video", "audio_cluster_id": "1392969992841787", "coauthors": [] }
}
}
],
"total": 280258,
"ext": {
"is_trending": true,
"sound": {
"track_title": "Freakin’ Out",
"artist": "Dexter and The Moonrocks",
"is_original": false,
"duration_seconds": 217.897,
"is_explicit": false,
"spotify_track_id": "2LSltDwOzq2yoBliFUnY41"
}
}
},
"pagination": { "next_cursor": "v2c.tNvG_cl…", "has_more": true, "page_size": 12 },
"unavailable": ["items[].post.author.id"],
"credits_used": 10
}| Field | What it holds |
|---|---|
data.items[].post | One reel in the shared post shape: caption, video and thumbnail URLs, duration, views, likes, comments, publish time. |
data.items[].post.author | The account that posted the reel: username, display name, avatar, verified badge. |
data.total | How many reels use the sound, as Instagram counts them. 280,258 here. |
data.ext.sound | The track: title, artist, whether it is an original sound, length, and its Spotify track ID when Instagram links one. |
data.ext.is_trending | Whether Instagram marks the sound as trending. |
unavailable | Fields this response could not fill. Here author.id is always null; use the username. |
How do I get more than 12 reels?
Send pagination.next_cursor back as cursor, with the same audio_id, and stop when pagination.has_more is false. Each page is 10 credits.
import os
import requests
BASE = "https://api.insightsocial.app/v1"
HEADERS = {"x-api-key": os.environ["INSIGHTSOCIAL_API_KEY"]}
params = {"audio_id": "1392969992841787"}
reels = []
for _ in range(5):
body = requests.get(f"{BASE}/instagram/audio/reels", params=params, headers=HEADERS, timeout=120).json()
reels += body["data"]["items"]
if not body["pagination"]["has_more"]:
break
params["cursor"] = body["pagination"]["next_cursor"]A popular sound can have hundreds of thousands of reels, so set a page limit before you start. See Pagination for the full rules.
What are the limits?
- Order. Reels are not sorted by date or by views: one page mixes reels from June and October. Sort in your own code if you need to.
- Shares and saves. Instagram does not show them on this surface, so
engagement.sharesandengagement.savesarenull, which means unknown, not zero. - Author ID.
post.author.idisnullon this endpoint. Pass the username toGET /v1/instagram/profileif you need the full profile. - Public reels only. Reels from private accounts never appear.
What can I build with it?
- Sound trend tracking. Store
data.totalper sound each day; a fast-rising count is a sound taking off. The music trend detection recipe combines it with TikTok's sound pages. - Creator discovery. The authors of the top reels on a sound are creators already working in that niche.
- Campaign tracking. If your brand launched a sound, the reel list and
totalshow who used it and how far it spread.
Related
GET /v1/instagram/audio/reelsreference: every parameter and field.GET /v1/tiktok/song/videos: the same question on TikTok.- Instagram endpoints: everything the API covers on Instagram.
Get the accounts that liked an Instagram post
See who liked an Instagram post, up to about 2,000 accounts in one call, with username, name, avatar and verified badge, plus the full like count. 50 credits.
Get an Instagram account's country and join date
Read the "About this account" details of a public Instagram account (country, month joined) plus follower and post counts. 10 credits per call.