TikTok Video Details Scraper Low-Cost avatar

TikTok Video Details Scraper Low-Cost

Pricing

from $1.00 / 1,000 video scrapeds

Go to Apify Store
TikTok Video Details Scraper Low-Cost

TikTok Video Details Scraper Low-Cost

💸 Low-cost TikTok scraper for video analytics, hashtags, comments, and author insights. ⚡ Fast bulk extraction for creators, agencies, and SEO keyword research.

Pricing

from $1.00 / 1,000 video scrapeds

Rating

0.0

(0)

Developer

Samy

Samy

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Share

Ultra-fast, low-bandwidth TikTok scraper for video details.

This Actor extracts public TikTok video metadata from a list of video URLs (or video IDs).

What this Actor does

  • Scrapes video details from TikTok video URLs at scale
  • Outputs clean structured records to the Apify dataset

Data you get

For each video:

  • sourceUrl, canonicalUrl, videoId
  • description, createdAt
  • stats: playCount, likeCount, commentCount, shareCount
  • author: uniqueId, nickname, verified, followers, following, totalLikes, videoCount
  • music: id, title, author, duration, original
  • media: width, height, duration, ratio, cover, dynamicCover
  • scrapedAt

Input

Example input:

{
"videoUrls": [
"https://www.tiktok.com/@nba/video/7255379108241198378",
"7495918458274729246"
],
"globalConcurrency": 50,
"requestTimeoutSecs": 30,
"maxRequestRetries": 2,
"includeProfileDetails": true,
"includeComments": false,
"maxComments": 200,
"outputFormat": "nested",
"omitNullFields": true
}

Input fields

  • videoUrls (required): array of TikTok video URLs or numeric video IDs
  • globalConcurrency (optional, default 50): single global concurrency shared by videos, comments, and user-details
  • requestTimeoutSecs (optional, default 30): timeout per request
  • maxRequestRetries (optional, default 2): retries for transient failures
  • includeProfileDetails (optional, default true): enrich the author object with additional profile fields
  • includeComments (optional, default false): try to include comments for each video
  • maxComments (optional, default 200): cap comments per video when enabled
  • outputFormat (optional, default nested): nested or flat (dot-key format)
  • omitNullFields (optional, default true): remove null/empty fields in output items

Hashtags are always included (structured source + description regex fallback).

Dataset Views / Tables

In Apify console, the dataset can be explored through predefined views:

  • Videos
  • Authors
  • Music
  • Media

These are views over the same dataset, configured via .actor/dataset_schema.json and .actor/output_schema.json.

Output

Output is saved to the default Apify dataset.

Example item:

{
"sourceUrl": "https://www.tiktok.com/@nba/video/7255379108241198378",
"canonicalUrl": "https://www.tiktok.com/@nba/video/7255379108241198378",
"videoId": "7255379108241198378",
"description": "Walker was ready to fight for his 2! 😭 #NBA #NBASummerLeague #basketball #freethrow #putback #dunk",
"createdAt": "2023-07-13T18:56:35.000Z",
"stats": {
"playCount": 14900000,
"likeCount": 1200000,
"commentCount": 1480,
"shareCount": 3018
},
"author": {
"uniqueId": "nba",
"nickname": "NBA",
"verified": true,
"followers": 26000000,
"following": 269,
"totalLikes": "983400000",
"videoCount": 19500
},
"music": {
"id": "7255379083914152747",
"title": "original sound",
"author": "NBA",
"duration": null,
"original": true
},
"media": {
"width": null,
"height": null,
"duration": null,
"ratio": null,
"cover": null,
"dynamicCover": null
},
"scrapedAt": "2026-04-11T11:12:34.216Z"
}

Performance notes

  • Benchmark on a large validated set showed good throughput around globalConcurrency = 50 in this environment.

Reliability and limitations

  • This Actor is designed for public video details.
  • Some videos may fail due to regional restrictions, removed/private content, or TikTok-side response differences.
  • It does not scrape private data or authenticated-only endpoints.

Local development

bun install
bun run typecheck
bun run start

To run with local Apify input, place JSON in:

  • storage/key_value_stores/default/INPUT.json

Deploy to Apify

Project is Apify-ready:

  • apify.json
  • .actor/input_schema.json
  • Dockerfile

Build uses a small Bun image:

  • oven/bun:1.2.23-slim

API usage (Apify)

Run Actor:

curl -X POST "https://api.apify.com/v2/acts/<username>~tiktok-video-details-scraper/runs?token=<APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"videoUrls": [
"https://www.tiktok.com/@nba/video/7255379108241198378"
],
"globalConcurrency": 50
}'

Fetch dataset items:

$curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<APIFY_TOKEN>"

FAQ

Do I need a TikTok account?

No.

Do I need proxies?

Usually no, for this Actor scope (video details from provided URLs).

Does it scrape comments?

Optional comments scraping is available via includeComments.

Can I get flat output keys like authorMeta.avatar?

Yes. Set outputFormat to flat.

Can I pass video IDs only?

Yes. Numeric IDs are accepted in videoUrls.

Use responsibly and comply with TikTok Terms and applicable laws. Scrape only data you are allowed to process.