TikTok conta oggi circa e i creator caricano ogni giorno una stima di 23 milioni di video. Se hai mai provato a raccogliere dati anche solo da una piccola parte di questo flusso continuo, sai già bene quanto possa essere frustrante.
Di solito va così: cerchi "scrape TikTok videos with Python", copi uno snippet da un tutorial (o chiedi a ChatGPT di scriverlo), lo esegui e ottieni… niente. HTML vuoto. Un errore 403. Oppure il famigerato "Process finished with exit code 0" senza alcun output. Ho visto questo giro ripetersi in decine di issue su GitHub e thread su Reddit, ed è proprio per questo che ho preparato questa guida. Vedremo tre metodi Python che funzionano davvero nel 2025, una procedura completa per scaricare i file video .mp4 reali (non solo i metadati — cosa che invece fanno quasi tutti gli altri tutorial), e una tabella comparativa per aiutarti a scegliere l’approccio più adatto al tuo caso. Se non ti serve Python, coprirò anche alternative no-code come che ti permettono di ottenere gli stessi dati in un paio di clic.
Cosa significa davvero "estrarre video da TikTok"?
Prima di entrare nel codice, vale la pena chiarire cosa intendono le persone quando dicono "estrarre video da TikTok" — perché l’espressione può riferirsi a due cose molto diverse:
- Estrarre i metadati dei video: didascalie, hashtag, numero di like, commenti, condivisioni, visualizzazioni, data di pubblicazione, informazioni sull’autore. È ciò su cui si concentrano la maggior parte dei tutorial.
- Scaricare i file video veri e propri (.mp4): salvare il video sul proprio dispositivo. È ciò che la maggior parte delle persone vuole davvero quando scrive "scrape TikTok videos" — ed è la parte che quasi nessuno tratta.
Questa guida copre entrambi gli aspetti. Ogni metodo qui sotto può estrarre i metadati e fornirti gli URL di download necessari per salvare i file .mp4.
Perché estrarre video da TikTok con Python?
Con e TikTok Shop che genera , le motivazioni di business per usare i dati di TikTok sono molto solide. Ecco i casi d’uso che vedo più spesso:
| Caso d’uso | Cosa estrai | Per chi è pensato | |---|---|---| | Ricerche su influencer e marketing | Tassi di engagement, follower, formati dei contenuti, performance degli hashtag | Team marketing, agenzie | | Strategia contenuti | Hashtag di tendenza, formati virali, frequenza di pubblicazione | Creator, social media manager | | Brand monitoring | Menzioni, copertura delle campagne, sentiment del pubblico | Brand manager, team PR | | Competitive intelligence | Performance dei video dei competitor, creatività adv, inserzioni TikTok Shop | E-commerce, team prodotto | | Market research | Trend emergenti, comportamento del pubblico, scoperta prodotto | Analyst, hedge fund, società di ricerca | | Archiviazione e compliance | File video per revisione interna o conservazione documentale | Legale, compliance, agenzie |
La posta in gioco è concreta: i ricavi pubblicitari di TikTok negli USA dovrebbero raggiungere 23,4 miliardi di dollari nel 2026, e i creator affiliati generano nelle principali categorie di TikTok Shop. Se lavori in e-commerce o influencer marketing, questi dati hanno un valore economico diretto.
Perché il tuo codice Python di base fallisce su TikTok
Se hai già provato qualcosa del genere senza ottenere risultati, sei in buona compagnia:
1import requests
2from bs4 import BeautifulSoup
3resp = requests.get("https://www.tiktok.com/@someuser")
4soup = BeautifulSoup(resp.text, "html.parser")
5# ...e poi nell'HTML non c'è nulla di utile
Il motivo è semplice: TikTok è una delle piattaforme più difficili da estrarre. Una semplice requests.get() restituisce per lo più un guscio HTML vuoto perché il contenuto reale viene renderizzato da JavaScript nel browser. Inoltre TikTok usa un sistema anti-bot molto aggressivo che include rilevamento comportamentale, fingerprint TLS, una che genera le firme delle richieste e selettori CSS dinamici che cambiano senza preavviso.

Secondo l’Imperva 2025 Bad Bot Report, il traffico automatizzato ha superato per la prima volta quello umano nel 2024 — i bot rappresentano ora il . TikTok ne è perfettamente consapevole e ha costruito le proprie difese di conseguenza.
Ecco una tabella diagnostica rapida per capire cosa sta andando storto e passare al metodo giusto:
| Sintomo | Causa probabile | Metodo che risolve |
|---|---|---|
| HTML vuoto / nessun dato | Contenuto renderizzato via JS; requests non esegue JavaScript | Metodo 1 (JSON nascosto) o Metodo 3 (Playwright) |
| 403 / Access Denied | Header mancanti o errati; rilevamento anti-bot | Metodo 1 con header corretti |
| Funziona una volta, poi si blocca | Rate limiting / blocco IP | Rotazione proxy (tutti i metodi) |
| Compare il login wall | Necessità di sessione/cookie | Metodo 3 (browser con sessione salvata) |
| Il codice generato da ChatGPT non restituisce nulla | La struttura di TikTok è cambiata dopo i dati di training del modello | Tutti e 3 i metodi (approcci aggiornati) |
La soglia di rate limit è di circa 30–60 richieste al minuto per IP prima che inizino soft block o CAPTCHA. Gli IP datacenter vengono segnalati in pochi minuti — per volumi seri, i proxy residential o mobile sono praticamente indispensabili.
Panoramica: 3 metodi per estrarre video da TikTok con Python
Ecco la roadmap. Ogni metodo ha compromessi diversi, e li coprirò tutti e tre con codice funzionante:
- Estrazione del JSON nascosto — Analizza il tag di script
__UNIVERSAL_DATA_FOR_REHYDRATION__incorporato nelle pagine TikTok. È il più veloce, semplice e non richiede un browser. - API interna di TikTok — Chiama direttamente l’endpoint non documentato
/api/post/item_list/per ottenere dati in blocco con paginazione basata su cursor. - Automazione browser con Playwright — Renderizza le pagine in un browser headless per gestire scroll infinito, contenuti dinamici e login wall.
Tutti e tre i metodi possono anche essere usati per scaricare i file video .mp4 reali — lo spiego in una sezione dedicata dopo le guide ai singoli metodi. In fondo trovi una tabella comparativa completa per aiutarti a decidere con cognizione di causa.
Metodo 1: estrarre video TikTok usando il JSON nascosto (adatto ai principianti)
Questo è l’approccio che consiglio di provare per primo. TikTok incorpora un enorme blob JSON in un tag <script> con id __UNIVERSAL_DATA_FOR_REHYDRATION__ praticamente ad ogni caricamento pagina. Questo blob contiene tutti i dati del profilo e dei video che il JavaScript del front-end normalmente renderizzerebbe — il che significa che puoi recuperarlo con una sola richiesta HTTP, senza bisogno di un browser.
Cosa ti serve
- Python 3.8+
requests(ohttpx)beautifulsoup4(oparsel)- Header corretti:
User-Agent,Referer,Accept-Language
Installa le dipendenze:
1pip install requests beautifulsoup4
Procedura passo per passo: estrarre i dati video di TikTok dal tag script
Passo 1: invia una richiesta GET con header browser realistici.
Qui si inceppano in molti. Se invii una semplice requests.get() senza header, TikTok risponde con un 403 o con una pagina CAPTCHA. Al minimo ti servono un User-Agent aggiornato di un browser e l’header 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)
Passo 2: analizza l’HTML e individua il tag script di hydration.
1soup = BeautifulSoup(resp.text, "html.parser")
2script_tag = soup.find("script", id="__UNIVERSAL_DATA_FOR_REHYDRATION__")
Se script_tag è None, TikTok probabilmente ti ha bloccato (controlla lo status code) oppure ha cambiato l’id del tag (evento raro ma possibile).
Passo 3: carica il contenuto dello script come JSON.
1data = json.loads(script_tag.string)
Passo 4: naviga nella struttura JSON per estrarre i metadati dei video.
La struttura è annidata sotto __DEFAULT_SCOPE__. Per una pagina profilo utente:
1user_detail = data["__DEFAULT_SCOPE__"]["webapp.user-detail"]
2user_info = user_detail["userInfo"]
3# Statistiche del profilo
4stats = user_info["stats"]
5print(f"Followers: {stats['followerCount']}, Likes: {stats['heartCount']}")
6# Elenco video (prima pagina di video)
7item_list = user_detail.get("itemList", [])
8for video in item_list:
9 print(video["desc"]) # Didascalia
10 print(video["stats"]["playCount"]) # Visualizzazioni
11 print(video["video"]["playAddr"]) # URL di download del video (senza watermark)
12 print(video["video"]["downloadAddr"]) # URL di download del video (con watermark)
Passo 5: estrai gli URL di download dei video.
Il campo playAddr di solito fornisce una versione più pulita del video (spesso senza il watermark di TikTok), mentre downloadAddr include il watermark standard. Entrambi sono URL diretti al file .mp4 — ma per scaricarli servono header specifici (li vedremo nella sezione download qui sotto).
Ora dovresti avere un elenco di oggetti contenenti i metadati dei video, ciascuno con didascalia, statistiche, data di creazione, hashtag (in challenges[] e textExtra) e URL diretti del video.
Limiti del metodo JSON nascosto
- Cattura solo i dati del caricamento iniziale della pagina — in genere i primi ~30 video di un profilo
- Non gestisce lo scroll infinito o la paginazione (non c’è una "pagina successiva" da richiamare)
- Se TikTok cambia l’id del tag script o la struttura JSON, il parser si rompe (succede periodicamente — la aiuta a intercettarlo in anticipo)
- Ideale per: estrazioni rapide di profili, raccolte one-shot o quando ti servono solo i video più recenti
Metodo 2: estrarre video TikTok tramite l’API interna
Il front-end di TikTok non carica tutti i video in una volta sola — effettua chiamate XHR a endpoint API interni man mano che scorri. Il principale per i video di un profilo è /api/post/item_list/. Puoi chiamare direttamente questo endpoint da Python, ottenendo paginazione basata su cursor e accesso a tutti i video di un profilo (non solo alla prima pagina).
Come trovare l’endpoint API interno
Apri Chrome DevTools su una pagina profilo TikTok, vai nella scheda Network, filtra per XHR e scorri verso il basso. Vedrai richieste verso URL simili a:
1https://www.tiktok.com/api/post/item_list/?WebIdLastTime=...&aid=1988&count=35&cursor=0&secUid=...
I parametri chiave sono:
secUid— l’ID univoco del profilo (puoi estrarlo dal JSON del Metodo 1, sottouserInfo.user.secUid)cursor— offset di paginazione (parte da0, ogni risposta restituisce il valore del cursor successivo)count— numero di elementi per pagina (di solito 30–35)
Procedura passo per passo: interrogare l’API interna di TikTok con Python
Passo 1: recupera il secUid del profilo target.
Puoi prenderlo dal JSON nascosto (Metodo 1) o dall’HTML della pagina profilo.
Passo 2: costruisci e invia la richiesta API.
1import requests
2import json
3sec_uid = "MS4wLjABAAAA..." # Dal Metodo 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()
Passo 3: analizza la risposta.
Ogni elemento in data["itemList"] contiene la stessa struttura video del Metodo 1 — desc, stats, video.playAddr, video.downloadAddr, ecc.
Passo 4: esegui la paginazione su tutti i video.
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"Recuperati {len(items)} video, totale: {len(all_videos)}, hasMore: {has_more}")
13print(f"Totale video estratti: {len(all_videos)}")
A ogni iterazione ottieni il batch successivo e un nuovo cursor. Il ciclo continua finché hasMore non diventa False.
Limiti del metodo API interna
- TikTok cambia spesso questi endpoint e i parametri richiesti — è il metodo che richiede più manutenzione. Negli ultimi mesi, alcune richieste hanno iniziato a richiedere
msToken,X-Boguso altri parametri di firma generati dalla di TikTok (spoiler: replicarla in puro Python non è affatto banale). - Per alcuni tipi di dati possono essere necessari cookie di sessione o token aggiuntivi
- Il rate limiting basato su IP resta valido — la rotazione dei proxy è consigliata
- Se inizi a ricevere array
itemListvuoti, molto probabilmente il tuomsTokenè scaduto (nel browser viene ruotato circa ogni 10 secondi) - Ideale per: estrazione massiva quando ti servono tutti i video di un profilo e il limite della prima pagina del Metodo 1 non basta
Metodo 3: estrarre video TikTok con Playwright (automazione browser)
Quando i primi due metodi si bloccano — richieste di login, CAPTCHA o parametri di firma che non riesci a replicare — Playwright è la soluzione di ripiego. Avvia un browser reale (headless), naviga su TikTok come farebbe un utente umano e riesce a gestire rendering JavaScript, scroll infinito e persino sessioni autenticate.
Configurare Playwright per estrarre dati da TikTok
Installa Playwright e i binari del browser:
1pip install playwright
2playwright install firefox
Per estrarre dati da TikTok consiglio Firefox invece di Chromium. I test della community mostrano in modo coerente con Firefox, e il rilevamento bot di TikTok è particolarmente aggressivo verso i browser headless basati su Chromium.
Per una stealth maggiore, valuta l’uso di (una fork patchata di Playwright) o (Firefox modificato a livello C++ per evitare il rilevamento). In , Camoufox ottiene punteggi di stealth quasi perfetti contro i principali servizi di bot detection.
Procedura passo per passo: estrarre i video di un profilo TikTok con Playwright
Passo 1: avvia un browser Firefox headless e vai al profilo.
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")
Passo 2: attendi che la griglia video venga caricata.
1 # Attendi la comparsa degli elementi video
2 await page.wait_for_selector('[data-e2e="user-post-item"]', timeout=15000)
Se TikTok mostra un overlay "Something went wrong", potrebbe essere necessario cliccare un pulsante di retry:
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)
Passo 3: estrai i dati dal JSON nascosto (anche usando il browser).
L’approccio più affidabile resta prendere il JSON di hydration, anche quando si usa un browser:
1 script_el = page.locator("#__UNIVERSAL_DATA_FOR_REHYDRATION__")
2 raw_json = await script_el.inner_text()
3 data = json.loads(raw_json)
4 # Stessa navigazione JSON del Metodo 1
5 user_detail = data["__DEFAULT_SCOPE__"]["webapp.user-detail"]
6 videos = user_detail.get("itemList", [])
Passo 4: gestisci lo scroll infinito per ottenere più video.
Se ti servono più dei circa 30 video iniziali, scorri verso il basso e cattura le risposte XHR aggiuntive:
1 all_videos = list(videos)
2 # Intercetta le risposte API mentre scorri
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 # Scorri verso il basso per attivare nuovi caricamenti
13 for _ in range(5): # Regola il numero di scroll in base alle esigenze
14 await page.evaluate("window.scrollTo(0, document.body.scrollHeight)")
15 await asyncio.sleep(2)
16 # Raccogli i video dalle risposte intercettate
17 for api_resp in api_responses:
18 items = api_resp.get("itemList", [])
19 all_videos.extend(items)
20 print(f"Totale video: {len(all_videos)}")
21 await browser.close()
22 return all_videos
23# Esegui
24videos = asyncio.run(scrape_tiktok_profile("charlidamelio"))
A questo punto dovresti avere un elenco di oggetti video sia dal caricamento iniziale della pagina sia dalle pagine aggiuntive caricate tramite scroll.
Limiti del metodo Playwright
- È di gran lunga il metodo più lento (rendering completo della pagina, round-trip di rete, ritardi dello scroll)
- Consuma più risorse — ogni istanza del browser usa molta memoria e CPU
- Rimane soggetto a blocchi IP su larga scala — abbinalo alla rotazione dei proxy
- Ideale per: interazioni complesse, contenuti protetti da login, gestione dei CAPTCHA o situazioni in cui i Metodi 1 e 2 vengono bloccati
Come scaricare video TikTok (.mp4) con Python
Questa è la sezione che colma la lacuna più grande presente in quasi tutti i tutorial su TikTok scraping. Estrarre metadati è utile, ma la maggior parte di chi cerca "scrape TikTok videos" vuole i file video veri e propri.
TikTok incorpora gli URL di download nell’oggetto dati del video:
playAddr— in genere la versione senza watermark o con watermark ridottodownloadAddr— la versione prevista da TikTok per il download nell’app, con watermark sovrapposto
Entrambi gli URL sono sensibili al tempo e scadono dopo una finestra breve (di solito alcune ore), quindi devi scaricare subito dopo averli estratti.
Procedura passo per passo: scaricare un file video TikTok
Passo 1: estrai l’URL del video con uno dei tre metodi sopra.
1video_url = video["video"]["playAddr"] # Versione senza watermark
2# oppure
3video_url = video["video"]["downloadAddr"] # Con watermark
Passo 2: invia una richiesta GET con gli header corretti.
È il passaggio che spesso manda in crisi. Se fai semplicemente requests.get(video_url), riceverai un 403. TikTok controlla l’header Referer e si aspetta un User-Agent simile a quello di un browser.
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)
Passo 3: scrivi il contenuto della risposta in un file .mp4.
Usa stream=True e scrivi a blocchi — i video TikTok possono essere pesanti, e non vuoi caricare tutto in memoria:
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): # blocchi da 1MB
5 if chunk:
6 f.write(chunk)
7print(f"Scaricato: {filename}")
Ora dovresti avere un file .mp4 riproducibile sul tuo computer.
Download con watermark vs senza watermark
TikTok conserva sia la versione con watermark sia quella senza watermark di ogni video. L’URL playAddr spesso restituisce una versione più pulita (quella usata dal player), mentre downloadAddr include il watermark di TikTok con il nome utente del creator.
Una nota rapida sull’etica: il watermark serve a dare credito al creator. Se scarichi video per ricerca, analisi o revisione interna, usare playAddr è in genere accettabile. Se invece ridistribuisci o ripubblichi i contenuti, rimuovere l’attribuzione del creator solleva questioni etiche e di copyright. Ne parleremo meglio nella sezione legale più avanti.
Per una pipeline di download più robusta, valuta — il suo estrattore TikTok gestisce automaticamente la matematica delle firme e la risoluzione degli URL, così non devi occuparti tu di header e scadenza dei token.
Confronto diretto: quale metodo Python dovresti usare?
Ecco la tabella comparativa che avrei voluto avere quando ho iniziato a lavorare su progetti di scraping di TikTok:
| Criterio | Metodo 1: JSON nascosto | Metodo 2: API interna | Metodo 3: Playwright |
|---|---|---|---|
| Difficoltà | Principiante | Intermedio | Intermedio |
| Velocità | Veloce (1 richiesta per pagina) | Veloce (API JSON) | Lento (rendering completo) |
| Resistenza anti-bot | Media | Bassa (gli endpoint cambiano) | Alta (simula un browser reale) |
| Scarica video .mp4? | Sì (estrae playAddr) | Sì (URL nella risposta) | Sì (intercetta la rete) |
| Gestisce scroll infinito | No (solo prima pagina) | Sì (paginazione con cursor) | Sì (simulazione dello scroll) |
| Serve un proxy su larga scala | Sì | Sì | Sì |
| Manutenzione richiesta | Media (cambia la struttura JSON) | Alta (endpoint/firme cambiano spesso) | Bassa-Media (il browser si adatta) |
| Ideale per | Estrazioni rapide di profili singoli | Estrazione massiva, tutti i video | Contenuti protetti da login o complessi |
Il mio consiglio:
- Ti serve solo un’istantanea rapida di un profilo? Parti dal Metodo 1. Richiede circa 30 secondi di setup e restituisce i dati in meno di un secondo per pagina.
- Ti servono tutti i video di un profilo con paginazione? Il Metodo 2 è la scelta giusta, ma preparati a fare manutenzione quando TikTok cambia i parametri dell’API.
- Devi affrontare login wall, CAPTCHA o vuoi la massima resilienza? Metodo 3 con Playwright. È più lento e pesante, ma per TikTok è il più difficile da bloccare.
Nella pratica, parto spesso dal Metodo 1 e passo al Metodo 2 o 3 solo quando incontro limiti. Così mantengo l’infrastruttura semplice e i costi bassi.
Non ti serve Python? Estrarre video TikTok con strumenti no-code
Molte persone che cercano "scrape TikTok videos with Python" in realtà non hanno bisogno di Python. Hanno bisogno dei dati. Se sei un analista marketing che vuole i metadati dei video da alcuni profili competitor, o un brand manager che monitora le menzioni, configurare un ambiente Python con rotazione proxy e gestione delle firme è spesso eccessivo.

Ecco un confronto onesto tra i vari approcci:
| Approccio | Livello di competenza | Costo | Manutenzione | Ideale per | |---|---|---|---|---| | Python (fai-da-te) | Intermedio+ | Gratis (+ costo proxy) | Alta (gli script si rompono) | Controllo totale, pipeline personalizzate | | (estensione Chrome) | Principiante | Piano gratuito disponibile | Nessuna (l’IA rilegge il sito ogni volta) | Estrazione rapida di dati video, export su Sheets/Excel | | Apify TikTok Scraper | Principiante | A pagamento (per esecuzione) | Bassa (gestito da Apify) | Run automatiche massive e programmate | | TikAPI | Developer | Abbonamento a pagamento | Media | Creare app basate sui dati di TikTok |
Come Thunderbit gestisce lo scraping di TikTok
è l’estrattore web AI che abbiamo creato in Thunderbit, e funziona in modo diverso dagli strumenti di scraping tradizionali. Invece di affidarsi a selettori CSS predefiniti o regole XPath (che si rompono ogni volta che TikTok cambia layout), l’IA di Thunderbit legge la struttura della pagina da zero ogni volta e suggerisce le colonne più rilevanti — didascalia, like, hashtag, URL del video, autore, ecc.
Il flusso di lavoro richiede davvero due clic:
- Apri un profilo TikTok in Chrome, fai clic sull’estensione Thunderbit e seleziona "AI Suggest Fields". Thunderbit analizza la pagina e propone una struttura tabellare.
- Controlla le colonne suggerite, modifica se necessario e fai clic su "Scrape".
I dati vengono esportati direttamente in Google Sheets, Excel, Airtable o Notion. Nessun selettore CSS da mantenere, nessun codice da debuggare, nessuna configurazione proxy. Per un analista marketing che deve ottenere metadati video da pochi profili, questo approccio è oggettivamente più veloce che configurare un ambiente Python — e non si rompe quando TikTok aggiorna il front-end (cosa che, secondo le segnalazioni della community, accade ogni poche settimane).
Thunderbit supporta anche lo — può aprire ogni singola pagina video per arricchire la tabella con dettagli aggiuntivi come numero completo di commenti, informazioni sulla musica o durata del video.
Puoi provarlo gratis tramite la . Per saperne di più su come funziona, visita il nostro .
Linee guida legali ed etiche per lo scraping di TikTok
Nessuno dei tutorial più visibili su questo tema parla davvero di legalità , ed è un’omissione notevole considerando che TikTok ha intrapreso azioni legali contro servizi di scraping. Ecco cosa devi sapere.
I Termini di Servizio di TikTok (§ 4.1) vietano esplicitamente l’accesso automatizzato. Violare un TOS è una violazione contrattuale, non un reato penale — ma può comportare ban dell’account, blocchi IP o azioni civili.
Il quadro legale è più permissivo di quanto molti pensino per i dati pubblici. Il precedente più rilevante è Meta Platforms v. Bright Data (N.D. Cal., gennaio 2024), in cui il tribunale ha stabilito che estrarre dati pubblicamente accessibili mentre si è disconnessi non viola i Termini di Servizio di Meta. Meta ha ritirato il caso e rinunciato all’appello. La precedente decisione del Ninth Circuit in hiQ v. LinkedIn (confermata dopo Van Buren) ha stabilito che lo scraping di dati pubblicamente accessibili non costituisce una violazione del CFAA — anche se hiQ ha poi raggiunto un accordo, pagato 500.000 dollari e accettato un’ingiunzione permanente, a dimostrazione del fatto che l’applicazione dei TOS può comunque avere conseguenze.
GDPR e CCPA si applicano se raccogli dati personali di utenti dell’UE o della California. Estrarre post pubblici è una cosa; costruire database con informazioni personali di singoli utenti è un’altra.
Linee guida pratiche:
- Limita il ritmo delle richieste (non martellare i server di TikTok)
- Non estrarre account privati o contenuti di minori
- Non ridistribuire commercialmente contenuti video protetti da copyright
- Rispetta
robots.txt(TikTok vieta la maggior parte del crawling automatizzato) - Scaricare video per ricerca o analisi personale è diverso dal ripubblicarli — è importante distinguere i due casi
Disclaimer: questo contenuto è educativo e non costituisce consulenza legale. Se stai costruendo un prodotto commerciale basato sui dati estratti da TikTok, consulta un avvocato.
Conclusioni: punti chiave da ricordare
Lo scraping di TikTok nel 2025 è un bersaglio mobile. Lo stack anti-bot della piattaforma è tra i più sofisticati del web, e gli approcci ingenui (semplice requests, snippet generati da ChatGPT, tutorial vecchi) falliranno. Ma con il metodo giusto, si può fare.
Ecco cosa portare a casa:
- Il Metodo 1 (JSON nascosto) è il più veloce e semplice — parti da qui per estrazioni rapide di profili.
- Il Metodo 2 (API interna) ti offre paginazione e accesso massivo, ma richiede più manutenzione perché endpoint e requisiti di firma cambiano spesso.
- Il Metodo 3 (Playwright) è il più resistente alle difese anti-bot, al prezzo di velocità e consumo di risorse.
- Tutti e tre i metodi possono estrarre gli URL di download dei video — e questa guida è l’unica che ti mostra anche come scaricare davvero i file .mp4 con gli header corretti.
- Per chi non è tecnico, offre un percorso davvero più rapido verso gli stessi dati, senza scrivere o mantenere codice. Il suo approccio basato su IA non si rompe quando TikTok cambia layout — cosa che, secondo la community, accade più spesso di quanto chiunque vorrebbe.
Se vuoi iniziare senza configurare Python, — il piano gratuito basta per testarlo su alcuni profili e vedere se si adatta al tuo flusso di lavoro. Se invece scegli la strada di Python, inizia dal Metodo 1, verifica i dati e poi scala da lì.
Vuoi approfondire le tecniche di web scraping? Dai un’occhiata alle nostre guide su , e .
FAQ
È legale estrarre video da TikTok con Python?
L’estrazione di dati pubblicamente accessibili è una zona grigia dal punto di vista legale, non una violazione netta. La sentenza Meta v. Bright Data (2024) supporta la tesi che lo scraping di dati pubblici mentre si è disconnessi non violi i Termini di Servizio della piattaforma. Tuttavia, i TOS di TikTok vietano esplicitamente l’accesso automatizzato, e le obbligazioni GDPR/CCPA si applicano ai dati personali. Non è illegale nel modo in cui molti temono, ma non è nemmeno privo di rischi. Per il tuo caso specifico, consulta un professionista legale.
Qual è la miglior libreria Python per lo scraping di TikTok?
Dipende dall’approccio. Per l’estrazione del JSON nascosto (Metodo 1), bastano requests + beautifulsoup4. Per le chiamate all’API interna (Metodo 2), funzionano requests o httpx. Per l’automazione browser (Metodo 3), playwright è oggi lo standard — ha superato Selenium nell’adozione nei nuovi progetti di scraping, con contro i circa 53 milioni di Selenium. Anche il wrapper TikTok-Api (circa 6,3K stelle su GitHub) merita considerazione se vuoi un’interfaccia di livello superiore, anche se può essere fragile.
Posso scaricare video TikTok senza watermark usando Python?
Sì. I dati di TikTok includono un URL playAddr che in genere fornisce una versione del video senza il classico watermark sovrapposto. Questa guida mostra come estrarre quell’URL con uno dei tre metodi e scaricare il file .mp4 con gli header corretti. Il campo downloadAddr, invece, include il watermark.
Perché il mio scraper TikTok restituisce dati vuoti?
La causa più comune è che TikTok richiede JavaScript per renderizzare i contenuti. Una semplice requests.get() recupera solo l’HTML di base — i dati reali si trovano in un tag script JSON nascosto (Metodo 1) oppure vengono caricati dinamicamente via JavaScript (Metodo 3). Se ottieni HTML vuoto, prova prima il Metodo 1. Se non funziona, controlla gli header (l’assenza di Referer è la causa numero uno degli errori 403) oppure passa al Metodo 3 con Playwright.
Come faccio a evitare di essere bloccato quando estraggo dati da TikTok?
Usa header browser realistici (inclusi User-Agent, Referer e Accept-Language), ruota proxy residential o mobile (gli IP datacenter vengono segnalati in pochi minuti), aggiungi ritardi casuali tra le richieste (almeno 1–3 secondi) ed evita volumi estremamente elevati. Il Metodo 3 (Playwright) offre la massima resilienza ai blocchi perché simula una sessione browser reale. Per volumi importanti, metti in budget il costo dei proxy — i proxy residential entry-level costano circa presso i principali fornitori.