Lorsque les acheteurs parlent de votre produit sur TikTok, une recherche sur le nom de la marque peut aider votre équipe à recenser les questions récurrentes. Le résultat pratique est un fichier CSV contenant la description de la vidéo, le nom de l’auteur, le lien et les compteurs d’interactions disponibles. Ce fichier peut être transmis à l’équipe d’assistance ou servir de base à une classification thématique.

Prenons comme exemple la requête « comment utiliser la machine à café Acme ». Le script ci-dessous effectue une recherche sur TikTok, extrait soigneusement les vidéos à partir de deux structures de réponse documentées et enregistre les résultats obtenus. L’équipe vérifie ensuite manuellement les descriptions, regroupe les formulations similaires et les transforme en thèmes de FAQ ou en conseils pour la fiche produit.
Pourquoi convertir la recherche en tableau
Consulter les résultats de recherche manuellement complique les vérifications ultérieures : il faut retrouver les résultats, et les notes restent souvent dans le navigateur ou dans des échanges de messages. Un tableau enregistré fournit une liste de travail commune : chaque entrée comporte l’identifiant de la vidéo, un lien, une description, le nom de l’auteur et les indicateurs disponibles. Il est possible de programmer les exécutions suivantes, tandis que l’archive JSON permet de vérifier précisément ce que l’API a renvoyé lors d’une exécution donnée.
Il faut toutefois tenir compte des limites de la méthode : la recherche renvoie les résultats trouvés pour une requête, et non un catalogue complet garanti de toutes les mentions. Le tableau convient donc pour repérer des exemples et observer les questions récurrentes ; toute conclusion sur leur fréquence devrait s’appuyer sur des exécutions répétées et une vérification manuelle.
Ce que renvoie la recherche
Dans la documentation de TikTok Scraper API, la route /searchVideo accepte le paramètre obligatoire keyword. Parmi les paramètres pris en charge figurent également count, cursor, date_posted, sort_by et region. Pour ce scénario, une requête avec un mot-clé et un nombre de résultats suffit.
La réponse contient un statut externe et un objet tiktok. Dans la structure vérifiée, les vidéos peuvent se trouver dans aweme_list ou dans des éléments search_item_list au sein du champ aweme_info. Le code prend en compte ces deux formes et n’extrait que les champs réellement présents. Selon le résultat, les données disponibles peuvent inclure l’identifiant de la vidéo, sa description, son lien, le nom et l’identifiant de l’auteur, la date de publication, ainsi que les compteurs de vues, de mentions « J’aime », de commentaires et de partages.
Un collecteur minimal en Python
Installez la bibliothèque de requêtes et définissez la clé dans la variable d’environnement JSONSCRAPER_TIKTOK_LICENSE_KEY. Le code est compatible avec Python 3.8 et les versions ultérieures. Il enregistre la réponse d’origine au format JSON et les lignes normalisées au format CSV. La clé est transmise à la requête, mais n’est pas affichée à l’écran.
import csv
import json
import os
from datetime import datetime, timezone
from pathlib import Path
import requests
API_KEY = os.environ["JSONSCRAPER_TIKTOK_LICENSE_KEY"]
KEYWORD = "Acme кофемашина"
response = requests.get(
"https://tiktok.evelode.com/searchVideo",
params={
"license_key": API_KEY,
"keyword": KEYWORD,
"count": 30,
"region": "US",
},
timeout=60,
)
response.raise_for_status()
payload = response.json()
if payload.get("status") != "ok":
raise RuntimeError("TikTok API a renvoyé un statut externe inattendu")
tiktok = payload.get("tiktok") or {}
items = list(tiktok.get("aweme_list") or [])
for result in tiktok.get("search_item_list") or []:
video = result.get("aweme_info")
if video:
items.append(video)
# Supprime les doublons tout en conservant l’ordre de première apparition.
unique = {}
for item in items:
video_id = item.get("aweme_id")
if video_id:
unique.setdefault(video_id, item)
stamp = datetime.now(timezone.utc).strftime("%Y%m%dT%H%M%SZ")
Path("data").mkdir(exist_ok=True)
Path(f"data/raw-{stamp}.json").write_text(
json.dumps(payload, ensure_ascii=False, indent=2), encoding="utf-8"
)
columns = [
"video_id", "description", "share_url", "author", "author_id",
"created_at", "views", "likes", "comments", "collected_at"
]
with open("data/videos.csv", "w", newline="", encoding="utf-8") as file:
writer = csv.DictWriter(file, fieldnames=columns)
writer.writeheader()
for item in unique.values():
author = item.get("author") or {}
stats = item.get("statistics") or {}
created = item.get("create_time")
writer.writerow({
"video_id": item.get("aweme_id"),
"description": item.get("desc"),
"share_url": item.get("share_url"),
"author": author.get("nickname"),
"author_id": author.get("uid"),
"created_at": created,
"views": stats.get("play_count"),
"likes": stats.get("digg_count"),
"comments": stats.get("comment_count"),
"collected_at": stamp,
})
print(f"Nombre de lignes enregistrées : {len(unique)}")
Installez la dépendance avec la commande python -m pip install requests. Si un champ est absent d’une entrée donnée, le code laisse la cellule correspondante vide. C’est important pour les indicateurs : une valeur vide signifie que le champ n’a pas été fourni, et non qu’il vaut zéro.
Transformer le CSV en liste de questions utile
La première étape consiste à filtrer les descriptions par contenu. Vous pouvez rechercher des mots comme « comment », « pourquoi », « ne fonctionne pas », le nom du modèle ou des noms de pièces spécifiques. Ce filtre crée une file d’attente pour la vérification éditoriale, mais ne permet pas à lui seul de déterminer l’intention de l’auteur : une mention de la marque peut figurer dans un avis, une plaisanterie ou une question de compatibilité.
Pour regrouper les thèmes, ne transmettez au classificateur que les champs textuels nécessaires : la description et, si la tâche le justifie, un identifiant d’enregistrement anonymisé. Demandez-lui de renvoyer des catégories prédéfinies, par exemple « première mise en marche », « nettoyage », « compatibilité », « panne » et « achat ». Conservez la description d’origine avec la catégorie afin qu’un membre de l’équipe puisse vérifier et corriger l’attribution.
Un rapport de travail peut inclure le thème, le nombre d’exemples trouvés, des liens vers quelques vidéos illustratives et une colonne distincte « vérifié par une personne ». Le nombre d’exemples dans le jeu de données décrit les résultats de cette requête et de cette période de collecte ; il ne correspond pas à la proportion de tous les acheteurs qui rencontrent le problème.
Pagination et exécutions régulières
Pour obtenir la page de résultats suivante, la documentation indique le paramètre de pagination cursor : transmettez à la requête suivante la valeur du curseur renvoyée par la précédente. Traitez cette valeur comme un jeton opaque et arrêtez la pagination lorsqu’il n’y a plus de résultats ou que l’API indique qu’il n’existe pas de page suivante. Pour un pilote limité, il est raisonnable de commencer par une seule requête, de vérifier les résultats, puis d’ajouter la pagination.
Pour effectuer la collecte régulièrement, exécutez le script selon un calendrier à l’aide du planificateur du système d’exploitation ou d’un outil CI. Conservez un fichier JSON d’origine distinct pour chaque exécution et ajoutez l’heure de collecte au tableau. Si vous accumulez un historique, dédupliquez les entrées par identifiant vidéo, mais conservez séparément les instantanés successifs si vous souhaitez suivre l’évolution des compteurs. Comparer ces derniers n’a de sens que si plusieurs instantanés du même enregistrement sont disponibles.
Stockez la clé dans le gestionnaire de secrets de votre système CI ou dans une variable d’environnement, limitez l’accès à l’archive et définissez une durée de conservation interne. Avant de transmettre les données à un système de classification, vérifiez quels champs lui sont réellement nécessaires. Cela réduit la copie inutile de données utilisateur et facilite le contrôle des accès.
Le résultat pour l’équipe
Après l’exécution, vous disposerez d’une archive de la réponse d’origine et d’un fichier CSV contenant les vidéos trouvées et les champs disponibles. L’équipe d’assistance pourra vérifier les liens et recenser les questions récurrentes ; l’équipe marketing pourra observer les formulations utilisées par le public pour décrire ses besoins ; l’analyste pourra répéter la collecte et comparer les observations à différentes dates.

Pour commencer, formulez une requête précise avec le nom du produit et un problème spécifique, vérifiez manuellement 20 à 30 enregistrements trouvés et ajustez le vocabulaire des catégories. Vous pourrez ensuite ajouter plusieurs requêtes thématiques, une programmation et un export vers un tableur ou une base de données. Les fonctionnalités de la route et ses paramètres sont présentés dans la description de TikTok Scraper API ; vérifiez d’abord la requête choisie avant de mettre en place un suivi plus large.