Instagram Audio Scraper - Reels by Audio, Song & Sound avatar

Instagram Audio Scraper - Reels by Audio, Song & Sound

Pricing

from $2.50 / 1,000 instagram audio or reel results

Go to Apify Store
Instagram Audio Scraper - Reels by Audio, Song & Sound

Instagram Audio Scraper - Reels by Audio, Song & Sound

Find the public Instagram Reels that use a sound. Start from an audio ID, audio URL, Reel URL, profile or keyword and get each Reel's plays, likes, comments, hashtags, creator and post date.

Pricing

from $2.50 / 1,000 instagram audio or reel results

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

253

Total users

99

Monthly active users

15 days ago

Last modified

Share

What is Instagram Audio Scraper?

Instagram Audio Scraper turns an Instagram sound into a dataset of the public Reels that use it. Start from an audio ID, an audio page URL, a Reel URL, a creator's profile or a Reel search keyword, and get one row per Reel with the audio ID, caption, co-hashtags, play count, likes, comments, post date and creator. Music marketers, trend researchers, creator agencies and AI agents use it to see how far a sound is spreading and who is using it, with no Instagram login or cookies.

Why teams choose this Instagram audio scraper

  • Start from what you have. Audio IDs or audio URLs in audioInputs, Reel links in reelUrls, creators in profileHandles or keywords in searchQueries.
  • Sound-to-Reels expansion. With includeReelsUsingAudio, one audio ID becomes a list of the Reels using that sound.
  • Engagement per Reel. play_count, like_count and comment_count come back as numbers, ready to rank.
  • Two clear record types. record_type separates the audio_summary row for the sound itself from each reel row.
  • Resumable at scale. Page caps per audio, profile and search, plus cursors in the summary, keep large pulls predictable.
  • Built for AI agents. Flat JSON with stable snake_case keys, available through Apify MCP and the Apify API.

Best fit for this Actor

  • Start here when your question is about a sound: who uses it, how fast it spreads, and which Reels get the most plays with it.
  • Use reelUrls when you have a Reel and want to identify its audio, then pass the returned audio_id into audioInputs to find other Reels using the same sound.
  • For Reels by hashtag rather than by sound, start with Instagram Hashtag Posts Scraper.
  • For a creator's full Reel feed with music details, start with Instagram Reels Scraper.

What people and AI agents ask this Actor to do

Which Reels are using this trending sound, and which ones got the most plays? What audio does this Reel use, and who else is using it? Track how many Reels use our campaign song each week. Find Reels about running shoes and tell me which sounds they use.

RequestInput to send
Reels that use a sound{"audioInputs": ["579408562507956"], "maxReelsPerAudio": 50}
Identify the sound of a Reel{"reelUrls": ["https://www.instagram.com/reel/DLDXI0fylTC/"]}
Expand that sound nextPass the returned audio_id into {"audioInputs": ["<audio_id>"]}
Sounds a creator uses{"profileHandles": ["natgeo"], "maxReelsPerProfile": 30}
Sounds used in a topic{"searchQueries": ["running shoes"], "maxSearchPages": 1, "datePosted": "last-week"}
A deep pull on one sound{"audioInputs": ["579408562507956"], "maxAudioPages": 10, "maxResults": 500}

Example workflow: from one sound to a creator shortlist

A music marketer starts with the audio ID of a song their label is pushing. They send it in audioInputs and get an audio_summary row plus one reel row for every Reel using the sound. They sort the Reels by play_count, note which creators reached the most viewers, then pass those author_username values to Instagram Profile Scraper for follower counts and contact details. They schedule the same input weekly and compare row counts to see whether the sound is still spreading.

How to scrape Reels by Instagram audio

  1. Add an audio ID or audio URL in Audio inputs, or use Reel URLs, profile handles or search keywords.
  2. Set Max Reels per audio and Max results to the rows you need.
  3. Click Start. Export the dataset as JSON, CSV or Excel, or read it through the API.

Quick start input

{
"audioInputs": ["579408562507956"],
"includeReelsUsingAudio": true,
"maxReelsPerAudio": 50,
"maxResults": 250
}

Input reference

FieldTypeWhat it controls
audioInputsarray of stringsInstagram audio IDs or audio page URLs, such as https://www.instagram.com/reels/audio/579408562507956/.
reelUrlsarray of stringsPublic Reel or post URLs whose audio you want to identify.
profileHandlesarray of stringsPublic profile handles or URLs whose Reels should be scanned.
searchQueriesarray of stringsKeywords to search Reels by, such as running shoes.
includeReelsUsingAudiobooleanExpand each audioInputs sound into the Reels using it. Default true.
maxReelsPerAudiointegerCap on Reels per audio. Default 50.
maxAudioPagesintegerCap on pages read per audio. Default 3.
maxReelsPerProfileintegerCap on Reels per profile. Default 50.
maxSearchPagesintegerCap on pages per search keyword. Default 2.
maxResultsintegerOverall cap on saved rows. Default 250.
datePostedstringDate window for search keywords: any, last-hour, last-day, last-week, last-month or last-year. Default any.
includeRawbooleanAdd the raw source fragment to each row for debugging. Default false.

Output: Instagram audio data you receive

The dataset holds two record types, marked by record_type: one audio_summary row for each requested sound and one reel row for each Reel found. The sample below is a real Reel row with the creator username replaced by a placeholder.

FieldWhat it contains
record_type, source_type, source_inputRow type and the input that produced it
audio_id, audio_urlThe sound's ID and Instagram audio page
audio_title, audio_artist, uses_original_audioSound details when Instagram exposes them
reel_id, shortcode, reel_urlThe Reel's identifiers and link
caption, caption_hashtags, mentionsCaption text, parsed hashtags and mentions
play_count, like_count, comment_countPublic engagement numbers
video_duration_secs, has_audio, thumbnail_url, video_urlMedia details (Instagram media links expire after a while)
author_username, author_full_name, author_is_verifiedThe creator who posted the Reel
posted_at, scraped_at, providerPost date, collection time and data route
{
"record_type": "reel",
"source_type": "audio",
"source_input": "579408562507956",
"audio_id": "579408562507956",
"audio_url": "https://www.instagram.com/reels/audio/579408562507956/",
"reel_id": "3992930496069429334",
"shortcode": "DdpvSF3CuhW",
"reel_url": "https://www.instagram.com/reel/DdpvSF3CuhW/",
"caption": "Strong women aren’t born knowing how to weather every storm. They learn, one hard season at a time.\n\nThey cry, rest, ask for help, and begin again. Strength doesn’t mean nothing hurts. Sometimes it means choosing to keep going while you heal.\n\nIf you’re facing a season no one else can see, give yourself credit. You’ve made it through days you once thought you couldn’t. You’re still here, still growing, still becoming. \n\nDrop a 💪 if you’re proud of the woman you’re becoming.\n\n#StrongWomen #WomenEmpowerment #ResilientWomen #HealingJourney #KeepGoing\n\n(Strong women, women’s empowerment, resilience, overcoming hard times, healing journey, inner strength, personal growth, self-worth, keep going, becoming the woman you’re meant to be)",
"caption_hashtags": [
"strongwomen",
"womenempowerment",
"resilientwomen",
"healingjourney",
"keepgoing"
],
"play_count": 128166,
"like_count": 1989,
"comment_count": 28,
"video_duration_secs": 9.868,
"has_audio": true,
"author_username": "example.creator",
"posted_at": "2026-09-24T01:47:34.000Z",
"scraped_at": "2026-09-29T09:57:41.813Z"
}

What each run outcome means

Every run writes an OUTPUT record and a RUN_SUMMARY record to the default key-value store with savedCount, chargedCount, stopReason, sourceCounts and nextCursors. Read stopReason to branch in code or in an agent.

stopReasonMeaning
finishedEvery input was processed and every row found was saved.
max-results-reachedThe maxResults cap was reached; raise it to collect more.
charge-limit-reachedThe maximum charge set for the run was reached.
no-inputNo audio, Reel, profile or search input was provided.
missing-provider-secretsThe Actor's own data-source configuration needs attention from the maintainer.

Pricing

This Actor uses Pay per event plus Apify platform usage. You pay one result event for each row saved to the dataset, whether it is an audio_summary row or a reel row, plus the start event and the platform usage of the run. The live Pricing tab on this page shows the current event prices.

Worked examples:

  • 1 audio ID with 50 Reels = 51 result events (1 summary + 50 Reels) + start event + platform usage.
  • 5 Reel URLs = up to 10 result events (each Reel row plus its sound summary row) + start event + platform usage.
  • maxResults: 100 = at most 100 result events, whatever the inputs.

Formula: result event price × saved rows + start event + platform usage. Set a maximum charge per run in the run options to cap spend.

Use Instagram Audio Scraper with AI agents (MCP)

Connect this Actor to Claude, ChatGPT, Cursor or any MCP client through Apify MCP, then ask in plain language:

Take Instagram audio ID 579408562507956 and return up to 50 Reels that use it, with reel URL, play count, like count, author username and post date, sorted by play count. Tell me the stop reason.

Agent checklist:

  1. Pass the sound in audioInputs and set maxResults to the rows you need. With only a Reel link, pass it in reelUrls first and reuse the returned audio_id.
  2. Read rows with get-dataset-items; keep rows where record_type is reel for ranking.
  3. Read OUTPUT.stopReason and OUTPUT.savedCount for the terminal state.
  4. Keep reel_url, audio_url and scraped_at to cite each result.

API example

curl -X POST "https://api.apify.com/v2/acts/khadinakbar~instagram-audio-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"audioInputs": ["579408562507956"], "maxReelsPerAudio": 25, "maxResults": 26}'
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('khadinakbar/instagram-audio-scraper').call({
audioInputs: ['579408562507956'],
maxReelsPerAudio: 25,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const reels = items.filter((row) => row.record_type === 'reel');
console.log(reels.sort((a, b) => (b.play_count ?? 0) - (a.play_count ?? 0)).slice(0, 5));

Choosing the right sound research tool

Other Actors from the same developer pick up where this one stops.

Your starting pointTool to useWhy it fits
When you start from an Instagram sound or a Reel's audioThis ActorReels using the sound, with engagement
When you then want creator details for top ReelsInstagram Profile ScraperPass author_username values for follower counts, bios and contact details
When you want to read reactions to a ReelInstagram Comments ScraperEvery public comment for a reel_url
When you start from a hashtagInstagram Hashtag Posts ScraperPosts and Reels under the tag
When you want a creator's full Reel feedInstagram Reels ScraperReels from profiles, hashtags or keywords
When you want the same sound on TikTokTikTok Sound ScraperTikTok sound details and the videos using it
When you want the song's streaming numbersSpotify ScraperTrack, artist and play-count data

Best results

Starting situationHelpful actionExpected outcome
A sound ID or audio URLUse audioInputs with includeReelsUsingAudio onEvery Reel row that uses the sound
Only a Reel linkUse reelUrls first, then pass audio_id into audioInputsThe Reel's sound, then every Reel using it
A viral soundRaise maxAudioPages and maxResults togetherA deeper list of Reels
Weekly trend trackingSchedule the same audio inputComparable counts over time
Media files matterDownload media links soon after collectionReliable copies of thumbnails and videos

Builder's note

I found that sound research usually starts from whatever link someone has in hand, so the Actor accepts audio IDs, audio URLs, Reel URLs, profiles and keywords and resolves them all to the same row shape. I learned that sound titles and artist names appear on some sounds and not others, so each row keeps the audio ID and audio URL as the stable way to group Reels by sound.

FAQ

How do I find an Instagram audio ID?

Open the sound's page on Instagram. The number in https://www.instagram.com/reels/audio/<ID>/ is the audio ID. You can also paste a Reel URL into reelUrls and read audio_id from the result.

How many Reels can I get for one sound?

Set maxReelsPerAudio, maxAudioPages and maxResults to the number you need. Popular sounds fill the cap; new sounds return the Reels that exist so far.

How much does it cost to get 1,000 Reels for a sound?

1,000 saved rows cost 1,000 result events plus one start event and platform usage. Multiply by the result event price on the Pricing tab.

Do I need an Instagram account or cookies?

No. The Actor reads public data only and needs no login.

Why are some sound titles and artists empty?

Instagram shows a title and artist for some sounds and hides them for others, especially original audio. Group Reels by audio_id and audio_url, which identify the sound either way.

Responsible use

This Actor collects public Instagram data only. Results include usernames and captions, which are personal data protected by laws such as the GDPR and CCPA. Collect and use them only with a lawful basis, keep them no longer than you need, and respect Instagram's terms and music rights. Read Apify's guide on whether web scraping is legal for more context. Instagram is a trademark of Meta Platforms, Inc. This independent Actor is not affiliated with, associated with, or endorsed by Meta. For questions or bugs, open a ticket in the Issues tab.