HTTP 200 non garantisce che il monitoraggio giornaliero di TikTok abbia raccolto video. I risultati della ricerca possono trovarsi in aweme_list oppure in search_item_list[].aweme_info; uno script che legge solo il primo array può terminare senza errori e registrare un report vuoto. Un controllo affidabile verifica separatamente lo stato del trasporto e quello applicativo, estrae entrambe le strutture supportate e registra quanti video unici sono stati estratti durante l’esecuzione.
Che cosa è utile diagnosticare
Immaginiamo questo scenario: ogni mattina il team raccoglie video pubblici associati a diverse query per individuare nuove pubblicazioni su un prodotto. Un risultato importante di questo processo è un elenco riproducibile dei contenuti trovati, con descrizione, autore, data di pubblicazione e metriche disponibili. Se il report è improvvisamente vuoto, la causa potrebbe essere l’elaborazione del JSON, un cambiamento nei risultati, la ripetizione di video già noti o un vero errore della richiesta. Un solo numero, per esempio la lunghezza di aweme_list, non consente di distinguere questi casi.
Nel TikTok Scraper API di jsonscraper, l’endpoint di ricerca /searchVideo accetta il parametro obbligatorio keyword e i parametri facoltativi count, cursor, date_posted, sort_by e region. La documentazione dell’endpoint descrive la paginazione tramite cursor, da passare come valore opaco ottenuto dalla risposta precedente. Il parametro count indica il numero di risultati desiderato, non garantisce la copertura completa delle pubblicazioni.
Dividi il controllo in quattro segnali
Una diagnosi utile si compone di quattro verifiche indipendenti. La prima: la richiesta HTTP è stata completata correttamente. La seconda: lo status esterno della risposta è ok e tiktok.status_code interno indica un esito positivo. La terza: è presente l’oggetto tiktok e i record vengono estratti da entrambe le posizioni documentate nella risposta. La quarta: dopo la deduplicazione restano record con identificativi idonei alla memorizzazione. Nel log, conserva il numero degli elementi estratti prima e dopo la deduplicazione: la differenza mostra se si sono verificati duplicati durante la normalizzazione.
I campi mancanti devono restare vuoti, senza sostituirli con valori inventati. Per esempio, il conteggio delle visualizzazioni potrebbe non essere presente in uno specifico record. Conservare il JSON originale insieme alla riga normalizzata permette di verificare in seguito se l’informazione è andata persa durante l’elaborazione oppure se mancava già nella risposta originale.
Richiesta minima e normalizzazione in Python
La specifica di jsonscraper indica l’indirizzo di base https://tiktok.evelode.com e il passaggio della chiave nel parametro della richiesta license_key. L’esempio seguente usa i parametri documentati; la chiave viene letta da una variabile d’ambiente e non viene stampata nel log. Installa la dipendenza con il comando python -m pip install requests, quindi imposta JSONSCRAPER_TIKTOK_LICENSE_KEY nell’ambiente.


import json
import os
from datetime import datetime, timezone
from pathlib import Path
import requests
BASE_URL = "https://tiktok.evelode.com/searchVideo"
KEY = os.environ["JSONSCRAPER_TIKTOK_LICENSE_KEY"]
def extract_videos(payload):
"""Raccoglie i video da entrambe le strutture note della risposta di ricerca."""
tiktok = payload.get("tiktok") or {}
videos = []
for item in tiktok.get("aweme_list") or []:
if isinstance(item, dict):
videos.append(item)
for item in tiktok.get("search_item_list") or []:
if isinstance(item, dict):
aweme = item.get("aweme_info")
if isinstance(aweme, dict):
videos.append(aweme)
return videos
def main():
params = {
"license_key": KEY,
"keyword": "esempio di query su un prodotto",
"count": 20,
"region": "US",
}
response = requests.get(BASE_URL, params=params, timeout=30)
response.raise_for_status()
payload = response.json()
if payload.get("status") != "ok":
raise RuntimeError("L'API ha restituito uno status esterno diverso da ok")
tiktok = payload.get("tiktok")
if not isinstance(tiktok, dict):
raise RuntimeError("Nella risposta manca l'oggetto tiktok")
if tiktok.get("status_code") != 0:
raise RuntimeError("status_code interno diverso dal valore di esito positivo 0")
raw_videos = extract_videos(payload)
unique = {}
for video in raw_videos:
video_id = video.get("aweme_id")
if video_id:
unique.setdefault(str(video_id), video)
snapshot = {
"collected_at": datetime.now(timezone.utc).isoformat(),
"keyword": params["keyword"],
"status": payload.get("status"),
"status_code": tiktok.get("status_code"),
"raw_items": len(raw_videos),
"unique_items": len(unique),
"has_more": tiktok.get("has_more"),
"cursor": tiktok.get("cursor"),
"videos": list(unique.values()),
}
Path("snapshots").mkdir(exist_ok=True)
stamp = datetime.now(timezone.utc).strftime("%Y%m%dT%H%M%SZ")
Path(f"snapshots/{stamp}.json").write_text(
json.dumps(snapshot, ensure_ascii=False, indent=2),
encoding="utf-8",
)
print({
"status": snapshot["status"],
"status_code": snapshot["status_code"],
"raw_items": snapshot["raw_items"],
"unique_items": snapshot["unique_items"],
"has_more": snapshot["has_more"],
})
if __name__ == "__main__":
main()
Lo script verifica il livello di trasporto con raise_for_status(), quindi controlla lo stato esterno, la presenza dell’oggetto tiktok e lo status_code interno. Poi estrae i record da entrambe le strutture di ricerca, li deduplica usando aweme_id e salva uno snapshot con l’ora della raccolta. Se non ci sono record idonei, il file contiene comunque informazioni sull’esecuzione, consentendo di distinguere un risultato vuoto salvato da un report assente.
Come trasformare gli snapshot in un segnale per il team
Esegui lo script secondo una pianificazione tramite cron, CI o un sistema di workflow. Conserva gli snapshot separatamente per ogni query oppure aggiungi la parola chiave al nome del file. Nella tabella di stato è sufficiente registrare l’ora di esecuzione, lo stato, il numero di record estratti e unici, oltre al flag has_more. È utile inviare una notifica in caso di eccezione della richiesta, assenza di parti obbligatorie della risposta o variazione brusca del numero di record estratti rispetto alla cronologia specifica.
Questo confronto individua un’anomalia nella pipeline, ma da solo non ne spiega la causa. Un numero inferiore di risultati può riflettere la composizione dei risultati correnti, non un guasto dell’API o del parser. Perciò è utile conservare il JSON originale, confrontare richieste con gli stessi parametri e verificare gli identificativi trovati. Scegli la soglia di notifica sulla base delle osservazioni relative alla tua query, non di un valore universale.
Per la paginazione, usa il cursor della risposta e interrompi la scansione quando l’API segnala che non ci sono altri risultati. Conserva i cursori e i parametri di richiesta utilizzati, così da poter riprodurre l’esecuzione. I parametri date_posted e sort_by consentono di impostare un filtro temporale e un ordinamento; se l’attività richiede confronti ripetibili, mantienili invariati tra un’esecuzione e l’altra.
Come interpretare il risultato
Dopo l’implementazione, il team può rispondere in modo verificabile a tre domande pratiche: la richiesta è stata completata? Dove si trovano i risultati nel JSON? Quanti video unici sono stati inclusi nello snapshot salvato? In questo modo, il passaggio da una tabella vuota alla diagnosi è più breve: si controllano prima gli stati e la struttura, poi i parametri, i duplicati e il contenuto della risposta originale.
Lo schema della risposta e i campi disponibili possono variare da un record all’altro. In un controllo live di jsonscraper del 25 ottobre 2026, la ricerca restituiva campi relativi a identificativo, descrizione, autore e statistiche; i valori del singolo record vanno considerati facoltativi. Un report operativo conserva i dati effettivamente ricevuti e non sostituisce i campi mancanti con zeri.
Puoi iniziare dalla pagina del TikTok Scraper API e verificare gli endpoint e i parametri esatti nella documentazione ufficiale dell’API. Questo controllo è utile prima di avviare il monitoraggio: il report diventa un risultato osservabile, la cui qualità può essere diagnosticata.