TikTok compte aujourd’hui près de et les créateurs y publient environ 23 millions de vidéos chaque jour. Si vous avez déjà essayé de récupérer ne serait-ce qu’une petite partie de ce flot de contenus, vous savez déjà à quel point c’est galère.
Voilà ce qui se passe le plus souvent : vous cherchez « scrape TikTok videos with Python », vous copiez un extrait trouvé dans un tutoriel (ou vous demandez à ChatGPT d’en écrire un), vous l’exécutez, et… rien. Du HTML vide. Une erreur 403. Ou le fameux « Process finished with exit code 0 » sans aucun résultat. J’ai vu ce scénario se répéter des dizaines de fois dans des issues GitHub et des fils Reddit, et c’est précisément pour cela que j’ai rédigé ce guide. Nous allons passer en revue trois méthodes Python qui marchent vraiment en 2025, avec un tutoriel complet pour télécharger les vrais fichiers vidéo .mp4 (et pas seulement les métadonnées — ce sur quoi s’arrêtent la plupart des autres guides), ainsi qu’un tableau comparatif pour vous aider à choisir la bonne approche selon votre besoin. Si vous n’avez pas besoin de Python, je présenterai aussi des alternatives no-code comme qui permettent d’obtenir les mêmes données en deux clics environ.
Que signifie vraiment « scraper des vidéos TikTok » ?
Avant d’entrer dans le code, il vaut mieux clarifier ce que les gens veulent dire quand ils parlent de « scraper des vidéos TikTok » — car cette expression couvre en réalité deux choses bien différentes :
- Extraire les métadonnées des vidéos : légendes, hashtags, nombre de likes, commentaires, partages, vues, date de publication, informations sur l’auteur. C’est ce que la plupart des tutoriels traitent.
- Télécharger les fichiers vidéo eux-mêmes (.mp4) : récupérer la vidéo et l’enregistrer sur votre machine. C’est ce que la plupart des gens veulent vraiment lorsqu’ils tapent « scrape TikTok videos » — et c’est justement la partie que presque personne ne couvre.
Ce guide traite des deux. Chaque méthode ci-dessous permet d’extraire les métadonnées et de récupérer les URL de téléchargement nécessaires pour sauvegarder les fichiers .mp4.
Pourquoi extraire des vidéos TikTok avec Python ?
Avec et TikTok Shop qui génère , les raisons business d’exploiter les données TikTok sont loin d’être anecdotiques. Voici les cas d’usage que je vois le plus souvent :
| Cas d’usage | Ce que vous extrayez | À qui cela s’adresse | |---|---|---| | 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 de vidéos virales, rythme de publication | Créateurs de contenu, social media managers | | Veille de marque | Mentions, portée des campagnes, sentiment de l’audience | Responsables de marque, équipes RP | | Veille concurrentielle | Performances des vidéos concurrentes, créations publicitaires, fiches TikTok Shop | E-commerce, équipes produit | | Études de marché | Tendances émergentes, comportement de l’audience, découverte de produits | Analystes, hedge funds, sociétés de recherche | | Archivage & conformité | Fichiers vidéo pour revue interne ou conservation documentaire | Juridique, conformité, agences |
Les enjeux commerciaux 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 principales catégories de TikTok Shop. Si vous travaillez dans l’e-commerce ou le marketing d’influence, ces données ont une vraie valeur financière.
Pourquoi votre code Python de base échoue sur TikTok
Si vous avez déjà tenté quelque chose comme ceci sans succès, vous n’êtes pas seul :
1import requests
2from bs4 import BeautifulSoup
3resp = requests.get("https://www.tiktok.com/@someuser")
4soup = BeautifulSoup(resp.text, "html.parser")
5# ...et le HTML ne contient finalement rien d’exploitable
La raison est simple : TikTok fait partie des plateformes les plus pénibles à scraper. Un simple requests.get() renvoie un squelette HTML presque vide, parce que le contenu réel est généré côté navigateur par JavaScript. En plus de cela, TikTok déploie un arsenal anti-bot très costaud : détection comportementale, fingerprint TLS, qui génère des signatures de requête, et sélecteurs CSS dynamiques qui changent sans prévenir.

Selon le rapport 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 le sait très bien et a renforcé 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 JS ; 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 les bons en-têtes |
| Cela fonctionne une fois puis s’arrête | Limitation de débit / blocage IP | Rotation de proxies (toutes les méthodes) |
| Écran de connexion | Obligation de session/cookie | Méthode 3 (navigateur avec session enregistrée) |
| Le code généré par ChatGPT ne renvoie rien | La structure de TikTok a changé depuis les données d’entraînement du modèle | Les 3 méthodes (approches à jour) |
Le seuil de limitation de débit se situe autour de 30 à 60 requêtes par minute et par IP avant l’apparition de blocages souples ou de CAPTCHAs. Les IP de datacenter sont repérées en quelques minutes — les proxies résidentiels ou mobiles sont quasiment indispensables dès qu’on monte en volume.
Vue d’ensemble : 3 méthodes pour scraper des vidéos TikTok avec Python
Voici la feuille de route. Chaque méthode a ses avantages et ses compromis, et je couvre les trois avec du code fonctionnel :
- Extraction du JSON caché — Analysez la balise script
__UNIVERSAL_DATA_FOR_REHYDRATION__intégrée aux pages TikTok. C’est la méthode la plus rapide, la plus simple, et elle ne nécessite pas de navigateur. - API interne de TikTok — Interrogez directement l’endpoint non documenté
/api/post/item_list/pour obtenir des données en volume avec une pagination par curseur. - Automatisation de navigateur avec Playwright — Rendre les pages dans un navigateur sans interface pour gérer le défilement infini, le contenu dynamique et les écrans de connexion.
Ces trois méthodes peuvent aussi servir à télécharger les vrais fichiers vidéo .mp4 — je l’explique dans une section dédiée après les tutoriels de chaque méthode. Un tableau comparatif complet arrive à la fin pour vous aider à décider en toute connaissance de cause.
Méthode 1 : scraper des vidéos TikTok via le JSON caché (idéale pour débuter)
C’est l’approche que je recommande pour commencer. TikTok intègre, sur pratiquement chaque chargement de page, un gros bloc JSON dans une balise <script> portant l’identifiant __UNIVERSAL_DATA_FOR_REHYDRATION__. Ce bloc contient toutes les données de profil et de vidéos que le JavaScript du front-end afficherait normalement — ce qui veut dire que vous pouvez les récupérer avec une seule requête HTTP, sans navigateur.
Ce dont vous avez besoin
- Python 3.8+
requests(ouhttpx)beautifulsoup4(ouparsel)- Des en-têtes corrects :
User-Agent,Referer,Accept-Language
Installez 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 la plupart des débutants se plantent. Si vous envoyez un simple requests.get() sans en-têtes, TikTok renvoie un 403 ou une page CAPTCHA. Il vous 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 d’hydratation.
1soup = BeautifulSoup(resp.text, "html.parser")
2script_tag = soup.find("script", id="__UNIVERSAL_DATA_FOR_REHYDRATION__")
Si script_tag vaut None, TikTok vous a probablement bloqué (vérifiez le code de statut) ou a modifié l’identifiant de la balise (rare, mais possible).
Étape 3 : charger le contenu du script en JSON.
1data = json.loads(script_tag.string)
Étape 4 : parcourir 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 watermark)
12 print(video["video"]["downloadAddr"]) # URL de téléchargement de la vidéo (avec watermark)
Étape 5 : extraire les URL de téléchargement des vidéos.
Le champ playAddr fournit généralement une version plus propre de la vidéo (souvent sans superposition de watermark TikTok), tandis que downloadAddr inclut le watermark 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 plus bas).
Vous devriez maintenant disposer d’une liste d’objets vidéo contenant la légende, les statistiques, l’heure de création, les hashtags (dans challenges[] et textExtra) et les URL vidéo directes.
Limites de la méthode du JSON caché
- Ne capture que les données du premier chargement de page — généralement les 30 premières vidéos d’un profil
- Ne gère pas le défilement infini ni la pagination (il n’y a pas de « page suivante » à interroger)
- Si TikTok modifie l’identifiant de la balise script ou la structure JSON, l’analyseur casse (cela arrive périodiquement — la aide à le détecter tôt)
- Idéal pour : extraction rapide d’un profil, récupération ponctuelle de données, ou lorsque vous n’avez besoin que des vidéos les plus récentes
Méthode 2 : scraper des vidéos TikTok via l’API interne
Le front-end de TikTok ne charge pas toutes les vidéos d’un coup — il effectue des appels XHR vers des endpoints internes au fur et à mesure que vous faites défiler la page. L’un des principaux endpoints pour les vidéos utilisateur est /api/post/item_list/. Vous pouvez l’appeler directement depuis Python, ce qui vous donne une pagination par curseur et l’accès à toutes les vidéos d’un profil (et pas seulement à la première page).
Comment trouver l’endpoint API interne
Ouvrez les DevTools de Chrome sur une page de profil TikTok, allez dans l’onglet Network, filtrez par XHR et faites défiler la page vers le bas. Vous verrez des requêtes vers des URL du type :
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 (vous pouvez 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.
Vous pouvez l’extraire 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 de data["itemList"] contient la même structure vidéo que dans la Méthode 1 — desc, stats, video.playAddr, video.downloadAddr, etc.
Étape 4 : paginer sur toutes les vidéos.
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, vous récupérez le lot suivant 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 exigent désormais
msToken,X-Bogusou d’autres paramètres de signature générés par la de TikTok (spoiler : les 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 vous commencez à recevoir des tableaux
itemListvides, votremsTokenest probablement périmé (il tourne environ toutes les 10 secondes dans le navigateur) - Idéal pour : extraction de données en masse lorsque vous devez récupérer toutes les vidéos d’un profil et que la limitation de la première page de la Méthode 1 ne suffit pas
Méthode 3 : scraper des vidéos TikTok avec Playwright (automatisation de navigateur)
Lorsque les deux premières méthodes se heurtent à un mur — connexion obligatoire, CAPTCHAs, ou paramètres de signature impossibles à reproduire — Playwright devient l’option de secours. Il lance un vrai navigateur (sans interface), navigue sur TikTok comme un utilisateur humain et peut gérer le rendu JavaScript, le défilement infini et même les sessions authentifiées.
Installer Playwright pour scraper TikTok
Installez Playwright et ses binaires de navigateur :
1pip install playwright
2playwright install firefox
Je recommande Firefox plutôt que Chromium pour le scraping de TikTok. Les tests de la communauté montrent régulièrement une avec Firefox, et la détection anti-bot de TikTok est particulièrement sévère avec les navigateurs headless basés sur Chromium.
Pour plus de discrétion, vous pouvez associer Playwright à (un fork de Playwright modifié) ou à (Firefox modifié au niveau C++ pour l’anti-détection). Dans des , Camoufox obtient des scores de furtivité quasi parfaits face aux principaux services de détection des bots.
Étape par étape : scraper 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 de vidéos.
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 superposition « Something went wrong », il peut être nécessaire de cliquer sur un bouton de réessai :
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 via Playwright.
L’approche la plus fiable consiste encore à récupérer le JSON d’hydratation, même lorsqu’on utilise 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 dans la Méthode 1
5 user_detail = data["__DEFAULT_SCOPE__"]["webapp.user-detail"]
6 videos = user_detail.get("itemList", [])
Étape 4 : gérer le défilement infini pour obtenir plus de vidéos.
Si vous avez besoin de plus que les ~30 premières vidéos, faites défiler la page et captez les réponses XHR supplémentaires :
1 all_videos = list(videos)
2 # Intercepter les réponses API pendant le défilement
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): # Ajustez 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"))
Vous devriez maintenant disposer d’une liste d’objets vidéo provenant à la fois du chargement initial et des pages supplémentaires chargées par défilement.
Limites de la méthode Playwright
- De loin la méthode la plus lente (rendu complet de la page, allers-retours réseau, délais de scroll)
- Consommation de ressources plus élevée — chaque instance de navigateur utilise beaucoup de mémoire et de CPU
- Reste soumise aux blocages par IP à grande échelle — associez-la à une rotation de proxies
- Idéal pour : interactions complexes, contenu derrière connexion, gestion des CAPTCHAs, ou lorsque 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 grande lacune de la plupart des autres tutoriels sur TikTok. Extraire les métadonnées est utile, mais la plupart des personnes qui cherchent à « scraper des vidéos TikTok » veulent les fichiers vidéo eux-mêmes.
TikTok intègre des URL de téléchargement dans l’objet de données vidéo :
playAddr— généralement la version sans watermark ou avec un watermark réduitdownloadAddr— la version destinée au téléchargement dans l’application (avec le watermark TikTok)
Ces deux URL sont limitées dans le temps et expirent après une courte période (généralement quelques heures), donc il faut télécharger rapidement après l’extraction.
É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 watermark
2# ou
3video_url = video["video"]["downloadAddr"] # Avec watermark
Étape 2 : envoyer une requête GET avec les bons en-têtes.
C’est l’étape qui piège beaucoup de monde. Si vous faites simplement requests.get(video_url), vous obtiendrez un 403. TikTok vérifie l’en-tête Referer et attend un User-Agent qui ressemble à 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.
Utilisez stream=True et écrivez par morceaux — les vidéos TikTok peuvent être volumineuses, et vous ne voulez pas charger tout le fichier 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): # morceaux de 1 Mo
5 if chunk:
6 f.write(chunk)
7print(f"Téléchargé : {filename}")
Vous devriez maintenant avoir un fichier .mp4 lisible sur votre ordinateur.
Téléchargement avec ou sans watermark
TikTok stocke les deux versions d’une vidéo : avec watermark et sans watermark. L’URL playAddr fournit souvent une version plus propre (celle utilisée par le lecteur), tandis que downloadAddr inclut le watermark TikTok avec le nom du créateur.
Petite note d’éthique ici : le watermark sert à créditer le créateur. Si vous téléchargez des vidéos à des fins de recherche, d’analyse ou de revue interne, l’utilisation de playAddr est généralement acceptable. En revanche, si vous redistribuez ou republiez le contenu, supprimer l’attribution du créateur pose des questions à la fois éthiques et liées au droit d’auteur. J’y reviens dans la section juridique ci-dessous.
Pour une chaîne de téléchargement plus robuste, pensez à — son extracteur TikTok gère automatiquement les calculs de signature et la résolution des URL, ce qui vous évite de gérer vous-même les en-têtes et l’expiration des jetons.
Comparaison directe : quelle méthode Python choisir ?
Voici le tableau comparatif que j’aurais aimé avoir lorsque 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 (imite un vrai navigateur) |
| Télécharge les .mp4 ? | Oui (via playAddr) | Oui (URL dans la réponse) | Oui (interception réseau) |
| Gère le défilement infini | Non (première page uniquement) | Oui (pagination par curseur) | Oui (simulation du scroll) |
| Proxy requis à grande échelle | Oui | Oui | Oui |
| Maintenance requise | Moyenne (la structure JSON change) | Élevée (endpoints/signatures changent souvent) | Faible à moyenne (le navigateur s’adapte) |
| Idéal pour | Scrapes rapides d’un profil | Extraction massive, toutes les vidéos | Contenu complexe ou derrière connexion |
Ma recommandation :
- Vous avez juste besoin d’un aperçu rapide d’un profil ? Commencez par la Méthode 1. Sa mise en place prend environ 30 secondes et renvoie les données en moins d’une seconde par page.
- Vous avez besoin de toutes les vidéos d’un profil avec pagination ? La Méthode 2 est la plus adaptée, mais préparez-vous à intervenir quand TikTok modifie ses paramètres API.
- Vous faites face à des écrans de connexion, des CAPTCHAs ou avez besoin d’une robustesse maximale ? Méthode 3 avec Playwright. C’est plus lent et plus lourd, mais aussi ce que TikTok a le plus de mal à bloquer.
En pratique, je commence souvent par la Méthode 1 et je ne passe à la Méthode 2 ou 3 que lorsque j’atteins ses limites. Ça permet de garder une infrastructure simple et les coûts bas.
Vous n’avez pas besoin de Python ? Scrapez TikTok avec des outils no-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 vous êtes analyste marketing et que vous voulez 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 de signatures est probablement excessif.

Voici une comparaison honnête des approches :
| Approche | Niveau technique | Coût | Maintenance | Idéal pour | |---|---|---|---|---| | Python (fait maison) | Intermédiaire et + | Gratuit (+ coût des proxies) | Élevée (les scripts cassent) | Contrôle total, pipelines sur mesure | | (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 (à l’exécution) | Faible (maintenu par Apify) | Exécutions automatisées en masse et planifiées | | TikAPI | Développeur | Abonnement payant | Moyenne | Création d’applications basées sur les données TikTok |
Comment Thunderbit gère le scraping TikTok
est l’extracteur Web IA que nous avons développé chez Thunderbit, et il fonctionne différemment des outils de scraping classiques. Au lieu de s’appuyer sur des sélecteurs CSS ou des règles XPath préconçus (qui cassent à chaque changement de mise en page de TikTok), l’IA de Thunderbit relit la page à chaque fois et propose les colonnes pertinentes — légende, likes, hashtags, URL vidéo, auteur, etc.
Le flux de travail tient littéralement en deux clics :
- Ouvrez un profil TikTok dans Chrome, cliquez sur l’extension Thunderbit, puis sur « AI Suggest Fields ». Thunderbit analyse la page et propose une structure de tableau.
- Vérifiez les colonnes proposées, ajustez-les si nécessaire, puis cliquez sur « Scrape ».
Les données s’exportent directement vers Google Sheets, Excel, Airtable ou Notion. Pas de sélecteurs CSS à maintenir, pas de code à déboguer, pas de configuration de proxy. Pour un analyste marketing qui a besoin de métadonnées vidéo sur quelques profils, c’est nettement plus rapide que de monter un environnement Python — et cela ne casse pas à chaque mise à jour du front-end de TikTok (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 pour enrichir votre tableau avec des détails supplémentaires comme le nombre complet de commentaires, les informations musicales ou la durée de la vidéo.
Vous pouvez l’essayer gratuitement via la . Pour en savoir plus, consultez notre .
Cadre juridique et éthique pour scraper TikTok
Aucun des tutoriels les mieux classés sur ce sujet ne parle vraiment de légalité, ce qui est notable étant donné que TikTok a déjà engagé des actions juridiques contre des services de scraping. Voici ce qu’il faut savoir.
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 cela peut entraîner des bannissements de compte, des blocages d’IP ou une action civile.
Le contexte juridique est plus permissif que beaucoup ne l’imaginent pour les données publiques. La principale jurisprudence est Meta Platforms v. Bright Data (N.D. Cal., janvier 2024), où le tribunal a estimé que le scraping de données publiquement accessibles en étant déconnecté ne violait 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 neuvième circuit (réaffirmé 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 transigé, payé 500 000 dollars et accepté une injonction permanente, ce qui montre que l’application des CGU peut rester contraignante.
Le RGPD et le CCPA s’appliquent si vous collectez des données personnelles d’utilisateurs européens ou californiens. Extraire des publications publiques est une chose ; constituer des bases de données contenant des informations personnelles sur des individus en est une autre.
Bonnes pratiques concrètes :
- Limitez le rythme de vos requêtes (n’agressez pas les serveurs de TikTok)
- Ne scrapez pas de comptes privés ni de contenus de mineurs
- Ne redistribuez pas commercialement des vidéos protégées par le droit d’auteur
- Respectez
robots.txt(TikTok interdit la plupart des crawls automatisés) - Télécharger des vidéos pour de la recherche personnelle ou de l’analyse n’est pas la même chose que les republier — faites bien la différence
Avertissement : ceci est un contenu éducatif, pas un avis juridique. Si vous créez un produit commercial basé sur des données TikTok scrapées, consultez un avocat.
Conclusion : les points à retenir
Le scraping TikTok en 2025 est une cible mouvante. L’anti-bot de la plateforme fait partie des plus sophistiqués du web, et les méthodes naïves (simple requests, extraits générés par ChatGPT, vieux tutoriels) échoueront. Mais avec la bonne approche, c’est tout à fait faisable.
Voici l’essentiel à retenir :
- La Méthode 1 (JSON caché) est la plus rapide et la plus simple — commencez par là pour un scrape rapide d’un profil.
- La Méthode 2 (API interne) offre la pagination et l’accès massif, 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 mesures anti-bot, au prix de la vitesse et des ressources consommées.
- Les trois méthodes permettent d’extraire les URL de téléchargement des vidéos — et ce guide est le seul à vous 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 lui permet de ne pas casser lorsque TikTok modifie sa mise en page — ce qui, d’après les retours de la communauté, arrive bien plus souvent qu’on ne le voudrait.
Si vous voulez démarrer sans configuration Python, — l’offre gratuite suffit pour la tester sur quelques profils et voir si elle correspond à votre workflow. Pour ceux qui choisissent la voie Python, commencez par la Méthode 1, validez vos données, puis passez à l’échelle à partir de là.
Vous voulez aller plus loin sur les techniques de scraping web ? Consultez nos guides sur , et .
FAQ
Est-il légal de scraper des vidéos TikTok avec Python ?
Le scraping de données publiquement accessibles se situe dans une zone grise juridique, et non dans une violation évidente. 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. Toutefois, les CGU de TikTok interdisent explicitement l’accès automatisé, et les obligations du RGPD/CCPA s’appliquent aux données personnelles. Ce n’est pas illégal au sens où beaucoup de gens le craignent, mais ce n’est pas sans risque non plus. Consultez un professionnel du droit pour votre cas précis.
Quelle est la meilleure bibliothèque Python pour scraper TikTok ?
Cela dépend de votre approche. Pour l’extraction du JSON caché (Méthode 1), requests + beautifulsoup4 suffisent. Pour les appels à l’API interne (Méthode 2), requests ou httpx conviennent. Pour l’automatisation du navigateur (Méthode 3), playwright est aujourd’hui la référence — il a dépassé Selenium en adoption pour les nouveaux projets de scraping, avec contre environ 53 millions pour Selenium. Le wrapper TikTok-Api (environ 6,3K étoiles GitHub) mérite aussi d’être envisagé si vous voulez une interface de plus haut niveau, même s’il peut être fragile.
Puis-je télécharger des vidéos TikTok sans watermark avec Python ?
Oui. Les données de TikTok contiennent une URL playAddr qui fournit généralement une version de la vidéo sans la superposition de watermark standard. Ce guide explique comment extraire cette URL avec l’une des trois méthodes et télécharger le fichier .mp4 avec les bons en-têtes. Le champ downloadAddr, lui, inclut le watermark.
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 afficher le contenu. Un simple requests.get() ne récupère que le squelette HTML — 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 vous obtenez du HTML vide, essayez d’abord la Méthode 1. Si cela échoue, vérifiez vos en-têtes (l’absence de Referer est la première cause des erreurs 403) ou passez à la Méthode 3 avec Playwright.
Comment éviter d’être bloqué en scrapant TikTok ?
Utilisez des en-têtes de navigateur réalistes (y compris User-Agent, Referer et Accept-Language), faites tourner des proxies résidentiels ou mobiles (les IP de datacenter sont repérées en quelques minutes), ajoutez des délais aléatoires entre les requêtes (1 à 3 secondes minimum) et évitez les volumes extrêmement élevés. La Méthode 3 (Playwright) offre la meilleure résistance au blocage parce qu’elle imite une vraie session de navigateur. Pour des volumes sérieux, prévoyez un budget proxy — les proxies résidentiels d’entrée de gamme coûtent environ chez les principaux fournisseurs.