# TikTok Scraper — Videos, Profiles & Search, No Login (`yugenox/tiktok-scraper`) Actor

Scrape TikTok videos, profiles and search results — stats, author, music, hashtags. Anonymous, no account or login.

- **URL**: https://apify.com/yugenox/tiktok-scraper.md
- **Developed by:** [Yugenox Corp](https://apify.com/yugenox) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 videos

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 Scraper — Videos, Profiles, Hashtags & Search (No Login)

Scrape public TikTok data without an account, cookie, or login. Point it at **profiles**, **hashtags**, **search terms**, or specific **video URLs** — and get clean, structured JSON for every video.

### What you can scrape

- **Profiles** — a creator's recent videos (`tiktok`, `@nasa`, or a full profile URL)
- **Hashtags** — recent videos for any tag (`cooking`, `travel`, …)
- **Search** — the videos TikTok's search returns for any keyword
- **Video URLs / IDs** — exact videos you already have links to (fast, lightweight)

### Data you get per video

`id` · caption `text` · `createTimeISO` · **play / like / comment / share / save** counts · author (`name`, `nickName`, `verified`, follower count, avatar) · music (title, author, original) · `hashtags` · `mentions` · duration · cover image · `webVideoUrl`

Output matches the common TikTok-scraper schema, so it drops into existing pipelines.

### Example input

```json
{
  "profiles": ["tiktok", "nasa"],
  "hashtags": ["cooking"],
  "searchTerms": ["space"],
  "videoUrls": ["https://www.tiktok.com/@tiktok/video/7698770783367171359"],
  "resultsPerPage": 50,
  "country": "US"
}
```

### Pricing

Pay per result — **$1.50 per 1,000 videos**, plus a small per-run start fee and a small fee (~$0.12) per profile/hashtag/search source accessed (covers the real cost of loading that page, whether or not it finds results). Video URLs are pure HTTP and never incur this fee. You only pay for rows actually saved, plus the sources you asked us to check.

### Notes

- **Residential proxy is recommended** (the default) for reliable access.
- Fully anonymous — no TikTok account or login is used.
- Runs never hard-fail: if a source is temporarily unavailable, the run finishes with whatever it collected and a clear status message.

# Actor input Schema

## `profiles` (type: `array`):

TikTok usernames or profile URLs to scrape videos from. Use the @handle or the full profile link.

Examples: tiktok  ·  @nasa  ·  https://www.tiktok.com/@gordonramsayofficial

## `searchTerms` (type: `array`):

Keywords to search TikTok videos for. Returns the videos TikTok's search surfaces for each term.

## `videoUrls` (type: `array`):

Specific TikTok video links (or numeric video ids). Fast path — no browser needed. Example: https://www.tiktok.com/@tiktok/video/7698770783367171359

## `hashtags` (type: `array`):

Hashtag names (without the #). Returns recent videos for each tag.

## `resultsPerPage` (type: `integer`):

Max videos to collect per profile / search term / hashtag. (Each video URL returns one video.)

## `maxItems` (type: `integer`):

Optional hard cap on total rows across all sources. Leave empty for no overall cap.

## `country` (type: `string`):

Country for the residential proxy. TikTok content and availability can vary by country.

## `proxyConfiguration` (type: `object`):

Residential proxy strongly recommended — TikTok blocks datacenter IPs. Leave default unless you know otherwise.

## Actor input object example

```json
{
  "profiles": [
    "tiktok"
  ],
  "resultsPerPage": 50,
  "country": "US",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

No description

## `runReport` (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 = {
    "profiles": [
        "tiktok"
    ],
    "resultsPerPage": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("yugenox/tiktok-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 = {
    "profiles": ["tiktok"],
    "resultsPerPage": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("yugenox/tiktok-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 '{
  "profiles": [
    "tiktok"
  ],
  "resultsPerPage": 50
}' |
apify call yugenox/tiktok-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,yugenox/tiktok-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/8xae3BxIJnJdzrDTh/builds/2ZdmE5ufPRCLKaBhc/openapi.json
