TikTok compte aujourd’hui environ et les créateurs y publient, selon les estimations, 23 millions de vidéos chaque jour. Si tu as déjà essayé de récupérer des données, même sur une petite partie de ce flot, tu sais déjà à quel point ça peut vite tourner au casse-tête.
En général, le scénario est toujours le même : tu tapes « scrape TikTok videos with Python », tu copies un bout de tuto (ou tu demandes à ChatGPT d’en écrire un), tu l’exécutes… et il ne se passe rien. HTML vide. Erreur 403. Ou le fameux « Process finished with exit code 0 » sans aucune sortie. J’ai vu ce cycle revenir dans des dizaines de tickets GitHub et de fils Reddit, et c’est justement pour ça que j’ai écrit ce guide. On va passer en revue trois méthodes Python qui fonctionnent vraiment en 2025, avec un tutoriel complet pour télécharger les vrais fichiers vidéo .mp4 (pas juste les métadonnées — ce que la plupart des autres guides s’arrêtent à faire), ainsi qu’un tableau comparatif pour t’aider à choisir l’approche la plus adaptée à ton besoin. Si Python n’est pas indispensable pour toi, je présenterai aussi des alternatives sans code comme qui permettent d’obtenir les mêmes données en deux clics environ.
Que signifie vraiment « extraire des vidéos TikTok » ?
Avant d’entrer dans le code, mieux vaut clarifier ce que les gens veulent dire par « scraper des vidéos TikTok » — parce que cette expression recouvre deux réalités très différentes :
- Extraire les métadonnées des vidéos : légendes, hashtags, nombre de likes, commentaires, partages, vues, date de publication, infos sur l’auteur. C’est ce que la plupart des tutoriels couvrent.
- Télécharger les vrais fichiers vidéo (.mp4) : récupérer la vidéo elle-même et l’enregistrer sur ta machine. C’est ce que la plupart des gens veulent vraiment quand ils cherchent « scrape TikTok videos » — et c’est la partie que presque personne n’explique.
Ce guide traite des deux. Chaque méthode ci-dessous permet d’extraire les métadonnées et de récupérer les URL nécessaires pour sauvegarder les fichiers .mp4.
Pourquoi extraire des vidéos TikTok avec Python ?
Avec et TikTok Shop qui génère , les cas d’usage business liés aux données TikTok sont loin d’être anecdotiques. Voici ceux que je croise le plus souvent :
| Cas d’usage | Ce que tu extrairas | Pour qui |
|---|---|---|
| Recherche influenceurs & marketing | Taux d’engagement, nombre d’abonnés, formats de contenu, performances des hashtags | Équipes marketing, agences |
| Stratégie de contenu | Hashtags tendance, formats viraux, rythme de publication | Créateurs de contenu, social media managers |
| Veille de marque | Mentions, portée des campagnes, sentiment de l’audience | Brand managers, équipes RP |
| Veille concurrentielle | Performances des vidéos concurrentes, créations publicitaires, fiches TikTok Shop | E-commerce, équipes produit |
| Étude de marché | Tendances émergentes, comportement de l’audience, découverte produit | Analystes, hedge funds, cabinets d’étude |
| Archivage & conformité | Fichiers vidéo pour revue interne ou conservation des preuves | Juridique, conformité, agences |
Les enjeux business sont bien réels : les revenus publicitaires TikTok aux États-Unis devraient atteindre 23,4 milliards de dollars en 2026, et les créateurs affiliés génèrent dans les catégories les plus performantes de TikTok Shop. Si tu travailles dans l’e-commerce ou le marketing d’influence, ces données ont une vraie valeur monétaire.
Pourquoi ton code Python de base échoue sur TikTok
Si tu as déjà tenté quelque chose de ce genre sans résultat, tu n’es pas seul :
1import requests
2from bs4 import BeautifulSoup
3resp = requests.get("https://www.tiktok.com/@someuser")
4soup = BeautifulSoup(resp.text, "html.parser")
5# ...et ensuite, rien d’exploitable dans le HTML
La raison est simple : TikTok est l’une des plateformes les plus difficiles à scraper. Un simple requests.get() renvoie surtout une coquille HTML vide, parce que le contenu réel est rendu en JavaScript dans le navigateur. En plus de ça, TikTok déploie un dispositif anti-bot très agressif : détection comportementale, empreinte TLS, qui génère des signatures de requêtes, et sélecteurs CSS dynamiques qui changent sans prévenir.

Selon l’Imperva 2025 Bad Bot Report, le trafic automatisé a dépassé le trafic humain pour la première fois en 2024 — les bots représentent désormais . TikTok en a parfaitement conscience et a conçu ses défenses en conséquence.
Voici un tableau de diagnostic rapide pour comprendre ce qui bloque et aller directement vers la bonne méthode :
| Symptôme | Cause probable | Méthode qui corrige le problème |
|---|---|---|
| HTML vide / aucune donnée | Contenu rendu en JavaScript ; requests ne peut pas exécuter JavaScript | Méthode 1 (JSON caché) ou Méthode 3 (Playwright) |
| 403 / Accès refusé | En-têtes manquants ou incorrects ; détection anti-bot | Méthode 1 avec des en-têtes corrects |
| Ça marche une fois, puis plus rien | Limitation de débit / blocage IP | Rotation de proxies (toutes les méthodes) |
| Un mur de connexion apparaît | Session/cookie requis | Méthode 3 (navigateur avec session enregistrée) |
| Le code généré par ChatGPT ne renvoie rien | La structure TikTok a changé depuis les données d’entraînement | Les 3 méthodes (approches à jour) |
Le seuil de limitation de débit se situe grosso modo autour de 30 à 60 requêtes par minute et par IP avant que les blocages progressifs ou les CAPTCHA n’apparaissent. Les IP de datacenter sont signalées en quelques minutes — des proxies résidentiels ou mobiles sont pratiquement indispensables dès qu’on monte en volume.
Vue d’ensemble : 3 méthodes pour extraire des vidéos TikTok avec Python
Voici la feuille de route. Chaque méthode a ses avantages et ses compromis, et je te présenterai les trois avec du code fonctionnel :
- Extraction de JSON caché — analyser la balise
__UNIVERSAL_DATA_FOR_REHYDRATION__intégrée dans les pages TikTok. C’est la méthode la plus rapide, la plus simple, sans navigateur. - API interne de TikTok — appeler directement l’endpoint non documenté
/api/post/item_list/pour récupérer des données en masse avec une pagination basée sur un curseur. - Automatisation navigateur avec Playwright — rendre les pages dans un navigateur headless pour gérer le scroll infini, le contenu dynamique et les murs de connexion.
Les trois méthodes permettent aussi de télécharger les vrais fichiers vidéo .mp4 — je détaille ça dans une section dédiée après les explications de chaque méthode. Un tableau comparatif complet arrive à la fin pour t’aider à décider en connaissance de cause.
Méthode 1 : extraire des vidéos TikTok via le JSON caché (idéale pour débuter)
C’est l’approche que je te recommande de tester en premier. TikTok intègre, dans presque chaque chargement de page, un énorme bloc JSON à l’intérieur d’une balise <script> dont l’identifiant est __UNIVERSAL_DATA_FOR_REHYDRATION__. Ce bloc contient toutes les données du profil et des vidéos que le JavaScript du front-end afficherait normalement — ce qui veut dire que tu peux les récupérer avec une seule requête HTTP, sans navigateur.
Ce qu’il te faut
- Python 3.8+
requests(ouhttpx)beautifulsoup4(ouparsel)- Des en-têtes corrects :
User-Agent,Referer,Accept-Language
Installe les dépendances :
1pip install requests beautifulsoup4
Étape par étape : extraire les données vidéo TikTok depuis la balise script
Étape 1 : envoyer une requête GET avec des en-têtes de navigateur réalistes.
C’est là que beaucoup de débutants se plantent. Si tu envoies un simple requests.get() sans en-têtes, TikTok renvoie une page 403 ou un CAPTCHA. Il te faut au minimum un User-Agent de navigateur récent et un en-tête Referer.
1import requests
2from bs4 import BeautifulSoup
3import json
4url = "https://www.tiktok.com/@charlidamelio"
5headers = {
6 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
7 "Referer": "https://www.tiktok.com/",
8 "Accept-Language": "en-US,en;q=0.9",
9}
10resp = requests.get(url, headers=headers)
Étape 2 : analyser le HTML et localiser la balise script de rehydratation.
1soup = BeautifulSoup(resp.text, "html.parser")
2script_tag = soup.find("script", id="__UNIVERSAL_DATA_FOR_REHYDRATION__")
Si script_tag vaut None, TikTok t’a probablement bloqué (vérifie alors le code de statut) ou a modifié l’identifiant de la balise (c’est rare, mais possible).
Étape 3 : charger le contenu du script en JSON.
1data = json.loads(script_tag.string)
Étape 4 : naviguer dans la structure JSON pour extraire les métadonnées vidéo.
La structure se trouve sous __DEFAULT_SCOPE__. Pour une page de profil utilisateur :
1user_detail = data["__DEFAULT_SCOPE__"]["webapp.user-detail"]
2user_info = user_detail["userInfo"]
3# Statistiques du profil
4stats = user_info["stats"]
5print(f"Followers: {stats['followerCount']}, Likes: {stats['heartCount']}")
6# Liste des vidéos (première page de vidéos)
7item_list = user_detail.get("itemList", [])
8for video in item_list:
9 print(video["desc"]) # Légende
10 print(video["stats"]["playCount"]) # Vues
11 print(video["video"]["playAddr"]) # URL de téléchargement de la vidéo (sans filigrane)
12 print(video["video"]["downloadAddr"]) # URL de téléchargement de la vidéo (avec filigrane)
Étape 5 : extraire les URL de téléchargement des vidéos.
Le champ playAddr fournit en général une version plus propre de la vidéo (souvent sans le filigrane TikTok), tandis que downloadAddr inclut le filigrane standard. Les deux sont des URL directes vers le fichier .mp4 — mais elles demandent des en-têtes spécifiques pour être téléchargées (voir la section téléchargement ci-dessous).
Tu devrais maintenant avoir une liste d’objets contenant les métadonnées de chaque vidéo, avec la légende, les statistiques, la date de création, les hashtags (dans challenges[] et textExtra) et les URL vidéo directes.
Limites de la méthode JSON caché
- Ne récupère que les données du chargement initial — en général les ~30 premières vidéos d’un profil
- Ne gère pas le scroll infini ni la pagination (il n’y a pas de « page suivante » à demander)
- Si TikTok change l’identifiant de la balise script ou la structure JSON, le parseur casse (ça arrive régulièrement — la aide à le détecter tôt)
- Idéale pour : des extractions rapides d’un profil, des récupérations ponctuelles ou quand tu n’as besoin que des vidéos les plus récentes
Méthode 2 : extraire des vidéos TikTok via l’API interne
Le front-end de TikTok ne charge pas toutes les vidéos en une seule fois — il effectue des appels XHR vers des endpoints internes au fur et à mesure du scroll. Le principal pour les vidéos d’un compte est /api/post/item_list/. Tu peux appeler directement cet endpoint depuis Python, ce qui te donne une pagination basée sur un curseur et l’accès à toutes les vidéos d’un profil (pas seulement la première page).
Comment trouver l’endpoint API interne
Ouvre Chrome DevTools sur une page de profil TikTok, va dans l’onglet Network, filtre par XHR, puis fais défiler la page. Tu verras des requêtes vers des URL comme :
1https://www.tiktok.com/api/post/item_list/?WebIdLastTime=...&aid=1988&count=35&cursor=0&secUid=...
Les paramètres clés sont :
secUid— l’identifiant unique du profil (tu peux l’extraire du JSON de la Méthode 1, dansuserInfo.user.secUid)cursor— l’offset de pagination (commence à0, chaque réponse renvoie la valeur du curseur suivant)count— nombre d’éléments par page (généralement 30 à 35)
Étape par étape : interroger l’API interne de TikTok avec Python
Étape 1 : récupérer le secUid du profil cible.
Tu peux le récupérer depuis le JSON caché (Méthode 1) ou depuis le HTML de la page profil.
Étape 2 : construire et envoyer la requête API.
1import requests
2import json
3sec_uid = "MS4wLjABAAAA..." # Depuis la Méthode 1
4api_url = "https://www.tiktok.com/api/post/item_list/"
5params = {
6 "aid": "1988",
7 "secUid": sec_uid,
8 "count": 35,
9 "cursor": 0,
10}
11headers = {
12 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
13 "Referer": "https://www.tiktok.com/",
14}
15resp = requests.get(api_url, params=params, headers=headers)
16data = resp.json()
Étape 3 : analyser la réponse.
Chaque élément dans data["itemList"] contient la même structure vidéo que dans la Méthode 1 — desc, stats, video.playAddr, video.downloadAddr, etc.
Étape 4 : parcourir toutes les vidéos via pagination.
1all_videos = []
2cursor = 0
3has_more = True
4while has_more:
5 params["cursor"] = cursor
6 resp = requests.get(api_url, params=params, headers=headers)
7 data = resp.json()
8 items = data.get("itemList", [])
9 all_videos.extend(items)
10 has_more = data.get("hasMore", False)
11 cursor = data.get("cursor", 0)
12 print(f"Fetched {len(items)} videos, total: {len(all_videos)}, hasMore: {has_more}")
13print(f"Total videos scraped: {len(all_videos)}")
Chaque itération renvoie un nouveau lot et un nouveau curseur. La boucle continue jusqu’à ce que hasMore soit False.
Limites de la méthode API interne
- TikTok modifie fréquemment ces endpoints et les paramètres requis — c’est la méthode qui demande le plus de maintenance. Ces derniers mois, certaines requêtes ont commencé à exiger
msToken,X-Bogusou d’autres paramètres de signature générés par la de TikTok (spoiler : la reproduire en pur Python n’est pas trivial). - Peut nécessiter des cookies de session ou des jetons supplémentaires pour certains types de données
- La limitation de débit par IP s’applique toujours — la rotation de proxies est recommandée
- Si tu commences à obtenir des tableaux
itemListvides, tonmsTokenest probablement expiré ; il se renouvelle environ toutes les 10 secondes dans le navigateur - Idéale pour : l’extraction massive de données quand tu as besoin de toutes les vidéos d’un profil et que la limite de la Méthode 1 sur la première page ne suffit plus
Méthode 3 : extraire des vidéos TikTok avec Playwright (automatisation de navigateur)
Quand les deux premières méthodes se heurtent à des obstacles — connexion obligatoire, CAPTCHA ou paramètres de signature impossibles à reproduire — Playwright devient l’option de secours. Il lance un vrai navigateur (headless), navigue sur TikTok comme le ferait un humain, et sait gérer le rendu JavaScript, le scroll infini et même les sessions authentifiées.
Installer Playwright pour scraper TikTok
Installe Playwright et ses binaires de navigateur :
1pip install playwright
2playwright install firefox
Je recommande Firefox plutôt que Chromium pour scraper TikTok. Les tests de la communauté montrent de façon assez constante une avec Firefox, et la détection anti-bot de TikTok est particulièrement agressive envers les navigateurs headless basés sur Chromium.
Pour plus de discrétion, tu peux combiner Playwright avec (une version corrigée de Playwright) ou (Firefox modifié au niveau C++ pour réduire la détection). Dans des , Camoufox obtient des scores de furtivité quasi parfaits face aux principaux services de détection des bots.
Étape par étape : extraire les vidéos d’un profil TikTok avec Playwright
Étape 1 : lancer un navigateur Firefox headless et ouvrir le profil.
1import asyncio
2from playwright.async_api import async_playwright
3import json
4async def scrape_tiktok_profile(username):
5 async with async_playwright() as p:
6 browser = await p.firefox.launch(headless=True)
7 context = await browser.new_context(
8 user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:124.0) Gecko/20100101 Firefox/124.0",
9 viewport={"width": 1280, "height": 720},
10 )
11 page = await context.new_page()
12 await page.goto(f"https://www.tiktok.com/@{username}", wait_until="networkidle")
Étape 2 : attendre le chargement de la grille vidéo.
1 # Attendre l’apparition des éléments vidéo
2 await page.wait_for_selector('[data-e2e="user-post-item"]', timeout=15000)
Si TikTok affiche une surcouche « Something went wrong », il faudra peut-être cliquer sur un bouton de relance :
1 retry_btn = page.locator('button:has-text("Retry")')
2 if await retry_btn.count() > 0:
3 await retry_btn.click()
4 await page.wait_for_selector('[data-e2e="user-post-item"]', timeout=15000)
Étape 3 : extraire les données depuis le JSON caché (même avec Playwright).
L’approche la plus fiable reste de récupérer le JSON de rehydratation, même en passant par un navigateur :
1 script_el = page.locator("#__UNIVERSAL_DATA_FOR_REHYDRATION__")
2 raw_json = await script_el.inner_text()
3 data = json.loads(raw_json)
4 # Même navigation JSON que pour la Méthode 1
5 user_detail = data["__DEFAULT_SCOPE__"]["webapp.user-detail"]
6 videos = user_detail.get("itemList", [])
Étape 4 : gérer le scroll infini pour récupérer davantage de vidéos.
Si tu as besoin de plus que les ~30 vidéos initiales, fais défiler la page et capture les réponses XHR supplémentaires :
1 all_videos = list(videos)
2 # Intercepter les réponses API pendant le scroll
3 api_responses = []
4 async def capture_response(response):
5 if "/api/post/item_list" in response.url:
6 try:
7 body = await response.json()
8 api_responses.append(body)
9 except:
10 pass
11 page.on("response", capture_response)
12 # Faire défiler pour déclencher d’autres chargements
13 for _ in range(5): # Ajuste le nombre de scrolls selon le besoin
14 await page.evaluate("window.scrollTo(0, document.body.scrollHeight)")
15 await asyncio.sleep(2)
16 # Récupérer les vidéos depuis les réponses interceptées
17 for api_resp in api_responses:
18 items = api_resp.get("itemList", [])
19 all_videos.extend(items)
20 print(f"Total videos: {len(all_videos)}")
21 await browser.close()
22 return all_videos
23# Exécution
24videos = asyncio.run(scrape_tiktok_profile("charlidamelio"))
Tu devrais maintenant disposer d’une liste d’objets vidéo provenant à la fois du chargement initial et des pages supplémentaires chargées via le scroll.
Limites de la méthode Playwright
- C’est de loin la méthode la plus lente (rendu complet de la page, allers-retours réseau, pauses de scroll)
- Consommation de ressources plus élevée — chaque instance de navigateur utilise beaucoup de mémoire et de CPU
- Reste soumise au blocage par IP à grande échelle — associe-la à une rotation de proxies
- Idéale pour : les interactions complexes, le contenu derrière authentification, la gestion des CAPTCHA ou les cas où les Méthodes 1 et 2 sont bloquées
Comment télécharger des vidéos TikTok (.mp4) avec Python
C’est la section qui comble la plus grosse lacune de presque tous les autres tutoriels sur TikTok. Extraire les métadonnées est utile, mais la plupart des personnes qui cherchent « scrape TikTok videos » veulent les fichiers vidéo eux-mêmes.
TikTok intègre des URL de téléchargement directement dans l’objet vidéo :
playAddr— fournit généralement une version sans filigrane ou avec un filigrane réduitdownloadAddr— la version destinée au téléchargement dans l’application, avec le filigrane TikTok
Les deux URL sont temporaires et expirent rapidement (généralement en quelques heures), donc il faut télécharger les vidéos peu après les avoir extraites.
Étape par étape : télécharger un fichier vidéo TikTok
Étape 1 : extraire l’URL vidéo depuis l’une des trois méthodes ci-dessus.
1video_url = video["video"]["playAddr"] # Version sans filigrane
2# ou
3video_url = video["video"]["downloadAddr"] # Avec filigrane
Étape 2 : envoyer une requête GET avec les bons en-têtes.
C’est ici que beaucoup se trompent. Si tu fais simplement requests.get(video_url), tu obtiendras un 403. TikTok vérifie l’en-tête Referer et attend un User-Agent proche de celui d’un navigateur.
1import requests
2headers = {
3 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
4 "Referer": "https://www.tiktok.com/",
5}
6resp = requests.get(video_url, headers=headers, stream=True)
Étape 3 : écrire le contenu de la réponse dans un fichier .mp4.
Utilise stream=True et écris par blocs — les vidéos TikTok peuvent être lourdes, et il ne faut pas tout charger en mémoire :
1video_id = video["id"]
2filename = f"tiktok_{video_id}.mp4"
3with open(filename, "wb") as f:
4 for chunk in resp.iter_content(chunk_size=1024 * 1024): # blocs de 1 Mo
5 if chunk:
6 f.write(chunk)
7print(f"Downloaded: {filename}")
Tu devrais maintenant avoir un fichier .mp4 lisible sur ta machine.
Téléchargement avec ou sans filigrane
TikTok stocke à la fois des versions avec et sans filigrane de chaque vidéo. L’URL playAddr donne souvent une version plus propre (celle utilisée par le lecteur), tandis que downloadAddr inclut le filigrane TikTok avec le nom du créateur.
Petite précision éthique : le filigrane sert à créditer le créateur. Si tu télécharges des vidéos pour de la recherche, de l’analyse ou une revue interne, utiliser playAddr est généralement acceptable. En revanche, si tu les redistribues ou les republies, supprimer l’attribution du créateur soulève des questions éthiques et de droits d’auteur. J’y reviens dans la partie juridique ci-dessous.
Pour un pipeline de téléchargement plus robuste, tu peux aussi envisager — son extracteur TikTok gère automatiquement la logique de signature et la résolution des URL, ce qui t’évite de gérer toi-même les en-têtes et l’expiration des jetons.
Comparatif : quelle méthode Python choisir ?
Voici le tableau comparatif que j’aurais aimé avoir quand j’ai commencé à travailler sur des projets de scraping TikTok :
| Critère | Méthode 1 : JSON caché | Méthode 2 : API interne | Méthode 3 : Playwright |
|---|---|---|---|
| Difficulté | Débutant | Intermédiaire | Intermédiaire |
| Vitesse | Rapide (1 requête par page) | Rapide (API JSON) | Lente (rendu complet de la page) |
| Résistance anti-bot | Moyenne | Faible (les endpoints changent) | Élevée (imitant un vrai navigateur) |
| Télécharge le .mp4 ? | Oui (extraction de playAddr) | Oui (URL dans la réponse) | Oui (interception réseau) |
| Gère le scroll infini | Non (première page uniquement) | Oui (pagination par curseur) | Oui (simulation du scroll) |
| Proxy nécessaire à grande échelle | Oui | Oui | Oui |
| Maintenance requise | Moyenne (la structure JSON change) | Élevée (les endpoints/signatures changent souvent) | Faible à moyenne (le navigateur s’adapte) |
| Idéal pour | Extraire rapidement un profil ponctuel | Extraction massive, toutes les vidéos | Contenu derrière connexion ou cas complexes |
Ma recommandation :
- Tu veux juste un aperçu rapide d’un profil ? Commence par la Méthode 1. La configuration prend environ 30 secondes et les données arrivent en moins d’une seconde par page.
- Tu as besoin de toutes les vidéos d’un profil avec pagination ? La Méthode 2 est la plus adaptée, mais prépare-toi à faire des ajustements quand TikTok modifie ses paramètres d’API.
- Tu dois gérer des murs de connexion, des CAPTCHA ou maximiser la robustesse ? Méthode 3 avec Playwright. C’est plus lent et plus lourd, mais c’est aussi ce que TikTok bloque le plus difficilement.
En pratique, je commence souvent par la Méthode 1 et je passe à la Méthode 2 ou 3 uniquement si je tombe sur ses limites. Ça permet de garder une infrastructure simple et des coûts bas.
Pas besoin de Python ? Extraire des vidéos TikTok avec des outils sans code
Beaucoup de personnes qui cherchent « scrape TikTok videos with Python » n’ont en réalité pas besoin de Python. Elles ont besoin des données. Si tu es analyste marketing et que tu veux les métadonnées vidéo de quelques profils concurrents, ou responsable de marque en train de suivre des mentions, mettre en place un environnement Python avec rotation de proxies et gestion des signatures relève souvent du surdimensionnement.

Voici une comparaison honnête des approches :
| Approche | Niveau requis | Coût | Maintenance | Idéal pour |
|---|---|---|---|---|
| Python (fait maison) | Intermédiaire+ | Gratuit (+ coût des proxies) | Élevée (les scripts cassent) | Contrôle total, pipelines sur mesure |
| Thunderbit (extension Chrome) | Débutant | Offre gratuite disponible | Aucune (l’IA relit le site à chaque fois) | Extraction rapide de données vidéo, export vers Sheets/Excel |
| Apify TikTok Scraper | Débutant | Payant (facturation par exécution) | Faible (maintenu par Apify) | Exécutions automatisées en volume et planifiées |
| TikAPI | Développeur | Abonnement payant | Moyenne | Création d’applications à partir des données TikTok |
Comment Thunderbit gère le scraping TikTok
est l’Extracteur Web IA que nous avons créé chez Thunderbit, et il fonctionne différemment des outils de scraping traditionnels. Au lieu de s’appuyer sur des sélecteurs CSS ou des règles XPath prédéfinies (qui cassent à chaque changement de mise en page de TikTok), l’IA de Thunderbit lit la structure de la page à chaque visite et propose les colonnes pertinentes — légende, likes, hashtags, URL de la vidéo, auteur, etc.
Le flux de travail tient vraiment en deux clics :
- Ouvre un profil TikTok dans Chrome, clique sur l’extension Thunderbit, puis lance « AI Suggest Fields ». Thunderbit analyse la page et propose une structure de tableau.
- Vérifie les colonnes suggérées, ajuste-les si nécessaire, puis clique sur « Scrape ».
Les données s’exportent directement vers Google Sheets, Excel, Airtable ou Notion. Aucun sélecteur CSS à maintenir, aucun code à déboguer, aucune configuration de proxy. Pour un analyste marketing qui a besoin des métadonnées vidéo de quelques profils, c’est objectivement plus rapide que de mettre en place un environnement Python — et ça ne casse pas à chaque mise à jour du front-end de TikTok (ce qui, d’après les retours de la communauté, arrive toutes les quelques semaines).
Thunderbit prend aussi en charge le — il peut visiter chaque page vidéo individuellement pour enrichir ton tableau avec des détails supplémentaires comme le nombre total de commentaires, les infos sur la musique ou la durée de la vidéo.
Tu peux l’essayer gratuitement via le . Pour en savoir plus, consulte notre .
Cadre légal et éthique pour le scraping TikTok
Aucun des tutoriels les mieux classés sur ce sujet ne parle vraiment de légalité, ce qui est une omission importante, surtout quand on sait que TikTok a activement engagé des actions juridiques contre des services de scraping. Voici l’essentiel à connaître.
Les conditions d’utilisation de TikTok (§ 4.1) interdisent explicitement l’accès automatisé. Violer des CGU constitue une rupture de contrat, pas une infraction pénale — mais ça peut entraîner un bannissement de compte, un blocage IP ou une action civile.
Le cadre juridique est plus permissif qu’on ne le pense souvent pour les données publiques. Le précédent majeur est Meta Platforms v. Bright Data (N.D. Cal., janvier 2024), où le tribunal a jugé que le scraping de données accessibles publiquement lorsqu’on est déconnecté ne viole pas les conditions d’utilisation de Meta. Meta a abandonné l’affaire et renoncé à faire appel. L’arrêt plus ancien hiQ v. LinkedIn de la Cour d’appel du 9e circuit (confirmé après Van Buren) a établi que le scraping de données publiquement accessibles ne constitue pas une violation du CFAA — même si hiQ a finalement conclu un accord, payé 500 000 $ et accepté une injonction permanente, ce qui montre que l’application des CGU peut tout de même être contraignante.
Le RGPD et le CCPA s’appliquent si tu collectes des données personnelles d’utilisateurs situés dans l’UE ou en Californie. Scraper des publications publiques est une chose ; construire des bases de données contenant les informations personnelles d’utilisateurs individuels en est une autre.
Bonnes pratiques :
- Limite le rythme de tes requêtes (n’agresse pas les serveurs TikTok)
- Ne scrape pas de comptes privés ni de contenus de mineurs
- Ne redistribue pas commercialement des vidéos protégées par le droit d’auteur
- Respecte
robots.txt(TikTok interdit la plupart des crawls automatisés) - Télécharger des vidéos pour une recherche ou une analyse personnelle n’est pas la même chose que les republier — fais bien la différence
Avertissement : ce contenu est éducatif et ne constitue pas un conseil juridique. Si tu construis un produit commercial à partir de données TikTok scrapées, consulte un avocat.
Conclusion : les points à retenir
Le scraping TikTok en 2025 est un objectif mouvant. L’arsenal anti-bot de la plateforme fait partie des plus sophistiqués du web, et les approches naïves (simple requests, extraits générés par ChatGPT, anciens tutoriels) vont échouer. Mais avec la bonne méthode, c’est tout à fait faisable.
Voici l’essentiel :
- La Méthode 1 (JSON caché) est la plus rapide et la plus simple — commence par là pour des extractions rapides de profil.
- La Méthode 2 (API interne) offre la pagination et l’accès en masse, mais demande le plus de maintenance car les endpoints et les exigences de signature changent souvent.
- La Méthode 3 (Playwright) est la plus résistante face aux protections anti-bot, au prix de la vitesse et des ressources.
- Les trois méthodes permettent d’extraire des URL de téléchargement vidéo — et ce guide est le seul à te montrer comment télécharger réellement les fichiers .mp4 avec les bons en-têtes.
- Pour les utilisateurs non techniques, offre une voie vraiment plus rapide vers les mêmes données, sans écrire ni maintenir de code. Son approche basée sur l’IA veut dire qu’il ne casse pas quand TikTok modifie sa mise en page — ce qui, d’après les retours de la communauté, arrive plus souvent qu’on ne le voudrait.
Si tu veux démarrer sans installer Python, — l’offre gratuite suffit pour tester sur quelques profils et voir si ça colle à ton workflow. Pour ceux qui choisissent la voie Python, commence par la Méthode 1, valide tes données, puis monte en puissance ensuite.
Tu veux aller plus loin sur les techniques de web scraping ? Consulte nos guides sur , et .
FAQ
Est-il légal de scraper des vidéos TikTok avec Python ?
Le scraping de données accessibles publiquement se situe dans une zone grise juridique, pas dans une interdiction totale. La décision Meta v. Bright Data (2024) soutient l’idée que l’extraction de données publiques lorsqu’on est déconnecté ne viole pas les conditions d’utilisation de la plateforme. En revanche, les CGU de TikTok interdisent explicitement l’accès automatisé, et les obligations RGPD/CCPA s’appliquent aux données personnelles. Ce n’est pas illégal au sens où beaucoup le craignent, mais ce n’est pas sans risque non plus. Consulte un professionnel du droit pour ton cas précis.
Quelle est la meilleure bibliothèque Python pour scraper TikTok ?
Ça dépend de ton approche. Pour l’extraction de JSON caché (Méthode 1), requests + beautifulsoup4 suffit. Pour les appels à l’API interne (Méthode 2), requests ou httpx conviennent. Pour l’automatisation navigateur (Méthode 3), playwright est aujourd’hui la référence — il a dépassé Selenium en popularité pour les nouveaux projets de scraping, avec , contre environ 53 millions pour Selenium. Le wrapper TikTok-Api (environ 6,3K étoiles sur GitHub) mérite aussi ton attention si tu veux une interface plus haut niveau, même s’il peut se montrer fragile.
Puis-je télécharger des vidéos TikTok sans filigrane avec Python ?
Oui. Les données de TikTok incluent une URL playAddr qui fournit généralement une version de la vidéo sans le filigrane standard. Ce guide montre comment extraire cette URL à partir de chacune des trois méthodes et télécharger le fichier .mp4 avec les bons en-têtes. Le champ downloadAddr, lui, inclut le filigrane.
Pourquoi mon scraper TikTok renvoie-t-il des données vides ?
La cause la plus fréquente est que TikTok a besoin de JavaScript pour rendre le contenu. Un simple requests.get() ne récupère que le HTML de base — les vraies données se trouvent soit dans une balise script JSON cachée (Méthode 1), soit sont chargées dynamiquement via JavaScript (Méthode 3). Si tu obtiens un HTML vide, essaie d’abord la Méthode 1. Si ça échoue, vérifie tes en-têtes (l’absence de Referer est la première cause des erreurs 403) ou passe à la Méthode 3 avec Playwright.
Comment éviter d’être bloqué en scrappant TikTok ?
Utilise des en-têtes de navigateur réalistes (notamment User-Agent, Referer et Accept-Language), fais tourner des proxies résidentiels ou mobiles (les IP de datacenter sont signalées en quelques minutes), ajoute des délais aléatoires entre les requêtes (1 à 3 secondes minimum) et évite les volumes extrêmement élevés. La Méthode 3 (Playwright) offre la meilleure résistance au blocage, car elle imite une vraie session de navigateur. Pour tout volume sérieux, prévois un budget proxy — les proxies résidentiels d’entrée de gamme coûtent environ chez les principaux fournisseurs.
- En savoir plus