# TikTok Sound & Music Tracker - Videos, Creators & Trends (`scraping_solutions/tiktok-sound-music-tracker-videos-creators-trends`) Actor

Track TikTok sounds and songs, discover videos and creators using each audio, filter performance metrics, compare engagement, and export structured results without cookies.

- **URL**: https://apify.com/scraping\_solutions/tiktok-sound-music-tracker-videos-creators-trends.md
- **Developed by:** [Scraping Solutions](https://apify.com/scraping_solutions) (community)
- **Categories:** Lead generation, Social media, Videos
- **Stats:** 5 total users, 4 monthly users, 99.8% runs succeeded, 1 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.26 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## TikTok Sound & Music Tracker

Turn any TikTok sound or video into a structured music-intelligence dataset. Discover which videos and creators use a sound, compare engagement, identify commercial or original audio, and export the results to Excel, CSV, JSON, or an API.

No TikTok login, cookies, or browser automation required.

### What this Actor does

- Accepts TikTok sound URLs, numeric music IDs, and TikTok video URLs.
- Detects the sound used by every seed video automatically.
- Collects videos currently using each sound.
- Returns views, likes, comments, shares, saves, creators, dates, and links.
- Calculates engagement rate for every video.
- Produces an unbilled summary for each sound with sample totals and averages.
- Filters by engagement and publication date.
- Can keep one video per creator for influencer and UGC discovery.
- Streams results to the dataset while the run is still active.

### Why use it

Finding a sound on TikTok is easy. Deciding whether it is useful for a campaign is harder. This Actor connects the music to the videos, creators, reach, and engagement behind it, so teams can:

- validate a sound before using it in a campaign;
- discover creators already participating in a trend;
- compare several sounds with the same metrics;
- monitor branded or original sounds;
- research UGC, competitors, and music adoption;
- build repeatable reports in Sheets, Make, Zapier, or a data warehouse.

### Quick start

Paste a TikTok video URL and the Actor will detect its sound:

```json
{
  "seedVideoUrls": [
    "https://www.tiktok.com/@spidermanmovie/video/7671408033934707982"
  ],
  "soundUrlsOrIds": [],
  "resultsPerSound": 100,
  "uniqueCreatorsOnly": false,
  "minimumViews": 0,
  "minimumLikes": 0,
  "minimumComments": 0,
  "minimumShares": 0,
  "oldestPostDate": "",
  "newestPostDate": "",
  "maxConcurrency": 3
}
```

You can also provide sound URLs or IDs directly:

```json
{
  "soundUrlsOrIds": [
    "7671408068491578125",
    "https://www.tiktok.com/music/original-sound-7671408068491578125"
  ],
  "seedVideoUrls": [],
  "resultsPerSound": 250,
  "uniqueCreatorsOnly": true,
  "minimumViews": 10000
}
```

### Input fields

| Field | Purpose |
|---|---|
| `soundUrlsOrIds` | TikTok sound URLs or numeric music IDs. |
| `seedVideoUrls` | TikTok videos whose sounds should be detected and analyzed. |
| `resultsPerSound` | Maximum qualifying videos saved for each sound. |
| `uniqueCreatorsOnly` | Keeps one video per creator. Useful for creator discovery. |
| `minimumViews` | Excludes videos below this view count. |
| `minimumLikes` | Excludes videos below this like count. |
| `minimumComments` | Excludes videos below this comment count. |
| `minimumShares` | Excludes videos below this share count. |
| `oldestPostDate` | Inclusive lower date boundary in `YYYY-MM-DD`. |
| `newestPostDate` | Inclusive upper date boundary in `YYYY-MM-DD`. |
| `maxConcurrency` | Number of sounds processed simultaneously, from 1 to 5. |

### Output

The default dataset contains only billable TikTok video results.

#### Video rows

Each `video` row includes:

```json
{
  "recordType": "video",
  "musicId": "7671408068491578125",
  "musicTitle": "original sound - Spider-Man Movie",
  "musicAuthor": "Spider-Man Movie",
  "musicUrl": "https://www.tiktok.com/music/original-sound-spider-man-movie-7671408068491578125",
  "isOriginalSound": true,
  "isCommercialMusic": true,
  "videoId": "7671408033934707982",
  "videoUrl": "https://www.tiktok.com/@spidermanmovie/video/7671408033934707982",
  "description": "Zendaya could fix him.",
  "publishedAt": "2026-08-08T16:00:00Z",
  "viewCount": 541200,
  "likeCount": 23200,
  "commentCount": 2442,
  "shareCount": 206,
  "saveCount": 1171,
  "engagementRate": 4.9928,
  "creatorUsername": "spidermanmovie",
  "creatorFollowerCount": 8800000,
  "creatorVerified": true
}
```

#### Sound summaries

The `SOUND_SUMMARIES` record in the run's default key-value store provides an unbilled performance snapshot for every sound:

```json
{
  "recordType": "sound_summary",
  "musicId": "7671408068491578125",
  "musicTitle": "original sound - Spider-Man Movie",
  "videosScanned": 200,
  "videosSaved": 100,
  "uniqueCreatorsInSample": 96,
  "totalViewsInSample": 12500000,
  "averageViewsInSample": 125000,
  "totalEngagementsInSample": 850000,
  "averageEngagementRate": 6.8
}
```

Use the **Videos using each sound** dataset view for individual posts and the **Sound performance summaries** output link to compare sounds.

### Search depth and filters

`resultsPerSound` controls how many qualifying videos you want. Filters can discard downloaded records, so the Actor automatically examines up to three times the requested amount to find matching videos. This search depth is managed internally and requires no additional configuration.

The value is a maximum, not a guaranteed number. If TikTok marks the sound feed as complete after two public videos, the Actor returns those two videos and the separate sound summary instead of duplicating records or inventing additional results.

Example: requesting 100 results lets the Actor inspect up to 300 videos to find 100 that satisfy your filters. TikTok may expose fewer videos than requested, and deleted, private, duplicated, or unavailable content is not returned.

### Cost control

The Actor checks the maximum run charge configured in Apify before publishing paid results. It stops before intentionally exceeding the available result-event budget. Automatic filtering can examine additional videos, but customers are charged only for video results stored in the default dataset. Sound summaries are stored separately and are not charged as results.

Recommended pay-per-event configuration:

| Event name | Suggested public price | Charged when |
|---|---:|---|
| `apify-default-dataset-item` | `$0.0003` | A qualifying TikTok video is successfully stored in the default dataset. Apify charges this event automatically. |

This equals `$0.30` per 1,000 delivered video results. No separate sound-query or filtering event is required.

### Automation

Schedule a task daily or weekly and connect its dataset to:

- Google Sheets for a music trend watchlist;
- Make or Zapier for alerts;
- BigQuery, Snowflake, or a database for historical comparisons;
- the Apify API for an application or dashboard.

For recurring tracking, use the same task and compare snapshots by `musicId` and `scrapedAt` in your destination.

### FAQ

#### Does it require TikTok cookies or an account?

No.

#### Can I start from a regular TikTok video?

Yes. Add the video to `seedVideoUrls`; the Actor resolves its sound automatically.

#### Does it return every TikTok video using a sound?

It returns the videos currently exposed through the available sound feed, up to your limits. TikTok can limit, reorder, or temporarily omit content.

#### Is the data live?

Metrics represent the values available at run time. Counts can change after the run.

#### Can I analyze several sounds together?

Yes. Add multiple sound URLs/IDs and seed videos. Duplicate sound IDs are analyzed once.

### Responsible use

Use public data responsibly and follow applicable laws, TikTok's terms, and privacy requirements. Do not use the output for unlawful profiling, harassment, or spam.

# Actor input Schema

## `soundUrlsOrIds` (type: `array`):

TikTok music/sound URLs or numeric music IDs. Add one per line.

## `seedVideoUrls` (type: `array`):

Paste video URLs and the Actor will detect and analyze the sound used by each video.

## `resultsPerSound` (type: `integer`):

Maximum number of qualifying videos saved for each sound.

## `uniqueCreatorsOnly` (type: `boolean`):

Keep only one qualifying video from each creator to discover a broader set of accounts.

## `minimumViews` (type: `integer`):

Save only videos with at least this many views. Use 0 to disable this filter.

## `minimumLikes` (type: `integer`):

Save only videos with at least this many likes. Use 0 to disable this filter.

## `minimumComments` (type: `integer`):

Save only videos with at least this many comments. Use 0 to disable this filter.

## `minimumShares` (type: `integer`):

Save only videos with at least this many shares. Use 0 to disable this filter.

## `oldestPostDate` (type: `string`):

Optional inclusive date in YYYY-MM-DD format.

## `newestPostDate` (type: `string`):

Optional inclusive date in YYYY-MM-DD format.

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

Maximum number of sounds processed simultaneously. Lower this value if the upstream service is temporarily limiting requests.

## Actor input object example

```json
{
  "soundUrlsOrIds": [],
  "seedVideoUrls": [
    "https://www.tiktok.com/@spidermanmovie/video/7671408033934707982"
  ],
  "resultsPerSound": 100,
  "uniqueCreatorsOnly": false,
  "minimumViews": 0,
  "minimumLikes": 0,
  "minimumComments": 0,
  "minimumShares": 0,
  "oldestPostDate": "",
  "newestPostDate": "",
  "maxConcurrency": 3
}
```

# Actor output Schema

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

All paid TikTok video results stored in the default dataset.

## `videos` (type: `string`):

Dataset view with TikTok videos, creators, engagement metrics, and sound information.

## `soundSummaries` (type: `string`):

Unbilled JSON summaries for comparing the reach, creators, and engagement of each analyzed sound.

# 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("scraping_solutions/tiktok-sound-music-tracker-videos-creators-trends").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("scraping_solutions/tiktok-sound-music-tracker-videos-creators-trends").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 scraping_solutions/tiktok-sound-music-tracker-videos-creators-trends --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scraping_solutions/tiktok-sound-music-tracker-videos-creators-trends"
        }
    }
}

```

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/YWyJKKMjSdoiua6Ok/builds/w9536jb9aPcQxNIqj/openapi.json
