TikTok Viral Scanner - Hashtags, Sounds & Trends
Pricing
from $2.63 / 1,000 video scrapeds
TikTok Viral Scanner - Hashtags, Sounds & Trends
Scan TikTok for viral trends, hashtags, sounds, and video data. Track creators, engagement metrics, and trending content.
Pricing
from $2.63 / 1,000 video scrapeds
Rating
5.0
(3)
Developer
viralanalyzer
Actor stats
0
Bookmarked
9
Total users
5
Monthly active users
7 days ago
Last modified
Categories
Share
🎵 TikTok Viral Scanner — Profile & Video Scraper (No API Key)
🔗 View on Apify Store | 🇺🇸 English | 🇧🇷 Português
Scrape TikTok profiles and hashtags with real engagement metrics: views, likes, comments, shares, bookmarks, music info, hashtags, and cover images. PlaywrightCrawler-based multi-strategy extraction with XHR interception, embedded JSON, direct API, and DOM fallback. No API key needed.
✨ Features
- Real engagement metrics — Play count, likes, comments, shares, bookmarks (collectCount)
- Music metadata — Song name, artist, music ID for each video
- Hashtags & challenges — Extracted from descriptions and challenge tags (deduplicated)
- Cover images — Multiple cover image URLs per video (static, origin, dynamic)
- Author info — Username, nickname, follower count, following count, total hearts
- Hashtag page scraping — Scrape trending hashtag pages (e.g.,
#foodtok) - 4-strategy cascade — XHR intercept, embedded JSON (REHYDRATION/SIGI), direct API, DOM fallback
- Stealth browsing — Webdriver flag removal, resource blocking, anti-bot bypass
- Residential proxy — Built-in US residential proxy with automatic fallback
- CAPTCHA handling — Detects and attempts to bypass verification pages
- Global timeout — 4-minute safety limit to stay within Apify QA requirements
- Debug data — Screenshots and HTML dumps saved to KV Store on failure
📥 Input
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
profiles | string[] | Yes | — | TikTok usernames (with or without @) or hashtags (#trending). Examples: "@khaby.lame", "charlidamelio", "#foodtok" |
maxItems | integer | No | 10 | Maximum videos to scrape per profile or hashtag (1-100) |
cookies | object[] | No | — | Optional cookies for authentication (JSON array) |
Input Example
{"profiles": ["@khaby.lame","charlidamelio","#foodtok"],"maxItems": 10}
📤 Output
| Field | Type | Description |
|---|---|---|
id | string | TikTok video ID |
webVideoUrl | string | Full video URL (https://www.tiktok.com/@user/video/{id}) |
desc | string | Video description/caption |
createTime | number | Unix epoch timestamp |
createTimeISO | string | ISO 8601 timestamp |
playCount | number | Number of views/plays |
diggCount | number | Number of likes |
commentCount | number | Number of comments |
shareCount | number | Number of shares |
collectCount | number | Number of bookmarks/favorites |
covers | string[] | Array of cover image URLs (static, origin, dynamic) |
duration | number | Video duration in seconds |
hashtags | string[] | Hashtag names from description and challenges (deduplicated) |
musicMeta | object | Music info: { musicName, musicAuthor, musicId } |
author | object | Author info: { username, nickname, followerCount, followingCount, heartCount } |
scrapedAt | string | ISO 8601 timestamp of when the video was scraped |
Output Example
{"id": "7340921845012938018","webVideoUrl": "https://www.tiktok.com/@khaby.lame/video/7340921845012938018","desc": "When they make it satisfying #comedy #khaby #satisfying","createTime": 1709225400,"createTimeISO": "2024-02-29T14:30:00.000Z","playCount": 48200000,"diggCount": 3100000,"commentCount": 18500,"shareCount": 95000,"collectCount": 210000,"covers": ["https://p16-sign-va.tiktokcdn.com/obj/tos-maliva-p-0068/cover1.jpg","https://p16-sign-va.tiktokcdn.com/obj/tos-maliva-p-0068/origin.jpg"],"duration": 15,"hashtags": ["comedy", "khaby", "satisfying"],"musicMeta": {"musicName": "original sound","musicAuthor": "Khabane lame","musicId": "7340921845012938019"},"author": {"username": "khaby.lame","nickname": "Khabane lame","followerCount": 162400000,"followingCount": 78,"heartCount": 2400000000},"scrapedAt": "2026-03-06T12:00:00.000Z"}
📋 Use Cases
- Viral Content Analysis — Identify top-performing videos by engagement metrics
- Competitor Monitoring — Track competitor profiles and content strategies
- Hashtag Research — Discover trending content under specific hashtags
- Influencer Analytics — Evaluate creator performance (followers, hearts, engagement rate)
- Content Inspiration — Find winning formats, music, and hooks in your niche
- Market Research — Analyze audience interests through hashtag and topic trends
❓ FAQ
Q: Does this actor work with hashtag pages, not just profiles?
A: Yes. You can pass hashtags with a # prefix (e.g., "#foodtok") in the profiles input. The actor will navigate to the hashtag page and extract videos from there.
Q: Why do some videos show 0 play count? A: If the primary strategies (XHR intercept, embedded JSON, direct API) fail and the actor falls back to DOM extraction (Strategy 4), videos will have IDs and URLs but no engagement metrics. This typically happens when TikTok detects automation.
Q: What is the 4-strategy cascade? A: The actor tries four extraction methods: (1) XHR interception captures API responses during page load, (2) embedded JSON from REHYDRATION/SIGI_STATE/NEXT_DATA script tags, (3) direct API call to /api/post/item_list/ using the user's secUid, (4) DOM link extraction as a last resort.
Q: How long does a typical run take? A: The actor has a 4-minute global timeout. A single profile with 10 videos typically completes in 30-60 seconds. Multiple profiles run sequentially with a single browser concurrency.
Q: Do I need a TikTok API key or developer account? A: No. The actor uses Playwright to visit TikTok pages like a regular browser and intercepts the API responses that TikTok loads automatically. No official API access is needed.
💰 Pricing
This actor uses Pay Per Event (PPE) pricing:
| Metric | Cost |
|---|---|
video-scraped | $0.10 per video extracted |
Example: Scraping 2 profiles x 10 videos = 20 videos = $2.00.
🔗 Related Actors
- YouTube Fast Scraper — YouTube video metrics
- Instagram Reels Scraper — Instagram post and Reel metrics
- SEO Intelligence Suite — Full website SEO audit
- Website Change Monitor — Track page changes over time
📝 Changelog
v1.3 (Current)
- Performance optimization for Apify QA compliance (< 5 min execution)
- domcontentloaded instead of networkidle (TikTok never reaches networkidle)
- Reduced scrolls (6 instead of 12) — XHR intercept captures data during load
- Faster retries and navigation timeouts (30s navigation, 1 max retry)
- Resource blocking for media, fonts, and stylesheets
v1.2
- 4-strategy cascade extraction (XHR intercept, embedded JSON, direct API, DOM fallback)
- Hashtag page scraping support (#hashtag input)
- Deep video item search in any JSON structure
- Modal/overlay auto-dismiss
- CAPTCHA detection and retry
v1.0
- Profile video scraping with PlaywrightCrawler
- Residential proxy with stealth mode
- Contract validation on all output items
🎵 TikTok Viral Scanner — Scraper de Perfis e Vídeos (Sem API Key)
🔗 View on Apify Store | 🇺🇸 English | 🇧🇷 Português
Extraia dados de perfis e hashtags do TikTok com métricas reais de engajamento: visualizações, curtidas, comentários, compartilhamentos, favoritos, música, hashtags e imagens de capa. Extração multi-estratégia com PlaywrightCrawler usando interceptação XHR, JSON embutido, API direta e fallback DOM. Sem necessidade de API key.
✨ Funcionalidades
- Métricas reais de engajamento — Visualizações, curtidas, comentários, compartilhamentos, favoritos (collectCount)
- Metadados de música — Nome da música, artista, ID da música para cada vídeo
- Hashtags e desafios — Extraídos de descrições e tags de desafios (deduplicados)
- Imagens de capa — Múltiplas URLs de capa por vídeo (estática, original, dinâmica)
- Info do autor — Username, apelido, seguidores, seguindo, total de curtidas
- Scraping de páginas de hashtag — Extraia páginas de hashtags em alta (ex:
#foodtok) - Cascata de 4 estratégias — Interceptação XHR, JSON embutido (REHYDRATION/SIGI), API direta, fallback DOM
- Navegação stealth — Remoção de flag webdriver, bloqueio de recursos, bypass anti-bot
- Proxy residencial — Proxy residencial US integrado com fallback automático
- Tratamento de CAPTCHA — Detecta e tenta contornar páginas de verificação
- Timeout global — Limite de segurança de 4 minutos para conformidade com QA do Apify
- Dados de debug — Screenshots e dumps HTML salvos no KV Store em caso de falha
📥 Entrada
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
profiles | string[] | Sim | — | Usernames do TikTok (com ou sem @) ou hashtags (#trending). Exemplos: "@khaby.lame", "charlidamelio", "#foodtok" |
maxItems | inteiro | Não | 10 | Máximo de vídeos por perfil ou hashtag (1-100) |
cookies | objeto[] | Não | — | Cookies opcionais para autenticação (array JSON) |
Exemplo de Entrada
{"profiles": ["@khaby.lame","charlidamelio","#foodtok"],"maxItems": 10}
📤 Saída
| Campo | Tipo | Descrição |
|---|---|---|
id | string | ID do vídeo no TikTok |
webVideoUrl | string | URL completa do vídeo (https://www.tiktok.com/@user/video/{id}) |
desc | string | Descrição/legenda do vídeo |
createTime | number | Timestamp Unix epoch |
createTimeISO | string | Timestamp ISO 8601 |
playCount | number | Número de visualizações/plays |
diggCount | number | Número de curtidas |
commentCount | number | Número de comentários |
shareCount | number | Número de compartilhamentos |
collectCount | number | Número de favoritos/bookmarks |
covers | string[] | Array de URLs de imagens de capa (estática, original, dinâmica) |
duration | number | Duração do vídeo em segundos |
hashtags | string[] | Nomes de hashtags da descrição e desafios (deduplicados) |
musicMeta | object | Info da música: { musicName, musicAuthor, musicId } |
author | object | Info do autor: { username, nickname, followerCount, followingCount, heartCount } |
scrapedAt | string | Timestamp ISO 8601 de quando o vídeo foi extraído |
Exemplo de Saída
{"id": "7340921845012938018","webVideoUrl": "https://www.tiktok.com/@khaby.lame/video/7340921845012938018","desc": "When they make it satisfying #comedy #khaby #satisfying","createTime": 1709225400,"createTimeISO": "2024-02-29T14:30:00.000Z","playCount": 48200000,"diggCount": 3100000,"commentCount": 18500,"shareCount": 95000,"collectCount": 210000,"covers": ["https://p16-sign-va.tiktokcdn.com/obj/tos-maliva-p-0068/cover1.jpg","https://p16-sign-va.tiktokcdn.com/obj/tos-maliva-p-0068/origin.jpg"],"duration": 15,"hashtags": ["comedy", "khaby", "satisfying"],"musicMeta": {"musicName": "original sound","musicAuthor": "Khabane lame","musicId": "7340921845012938019"},"author": {"username": "khaby.lame","nickname": "Khabane lame","followerCount": 162400000,"followingCount": 78,"heartCount": 2400000000},"scrapedAt": "2026-03-06T12:00:00.000Z"}
📋 Casos de Uso
- Análise de Conteúdo Viral — Identifique vídeos de melhor desempenho por métricas de engajamento
- Monitoramento de Concorrentes — Acompanhe perfis e estratégias de conteúdo dos concorrentes
- Pesquisa de Hashtags — Descubra conteúdo em alta sob hashtags específicas
- Analytics de Influenciadores — Avalie performance de criadores (seguidores, curtidas, taxa de engajamento)
- Inspiração de Conteúdo — Encontre formatos, músicas e ganchos vencedores no seu nicho
- Pesquisa de Mercado — Analise interesses do público através de tendências de hashtags e tópicos
❓ Perguntas Frequentes
P: Este actor funciona com páginas de hashtag, não apenas perfis?
R: Sim. Você pode passar hashtags com prefixo # (ex: "#foodtok") na entrada profiles. O actor navegará até a página da hashtag e extrairá os vídeos de lá.
P: Por que alguns vídeos mostram 0 visualizações? R: Se as estratégias primárias (interceptação XHR, JSON embutido, API direta) falharem e o actor recorrer à extração DOM (Estratégia 4), os vídeos terão IDs e URLs mas sem métricas de engajamento. Isso geralmente acontece quando o TikTok detecta automação.
P: O que é a cascata de 4 estratégias? R: O actor tenta quatro métodos de extração: (1) interceptação XHR captura respostas da API durante o carregamento da página, (2) JSON embutido de script tags REHYDRATION/SIGI_STATE/NEXT_DATA, (3) chamada direta à API /api/post/item_list/ usando o secUid do usuário, (4) extração de links DOM como último recurso.
P: Quanto tempo leva uma execução típica? R: O actor tem um timeout global de 4 minutos. Um único perfil com 10 vídeos geralmente completa em 30-60 segundos. Múltiplos perfis executam sequencialmente com concorrência de browser única.
P: Preciso de uma chave de API ou conta de desenvolvedor do TikTok? R: Não. O actor usa Playwright para visitar páginas do TikTok como um navegador normal e intercepta as respostas da API que o TikTok carrega automaticamente. Nenhum acesso à API oficial é necessário.
💰 Preços
Este actor usa precificação Pay Per Event (PPE):
| Métrica | Custo |
|---|---|
video-scraped | $0.10 por vídeo extraído |
Exemplo: Extrair 2 perfis x 10 vídeos = 20 vídeos = $2.00.
🔗 Actors Relacionados
- YouTube Fast Scraper — Métricas do YouTube
- Instagram Reels Scraper — Métricas de posts e Reels do Instagram
- SEO Intelligence Suite — Auditoria SEO completa
- Website Change Monitor — Monitoramento de mudanças ao longo do tempo
📝 Changelog
v1.3 (Atual)
- Otimização de performance para conformidade com QA do Apify (< 5 min de execução)
- domcontentloaded em vez de networkidle (TikTok nunca atinge networkidle)
- Scrolls reduzidos (6 em vez de 12) — interceptação XHR captura dados durante carregamento
- Retentativas e timeouts de navegação mais rápidos (30s navegação, 1 retentativa máx)
- Bloqueio de recursos para mídia, fontes e stylesheets
v1.2
- Cascata de 4 estratégias de extração (interceptação XHR, JSON embutido, API direta, fallback DOM)
- Suporte a scraping de páginas de hashtag (entrada #hashtag)
- Busca profunda de itens de vídeo em qualquer estrutura JSON
- Auto-dismiss de modais/overlays
- Detecção de CAPTCHA e retentativa
v1.0
- Scraping de vídeos de perfil com PlaywrightCrawler
- Proxy residencial com modo stealth
- Validação de contrato em todos os itens de saída