Build an Instagram Reels Trend Tracker with the Audio API

On Reels, audio is the trend. A sound goes from a few hundred clips to hundreds of thousands in days, and the creators who jump on it early ride a wave of free reach. For social media managers, agencies, and creator tools, knowing which audio is accelerating — before it peaks — is genuinely valuable. That's a product.

This guide shows how to build the data layer for a Reels trend tracker with the Instagram Cheapest API on RapidAPI. The key endpoint is reels_audio?audio_id=, which returns Reels using a given audio track. By snapshotting that over time, you can measure a sound's growth rate and surface rising trends. Everything runs on real-time, uncached public data at as little as $0.10 per 1,000 requests.

How trend tracking works

You can't ask the API "what's trending right now" directly — there's no global trends endpoint. Instead you track a watchlist of audio IDs and measure each one's momentum over time. The workflow:

  1. Build a seed list of audio IDs to watch.
  2. On a schedule, snapshot how many (and which) Reels use each audio with reels_audio.
  3. Compare snapshots to compute growth rate — the sounds accelerating fastest are your trends.
  4. Expand the watchlist by harvesting new audio IDs from the Reels you collect.

Step 1: Find audio IDs to seed the watchlist

Every Reel carries an audio ID in its JSON. The easiest way to seed your watchlist is to pull Reels from accounts that set trends in your niche, using user_reels, and extract the audio IDs.

import requests

API_HOST = "instagram-cheapest.p.rapidapi.com"
BASE = f"https://{API_HOST}/api/v1/instagram"
API_KEY = "YOUR_RAPIDAPI_KEY"
HEADERS = {"x-rapidapi-host": API_HOST, "x-rapidapi-key": API_KEY}

def get_user_reels(user_id, after=None):
    params = {"user_id": user_id}
    if after:
        params["after"] = after
    r = requests.get(f"{BASE}/user_reels", headers=HEADERS, params=params)
    r.raise_for_status()
    return r.json()

# Inspect the raw JSON to find the audio identifier on each reel,
# then collect the unique audio IDs into your watchlist.

The exact field path to the audio ID depends on Instagram's raw JSON, so print one Reel and locate it once. The Reels & audio tutorial covers this extraction in detail.

Step 2: Snapshot each audio's usage

For every audio ID on the watchlist, call reels_audio?audio_id= and record how many Reels come back (and their engagement). This endpoint paginates with a max_id cursor, so you can page through to count usage or just sample the first page for a velocity proxy.

def get_reels_by_audio(audio_id, max_id=None):
    params = {"audio_id": audio_id}
    if max_id:
        params["max_id"] = max_id
    r = requests.get(f"{BASE}/reels_audio", headers=HEADERS, params=params)
    r.raise_for_status()
    return r.json()

def snapshot_audio(audio_id, max_pages=3):
    count, total_plays, max_id = 0, 0, None
    for _ in range(max_pages):
        data = get_reels_by_audio(audio_id, max_id)
        items = data.get("items", [])  # confirm key from raw JSON
        count += len(items)
        for reel in items:
            total_plays += reel.get("play_count", 0)
        max_id = data.get("max_id") or data.get("next_max_id")
        if not max_id or not items:
            break
    return {"audio_id": audio_id, "reels_sampled": count, "total_plays": total_plays}

Store one row per (audio_id, snapshot_date). The absolute count matters less than how it changes between snapshots.

Step 3: Compute momentum and rank trends

A trend is a sound whose usage is growing. Compare today's snapshot to a previous one and rank by growth rate:

def momentum(today, prior):
    """today, prior: dicts keyed by audio_id -> reels_sampled."""
    trends = []
    for audio_id, now in today.items():
        before = prior.get(audio_id, 0)
        if before == 0:
            growth = float("inf") if now > 0 else 0  # brand-new sound
        else:
            growth = (now - before) / before
        trends.append({"audio_id": audio_id, "now": now,
                       "before": before, "growth": growth})
    # Rising fastest first
    return sorted(trends, key=lambda t: t["growth"], reverse=True)

# rising = momentum(today_counts, last_week_counts)
# Alert on the top N where growth is high AND the absolute count is meaningful.

Filter out noise by requiring both a high growth rate and a minimum absolute usage — a sound going from 2 to 8 clips is +300% but not a trend. Send the top movers to Slack or a dashboard and your team gets early-trend alerts.

Step 4: Grow the watchlist automatically

Each Reel you collect in Step 2 carries its own audio ID and creator. Feed new audio IDs back into the watchlist and pull fresh Reels from creators who consistently catch trends early. Over time the tracker discovers rising sounds on its own instead of relying only on your seed list.

What you can build on top

What does it cost?

Tracking 200 audio IDs daily at ~2 pages each ≈ 200 × 2 × 30 = 12,000 requests/month — well inside the Pro tier. Add the Reels you pull to refresh the watchlist and you're still in single-digit dollars.

Because trend tracking can fetch many pages, lean on the optional fields parameter to return only the audio ID, play count, and timestamp you actually store — that keeps you inside the 10 GB/month bandwidth allowance.

A note on scope

This tracker measures momentum across a watchlist you maintain; there's no global "trending sounds" feed in the API, so the quality of your trends depends on how well your seed list and auto-expansion cover your niche. It's real-time data, not low-latency — design it as a scheduled job that fills a database the dashboard reads from.

Compliance and responsible use

This API returns public Instagram data only. You are responsible for complying with Instagram's terms of service and applicable privacy laws (GDPR, CCPA). The API is not affiliated with or endorsed by Meta or Instagram.

Conclusion

Trend tracking on Reels comes down to one repeated measurement: how fast is each sound being adopted? With reels_audio to count usage and user_reels to discover new audio IDs, you can build a tracker that surfaces rising trends days before they peak — and at $0.10–$0.13 per 1,000 requests, running it across hundreds of sounds daily costs only a few dollars a month.

Get started on RapidAPI →

Compliance note: this API returns public Instagram data only. You are responsible for complying with Instagram's terms and applicable privacy law (GDPR/CCPA). Not affiliated with or endorsed by Meta/Instagram.

Start Building Today

Get 30 free requests per month on the Basic plan. No commitment required.

Get Started on RapidAPI