# TikTok & Instagram Reels Trends Scraper - Viral Videos (`seemuapps/tiktok-instagram-trends-scraper`) Actor

Get today's trending TikTok videos by country, popular TikTok creators and trending Instagram Reels with views, likes, audio, hashtags and a daily trend rank.

- **URL**: https://apify.com/seemuapps/tiktok-instagram-trends-scraper.md
- **Developed by:** [Seemu Scraping](https://apify.com/seemuapps) (community)
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 trend results

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

## TikTok & Instagram Reels Trends Scraper - Viral Videos

See what's trending on TikTok and Instagram Reels right now. Get the trending TikTok feed for any country, trending Instagram Reels and popular TikTok creators in one dataset, with views, likes, comments, shares, audio, hashtags and a trend rank. No login, cookies or accounts needed.

Built for marketers, social media managers and creators who want a daily snapshot of what's going viral, ready to export to Google Sheets, Excel or CSV.

| Source | You choose | You get |
|--------|------------|---------|
| **Trending TikTok videos** | One or more countries (US, GB, JP, BR, DE, ...) | The videos TikTok is pushing on the trending feed in each country, ranked |
| **Trending Instagram Reels** | How many Reels you want | The Reels trending on Instagram's Reels feed, ranked |
| **Popular TikTok creators** | Creator country, audience country, follower range, sort order | Rising and popular creators with followers, total likes and their top videos |

### What you get

Every row has the **same columns**, whatever the platform, so a mixed run exports cleanly to one spreadsheet:

- **Trend context**: `platform` (tiktok / instagram), `source`, `region` (the country feed), `trendRank` (1 = first trending item found in that feed) and `scrapedAt` (the same timestamp for every row of a run, so you can compare runs day by day)
- **The post**: `url`, `id`, `caption`, `hashtags`, `contentType` (video or photo carousel), `postedAt`, `durationSeconds`, `coverUrl`, `videoUrl`
- **Engagement**: `views`, `likes`, `comments`, `shares`, `saves`
- **Audio / sound**: `audioTitle`, `audioAuthor`, `audioId`, `audioIsOriginal` (original sound vs. licensed track)
- **Creator**: `authorUsername`, `authorName`, `authorId`, `authorUrl`, `authorAvatarUrl`, plus `authorFollowers` and `authorTotalLikes` for creator rows
- **Origin**: `contentCountry`, the country the TikTok creator is registered in
- **Popular creators** also get `topVideos`: their best recent videos with URL, views, likes and post date

What each platform shows publicly differs. TikTok rows include views, shares, saves, duration and audio. Instagram's trending Reels feed shows likes and comments; views and audio are filled when Instagram exposes them and left empty otherwise.

### Use cases

- **Trend research and content ideas**: see which formats, hooks and topics are blowing up today, then make your own version while it's still hot
- **Trending sounds and hashtags**: spot the audio and hashtags that keep showing up across trending videos
- **Influencer discovery**: find creators who are getting pushed by the algorithm right now, or browse popular creators by country and follower range
- **Competitor and market monitoring**: compare what's trending in the US, UK, Brazil, Japan or any other market
- **Social listening dashboards**: feed a daily trends sheet into Looker Studio, Airtable or your BI tool

### How to use

1. Under **What to collect**, pick one or more sources: trending TikTok videos, trending Instagram Reels, popular TikTok creators
2. For TikTok videos, enter the **countries** you care about as 2-letter codes (US, GB, DE, JP, BR, ...). Each country is fetched separately and gets its own ranking
3. Set **Max videos per country** and **Max Reels** (0 = keep going until the feed stops showing new items)
4. For creators, optionally filter by **creator country**, **audience country** and **follower range**
5. Click **Start**. Results appear in the **Dataset** tab, with ready-made views for TikTok videos, Reels and creators

#### Tips

- Trending feeds hand out a fresh batch on every request, and later batches repeat more and more of what you've already seen. The actor keeps asking, removes duplicates, and stops once requests stop adding new items, so you never pay for the same video twice in a run.
- A country's TikTok feed includes global hits as well as local ones. Tick **Only videos from creators in that country** to keep only local creators. You'll get fewer results, especially for the US and UK, where the feed is very international.
- Photo carousels are part of TikTok's trending feed. Untick **Include photo carousel posts** if you only want videos.

### Schedule it daily

Trends move fast. Run the actor every day and build a history of what was trending when:

1. Open the actor, set your input and click **Save as a new task**
2. Go to **Schedules** → **Create new schedule**, choose **Daily** (for example 08:00 in your time zone) and add your task
3. Each run writes a new dataset. Every row carries `scrapedAt`, `region` and `trendRank`, so you can stack daily exports in one sheet and chart how a video, sound or creator climbs and falls
4. Optional: connect the **Google Sheets** or **Slack** integration on the task to push each day's trends straight to your team

### Output example

```json
{
  "type": "video",
  "platform": "tiktok",
  "source": "tiktokVideos",
  "region": "US",
  "trendRank": 1,
  "scrapedAt": "2026-09-27T12:40:14.582Z",
  "id": "7681569939295177997",
  "url": "https://www.tiktok.com/@ichangervinylwrapfilm/video/7681569939295177997",
  "caption": "Honey Brown Vinyl Wrapping on BMW M4! #carwrapping #bmwm4",
  "hashtags": ["carwrapping", "bmwm4"],
  "contentType": "video",
  "postedAt": "2026-09-04T06:54:53.000Z",
  "durationSeconds": 7,
  "views": 6166562,
  "likes": 1140628,
  "comments": 3714,
  "shares": 102790,
  "saves": 150446,
  "authorUsername": "ichangervinylwrapfilm",
  "authorName": "Ichanger (Official)",
  "authorUrl": "https://www.tiktok.com/@ichangervinylwrapfilm",
  "audioTitle": "original sound - ichangervinylwrapfilm",
  "audioAuthor": "Ichanger (Official)",
  "audioIsOriginal": true,
  "contentCountry": "US"
}
```

```json
{
  "type": "reel",
  "platform": "instagram",
  "source": "instagramReels",
  "trendRank": 1,
  "scrapedAt": "2026-09-27T12:40:14.582Z",
  "id": "DdsNrtLod8k",
  "url": "https://www.instagram.com/reel/DdsNrtLod8k/",
  "caption": "Guess which child always does this?? Just guess.",
  "postedAt": "2026-09-25T00:53:02.000Z",
  "likes": 143398,
  "comments": 3815,
  "authorUsername": "joiechavis",
  "authorUrl": "https://www.instagram.com/joiechavis/"
}
```

### Pricing

You pay per result: one charge for each trending video, Reel or creator saved to your dataset. Duplicates are removed before they're saved, so they're never charged. TikTok videos kept by the **Only videos from creators in that country** filter are billed at a higher local-result rate, because most of the feed is filtered out. Free plan users can try up to 50 results per run.

### FAQ

**How is `trendRank` calculated?**
It's the order in which items came off the trending feed for that source and country, starting at 1. The top of the feed is what the platform is pushing hardest at that moment.

**Why does Instagram have no country setting?**
Instagram's trending Reels feed is not country-specific, so Reels come from a single global feed.

**Why are some Instagram views empty?**
Instagram doesn't always show play counts on its trending Reels feed. Likes and comments are always included.

**Can I get more than one run's worth of trends?**
Yes. Raise the limits or set them to 0. Trending feeds aren't endless, though: once they start repeating, the actor stops on its own.

# Actor input Schema

## `sources` (type: `array`):

Pick one or more trend feeds. Every row has the same columns, so a mixed run exports cleanly to CSV or Google Sheets. Use the 'source' column to split them.

## `tiktokRegions` (type: `array`):

2-letter country codes (US, GB, JP, BR, DE, ...). The feed is fetched once per country, as a viewer in that country would see it. Each country gets its own trend rank.

## `maxTiktokVideosPerRegion` (type: `integer`):

Stop after this many unique trending videos for each country. 0 = keep going until the feed stops returning new videos (bounded by the stop settings below).

## `includeTiktokPhotoPosts` (type: `boolean`):

TikTok's trending feed mixes in photo slideshows. Untick to keep only videos.

## `onlyLocalTiktokVideos` (type: `boolean`):

The feed for a country also contains global hits. Tick this to keep only videos whose creator is registered in the selected country (see the contentCountry column). Fewer results per request. Local-only videos are billed at a higher per-result rate (see the Pricing tab), because many more requests are needed per kept video.

## `maxInstagramReels` (type: `integer`):

Stop after this many unique trending Reels. Each request returns a small batch that overlaps earlier ones, so the actor keeps asking and removes duplicates. 0 = keep going until no new Reels show up.

## `maxCreators` (type: `integer`):

Stop after this many popular creators. 0 = all pages available for your filters.

## `creatorCountry` (type: `string`):

Only creators based in this country. Leave on 'Any country' for a global list.

## `audienceCountry` (type: `string`):

Only creators whose followers are mainly in this country. Useful for finding creators who reach your market.

## `creatorFollowerRange` (type: `string`):

Only creators within this follower range.

## `creatorSortBy` (type: `string`):

How popular creators are ranked.

## `stopAfterCallsWithoutNew` (type: `integer`):

Trending feeds return a fresh, overlapping batch on every request, and later requests repeat more and more earlier items. A feed stops once this many requests in a row add fewer than 5 new items.

## `maxCallsPerFeed` (type: `integer`):

Hard cap on requests for each feed (each TikTok country, the Reels feed and the creators list). Keeps runs with a 0 limit bounded.

## Actor input object example

```json
{
  "sources": [
    "tiktokVideos",
    "instagramReels"
  ],
  "tiktokRegions": [
    "US",
    "GB"
  ],
  "maxTiktokVideosPerRegion": 30,
  "includeTiktokPhotoPosts": true,
  "onlyLocalTiktokVideos": false,
  "maxInstagramReels": 30,
  "maxCreators": 50,
  "creatorCountry": "any",
  "audienceCountry": "any",
  "creatorFollowerRange": "any",
  "creatorSortBy": "engagement",
  "stopAfterCallsWithoutNew": 3,
  "maxCallsPerFeed": 25
}
```

# Actor output Schema

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

One row per trending item, same columns for every platform: type (video/reel/creator), platform, source, region, trendRank, scrapedAt, id, url, caption, hashtags, contentType, postedAt, durationSeconds, views, likes, comments, shares, saves, author fields, audio fields, coverUrl, videoUrl, contentCountry, topVideos (creators).

# 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 = {
    "sources": [
        "tiktokVideos",
        "instagramReels"
    ],
    "tiktokRegions": [
        "US",
        "GB"
    ],
    "maxTiktokVideosPerRegion": 30,
    "maxInstagramReels": 30
};

// Run the Actor and wait for it to finish
const run = await client.actor("seemuapps/tiktok-instagram-trends-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 = {
    "sources": [
        "tiktokVideos",
        "instagramReels",
    ],
    "tiktokRegions": [
        "US",
        "GB",
    ],
    "maxTiktokVideosPerRegion": 30,
    "maxInstagramReels": 30,
}

# Run the Actor and wait for it to finish
run = client.actor("seemuapps/tiktok-instagram-trends-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 '{
  "sources": [
    "tiktokVideos",
    "instagramReels"
  ],
  "tiktokRegions": [
    "US",
    "GB"
  ],
  "maxTiktokVideosPerRegion": 30,
  "maxInstagramReels": 30
}' |
apify call seemuapps/tiktok-instagram-trends-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,seemuapps/tiktok-instagram-trends-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/JhU1rXm66X18UfCDI/builds/Tn1lBwAgbnvrLs1Mb/openapi.json
