Instagram Audio Scraper · Sounds, Music & Trending Reels avatar

Instagram Audio Scraper · Sounds, Music & Trending Reels

Pricing

from $2.80 / 1,000 sounds

Go to Apify Store
Instagram Audio Scraper · Sounds, Music & Trending Reels

Instagram Audio Scraper · Sounds, Music & Trending Reels

Search Instagram sounds, look up any audio page id (catalogue or creator original), or name the track on a reel or profile. Artist, duration, cover, lyrics and trending flags, Instagram's reel count, a download URL, and optional permanent audio save. No login, no cookies.

Pricing

from $2.80 / 1,000 sounds

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

56

Total users

44

Monthly active users

2 days ago

Last modified

Share

Instagram Audio Scraper logo

Name the sound behind any Instagram reel — or search the catalogue by song, artist, track id, or profile. Catalogue ids and creator-original audio ids both resolve. Each sound comes back with artist, duration, cover art, lyrics and trending flags, a download URL, Instagram's own catalogue-wide reel count, and an optional permanent file save. Mix search terms, reel URLs, audio ids, and profile handles in one run. No login, no cookies.

InputRow(s) emitted
Search term (lofi, an artist, a song title)sound rows from Instagram's music catalogue
Reel or post URLOne post-sound row — licensed track or the creator's own audio
Audio id (instagram.com/reels/audio/<id>/)One sound row, with the catalogue-wide reel count already filled
Profile handle or profile URLOne post-sound row per scanned Reel
includeReelsUsingSound: trueExtra reel rows for each sound, with plays, likes, and creator

Pure HTTP. No browser, no CAPTCHA solver, no cookies. Original audio has no catalogue search hit — name it from a reel, a profile, or the audio page id.

Why Use This Scraper?

  • Both directions. Keyword search finds sounds by name. Post lookup goes the other way: give it a reel that is doing well and it names the sound driving it.
  • Original audio too. A creator's own recording has no catalogue search entry. Name it from a reel, a profile scan, or the audio page id — the same number Instagram puts on /reels/audio/<id>/.
  • A real trending number. totalReelsUsingSound is Instagram's own catalogue-wide count, not how many reels this run happened to fetch. 43,904 reels means something; "we found 24" does not.
  • The reels, not just the sound. Turn on expansion and each sound brings the reels actually using it, with play counts and creators, so you can see who picked it up and how it performed.
  • Four ways in. Search terms, reel URLs, audio ids, and public profiles can share one run. Cap a profile scan with datePosted so you only pay for recent Reels.
  • No account risk. No login, no cookies, no session handover.

Overview

Built for music marketers, influencer researchers, and trend desks who need structured Instagram sound data — not a transcript, not a video download.

The dataset is sound-shaped. A reel URL or a profile handle still produces post-sound rows (the audio on that post). reel rows appear only when you turn expansion on. Failures (private, no_sound, bad id) come back as { source, error, message } and are never billed.

This actor names and measures sounds. It does not transcribe speech. For spoken words on a reel, use Instagram Transcript Scraper. For any URL, RSS feed, or podcast, use Media Transcriber.

Supported Inputs

What you can paste

Input typePatternExample
Search termany song, artist, or phraselofi
Reel URLinstagram.com/reel/<code>/https://www.instagram.com/reel/Dcy-7IJhWAP/
Post URLinstagram.com/p/<code>/https://www.instagram.com/p/Dcy-7IJhWAP/
Audio page / idinstagram.com/reels/audio/<id>/ or the number346308129265917
Profile handlenasa, @nasa, or a profile URLhttps://www.instagram.com/nasa/

Mix in one run

{
"queries": ["lofi"],
"postUrls": ["https://www.instagram.com/reel/Dcy-7IJhWAP/"],
"trackIds": ["346308129265917"],
"profileHandles": ["nasa"],
"maxReelsPerProfile": 20,
"datePosted": "last-month"
}

Unsupported inputs

  • Private, deleted, or age-restricted posts and profiles
  • Instagram Stories, Highlights, or live broadcasts
  • Photo and carousel posts (they carry no sound)
  • Non-Instagram URLs
  • Login, cookies, or session tokens — the actor never asks for them
  • Speech-to-text / transcripts — that is a different actor

Use Cases

AudienceUse case
Music marketersSee which catalogue tracks are actually moving on Reels, and which creators picked them up
Influencer researchersDrop a viral reel URL and get the exact sound, including original audio
AgenciesScan a client's or competitor's profile for the sounds they have been posting
Trend desksRank sounds by Instagram's own totalReelsUsingSound, not a sample from one run
Content teamsPull cover art, duration, and a download URL so editors can preview a track

How It Works

How the Instagram Audio Scraper works

  1. Input — search terms hit the sound catalogue; reel URLs and profile handles are resolved to media; audio ids are looked up directly.
  2. Identify — each item is mapped to a sound. A licensed track gets title and artist. A creator recording is flagged isOriginalAudio: true and the artist is their handle.
  3. Expand (optional) — when includeReelsUsingSound is on, the actor walks the reels using each sound and writes Instagram's catalogue-wide count onto the sound row.
  4. Filter — datePosted drops older Reels on profile scans, post URLs, and the expanded reel list before charge. Catalogue search has no post date, so it is unchanged.
  5. Emit — sound, post-sound, and reel rows share one dataset, told apart by rowType. Error rows are pushed and not billed.

Input Configuration

FieldTypeRequiredDefaultNotes
queriesarray of stringsOne of the four—Words to search the sound catalogue for: a song title, an artist, a phrase. Example: ["lofi","coffee"].
postUrlsarray of stringsOne of the four—Reels or posts whose sound you want named. An audio page URL is looked up as a track id. Example: ["https://www.instagram.com/reel/Dcy-7IJhWAP/"].
trackIdsarray of stringsOne of the four—Instagram audio ids or instagram.com/reels/audio/<id>/ URLs. Same number as output trackId. Example: ["346308129265917"].
profileHandlesarray of stringsOne of the four—Public profiles to scan. Accepts nasa, @nasa, or a profile URL. Private or missing accounts return an error row and are not billed.
maxReelsPerProfileintegerNo50How many of a profile's newest Reels to inspect. 1–500.
datePostedenumNoanyany / last-hour / last-day / last-week / last-month / last-year. Applies to profile scans, post URLs, and expanded reels. Catalogue search is unchanged.
maxSoundsPerQueryintegerNounlimitedCap on sounds per search term. Instagram's catalogue returns about 10 per term, so a cap above that changes nothing.
includeReelsUsingSoundbooleanNofalseAlso return the reels using each sound, as reel rows. This is how search/post/profile rows get totalReelsUsingSound. Track-id lookups already fill that count.
maxReelsPerSoundintegerNo24Cap on reels collected per sound when expansion is on. Ignored otherwise.
saveAudiobooleanNofalseDownload each sound into this run's key-value store and set audioKvStoreUrl. Instagram CDN links expire; this copy does not.

At least one of queries, postUrls, trackIds, or profileHandles must be given.

{
"queries": ["lofi"],
"maxSoundsPerQuery": 10,
"includeReelsUsingSound": true,
"maxReelsPerSound": 24
}

Example input — name the sound on a reel

{
"postUrls": ["https://www.instagram.com/reel/Dcy-7IJhWAP/"]
}

Example input — recent sounds on a profile

{
"profileHandles": ["nasa"],
"maxReelsPerProfile": 20,
"datePosted": "last-month"
}

Output Overview

Three row shapes in one dataset, told apart by rowType.

  • sound — a catalogue match from a search term, or a direct track-id lookup.
  • post-sound — the sound behind a post or profile Reel you supplied. isOriginalAudio: true means the creator's own recording, and artist is then their handle.
  • reel — a reel using one of the sounds, only when expansion is on. Carries reelUrl, caption, plays, likes, comments, video URL, and creator, plus soundTrackId / soundTitle so it can be grouped back to its sound.

Error rows are { source, error, message, errorKind } and are never charged.

Output Samples

sound — catalogue match for lofi (trimmed CDN URLs):

{
"rowType": "sound",
"source": "lofi",
"trackId": "878420731732683",
"audioClusterId": "1447236620222768",
"title": "Bloom",
"artist": "LoFi Tokyo",
"durationMs": 156320,
"isExplicit": false,
"isOriginalAudio": false,
"hasLyrics": false,
"isTrending": null,
"trendRank": null,
"coverArtworkUrl": "https://instagram.fna.fbcdn.net/…",
"audioDownloadUrl": "https://instagram.fna.fbcdn.net/…",
"previewUrl": null,
"totalReelsUsingSound": 29677,
"scrapedAt": "2026-09-03T21:12:28.231Z"
}

post-sound — original audio read off a reel you supplied:

{
"rowType": "post-sound",
"source": "https://www.instagram.com/reel/Dcy-7IJhWAP/",
"trackId": "28166791299679920",
"title": "Original audio",
"artist": "marinunesnutrition",
"durationMs": 468000,
"isOriginalAudio": true,
"audioDownloadUrl": "https://scontent.cdninstagram.com/…",
"totalReelsUsingSound": 0,
"postUrl": "https://www.instagram.com/reel/Dcy-7IJhWAP/",
"postShortCode": "Dcy-7IJhWAP",
"postAuthor": "marinunesnutrition",
"scrapedAt": "2026-09-03T21:12:35.567Z"
}

reel — one reel using a sound, when expansion is on:

{
"rowType": "reel",
"source": "lofi",
"reelId": "3971725923208080646",
"reelUrl": "https://www.instagram.com/reel/DceZ68eBy0G/",
"reelCaption": "(PT 1/4) How to edit a UGC (or any) video …",
"playCount": 3015,
"likeCount": 3,
"commentCount": 46,
"videoUrl": "https://scontent.cdninstagram.com/…",
"creatorUsername": "lexigracecreates",
"creatorFullName": "Lexi | UGC Creator",
"creatorIsVerified": false,
"soundTrackId": "9062257293808038",
"soundTitle": "Cozy Day (Lofi)",
"scrapedAt": "2026-09-03T21:12:30.458Z"
}

Key Output Fields

Sound identity

FieldWhat it is
rowTypesound, post-sound, or reel
trackIdInstagram audio id — the same number you can feed back as trackIds
audioClusterIdCluster id when Instagram sends one
title / artistTrack title and display artist. On original audio, artist is the creator handle
isOriginalAudiotrue for a creator's own recording, false for a licensed catalogue track
durationMsLength in milliseconds
isExplicitExplicit flag when Instagram sends it
hasLyricstrue when Instagram says the track has lyrics. Search and track-id rows.
isTrendingtrue when Instagram flags is_trending_in_clips. Filled on track-id and post/profile rows; search list does not send it.
trendRankInstagram's clip trend rank when present

Media

FieldWhat it is
coverArtworkUrlCover image. Instagram CDN — expires
audioDownloadUrlDirect link to the audio file. Instagram CDN — expires. Fetch it during or shortly after the run
previewUrlInstagram's 30-second web preview when it sends one. Often empty on catalogue search
audioKvStoreUrlPermanent copy in this run's key-value store, only when saveAudio is on
videoUrlOn reel rows, the video file. Same CDN expiry

Reach

FieldWhat it is
totalReelsUsingSoundInstagram's catalogue-wide count. Filled on track-id lookups always; on search / post / profile only when expansion is on
playCount / likeCount / commentCountEngagement on a reel row

Provenance

FieldWhat it is
sourceThe search term, URL, id, or @handle that produced the row
postUrl / postShortCode / postAuthor / takenAtOn post-sound rows, which post the sound was read off
soundTrackId / soundTitleOn reel rows, which sound the reel belongs to
scrapedAtISO timestamp of this run

Error rows

An input the run could not answer for comes back as { source, error, message, errorKind } and is never charged:

errorMeaning
invalid_post_urlThe input is not a post or reel URL
post_unavailableThe post is private, deleted, or age-restricted
no_soundThe post carries no sound. Photos and carousels never do, and some videos are silent
invalid_track_idNot an Instagram audio id
track_not_foundNo sound has that id
profile_unavailableThe profile is private, missing, or could not be read

Pricing

Pay per event. Posts that carry no sound, URLs that are not posts, private profiles, and other error rows are never charged.

EventWhen it firesFree tierDiamond tier
SoundOne sound, from a search term, a post, a track id, or a profile Reel$0.004$0.0028
Reel using the soundOne reel, only when expansion is on$0.0015$0.001
Actor startOnce per run, per GB of memory$0.005$0.005

A 1,000-sound run costs about $4 on the free tier. Reels are billed separately because they are opt-in.

Unpaid runs are capped to a small sample (one search term, two post URLs, one profile, five sounds) so you can try the shape before paying.

What Makes This Richer Than the Competition

CapabilityOther audio scrapersThis actor
Search the sound catalogueYesYes
Artist, duration, cover art, audio URLYesYes
Name the sound behind a given reelNoYes, via postUrls
A creator's own audioUnreachable by searchNamed from a reel, a profile, or the audio page id
Catalogue-wide reel countNototalReelsUsingSound
The reels using each soundPartialOpt-in, with plays, likes and creator
Look up a known audio idkhadinakbar yesYes — bare id or reels/audio/<id>/ URL, catalogue and original audio
Scan a profile for soundsRareYes, via profileHandles + datePosted
isTrending / hasLyricsseemuapps yesYes, when Instagram sends them
Permanent audio fileseemuapps downloadUrlOptional saveAudio → audioKvStoreUrl
30s previewseemuapps previewUrlpreviewUrl from Instagram's web 30s clip
Search terms, URLs, ids, and profiles in one runNoYes

The post-to-sound direction is the one a keyword search cannot serve. A reel using a creator's own recording has no catalogue entry, so no amount of searching will ever find it — reading it off the post is the only route.

Notes & Limitations

  • totalReelsUsingSound is null on search / post / profile rows unless includeReelsUsingSound is on. The count comes back on the reels route. Track-id lookups already hit that route, so they fill the count even with expansion off.
  • audioDownloadUrl, coverArtworkUrl and videoUrl are Instagram CDN links and expire. Turn on saveAudio to keep a copy in the run's key-value store (audioKvStoreUrl).
  • Original audio is identified by the creator who recorded it. It has no catalogue search entry, so queries will not find it. Use postUrls, profileHandles, or the audio page id in trackIds.
  • datePosted cannot filter catalogue search results — those rows have no post date.
  • This actor does not transcribe speech and does not download video for you. It returns URLs.

FAQ

Can I find which sound a specific reel uses?

Yes — that is what postUrls is for. Creator original audio also comes back from profileHandles and from trackIds when you already have the audio page id.

Can I start from a profile instead of a reel URL?

Yes. Pass handles in profileHandles (nasa, @nasa, or a profile URL). Pair with datePosted and maxReelsPerProfile so you only inspect recent Reels. Private accounts come back as profile_unavailable and are not billed.

What is a track id?

The number in instagram.com/reels/audio/<id>/, or that URL itself in trackIds or postUrls. This actor also emits it as trackId, so you can feed one run's output into the next. Catalogue tracks and creator original audio both resolve.

Does it download the audio file?

By default it returns audioDownloadUrl, an Instagram CDN link that expires. Set saveAudio: true to copy the file into this run's key-value store and get audioKvStoreUrl.

Why is totalReelsUsingSound empty?

Expansion was off, and the row did not come from a track-id lookup. Instagram returns that count on the reels route.

Does it transcribe the audio?

No. This actor names and measures sounds. For speech-to-text on a reel, use Instagram Transcript Scraper.

Do I need to log in or provide cookies?

No. It never asks for a login, password, or session.

Can I scrape private posts or profiles?

No. Private, deleted, and age-restricted content comes back as an error row and is not charged.

Can I mix search terms, URLs, ids, and profiles?

Yes. All four inputs can share one run. Each row is tagged with the source that produced it.

Support

Found a bug or need a field added? Open an issue on the Actor's Issues tab or email muhamed.didovic@gmail.com.

Additional Services

Need a custom export shape, a scheduled sound-watch, or a field this actor does not emit? I do tailored work — muhamed.didovic@gmail.com.

Explore More Scrapers

Full list at apify.com/memo23.

🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the Apify MCP server or the Apify API (actor: memo23/instagram-audio-scraper).

Purpose: Resolve Instagram sounds from search terms, reel/post URLs, audio ids, or public profiles. Returns catalogue metadata, original-audio flags, download URLs, and optional reels using each sound.

Minimal input (tested):

{ "queries": ["lofi"], "maxSoundsPerQuery": 5 }

Output: rows discriminated by rowType — sound, post-sound, reel. Sound fields: trackId, audioClusterId, title, artist, durationMs, isExplicit, isOriginalAudio, hasLyrics, isTrending, trendRank, coverArtworkUrl, audioDownloadUrl, previewUrl, audioKvStoreUrl, totalReelsUsingSound. Post-sound adds postUrl, postShortCode, postAuthor, takenAt. Reel fields: reelId, reelUrl, reelCaption, playCount, likeCount, commentCount, videoUrl, creatorUsername, creatorFullName, creatorIsVerified, soundTrackId, soundTitle. Failures: { source, error, message, errorKind }.

Behaviors an agent should know:

  • At least one of queries, postUrls, trackIds, profileHandles is required.
  • Branch on rowType before reading fields. Check error before treating a row as a sound.
  • totalReelsUsingSound is null on search/post/profile unless includeReelsUsingSound is true. Track-id lookups fill it without expansion.
  • Media and audio URLs expire. Set saveAudio: true for a permanent audioKvStoreUrl.
  • Billing: sound $0.004 / reel $0.0015 (Diamond $0.0028 / $0.001) plus apify-actor-start $0.005 per GB. Error rows are never charged. Bound spend with maxSoundsPerQuery, maxReelsPerSound, maxReelsPerProfile, and the run max-cost setting.
  • This actor does not transcribe audio.

⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Instagram, Inc., Meta Platforms, Inc., or any of their subsidiaries. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available Instagram pages — no authenticated endpoints, paid features, or content behind a login wall. Audio files remain the property of their rights holders; returning a URL is not a licence to reuse the recording. Users are responsible for ensuring their use complies with Instagram's Terms of Use, applicable data-protection law (GDPR, CCPA, etc.), copyright law, and any contractual obligations of their own organization.

SEO Keywords

instagram audio scraper, instagram sound scraper, instagram music scraper, scrape instagram audio, what sound does this reel use, instagram trending sounds, instagram reel audio finder, instagram original audio, instagram sound analytics, reels using a sound, instagram audio download url, instagram audio id lookup, instagram profile sounds, instagram music catalogue, Apify instagram audio, reel sound identifier, instagram audio API, trending reel music