# TikTok Trending Videos Scraper - Explore by Country, No Login (`benthepythondev/tiktok-trending-videos-scraper`) Actor

Trending TikTok videos from the Explore feed of any country and category, no login: views, likes, comments, shares, saves, engagement rate, hashtags, sound and creator with follower count, plus a free summary of the sounds and hashtags that recur. Not tied to the Creative Center.

- **URL**: https://apify.com/benthepythondev/tiktok-trending-videos-scraper.md
- **Developed by:** [Ben](https://apify.com/benthepythondev) (community)
- **Categories:** Social media, Marketing, Videos
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 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/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 Trending Videos Scraper: Explore Feed by Country (No Login)

Export the videos TikTok is pushing right now on its **Explore page**, for any country and any of its 21 categories: views, likes, comments, shares, saves, engagement rate, hashtags, the sound, and the creator with follower count. No account, no cookies, no browser. Export to JSON/CSV/Excel, run on a schedule, call via API, or connect to Make, Zapier or n8n.

**Price:** $0.80 per 1,000 videos on the Free plan, $0.75 on Bronze, $0.70 on Silver, $0.65 from Gold up, plus $0.00005 per run start. A feed TikTok does not answer costs nothing. (Until 8 November 2026 this Store slot still carries its previous price of $2.50 per 1,000 rows on Free; the new price applies automatically from that day.)

### 🔎 What is the TikTok Trending Videos Scraper?

It reads TikTok's own Explore feed, the list behind `tiktok.com/explore`, the way a visitor in the chosen country sees it. Each country is read through an address in that country, so a Japan run returns what people in Japan are shown (in our tests 97 of 120 Japanese videos had Japanese captions; a Brazil feed was mostly Portuguese).

It does **not** use TikTok's Creative Center. That matters, because Creative Center trend tools have had a hard year: visitors now get only the top 3 hashtags per country there, and its trending-videos list went empty for some Actors in August 2026.

| What users report on other trend Actors | What this Actor does |
|---|---|
| "Returns only 3 hashtags per country" | Hashtags, sounds and creators are counted from the real feed, as many as the videos you read |
| "trendType=videos returns 0 items" | Videos come from the Explore feed, not the Creative Center |
| "Video URLs missing" | Every row has the video link, built from the creator's @name and the video id |
| Run-start fees of $0.005 to $0.05 | $0.00005 per start; you pay per saved video |

#### What data does it extract?

- **Video:** link, id, caption, posting time, caption language, length, cover image, ad flag
- **Statistics:** exact views, likes, comments, shares and saves, plus an engagement rate
- **Hashtags** in the caption
- **Sound:** id, title, author, whether it is the creator's original sound, link of the sound page
- **Creator:** @name, display name, user id, secUid, verified badge, followers, total likes, number of videos
- **Context:** country, Explore category, and the position in which TikTok handed the video out

### ⬇️ Input

| Field | Type | Description |
|---|---|---|
| `countries` | array of strings | Two-letter country codes (US, GB, DE, JP, BR, ...). Default `["US"]` |
| `categories` | array of strings | Explore categories: All, Singing & Dancing, Comedy, Sports, Anime & Comics, Relationship, Shows, Lipsync, Daily Life, Beauty Care, Games, Society, Outfit, Cars, Food, Animals, Family, Drama, Fitness & Health, Education, Technology. Default `["All"]` |
| `maxVideosPerFeed` | integer | Different videos to collect per country and category, 1 to 2,000. Default 30 |

One **feed** is one country with one category, so `["US", "GB"]` with `["Comedy", "Food"]` reads four feeds.

#### Example input

```json
{
  "countries": ["US", "GB", "JP"],
  "categories": ["All", "Food"],
  "maxVideosPerFeed": 100
}
```

### ⬆️ Output

One row per video (a real row from a US run):

```json
{
  "country": "US",
  "category": "All",
  "rank": 1,
  "video_id": "7664782256527002901",
  "url": "https://www.tiktok.com/@menlegende/video/7664782256527002901",
  "description": "@Légende peyi a😂🔥 @SteveArt #menlégende #funnyvideo #talent #funnybike #fyp ",
  "created_at": "2026-07-21T01:10:01+00:00",
  "language": "un",
  "duration_secs": 12,
  "cover_url": "https://p19-common-sign.tiktokcdn-us.com/tos-ali...",
  "play_count": 127700000,
  "like_count": 4300000,
  "comment_count": 44800,
  "share_count": 336200,
  "save_count": 272990,
  "engagement_rate": 0.0367,
  "hashtags": [
    "menlégende",
    "funnyvideo",
    "talent",
    "funnybike",
    "fyp"
  ],
  "is_ad": false,
  "author_username": "menlegende",
  "author_nickname": "Menlégende😂🔥",
  "author_id": "7341753264772383749",
  "author_sec_uid": "MS4wLjABAAAAs2...",
  "author_verified": false,
  "author_followers": 1700000,
  "author_likes": 19600000,
  "author_videos": 977,
  "music_id": "7437246680426122030",
  "music_title": "original sound",
  "music_author": "daily_laugh_akrobetoo",
  "music_original": true,
  "music_url": "https://www.tiktok.com/music/sound-7437246680426122030",
  "scraped_at": "2026-10-25T21:33:36.586363+00:00"
}
```

The run's key-value store also gets a free **`TRENDS`** record: for every feed, the sounds, hashtags and creators that appear in more than one of the videos read, with how many videos and how many views they account for. Read 200 or more videos per feed for that list to say much.

### 💡 Use cases

- 🎵 **Sound and music scouting:** see which sounds keep appearing in a country's trending videos before they peak.
- 📈 **Content research:** find formats, hooks and hashtags that work in your category this week.
- 🤝 **Influencer discovery:** creators with follower counts and links, straight from the feed TikTok promotes.
- 🌍 **Market comparison:** run the same category in five countries on a schedule and compare what travels.

### 🤖 For AI agents

Copy this input; all fields are optional and no credential is needed:

```json
{"countries": ["US"], "categories": ["All"], "maxVideosPerFeed": 30}
```

### ⚠️ Limits, stated plainly

- **The feed has no end and no fixed order.** TikTok hands out about 25 new videos per request and keeps going; the `rank` is the order of this run, not an official chart. Two runs a minute apart share some videos and differ in others.
- **Duplicates across feeds are kept.** A video can trend in "All" and in "Comedy"; within one feed every video appears once.
- **Explore is not the For You feed** of a logged-in user, and it is not TikTok search. Videos are mostly from the last weeks; older viral videos also appear.
- **Cover links expire** after a few days (TikTok signs them). Video and sound links do not.
- A country is read through a residential address there. If none is available, the feed is read from the server's own address and follows that country instead.

### ❓ FAQ

**Do I need a TikTok account or cookies?** No. The Actor reads what TikTok shows any visitor.

**How fast is it?** On Apify: the default run (30 US videos) takes about 8 seconds, 900 videos from six feeds (US, GB, JP; All and Food) 48 seconds, 2,000 videos of one feed 72 seconds.

**Which countries work?** Any country where Apify has residential addresses; tested with US, JP and BR.

**How do I get more than 2,000 videos per feed?** Schedule the run (for example every hour) and merge the datasets; each run hands out new videos.

**Why is a hashtag list short?** The `TRENDS` record lists only what appears at least twice in the videos read. Read more videos per feed.

**Can I filter by views?** Not in the input; filter the dataset by `play_count` after the run.

**What is not charged?** Feeds TikTok does not answer, run time, and the `TRENDS` record.

**Is it legal?** It reads public data TikTok shows to visitors without logging in. Creator profiles are public accounts; still treat names and handles as personal data under GDPR and similar laws, use them for research or outreach that the law allows, and respect TikTok's terms and CAN-SPAM when you contact anyone.

### 🔗 You might also like

- [TikTok Creative Center Scraper](https://apify.com/benthepythondev/tiktok-creative-center-scraper): top ads and trend previews from TikTok's ad library
- [TikTok Comments Scraper](https://apify.com/benthepythondev/tiktok-comments-scraper): every comment of a trending video
- [TikTok Profile Videos Scraper](https://apify.com/benthepythondev/tiktok-profile-videos-scraper): all videos of a creator you found here
- [TikTok Transcript Scraper](https://apify.com/benthepythondev/tiktok-transcript-scraper): what is said in those videos

**Keywords:** tiktok trending videos, tiktok explore scraper, tiktok trends by country, trending tiktok sounds, tiktok viral videos api, tiktok trending hashtags, tiktok trend tracker, tiktok discover page, tiktok influencer discovery, tiktok views likes export, tiktok trending music, tiktok trends csv, tiktok explore api, tiktok market research, tiktok trending scraper no login

# Actor input Schema

## `countries` (type: `array`):

Two-letter country codes (US, GB, DE, JP, BR ...). Each country's Explore feed is read through an address in that country, so you get what TikTok shows people there. Empty: US.

## `categories` (type: `array`):

Explore categories to read for every country. Empty: All. One feed is one country and one category.

## `maxVideosPerFeed` (type: `integer`):

How many different videos to collect from each country and category. TikTok hands out about 25 new ones per request. You pay per saved video.

## Actor input object example

```json
{
  "countries": [
    "US"
  ],
  "categories": [
    "All"
  ],
  "maxVideosPerFeed": 30
}
```

# Actor output Schema

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

No description

## `trends` (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 = {
    "countries": [
        "US"
    ],
    "categories": [
        "All"
    ],
    "maxVideosPerFeed": 30
};

// Run the Actor and wait for it to finish
const run = await client.actor("benthepythondev/tiktok-trending-videos-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 = {
    "countries": ["US"],
    "categories": ["All"],
    "maxVideosPerFeed": 30,
}

# Run the Actor and wait for it to finish
run = client.actor("benthepythondev/tiktok-trending-videos-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 '{
  "countries": [
    "US"
  ],
  "categories": [
    "All"
  ],
  "maxVideosPerFeed": 30
}' |
apify call benthepythondev/tiktok-trending-videos-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,benthepythondev/tiktok-trending-videos-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/xTi66Hd6ZkCF0wIO2/builds/UKkXUul6QJBHX9ub5/openapi.json
