TikTok Trending Videos Insights & Author Engagement
Pricing
from $3.99 / 1,000 results
TikTok Trending Videos Insights & Author Engagement
TikTok Trending Videos Insights & Author Engagement extracts trending videos, creator profiles, views, likes, comments, shares, hashtags, captions, and engagement metrics. Ideal for trend discovery, creator research, competitor analysis, and content performance insights.
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
Scrapio
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
TikTok Ads Scraper — Trending Videos, Engagement and Author Data
TikTok Trending Videos Insights & Author Engagement discovers top-performing ad creatives from TikTok's own Ads Creative Center, then resolves each ad's underlying video to its public TikTok watch page to pull the real organic engagement (likes, comments, shares, saves) and the real creator's profile (handle, nickname, verified badge, bio, follower count) — numbers the Ads Dashboard itself never shows. Unlike scraping frameworks that return raw HTML, it returns typed JSON, ready for a database, a dashboard, or an LLM context window with no parsing step. This guide covers every input, every output field, and three concrete deployment patterns for running it in production.
🧭 What Does TikTok Trending Videos Insights & Author Engagement Do?
TikTok Trending Videos Insights & Author Engagement drives TikTok Ads Creative Center's public Top Ads inspiration feed to collect ad-creative metadata, then resolves each ad's real video id against TikTok's own public watch-page route to extract organic engagement and the real creator's profile. No TikTok account, login, or session cookie is required — every request targets a page or endpoint TikTok already serves to logged-out visitors. Coverage is honestly partial: not every ad creative maps back to a public organic post, and unresolved ads return null rather than a fabricated number.
Key capabilities:
- Discovers Top Ads by
countryCode,sortOrder, and aperiodlookback window (1-30 days) - Resolves each ad's real 19-digit aweme/video id to its public TikTok watch page
- Extracts real organic engagement:
engagementLikes,engagementComments,engagementShares,engagementSaves - Extracts the real creator profile:
authorUniqueId,authorNickname,authorVerified,authorFollowerCount,authorSignature - Optionally fetches up to
maxCommentsPerAdtop-level comments per resolved ad as child rows - Supports direct
adUrls/video-id targeting to skip Top Ads discovery entirely - Falls back automatically across proxy groups when a request is blocked or empty
⚡ Features & Capabilities
The Actor combines three request surfaces — a signed Creative Center API, TikTok's public watch pages, and TikTok's public comment endpoint — into one dataset with a consistent row shape.
Core features
- Ad discovery — pulls
title(ad headline),brand_name,like/ctr/cost(Ads Dashboard metrics),industry_key,objective_key,duration,cover, and the full multi-resolutionvideoVariantsmap (720p/480p/360p) for every discovered ad. - Real engagement enrichment —
engagementLikes,engagementComments,engagementShares, andengagementSaves, read straight from the live public post's own stats object, separate from whatever the Ads Dashboard reports. - Real author/creator enrichment —
authorUniqueId,authorNickname,authorVerified,authorFollowerCount, andauthorSignature(bio), pulled from the same resolved watch page. - Resolution transparency — every row carries
videoResolved(true/false) andwatchPageUrl, so you always know whether the engagement/author fields are real values or an honestnull. - Optional comment fetch — up to
maxCommentsPerAdtop-level comments per resolved ad, pushed astype="comment"child rows in the same dataset (plus a per-run mirror dataset). - Direct targeting mode — paste
adUrls(URLs or bare numeric ids) to enrich specific videos without running ad discovery at all. - Proxy fallback ladder — retries a blocked or empty response against alternate proxy groups, then a full headless-browser page load, before accepting a genuine miss.
How does TikTok Trending Videos Insights & Author Engagement work inside AI coding agents?
Register the Actor with Apify's MCP Server:
npx -y @apify/actors-mcp-server --actors Scrapio/tiktok-trending-videos-insights-author-engagement
Once registered, an agent running in Claude Desktop, Claude Code, Cursor, or another MCP-compatible client can call the Actor mid-task — for example, "pull this week's top US TikTok ads and tell me which creators are behind them" — without leaving the IDE or hand-writing a scraping script.
TikTok Trending Videos Insights & Author Engagement within the Scrapio data stack
TikTok Trending Videos Insights & Author Engagement covers Ads Creative Center Top Ads plus their real organic engagement and creator data. For trending hashtags instead of ad videos, use Tiktok-Trending-Hashtags-Scraper. For organic trending videos with cross-run view/like/comment growth tracking (not ad creatives), use tiktok-trending-videos-scraper-with-video-views-count.
Why do developers and data teams scrape TikTok?
🏢 Paid social and media buying teams
A media buyer feeds countryCode, sortOrder, and period (or a specific adUrls list pulled from their own Ads Manager export) into a run, then compares each ad's Dashboard-reported like/ctr/cost against its real engagementLikes/engagementComments/engagementShares/engagementSaves from the resolved public post. The gap between the two tells them whether a creative's paid metrics are backed by genuine organic reception. Output lands as rows keyed by id (the ad's real aweme id), ready to join into a media-performance spreadsheet or BI dashboard alongside spend data already tracked in-house — no manual lookup of each ad's creator or watch page required.
📊 AI training data and RAG indexing
authorSignature (creator bio) and title (ad headline) are the highest-information free-text fields for embedding into a RAG index of creator and campaign context; comment text adds a third text surface once includeComments is enabled. For training data, engagementLikes/engagementComments/engagementShares/engagementSaves and authorFollowerCount are numeric fields with consistent structure across every resolved row, useful for engagement-prediction or creator-tier classification models. All fields return as typed primitives (string, number, boolean) rather than embedded HTML, so no cleanup pass is needed before indexing.
📱 Competitive and market intelligence
Track a competitor's brand_name across repeated runs against the same industry_key/objective_key to see how their ad-creative mix shifts, and compare engagementLikes growth on their top creatives against like/ctr reported in the Ads Dashboard. Because authorUniqueId is also resolved, teams can see whether a competitor's best-performing paid ad is actually a boosted organic post from a specific creator rather than in-house content.
🔬 Research and academic use
Public ad-creative and engagement datasets support research into paid-social strategy, ad-to-organic performance gaps, or creator economy dynamics. The Actor reads only TikTok's own public Creative Center feed and public watch pages — no login-walled or private data is collected, keeping any resulting dataset within public-data research scope.
🎥 Product and SaaS development
Ad-intelligence dashboards, creator-discovery tools, and competitive-monitoring products can be built directly on this Actor's output: id, brand_name, authorUniqueId, and the engagement fields are enough to key a database table, and the direct adUrls mode lets a product re-enrich a single ad on demand rather than re-running full discovery.
🍚 Input Parameters
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
countryCode | No | String | Two-letter country code for ad discovery. Default: "US". | "AU" |
sortOrder | No | String | Discovery ordering. Enum: hot, view, like, share, comment — Creative Center only exposes two real underlying orderings (for_you, ctr); these values map onto those. Default: "view". | "like" |
period | No | Integer | Ad discovery lookback window in days, 1-30. Default: 7. | 7 |
adUrls | No | Array | Paste TikTok video URLs or bare numeric video ids to enrich directly, bypassing Top Ads discovery. Leave empty to discover via countryCode/sortOrder/period. Default: []. | ["https://www.tiktok.com/@i/video/7123456789012345678"] |
videoLimit | No | Integer | Maximum ad videos to process, 1-1000. Also accepts the legacy maxItems key as a fallback if left blank. Default when both are omitted: 100. | 20 |
enrichEngagement | No | Boolean | Fetch each ad video's public watch page and extract real engagementLikes/engagementComments/engagementShares/engagementSaves. Default: true. | true |
includeCreatorProfile | No | Boolean | Also pull the real creator's authorUniqueId, authorNickname, authorVerified, authorSignature, and authorFollowerCount from the same resolved page. Default: true. | true |
includeComments | No | Boolean | For every ad that resolves to a public post, also fetch up to maxCommentsPerAd top-level comments as type="comment" child rows. Default: false. | false |
maxCommentsPerAd | No | Integer | Cap on top-level comments fetched per resolved ad video, 0-50. Default: 10. | 10 |
proxyConfiguration | No | Object | Choose which Apify proxies to use. If TikTok rejects the request, a fresh-IP proxy is retried automatically. | {"useApifyProxy": false} |
No parameter is required — an empty input runs ad discovery with every default above.
{"countryCode": "US","sortOrder": "view","period": 7,"videoLimit": 20,"enrichEngagement": true,"includeCreatorProfile": true,"includeComments": false,"maxCommentsPerAd": 10,"proxyConfiguration": {"useApifyProxy": false}}
Supported URL types and input formats
adUrls accepts two formats, parsed with a /video/(\d+) regex fallback to a bare-digit check:
- Full TikTok watch/video URL —
https://www.tiktok.com/@i/video/7123456789012345678(the@handlesegment is ignored; TikTok resolves by the numeric id alone) - Bare numeric video id —
7123456789012345678 - Discovery mode (no
adUrls) — leaveadUrlsas[]and setcountryCode,sortOrder, andperiodinstead, e.g.{"countryCode": "GB", "sortOrder": "hot", "period": 30}
One real limitation to plan around: direct adUrls mode bypasses Top Ads discovery entirely, so Ads-Dashboard-only fields (title, brand_name, like, ctr, cost, industry_key, objective_key, cover, duration, width, height, videoVariants, aspectRatio, rank_order_applied) come back null on those rows — only the enrichment and author fields populate, since discovery never ran for that id.
📦 Output Format
Every run pushes one flat JSON object per row to the default dataset. Field names stay identical whether an ad came from Top Ads discovery or direct adUrls targeting; unresolved fields are null, never omitted.
Output for Ad Videos
{"type": "ad","isChild": false,"parentId": null,"country_code": "US","cover": "https://p16-sign-va.tiktokcdn.com/cover/abc123~tplv-photomode-zoomcover.jpeg","duration": 15,"id": "7567957332919913736","item_id": "v12300gd0001d8m4example","item_url": "https://v16.tiktokcdn.com/720p/video-example.mp4","region": "US","title": "Summer drop is here","brand_name": "Acme Corp","like": 5200,"ctr": 0.031,"cost": 1800,"industry_key": "8000000002","objective_key": "REACH","width": 720,"height": 1280,"videoVariants": {"720p": "https://v16.tiktokcdn.com/720p/video-example.mp4","480p": "https://v16.tiktokcdn.com/480p/video-example.mp4","360p": "https://v16.tiktokcdn.com/360p/video-example.mp4"},"aspectRatio": "vertical","rank_order_applied": "for_you","watchPageUrl": "https://www.tiktok.com/@i/video/7567957332919913736","videoResolved": true,"engagementLikes": 48200,"engagementComments": 612,"engagementShares": 340,"engagementSaves": 950,"authorUniqueId": "acmecorp","authorNickname": "Acme Corp","authorVerified": true,"authorFollowerCount": 210000,"authorSignature": "Official Acme Corp account. New drops every Friday.","scrapedAt": "2026-07-25T14:02:11Z","scraped_at": "2026-07-25T14:02:11Z"}
35 fields per ad row: type, isChild, parentId, country_code, cover, duration, id, item_id, item_url, region, title, brand_name, like, ctr, cost, industry_key, objective_key, width, height, videoVariants, aspectRatio, rank_order_applied, watchPageUrl, videoResolved, engagementLikes, engagementComments, engagementShares, engagementSaves, authorUniqueId, authorNickname, authorVerified, authorFollowerCount, authorSignature, scrapedAt, scraped_at.
Output for Comments
When includeComments is enabled, every top-level comment on a resolved ad video is pushed as its own row, structurally distinct from the ad row above:
{"type": "comment","isChild": true,"parentId": "7567957332919913736","cid": "7568012345678901234","text": "Just ordered mine, can't wait!","diggCount": 214,"createTime": 1753380000,"createTimeISO": "2026-07-24T18:00:00.000Z","uniqueId": "sneakerfan22","replyCommentTotal": 3,"scrapedAt": "2026-07-25T14:02:11Z","scraped_at": "2026-07-25T14:02:11Z"}
12 fields per comment row: type, isChild, parentId, cid, text, diggCount, createTime, createTimeISO, uniqueId, replyCommentTotal, scrapedAt, scraped_at. Comment rows are also mirrored to a per-run child dataset (comments-<runId>) in addition to the default dataset.
Schema stability and export options
Field names stay stable across runs regardless of TikTok front-end changes — the Actor parses TikTok's embedded SIGI_STATE/__UNIVERSAL_DATA_FOR_REHYDRATION__ JSON stores rather than scraping rendered HTML, and both scrapedAt/scraped_at and rank_order_applied are kept as base-compatibility duplicates so existing downstream mappings never break. Export the dataset as JSON, CSV, Excel (XLSX), or HTML directly from the Apify Runs/Storage tab, or pull it programmatically via the Apify API/SDK. Every pushed row — ad or comment — is billed as one row_result charged event; the Actor pushes no separate uncharged accounting rows, so the dataset's row count is exactly the billed count.
💡 TikTok Trending Videos Insights & Author Engagement Strategy Guide
🎯 Strategy 1: Real-time enrichment pipeline
Use case: enrich a single ad or video the moment it's captured — for example, from an internal ad-monitoring feed, a manually flagged competitor creative, or a link pasted by an analyst. Workflow: your system captures a TikTok ad/video URL → trigger a run with adUrls: [url], enrichEngagement: true, includeCreatorProfile: true → read engagementLikes/engagementComments/engagementShares/engagementSaves and authorUniqueId/authorFollowerCount from the single pushed row → write the enriched record back into your ad-intelligence table keyed by id. Because direct adUrls mode skips discovery, this pattern returns in a single request-response cycle rather than paginating through a country's full Top Ads list.
🎯 Strategy 2: Scheduled monitoring and alerting
Use case: watch a country's Top Ads list for shifts in engagement or creator identity over time. Workflow: an Apify Schedule triggers the Actor on a fixed countryCode/sortOrder/period on a recurring cadence → diff this run's engagementLikes and authorUniqueId per id against the previous run's dataset export → alert when engagementLikes jumps sharply, videoResolved flips from false to true, or a brand_name's top ad resolves to a new authorUniqueId. The Actor itself holds no run-history state, so the diff step lives in your own pipeline, comparing two dataset exports keyed on the same id.
🎯 Strategy 3: Bulk dataset build
Use case: build a research or training dataset spanning multiple markets. Workflow: a list of countryCode values → one run per country (each capped by videoLimit, 1-1000) → aggregate every run's dataset items into a single CSV or database table keyed by id, with comment child rows joined on parentId if includeComments was enabled. No specific concurrency ceiling beyond videoLimit's own documented 1-1000 range is published for this Actor, so size your run batching — sequential or queued via the Apify API — around that field rather than an assumed parallelism limit.
Strategy comparison at a glance
| Strategy | Best for | Run pattern | Output format |
|---|---|---|---|
| Real-time enrichment | Enriching one ad/video on capture | Single on-demand run, adUrls targeting | JSON row via API/webhook |
| Scheduled monitoring | Tracking engagement/creator shifts over time | Apify Schedule, recurring countryCode/period run | Dataset export diffed run-over-run |
| Bulk dataset build | Multi-market research/training datasets | Batched runs per countryCode, aggregated afterward | CSV/database table |
🌴 Related TikTok Scrapers & Tools
| Scraper Name | What it extracts |
|---|---|
| TikTok Trending Hashtags Scraper | Top 100 trending hashtags by country/period, with per-hashtag analytics |
| TikTok Trending Videos Scraper With Video Views Count | Organic trending videos with cross-run view/like/comment/share growth tracking |
| Instagram Reels Scraper — Video, Audio & Thumbnail Assets | Instagram Reels with multi-quality video, audio track, and thumbnail assets |
| Facebook Reels & Engagement Analytics Scraper | Facebook Reels with view/reaction/comment/share counts and derived engagement rate |
| YouTube Scraper With Comment & Engagement Analytics | YouTube videos/Shorts with threaded comments and derived engagement analytics |
| Instagram Comments Scraper With Engagement Analytics | Instagram post/reel comment threads with replies and post-context enrichment |
How to integrate TikTok Trending Videos Insights & Author Engagement with your stack
TikTok Trending Videos Insights & Author Engagement works with any language or tool that can call the Apify API — the examples below use Apify's official SDKs.
Python
import csvfrom apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_API_TOKEN>")countries = ["US", "GB", "AU"]all_rows = []for country in countries:run_input = {"countryCode": country,"sortOrder": "view","period": 7,"videoLimit": 20,"enrichEngagement": True,"includeCreatorProfile": True,}run = client.actor("scrapio/tiktok-trending-videos-insights-author-engagement").call(run_input=run_input)for item in client.dataset(run["defaultDatasetId"]).iterate_items():all_rows.append(item)with open("tiktok_ads.csv", "w", newline="", encoding="utf-8") as f:writer = csv.DictWriter(f, fieldnames=all_rows[0].keys())writer.writeheader()writer.writerows(all_rows)print(f"Wrote {len(all_rows)} rows across {len(countries)} countries.")
Node.js
import { ApifyClient } from 'apify-client';import fs from 'fs';const client = new ApifyClient({ token: '<YOUR_APIFY_API_TOKEN>' });const run = await client.actor('scrapio/tiktok-trending-videos-insights-author-engagement').call({countryCode: 'US',sortOrder: 'view',period: 7,videoLimit: 20,enrichEngagement: true,includeCreatorProfile: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();fs.writeFileSync('tiktok_ads.json', JSON.stringify(items, null, 2));console.log(`Saved ${items.length} rows to tiktok_ads.json`);
MCP for AI agents
Register with Apify's MCP Server — npx -y @apify/actors-mcp-server --actors Scrapio/tiktok-trending-videos-insights-author-engagement — and an MCP-compatible client (Claude Desktop, Claude Code, Cursor) can call the Actor directly: "get this week's top TikTok ads in Germany and their creators' follower counts" resolves to a real Actor call, returning typed JSON straight into the agent's context.
Async and scheduled pipelines
For fire-and-forget large jobs, start the run asynchronously via the Apify API and poll the run status or the dataset item count instead of blocking on a synchronous call. For recurring monitoring, use an Apify Schedule (cron-based) to trigger the Actor automatically on a fixed countryCode/period.
🎯 Who Needs TikTok Trending Videos Insights & Author Engagement? (Use Cases & Industries)
🏢 Paid social and media buying teams
A media buyer reconciles Ads Dashboard-reported like/ctr/cost against the real engagementLikes/engagementShares pulled from the resolved public post, flagging creatives whose paid metrics outpace genuine organic reception before renewing spend.
📊 AI/ML and RAG engineering teams
Teams building creator-context RAG indexes embed authorSignature and title as the primary text fields, then use engagementLikes/authorFollowerCount as numeric features for engagement-prediction models — no HTML cleanup required before ingestion.
📱 Competitive intelligence analysts
Analysts track a named brand_name across industry_key segments over repeated runs, watching engagementLikes growth and authorUniqueId identity to see when a competitor repurposes an organic creator's content into a paid ad.
🔬 Researchers
Academic and market researchers studying paid-social strategy or ad-to-organic performance gaps can build datasets entirely from public Creative Center and public watch-page data, keeping collection within public-data scope.
🎥 Product and SaaS builders
Ad-intelligence dashboards and creator-discovery tools use id, brand_name, and the engagement/author fields as their core schema, calling the Actor's direct adUrls mode to re-enrich a single record on demand.
Is it legal to scrape TikTok?
Scraping publicly accessible web data is generally permitted; the more relevant risk is contractual, not criminal. TikTok's Terms of Service restrict automated data collection, so using this Actor may put you in breach of contract with TikTok — a civil matter between you and the platform, not a criminal one, and not the same question as whether the underlying data is legally accessible. Because this Actor resolves and returns real personal data — a creator's handle, nickname, bio, follower count, and verified status, plus commenter handles and comment text when includeComments is enabled — anyone storing or processing that data should also consider applicable data-protection law (e.g. GDPR, CCPA) for their own jurisdiction and use case. TikTok Trending Videos Insights & Author Engagement returns only publicly accessible data. What you do with that data is your responsibility — consult legal counsel for commercial applications involving personal data.
❓ Frequently asked questions
Does TikTok Trending Videos Insights & Author Engagement work without a TikTok account?
Yes. No login, session cookie, or TikTok account is required anywhere in the Actor — ad discovery uses Creative Center's public inspiration page, and engagement/author/comment enrichment reads TikTok's own public watch pages, oembed endpoint, and public comment-list API, all of which TikTok serves to logged-out visitors.
How does it handle TikTok's anti-scraping measures?
It captures signed request headers from a real headless-browser page load for Creative Center discovery, uses curl_cffi with Chrome TLS/JA3 impersonation for watch-page requests (TikTok's WAF fingerprints the TLS handshake, not just headers), and falls back to a genuine headless-browser page load only for the rare response that a plain HTTP client can't resolve. Proxy rotation across alternate groups is applied automatically on a block.
Can I run it at scale without getting blocked?
The Actor retries blocked or empty responses against alternate proxy groups before falling back to a browser-rendered fetch, and videoLimit caps a single run at up to 1000 ad videos. No uptime or success-rate figure is published for this Actor, so plan batch sizes around videoLimit and your own proxy configuration rather than an assumed guarantee.
How fresh is the data TikTok Trending Videos Insights & Author Engagement returns?
Every run performs a live fetch — Creative Center discovery, watch-page resolution, and comment fetching all happen at run time against TikTok's current public pages. Nothing is served from a cache; two runs an hour apart can return different engagementLikes counts for the same ad.
Why is videoResolved false for some ads, and am I charged for those rows?
Not every ad creative maps to a public organic TikTok post — TikTok's own ad-creative ids and its public aweme ids don't always overlap. When resolution fails, videoResolved is false and the engagement/author fields are null, never a fabricated value. Every pushed row, resolved or not, is billed as one row_result charged event — coverage gaps affect data completeness, not billing.
Can I target specific TikTok videos instead of discovering ads?
Yes. Pass full video URLs or bare numeric video ids in adUrls to enrich exactly those videos, skipping Top Ads discovery entirely. Ads-Dashboard-only fields (title, brand_name, like, ctr, cost, etc.) will be null on those rows since discovery never ran, but engagement and author fields resolve normally.
Which fields work best for AI training and RAG indexing?
For RAG, index authorSignature (creator bio) and title (ad headline) as the primary text fields, adding comment text when includeComments is enabled. For training data, engagementLikes, engagementComments, engagementShares, engagementSaves, and authorFollowerCount are numeric fields with consistent structure across every resolved row. All fields return as typed primitives — no HTML parsing or normalization needed.
What personal data does this Actor return, and who is responsible for its use?
Resolved ad rows include a creator's authorUniqueId (handle), authorNickname, authorVerified status, authorFollowerCount, and authorSignature (bio); comment rows include a commenter's uniqueId and comment text. All of it is data TikTok already displays publicly on the watch page or comment section. The Actor does not scrape private profiles or login-walled data — lawful basis for storing, processing, or acting on any personal data returned sits with you, the user.
Does TikTok Trending Videos Insights & Author Engagement work with Claude, ChatGPT, and other AI agent tools?
Yes. It's registrable through Apify's MCP Server (npx -y @apify/actors-mcp-server --actors Scrapio/tiktok-trending-videos-insights-author-engagement) for MCP-compatible clients like Claude Desktop or Claude Code, and callable as a standard Actor via the Apify API by any agent framework. Every response is typed JSON — no HTML parsing required before it enters an LLM's context window.
ℹ️ Disclaimer
TikTok Trending Videos Insights & Author Engagement extracts only publicly available data from TikTok's Ads Creative Center and TikTok's own public pages. This tool is intended for lawful use cases only. Users are responsible for complying with TikTok's terms of service and applicable data protection laws in their jurisdiction.