# Instagram Reels Audio Tracker - Sound Usage Counts & History (`trendingtiktoksongs/instagram-audio-history`) Actor

Track Reel usage counts for a set of Instagram sounds, both catalogue music and original audio. Export dated counts, 1-day and 7-day growth and history as JSON or CSV. Reads a shared archive, so no Instagram login, cookies or proxies. Not a complete Instagram trends chart.

- **URL**: https://apify.com/trendingtiktoksongs/instagram-audio-history.md
- **Developed by:** [Trending TikTok Data](https://apify.com/trendingtiktoksongs) (community)
- **Categories:** Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 sound observations

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

Find tracked Instagram sounds gaining Reel usage, compare their daily and weekly changes, and export recorded counts for your dashboard or research. Covers catalogue music and original audio.

Run a ten-row sample without entering sound IDs or an Instagram login. Each result is one sound on one UTC observation date. The Actor reads a shared archive; your input selects existing observations.

### See the Instagram audio data

Actual rows from an export on October 22, 2026, including growing sounds, a decline and a missing weekly baseline:

| Sound | Artist / creator | Reel count | 1-day change | 7-day change | Observation date |
| --- | --- | ---: | ---: | ---: | --- |
| I Know What You Want x Madison Calley | madisoncalley | 12,850,758 | +20,758 | +142,035 | 2026-10-22 |
| Original audio | suza.xuk | 89,127 | +14,981 | +76,078 | 2026-10-22 |
| Gifts to your future self | adam.dodson | 2,873,609 | +2,956 | +26,917 | 2026-10-22 |
| Find Your Lane | Otis McDonald | 6,497 | 0 | -8 | 2026-10-22 |
| Attention! | Giulio Cercato | 91,098 | +1,030 | — | 2026-10-22 |

A dash means the exact baseline is missing; it is not zero. These are dated examples, not live rankings. [Download the five-row JSON sample](https://api.apify.com/v2/key-value-stores/WBUYLrDiUcoo8tgRi/records/sample.json?signature=OpNehSxNWpJFLEOtjn4m) or [CSV sample](https://api.apify.com/v2/key-value-stores/WBUYLrDiUcoo8tgRi/records/sample.csv?signature=wrg36OlnqtA6DrBcec1h) without signing in.

One complete JSON result from that same export:

```json
{
  "audio_id": "3132622323696161",
  "audio_url": "https://www.instagram.com/reels/audio/3132622323696161/",
  "title": "I Know What You Want x Madison Calley",
  "artist": "madisoncalley",
  "kind": "original",
  "observation_date": "2026-10-22",
  "observed_at": "2026-10-22T08:01:15.574711+00:00",
  "reel_count": 12850758,
  "growth_1d": 20758,
  "growth_1d_percent": 0.161793,
  "growth_7d": 142035,
  "growth_7d_percent": 1.117618,
  "country": null,
  "native_rank": null,
  "is_stale": false
}
```

### What you can use it for

- **Build a sound shortlist:** sort covered sounds by one-day or seven-day count change for content planning and music research.
- **Compare a covered sound over time:** export its recorded dates to see whether usage rose, fell or stayed flat. The sound must already be in the archive.
- **Feed a dashboard or report:** schedule a daily export and join dated observations in your own spreadsheet or database.

### Try a ready-to-run example

| Goal | Example | Delivered-row cost |
| --- | --- | --- |
| Check the data with ten sounds | [Try 10 Instagram audio usage counts](https://apify.com/trendingtiktoksongs/instagram-audio-history/examples/instagram-audio-counts-sample) | Up to $0.03005 |
| Shortlist sounds by weekly change | [Find Instagram sounds gaining Reel usage](https://apify.com/trendingtiktoksongs/instagram-audio-history/examples/instagram-audio-weekly-growth) | Up to $0.06005 for 20 rows |
| Export recorded observations | [Instagram audio usage history](https://apify.com/trendingtiktoksongs/instagram-audio-history/examples/instagram-audio-history-export) | Up to $1.50005 for 500 rows |

All examples include the $0.00005 start event at 256 MB. Fewer delivered rows cost less. The history example uses fixed dates, October 16–22, 2026; change them for another period. It returned 287 rows in our October 22 check, costing $0.86105 in result/start events.

For the small trial, click **Try for free**, keep this input and select **Start**:

```json
{ "mode": "latest", "maxRows": 10 }
```

Open the **Audio history** dataset view after the run. Download JSON or CSV, and open **Coverage and delivery** to check the observation date and any missing data. Apify credits and account terms determine whether the run uses free credits or paid balance.

### Find covered sounds gaining usage this week

```json
{ "mode": "latest", "sortBy": "growth7d", "maxRows": 20 }
```

This sorts tracked sounds by the absolute signed count change from exactly seven UTC dates earlier. Positive changes appear first, followed by flat/declining sounds; missing baselines sort last. It does not filter out declines automatically. Use `growth1d` for the daily change, or `kind: "original"` / `kind: "catalogue"` to select a sound type.

### Export a sound's recorded history

```json
{
  "mode": "history",
  "audioIds": ["3132622323696161"],
  "startDate": "2026-10-16",
  "endDate": "2026-10-22",
  "maxRows": 100
}
```

Leave `audioIds` out to export all covered sounds in the range. History supports up to 31 calendar dates per run and 500 rows across the whole export. Split a larger export into non-overlapping ranges and check truncation before treating it as complete. Unknown IDs return no matching observations; they do not create a watchlist or request collection.

### Coverage and freshness

**Snapshot on October 22, 2026:** the latest collection contained **54 sounds**; the archive held **114 distinct sound IDs and 510 observations** across October 8–22. Coverage varies by sound and date. These figures describe that snapshot and will change as collection continues.

The selected sounds come from one business account's discovery feeds. This is a bounded set, not a complete Instagram trends chart, a country ranking, or a search engine for every song. `country` and `native_rank` remain null.

Collection is scheduled daily at **10:00 Europe/Oslo**, with archive uploads checked at minute 15 of each hour. A schedule is not proof of a successful refresh. Check each row's `observation_date` and `observed_at`, plus `OUTPUT.coverage.latest_collection.completed_at` and `status`, for the latest ingested collection. A failed collection or upload can leave earlier data available. `is_stale` is true when a row was more than 48 hours old at export; it is not a guarantee that today's collection passed. Missing dates and growth baselines stay missing.

### Pricing

**$3 per 1,000 delivered sound-date rows**, plus **$0.00005 per start** at 256 MB. Platform usage is included. Ten rows cost $0.03005; twenty cost $0.06005; one hundred cost $0.30005. A daily twenty-row export for 30 days costs $1.8015 if all twenty rows are delivered each day. Apify's displayed pricing is authoritative.

Only delivered observations are result events. An empty export has zero result events, and coverage summaries are not paid dataset rows. `maxRows` caps the whole export. A lower run spending limit can stop delivery earlier; check `truncated_by_spending_limit` and `rows_written` in **Coverage and delivery**.

### Schedule daily observations for a dashboard

1. Open a latest-data example, save your own copy as an [Apify Task](https://docs.apify.com/actors/running/tasks), and run it once to check the data and cost.
2. Create an [Apify Schedule](https://docs.apify.com/actors/running/schedules) for the Task. For a daily export after the expected upload, use **10:30** with timezone **Europe/Oslo**. Leave `asOfDate` blank so the export follows the newest archived date.
3. Fetch the completed run's dataset through the Apify API, download JSON/CSV, or use an Apify integration for your destination. Check coverage before importing.

Each run creates a separate dataset. Merge observations by **`audio_id` + `observation_date`** so repeated exports do not duplicate a sound-date row. Keep actual observation dates; a run today can return an older collection. Schedule `latest` for ongoing exports; the dates in a `history` Task stay fixed until you change them. Scheduling this Actor reads the archive and does not trigger Instagram collection.

### Instagram audio history inputs

| Field | Default | Meaning |
| --- | --- | --- |
| `mode` | `latest` | Latest observed date, or `history` |
| `kind` | `all` | `all`, `catalogue`, or `original` |
| `audioIds` | All tracked IDs | Up to 50 unique string IDs |
| `asOfDate` | Latest archived date | Exact UTC date for latest mode |
| `startDate`, `endDate` | — | Required for history; up to 31 calendar dates |
| `sortBy` | `reelCount` | `reelCount`, `growth1d`, or `growth7d` |
| `maxRows` | `100` | Maximum 500 result rows |

History is ordered by date, newest first, then your chosen sort within each date. Missing growth sorts last. Latest mode returns observations from the archive's newest date; it does not quietly substitute older counts for missing sounds.

### Instagram Reels audio data fields

Each dataset row represents one sound on one UTC observation date. JSON, CSV and other standard Apify dataset exports are available.

| Field | Meaning |
| --- | --- |
| `audio_id`, `audio_url` | Exact source ID and Instagram sound-page link |
| `title`, `artist`, `kind` | Metadata from the observed sound page |
| `observation_date`, `observed_at` | UTC date and actual collection time |
| `reel_count` | Instagram-reported total Reel usage count |
| `growth_1d`, `growth_7d` | Signed count difference from that exact prior UTC date |
| `growth_1d_percent`, `growth_7d_percent` | Percentage change; null when the baseline is absent or zero |
| `is_stale` | Observation was more than 48 hours old when exported |
| `country`, `native_rank` | Null; neither is established by this archive |

### Coverage and delivery output

`OUTPUT` reports actual rows delivered, date coverage, missing IDs, stale rows, the most recently ingested collection's status and accepted/rejected counts, and truncation caused by `maxRows` or the spending limit. Check `coverage.missing_audio_ids` when filtering by ID. Older observations remain available after a source interruption; a failure with no ingested batch will not create a new collection receipt in the archive.

### Common questions

**Can I use this as an Instagram trending audio finder?** You can find which tracked sounds have gained Reel usage over one or seven days. The archive does not establish Instagram's own trending flag or a country chart, and the shortlist is limited to covered sounds.

**Are count changes new Reels or views?** `reel_count` is Instagram's reported total usage count, not views. Its change can reflect new Reels, deletion, reclassification or source correction. It is not an independently audited count of newly uploaded Reels. Signed declines are retained; missing baselines and percentages with a zero baseline remain null.

**Can I add any Instagram sound?** `audioIds` filters existing records. It does not collect an untracked sound. Check missing IDs and the dated coverage before building a workflow around a particular recording.

**Does original audio mean commercially cleared music?** No. The type is source metadata and does not establish music rights. Check the permissions for your intended use.

**Are audio downloads and example Reels included?** Results include Instagram sound-page links. Playable audio, persistent previews, example Reel scraping and TikTok/Instagram recording matches are outside this product's current scope.

### Related sound data

For Popular and Viral TikTok charts in nine countries, usage growth and recorded chart history, see our [TikTok Trending Sounds Actor](https://apify.com/trendingtiktoksongs/tiktok-trending-sounds-history).

# Actor input Schema

## `mode` (type: `string`):

Export the latest collection date or a bounded range of archived dates.

## `kind` (type: `string`):

Filter catalogue music, original audio, or both.

## `audioIds` (type: `array`):

Optional filter within the shared archive. IDs must be strings. This does not start collection for untracked sounds.

## `asOfDate` (type: `string`):

Optional UTC date (YYYY-MM-DD) for latest mode. No fallback to older observations.

## `startDate` (type: `string`):

Required in history mode, YYYY-MM-DD UTC.

## `endDate` (type: `string`):

Required in history mode; at most 31 calendar dates including both endpoints.

## `sortBy` (type: `string`):

Sort each date by Reel count or observed count change. Missing growth is listed last.

## `maxRows` (type: `integer`):

Limit delivered sound-date rows across the whole export, up to 500.

## Actor input object example

```json
{
  "mode": "latest",
  "kind": "all",
  "sortBy": "reelCount",
  "maxRows": 100
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `csv` (type: `string`):

No description

## `coverage` (type: `string`):

No description

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("trendingtiktoksongs/instagram-audio-history").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("trendingtiktoksongs/instagram-audio-history").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 '{}' |
apify call trendingtiktoksongs/instagram-audio-history --silent --output-dataset

```

## MCP server setup

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

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/ibM4LodDOae3pBqlv/builds/hIOO5osWRdlCL9egZ/openapi.json
