API Douyin Ricerca
Stato di salute dell'API
- Operatività nelle ultime 24 ore
- 100%
- Tempo medio nelle ultime 24 ore
- 19.38 s
- Buono / normale
- Disponibile
- Limitato
- Quasi del tutto inattivo
Ultime 24 ore
Ultimi 30 giorni
Trova video Douyin per un termine di ricerca. Ottieni didascalia, hashtag, like, commenti, condivisioni, salvataggi, dati dell'autore e un link di riproduzione firmato. Douyin non pubblica il numero di riproduzioni, quindi view_count di solito è assente o pari a 0 e non mostra mai le riproduzioni reali. Valuta la copertura da like, commenti e condivisioni.
Invia POST https://api.everyinfra.com/api/v1/social con platform impostato su douyin e action impostato su search. Prezzo $8.33 per 1.000 richieste ($0.008333 per chiamata). Le chiamate non riuscite e i risultati vuoti non vengono addebitati. Sincrona. Per i job più lenti, aggiungi "mode": "async" al corpo della richiesta, recupera il job_id ed esegui il polling.
Douyin Search trova i video per keyword e restituisce per ciascuno didascalia, hashtag, numero di like, commenti, condivisioni e salvataggi, nickname, Douyin ID e numero di follower dell'autore e data di pubblicazione, oltre a durata, immagine di copertina e un link di riproduzione firmato. Usala per vedere quali video si stanno diffondendo su un tema e chi li ha creati: ricerca su trend e temi, campionamento delle menzioni del brand o individuazione, a partire dai video, dei creator da seguire.
Ordina i risultati con sort (pertinenza, più recenti o più like) e restringili con publish_time (ultimo giorno, ultima settimana o ultimi sei mesi). Valuta la portata con like_count, comment_count e share_count: Douyin non pubblica il numero di riproduzioni, quindi view_count non dice nulla sulle visualizzazioni reali. Puoi passare direttamente author_id per leggere il profilo e i video dell'autore.
Prompt per l'AI
#Aiutami a scrivere uno script di raccolta dei dati con l'endpoint Douyin Ricerca di EveryInfra (douyin/search).
Come funziona l'endpoint:
- Richiesta: POST https://api.everyinfra.com/api/v1/social con l'header Authorization: Bearer <chiave API>. Leggi la chiave dalla variabile d'ambiente EVERYINFRA_API_KEY e non scriverla mai direttamente nel codice.
- Nel corpo della richiesta imposta platform su douyin e action su search, e inserisci i parametri in params.
- Parametri obbligatori:
- keyword: Termine di ricerca per l'azione di ricerca video, passato come stringa, ad esempio latte art. Trova video; non è il nickname di un account né un ID video.
- Parametri facoltativi:
- page_token: Token di pagina. Per avviare la paginazione, invia una stringa vuota page_token=""; poi, per ottenere la pagina successiva, ripassa il next_page_token della risposta precedente esattamente come ricevuto, lasciando invari…
- publish_time: Filtra i risultati della ricerca video per finestra temporale di pubblicazione. I valori consentiti sono unlimited (predefinito), one_day (ultime 24 ore), one_week (ultimi 7 giorni) e half_year (ultimi 6 mesi). (valori consentiti: half_year / one_day / one_week / unlimited)
- sort: Ordina i risultati della ricerca video. I valori consentiti sono relevance (predefinito), newest per la data di pubblicazione più recente e most_liked per il maggior numero di like. (valori consentiti: most_liked / newest / relevance)
- limit: Numero massimo di righe da restituire in questa chiamata: un intero da 1 a 50. Se lo ometti, viene applicato il valore predefinito; una chiamata può restituire meno righe. (predefinito: 10)
- Restituisce un elenco di record. Campi principali di ogni record: next_page_token (Token di pagina (search / user_posts /…), id, url, text, media_type (Tipo di media: video, oppure image per…), video_url (URL di riproduzione del video (firmato,…), like_count, comment_count, share_count, collect_count, view_count (Numero di riproduzioni), author_name; 54 campi in totale, elenco completo su https://api.everyinfra.com/api/v1/social/catalog?platform=douyin.
- Esempio di corpo della richiesta:
{
"platform": "douyin",
"action": "search",
"params": {
"keyword": "城市骑行"
}
}
- Prezzo: $8.33 per 1.000 richieste; le richieste non riuscite e i risultati vuoti non vengono addebitati.
- Per decine o centinaia di target, aggiungi "mode": "async" al corpo: ricevi subito un job_id ed esegui il polling su GET https://api.everyinfra.com/api/v1/jobs/{job_id} per ottenere il risultato.
- In caso di 422, correggi la richiesta usando i nomi dei parametri e i valori consentiti suggeriti nell'errore; in caso di 429 o 503, attendi il tempo indicato da Retry-After e riprova.
Prima di scrivere il codice, chiedimi quali target mi servono, quanti, quali campi e quale formato di output voglio; poi conferma con me il piano e il costo indicativo.Parametri della richiesta
#| Nome | Posizione | Tipo | Obbligatorio | Predefinito | Descrizione |
|---|---|---|---|---|---|
Authorization | header | string | Sì | - | Bearer seguito dalla tua chiave API. Creala nella console; non inserirla mai in un URL o in un repository di codice. |
platform | body | string | Sì | douyin | Identificativo della piattaforma, valore fisso. |
action | body | string | Sì | search | Identificativo della funzionalità, valore fisso. |
keyword | body.params | string | Sì | - | Termine di ricerca per l'azione di ricerca video, passato come stringa, ad esempio latte art. Trova video; non è il nickname di un account né un ID video. |
page_token | body.params | string | No | - | Token di pagina. Per avviare la paginazione, invia una stringa vuota page_token=""; poi, per ottenere la pagina successiva, ripassa il next_page_token della risposta precedente esattamente come ricevuto, lasciando invariati keyword, sort e publish_time. Ogni pagina corrisponde a una chiamata e contiene pagine di risultati di Douyin intere, non troncate: almeno limit video (predefinito 10, fino a 50; meno nell'ultima pagina), spesso qualcuno in più. I video che Douyin ripete dalla pagina precedente vengono esclusi. I token durano 24 ore e funzionano solo per lo stesso account e con gli stessi parametri; un token scaduto o non corrispondente restituisce 422, quindi ricomincia dalla prima pagina. Nell'ultima pagina la risposta non contiene next_page_token. Senza page_token la chiamata esegue un singolo recupero di massimo limit video, senza next_page_token. |
publish_time | body.params | string (enum) | No | - | Filtra i risultati della ricerca video per finestra temporale di pubblicazione. I valori consentiti sono unlimited (predefinito), one_day (ultime 24 ore), one_week (ultimi 7 giorni) e half_year (ultimi 6 mesi).Valori consentitihalf_yearone_dayone_weekunlimited |
sort | body.params | string (enum) | No | - | Ordina i risultati della ricerca video. I valori consentiti sono relevance (predefinito), newest per la data di pubblicazione più recente e most_liked per il maggior numero di like. Supporta gli alias legacy di compatibilità general (mappato su relevance) e latest (mappato su newest).Valori consentitimost_likednewestrelevance |
limit | body.params | integer (1–50) | No | 10 | Numero massimo di righe da restituire in questa chiamata: un intero da 1 a 50. Se lo ometti, viene applicato il valore predefinito; una chiamata può restituire meno righe. I valori più alti restituiscono 422 prima di qualsiasi addebito. |
Esempi di codice
#curl -X POST 'https://api.everyinfra.com/api/v1/social' \
-H "Authorization: Bearer $EVERYINFRA_API_KEY" \
-H 'Content-Type: application/json' \
--data-raw '{
"platform": "douyin",
"action": "search",
"params": {
"keyword": "城市骑行"
}
}'Definizione OpenAPI (JSON)Gli esempi leggono la chiave dalla variabile d'ambiente EVERYINFRA_API_KEY; il codice copiato non contiene mai la tua chiave.
Esempio di risposta
#{ "id": "req_…", "platform": "douyin", "action": "search", "results": [ { "id": "•••", "url": "https://www.douyin.com/video/7635624004494435825", "text": "一个人的解压方式 夜晚 骑行 听歌 晚风和自由#骑行", "media_type": "video", "like_count": 1578935, "comment_count": 26631, "share_count": 228957, "collect_count": 117174, "view_count": 0, "author_name": "•••", "author_id": "•••", "author_douyin_id": "•••", "author_follower_count": 9028, "region": "CN", "posted_at": "2026-05-03T11:20:52+00:00", "platform": "douyin", "duration_sec": 8, "hashtags": [ "骑行" ] } ], "next_page_token": …, "pagination": { … }, "count": 1, "billing": { "charged": …, "charged_usd": …, "balance_after_usd": …, … }, "quota": { … }}
Campi della risposta
#I dati di business si trovano in results. La tabella elenca i campi che un record può contenere; i valori che la piattaforma non mostra non vengono mai inventati.
| Campo | Significato |
|---|---|
next_page_token | Token di pagina (search / user_posts / comments / comment_replies / billboard_video_hot / billboard_low_fan_explosion / billboard_high_completion / billboard_account_search / music_search): reinvialo invariato come page_token per ottenere la pagina successiva, lasciando invariati gli altri parametri; è valido per 24 ore. Tutte le righe di una pagina riportano lo stesso valore, che compare anche al livello superiore della risposta. Assente nell'ultima pagina. Le pagine dei commenti scorrono tutti i commenti di primo livello, una pagina alla volta. |
id | ID univoco del record sulla piattaforma. È univoco solo all'interno di una piattaforma; gli ID possono ripetersi tra piattaforme diverse. |
url | Link al record sulla piattaforma. |
text | Testo del contenuto senza HTML, restituito per intero e mai troncato (su alcune piattaforme i risultati degli elenchi contengono solo un estratto; lo indicano le note sui campi della piattaforma). |
media_type | Tipo di media: video, oppure image per i post di immagini. |
video_url | URL di riproduzione del video (firmato, con scadenza; scaricalo subito se devi conservarlo). Null per i post di immagini o quando l'origine non lo fornisce. |
like_count | Like. null significa che la piattaforma o questa funzionalità non li rende noti; non equivale a 0. |
comment_count | Commenti. null significa non resi noti, non 0. |
share_count | Condivisioni. null significa non rese note, non 0. |
collect_count | Salvataggi o preferiti. null significa non resi noti, non 0. |
view_count | Numero di riproduzioni. Douyin non pubblica il numero di riproduzioni, quindi questo campo non riporta mai riproduzioni reali; valuta la diffusione in base a like_count, comment_count e share_count. |
author_name | Nome visualizzato dell'autore. |
author_id | ID univoco dell'autore sulla piattaforma. |
author_douyin_id | L'ID Douyin dell'autore. |
author_uid | ID utente numerico dell'autore (nelle righe comments, di chi ha commentato). author_id è il secUid; entrambi identificano la stessa persona. |
author_bio | La bio del profilo dell'autore (righe search / user_posts / video). |
author_avatar_url | URL dell'avatar dell'autore: il creator nelle righe search, user_posts e video, chi ha commentato nelle righe comments. |
author_follower_count | Numero di follower dell'autore. null significa non reso noto. |
cover_image_url | URL della miniatura di copertina del video o del post di immagini (righe search / user_posts). |
video_width | Larghezza del fotogramma del video in pixel. |
video_height | Altezza del fotogramma del video in pixel. |
duration_seconds | Durata in secondi. null per i contenuti che non sono video o audio. |
region | Regione. |
hashtags | Hashtag presenti nel testo, in ordine di apparizione; assente se non ce ne sono. |
posted_at | Data e ora di pubblicazione in formato ISO 8601, UTC (ad esempio 2026-08-07T12:34:56+00:00). Le stringhe non standard della piattaforma vengono passate così come sono, quindi esegui il parsing in modo difensivo. null significa che la piattaforma non le rende note. |
platform | Identificativo della piattaforma di origine, uguale a platform nella richiesta (ad esempio xiaohongshu, tiktok). |
image_urls | Array di link alle immagini nell'ordine di visualizzazione della piattaforma; assente se non ci sono immagini. |
duration_sec | Durata del video in secondi. |
hashtag_ids | Mantiene il significato attribuito dalla piattaforma |
search_rank | Mantiene il significato attribuito dalla piattaforma |
author_is_verified | Indica se l'autore è verificato (righe search / user_posts / video). |
author_following_count | Numero di account seguiti dall'autore (righe search / user_posts / video). |
author_like_count | Mi piace totali ricevuti dal profilo dell'autore (search / user_posts / video / transcript). |
author_video_count | Numero totale di post sul profilo dell'autore (righe search / user_posts / video). |
author_ip_location | La località IP dell'autore, che Douyin mostra su ogni profilo. |
title | Titolo. null quando la piattaforma non prevede titoli (ad esempio post di solo testo). |
music | Traccia di sottofondo: id, title, author, is_original (se è un suono originale), duration_sec, cover_url e play_url (link audio, può scadere). Assente quando non ci sono informazioni sulla musica. |
download_count | Numero di volte in cui il post è stato scaricato. |
forward_count | Numero di volte in cui il post è stato inoltrato. |
is_pinned | Indica se l'elemento è fissato in alto (righe dei post: fissato sul profilo dell'autore; trending: fissato nella classifica). |
is_ad | Indica se il post è un annuncio. |
video_tags | Tag di categoria dei contenuti assegnati da Douyin al post (ad esempio cibo o visita in negozio). |
video_resolution | Livello di qualità del video come indicato da Douyin (ad esempio 720p). |
animated_cover_url | Link alla copertina animata. |
city | Nome della città nella lingua della piattaforma, non normalizzato. |
city_code | Mantiene il significato attribuito dalla piattaforma |
location | Descrizione della località passata così com'è; il formato varia in base alla piattaforma. |
text_language | Mantiene il significato attribuito dalla piattaforma |
video_bitrates | Mantiene il significato attribuito dalla piattaforma |
download_url | Mantiene il significato attribuito dalla piattaforma |
has_watermark | Mantiene il significato attribuito dalla piattaforma |
video_url_expires_at | Mantiene il significato attribuito dalla piattaforma |
permissions | Mantiene il significato attribuito dalla piattaforma |
author_gender | Mantiene il significato attribuito dalla piattaforma |
author_age | Mantiene il significato attribuito dalla piattaforma |
FAQ
#Perché non posso ottenere il numero di visualizzazioni?
#Douyin non pubblica il numero di riproduzioni, quindi view_count in questi risultati non riflette le visualizzazioni reali e non può dirti se qualcuno ha guardato il video. Confronta i video in base a like_count, comment_count e share_count, letti insieme alla data di pubblicazione.
Posso cercare solo i video recenti?
#Sì. Imposta publish_time su one_day, one_week o half_year per tenere i video pubblicati in quell'intervallo; il valore predefinito, unlimited, non applica alcun intervallo. Imposta sort su newest per elencarli dal più recente.
Come ottengo più di 50 risultati?
#Usa la paginazione. Invia page_token come stringa vuota nella prima richiesta, poi ripassa invariato il next_page_token di ogni risposta, mantenendo uguali keyword, sort e publish_time. Ogni pagina è una chiamata e contiene almeno limit video; i video che Douyin ripete dalla pagina precedente vengono esclusi. L'ultima pagina non ha next_page_token, e i token durano 24 ore.
Errori e addebiti
#- 401
- Chiave mancante o non valida.
- 402
- Saldo insufficiente. Effettua prima una ricarica.
- 422
- Nome o valore del parametro non valido. Correggilo seguendo i suggerimenti dell'errore. Nessun addebito.
- 429
- Raggiunto il limite di richieste al minuto. Attendi il tempo indicato da Retry-After, poi riprova.
- 503
- Impossibile completare. L'importo trattenuto torna sul tuo saldo. Se l'esito è incerto, verificalo prima di riprovare.
- Risposta 200 vuota
- Nessun dato. Nessun addebito.