# Instagram Audio Scraper & API: Reels Using a Sound (`s_actors/instagram-audio-scraper`) Actor

Get the Reels using any Instagram sound or song by audio link, ID or Reel link: plays, likes, comments, date, creator, MP4 link, plus the exact Reels count, growth per day and Spotify link. Date and plays filters, only-new monitoring. No login.

- **URL**: https://apify.com/s_actors/instagram-audio-scraper.md
- **Developed by:** [Superior Actors](https://apify.com/s_actors) (community)
- **Categories:** Social media, Marketing, Videos
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.99 / 1,000 reel using the sounds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### Instagram Audio Scraper

Get **the Reels using any Instagram sound**, song or original audio: plays, likes, comments, posting time, caption, creator and the MP4 link of every Reel, plus one row for the sound itself with **Instagram's exact Reels count, its growth per day**, artist, duration, cover, audio file and **Spotify link**.

```json
{ "audios": ["https://www.instagram.com/reels/audio/1584203999231664/"], "maxReelsPerAudio": 50 }
```

No Instagram login, no cookies, no browser. Paste an audio page link, an audio ID or simply **the link of a Reel**: the Actor finds the sound that Reel uses and returns the other Reels using it. Use it as an **Instagram audio API** for music marketing, campaign tracking, trend research and creator scouting.

#### What you get

Real example, 19 October 2026. The sound rows:

| sound | artist | Reels in all | median plays of top Reels | Spotify |
|---|---|---|---|---|
| Believer | Imagine Dragons | 1,802,101 | 54,554 | open.spotify.com/track/0pqnGHJpmpxLKifKRmU6WP |
| Don't Stop Me Now | Queen | 2,645 | 3,187 | open.spotify.com/track/1NHWG8zxSEypSRF3UufrnO |

And the Reels using them, in Instagram's own order:

| sound | rank | posted | plays | likes | comments |
|---|---|---|---|---|---|
| Believer | 1 | 2026-09-26 | 135,271 | 6,130 | 38 |
| Believer | 2 | 2026-09-20 | 184,767 | 4,269 | 43 |
| Believer | 3 | 2026-10-14 | 3,462 | 203 | 52 |
| Don't Stop Me Now | 1 | 2026-10-10 | 31,132 | 429 | 32 |
| Don't Stop Me Now | 2 | 2026-10-04 | 3,187 | 142 | 102 |

Sound row (`rowType: "sound"`), one per sound:

| Field | Example | What it is |
|---|---|---|
| `audioId`, `audioUrl` | 579408562507956, instagram.com/reels/audio/579408562507956/ | the sound and its Instagram page |
| `soundTitle`, `soundArtist`, `artistUsername` | Believer, Imagine Dragons, imaginedragons | for original audio: "Original audio" and its creator |
| `isOriginalAudio` | false | a creator's own recording (true) or a licensed song (false) |
| `reelsCount`, `reelsCountText` | 1,802,101, "1.8M reels" | Instagram's exact count of Reels using the sound |
| `reelsGrowthPerDay`, `reelsCountChange`, `reelsCountBefore`, `reelsCountBeforeAt` | | new Reels per day, compared with the count seen about a day earlier (any user's run of this Actor) |
| `reelsRead`, `reelsReturned`, `medianPlays`, `maxPlays` | 24, 15, 3,187, 442,464 | Reels Instagram showed, Reels returned after filters, plays of the Reels read |
| `durationSeconds`, `isExplicit`, `hasLyrics` | 204.3, false, false | |
| `spotifyTrackId`, `spotifyUrl` | 0pqnGHJpmpxLKifKRmU6WP | the song on Spotify |
| `coverUrl`, `audioFileUrl` | scontent…cdninstagram.com/… | cover art and the audio file (Instagram links expire after a few days) |
| `previousRunAt` | | your previous run with this sound and monitor name |

Reel row (`rowType: "reel"`), one per Reel:

| Field | Example | What it is |
|---|---|---|
| `audioId`, `soundTitle`, `soundArtist` | 579408562507956, Believer, Imagine Dragons | the sound it uses |
| `rank` | 1 | position on the sound's page in Instagram (top Reels first) |
| `reelUrl`, `shortcode`, `reelId` | instagram.com/reel/DduwywOxnDp/ | the Reel |
| `postedAt` | 2026-09-26T00:37:10Z | posting time (UTC) |
| `plays`, `likes`, `comments` | 135,271, 6,130, 38 | exact counts, as in the app (`likes` is empty when the author hides them) |
| `caption`, `hashtags`, `mentions` | "No attitude, just standards ❤️🫰🏼", \[], \[] | caption text, its hashtags and @mentions |
| `durationSeconds`, `videoUrl`, `coverUrl` | scontent…cdninstagram.com/….mp4 | the MP4 file and the cover image |
| `ownerUsername`, `ownerFullName`, `ownerId`, `ownerVerified` | | the creator |
| `coauthors`, `taggedUsers`, `locationName`, `isPaidPartnership` | | collaborators, tagged accounts, location, "Paid partnership" label |
| `source` | https://www.instagram.com/reels/audio/579408562507956/ | the line of your input |

The **Reels using the sound** view of the dataset shows the Reels table; **Sounds** shows the counts and growth. Export to Excel, CSV, JSON or Google Sheets.

#### How to use it

1. Add sounds, one per line: an audio page link (`https://www.instagram.com/reels/audio/1584203999231664/`), an audio ID (`1584203999231664`) or the link of a Reel that uses the sound (`https://www.instagram.com/reel/DeAVuphM4C-/`).
2. Set **Max Reels per sound** (Instagram shows about 200 Reels per sound; 0 = only the sound row).
3. Optional filters: **Posted after** (a date like `2026-10-01` or a period like `7 days`) and **Minimum plays**. Reels that do not pass are free.
4. Run, then open the dataset or call it from the API.

#### Which Reels Instagram shows

The sound page in the Instagram app lists the top Reels using the sound from about the last month, not all of them: about 190-240 Reels for a popular song, fewer for a small original sound. The Actor returns the same list, in the same order (`rank`), and the exact total in `reelsCount`. Run it daily to collect new Reels as they appear.

#### Why this Actor

| | This Actor | Typical Instagram audio scrapers |
|---|---|---|
| Login, cookies | none | some need your session |
| Input | audio link, audio ID or any Reel's link | often an audio ID only |
| Sound data | exact Reels count, **growth per day**, Spotify link, artist, cover, audio file | count only, or a separate paid add-on |
| Reels | plays, likes, comments, date, caption, creator, MP4, rank | similar |
| Monitoring | only-new mode + daily growth for scheduled runs | no |
| Price | Reel $1.49, sound $3.99 per 1,000 (lower on paid plans) | $1.50-10 per 1,000 rows, sometimes + start fees |

#### Track a sound or a campaign song

Save your input as a task, schedule it every day and turn on **Only new Reels since the previous run**: each run returns the sound row (Reels count and new Reels per day) and only the Reels you have not received yet. Set **Max Reels per sound** to 0 to track only the counts of many sounds cheaply. Send the rows to Google Sheets, Slack, email or a webhook with an Apify integration.

#### Pricing

Pay per result, no subscription:

| Event | Free | Starter | Scale | Business | When |
|---|---|---|---|---|---|
| Reel using the sound | $1.49 | $1.39 | $1.19 | $0.99 | per 1,000 Reels in the results |
| Sound | $3.99 | $3.59 | $3.19 | $2.79 | per 1,000 sound rows (one per sound and run) |
| Run start | $0.001 | $0.001 | $0.001 | $0.001 | per run |

Examples on Starter: 50 Reels of one sound = **$0.07**; 200 Reels of each of 10 sounds ≈ **$2.82**; a daily count of 20 sounds without Reels ≈ $2.20 a month. Sounds that are not found, posts without a sound and filtered-out Reels are free.

#### FAQ

**Do I need an Instagram account?** No. The Actor reads the public sound page the way a logged-out visitor sees it.

**Songs and original audio?** Both. An original audio's artist is the creator who recorded it.

**Why fewer Reels than `reelsCount`?** Instagram shows only the top Reels of about the last month on a sound's page (see above). `reelsCount` is the exact total.

**Where does the growth per day come from?** Every run stores the sound's Reels count; the next run (yours or another user's, at least 6 hours later) compares with the count closest to a day earlier. The first time anyone checks a sound, the growth columns are empty.

**Can I search sounds by name?** Not in this Actor: Instagram's sound search needs a login. For the sounds trending right now, use [Instagram Trending Audio](https://apify.com/s_actors/instagram-trending-audio), then pass their IDs here.

**Can I download the videos or the audio?** Each Reel row has `videoUrl` (MP4) and each sound row `audioFileUrl`. Instagram's links expire after a few days, so download them soon after the run.

#### Use with the API and AI agents

Run it from your code or an AI agent with the Apify API, the Apify MCP server or the Python and JavaScript clients; read the results from the dataset (`?view=reels` or `?view=sounds`).

#### Other social media tools

| Tool | What it does |
|---|---|
| [Instagram Trending Audio](https://apify.com/s_actors/instagram-trending-audio) | Reels sounds trending right now in any country, with Reels counts and daily growth |
| [Instagram Post Scraper](https://apify.com/s_actors/instagram-post-scraper) | Any post, Reel or carousel by link with the exact posting time, likes, comments and plays |
| [TikTok Trending Sounds & Songs Scraper](https://apify.com/s_actors/tiktok-trending-sounds-scraper) | The sounds trending on TikTok in any country |

#### Is it legal?

The Actor reads only public Reels and sound pages that Instagram shows to any visitor, without logging in. Songs and videos belong to their owners: use the data for research and analysis, and handle personal data such as usernames in line with GDPR and other privacy laws.

# Actor input Schema

## `audios` (type: `array`):

Audio page links (https://www.instagram.com/reels/audio/1584203999231664/), audio IDs (1584203999231664) or links of Reels that use the sound (https://www.instagram.com/reel/DeAVuphM4C-/), one per line. Songs and original audio both work.

## `maxReelsPerAudio` (type: `integer`):

How many Reels of each sound to return, in Instagram's own order (top Reels first). Instagram shows about 200 Reels per sound, from the last month. 0 = only the sound row (title, artist, Reels count, growth).

## `postedAfter` (type: `string`):

Only Reels posted after this date (2026-10-01) or within this period (24 hours, 7 days, 2 weeks).

## `minPlays` (type: `integer`):

Only Reels played at least this many times. Empty = every Reel.

## `onlyNew` (type: `boolean`):

Return only Reels not returned by your earlier runs with the same monitor name. The first run returns everything and remembers it. The sound row is returned every run.

## `monitorName` (type: `string`):

Separate memory for separate schedules (for example 'campaign' and 'competitors'). Empty = default.

## `maxConcurrency` (type: `integer`):

How many sounds are read in parallel.

## `debugLog` (type: `boolean`):

Log every retried request.

## Actor input object example

```json
{
  "audios": [
    "https://www.instagram.com/reels/audio/1584203999231664/"
  ],
  "maxReelsPerAudio": 50,
  "onlyNew": false,
  "maxConcurrency": 5,
  "debugLog": false
}
```

# Actor output Schema

## `reels` (type: `string`):

One row per Reel (the sound rows show the sound only).

## `sounds` (type: `string`):

One row per sound: Reels count, growth per day, Spotify (Reel rows show the sound name).

## `all` (type: `string`):

Every field of every row.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "audios": [
        "https://www.instagram.com/reels/audio/1584203999231664/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("s_actors/instagram-audio-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "audios": ["https://www.instagram.com/reels/audio/1584203999231664/"] }

# Run the Actor and wait for it to finish
run = client.actor("s_actors/instagram-audio-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "audios": [
    "https://www.instagram.com/reels/audio/1584203999231664/"
  ]
}' |
apify call s_actors/instagram-audio-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,s_actors/instagram-audio-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/aJHBIqBfa6vQLny6K/builds/2uSbVkTLf4xKn0ZqN/openapi.json
