Pour repérer des vidéos publiques TikTok qui mentionnent une marque et contiennent des formulations publicitaires explicites, recueillez les résultats correspondant à plusieurs requêtes, extrayez les légendes et signalez les mots-clés. Vous obtiendrez un fichier CSV avec des liens et les statistiques disponibles : une file d’attente à examiner par une personne, et non une conclusion automatique sur la conformité aux règles.
Ce processus peut servir à une agence qui compare une campagne à son brief ou à une équipe interne qui tient une liste de mentions publiques. Il aide à organiser les résultats de recherche et conserve les indices qui permettront à l’analyste de décider quelles vidéos ouvrir et examiner.
Que faut-il rechercher dans les vidéos ?
Pour vérifier une publicité, il faut examiner le lien entre l’auteur et la marque ainsi que la façon dont ce lien est révélé à proximité d’une recommandation. Le guide de la FTC destiné aux influenceurs explique qu’un lien important peut être financier, professionnel, personnel ou familial, et que sa divulgation doit être visible et compréhensible. Pour une recommandation en vidéo, la FTC indique que la mention doit figurer dans la vidéo elle-même, et pas seulement dans sa description. La légende est donc utile pour le tri, mais ne permet pas à elle seule de savoir ce que le public a vu à l’écran ou entendu dans l’audio.
La tâche de ce script est plus limitée : repérer, dans les résultats de recherche renvoyés, les vidéos dont les légendes contiennent des expressions liées à la marque et des mots-clés éventuels comme « publicité », « sponsor » ou « partenariat ». Adaptez la liste de termes à la langue et à la terminologie de la campagne. Si aucun mot-clé n’apparaît dans la légende, ouvrez la vidéo et vérifiez son contenu : une correspondance textuelle ne permet pas d’établir si la vidéo elle-même comporte une mention.
Comment transformer les résultats de recherche en file d’attente à vérifier ?
Préparez une courte liste de requêtes : le nom de la marque, celui de la campagne et l’orthographe courante du nom du produit. Lancez les requêtes séparément et conservez leur formulation avec les résultats. L’équipe pourra ainsi voir quelle requête a permis de trouver une vidéo et relancer la collecte si nécessaire.


Pour la collecte, vous pouvez utiliser le TikTok Scraper API de jsonscraper. La route GET documentée /searchVideo se trouve à l’adresse https://tiktok.evelode.com et accepte les paramètres keyword, count, date_posted, sort_by, region et cursor. Dans la réponse observée, les données TikTok contenaient les vidéos sous search_item_list[].aweme_info ; aweme_list pouvait être vide. Le parseur ci-dessous vérifie les deux emplacements.
La clé est transmise au moyen du paramètre license_key. Stockez-la dans une variable d’environnement, plutôt que dans le script ou le dépôt. La documentation des routes TikTok indique les noms des paramètres de recherche ; pour la page suivante, utilisez le cursor renvoyé. Enregistrez le nombre d’objets traités et la requête utilisée : la pagination permet de poursuivre les résultats, mais ne garantit pas à elle seule que l’ensemble est complet.
Exemple minimal en Python
Le script envoie une requête pour chaque expression, recueille les deux formes documentées de résultats, supprime les doublons selon l’ID vidéo, repère les termes dans la description et écrit un fichier CSV. Installez requests avec la commande python -m pip install requests, définissez JSONSCRAPER_TIKTOK_LICENSE_KEY dans l’environnement et lancez le fichier. Cet exemple est compatible avec Python 3.8 et les versions ultérieures.
import csv
import os
import sys
import requests
BASE_URL = "https://tiktok.evelode.com/searchVideo"
KEY = os.environ.get("JSONSCRAPER_TIKTOK_LICENSE_KEY")
if not KEY:
raise SystemExit("Set JSONSCRAPER_TIKTOK_LICENSE_KEY first")
QUERIES = ["Example Brand", "Example Product", "Example Campaign"]
MARKERS = ("#реклама", "реклама", "спонсор", "партнерство", "партнёрство", "#ad", "sponsored")
def videos_from(payload):
data = payload.get("tiktok") or {}
videos = data.get("aweme_list") or []
if not videos:
videos = [
item.get("aweme_info")
for item in (data.get("search_item_list") or [])
if isinstance(item, dict) and isinstance(item.get("aweme_info"), dict)
]
return [video for video in videos if isinstance(video, dict)]
rows = {}
for query in QUERIES:
response = requests.get(
BASE_URL,
params={"keyword": query, "count": 20, "date_posted": "this-month", "license_key": KEY},
timeout=30,
)
response.raise_for_status()
payload = response.json()
if payload.get("status") != "ok":
print("Unexpected API status for query:", query, file=sys.stderr)
continue
for video in videos_from(payload):
video_id = video.get("aweme_id")
if not video_id:
continue
author = video.get("author") or {}
stats = video.get("statistics") or {}
caption = video.get("desc") or ""
matched = [word for word in MARKERS if word in caption.casefold()]
row = rows.setdefault(str(video_id), {
"video_id": str(video_id),
"url": video.get("share_url") or "",
"author": author.get("unique_id") or author.get("nickname") or "",
"caption": caption,
"queries": set(),
"disclosure_markers": set(),
"play_count": stats.get("play_count"),
"digg_count": stats.get("digg_count"),
"comment_count": stats.get("comment_count"),
"review_status": "manual_review",
})
row["queries"].add(query)
row["disclosure_markers"].update(matched)
with open("tiktok_disclosure_review.csv", "w", newline="", encoding="utf-8-sig") as file:
fields = ["video_id", "url", "author", "caption", "queries", "disclosure_markers",
"play_count", "digg_count", "comment_count", "review_status"]
writer = csv.DictWriter(file, fieldnames=fields)
writer.writeheader()
for row in rows.values():
row["queries"] = " | ".join(sorted(row["queries"]))
row["disclosure_markers"] = " | ".join(sorted(row["disclosure_markers"]))
writer.writerow(row)
print("Saved", len(rows), "unique returned videos")
Avant d’enregistrer le code, vérifiez le statut de la réponse externe, puis les données sous tiktok. Le normaliseur lit les deux emplacements où les vidéos peuvent se trouver. Pour récupérer la page suivante, vous pouvez transmettre le cursor obtenu dans la requête suivante sans le transformer ; cet exemple minimal se limite volontairement à une seule page par requête.
Que contient le fichier CSV ?
Chaque ligne associe l’ID et le lien de la vidéo, l’identifiant de l’auteur disponible, la légende, les expressions recherchées et les mots-clés correspondants. Si la réponse contient des statistiques de vues, de mentions J’aime et de commentaires, elles sont conservées pour aider à établir l’ordre des vérifications. Ces champs peuvent être absents ; le script les laisse vides au lieu de leur attribuer la valeur zéro.
Ouvrez ensuite la vidéo, vérifiez si une mention est présente et visible dans la vidéo, puis consignez le résultat selon des catégories définies, par exemple « repérée », « vérification complémentaire nécessaire » ou « non repérée lors du visionnage ». Le code recherche uniquement des termes textuels exacts dans la légende ; il n’analyse ni l’image ni l’audio et ne décide pas si la vidéo respecte les règles.
Pour un processus régulier, lancez la collecte selon un calendrier, consignez l’heure de la requête et conservez le JSON d’origine avec le CSV. Limitez la liste aux expressions nécessaires et définissez une durée de conservation pour les données recueillies. La politique de collecte responsable des données de jsonscraper préconise une fréquence raisonnable des requêtes, la minimisation des données et la vérification des résultats d’IA avant toute action ultérieure.
Vous obtenez ainsi une file d’attente reproductible de vidéos publiques à examiner manuellement pour vérifier les mentions publicitaires : les correspondances issues des recherches et les statistiques disponibles aident à déterminer quelles vidéos ouvrir en premier, tandis que l’évaluation de la vidéo elle-même reste du ressort de la personne chargée de la vérification. Vous pouvez consulter les noms des paramètres dans la documentation de l’API TikTok et les informations sur le produit sur la page du TikTok Scraper API.