Impara a fare scraping dei video TikTok con Python

Ultimo aggiornamento il April 15, 2026

TikTok oggi conta circa e i creator caricano una stima di 23 milioni di video ogni giorno. Se hai mai provato a raccogliere dati anche solo da una piccola parte di questo flusso continuo, sai già quanto possa essere frustrante.

Di solito succede così: cerchi "Scrape Tiktok python", copi uno snippet da un tutorial (oppure chiedi a ChatGPT di scriverlo), lo esegui e ottieni… nulla. HTML vuoto. Errore 403. Oppure il temuto "Process finished with exit code 0" senza alcun output. Ho visto questo identico copione ripetersi in decine di issue su GitHub e thread su Reddit, ed è il motivo per cui ho preparato questa guida. Ti mostrerò tre metodi Python che funzionano davvero nel 2025, una guida completa per scaricare i file video .mp4 reali (non solo i metadati — che è dove si fermano tutti gli altri tutorial) e una tabella comparativa per aiutarti a scegliere l’approccio giusto per il tuo caso d’uso. Se non ti serve affatto Python, coprirò anche alternative no-code come , che ti permettono di ottenere gli stessi dati in circa due clic.

Cosa significa davvero "fare scraping dei video TikTok"?

Prima di entrare nel codice, vale la pena chiarire cosa intendono le persone quando dicono "scrape TikTok videos" — perché questa espressione può riferirsi a due cose molto diverse:

  1. Estrazione dei metadati dei video: caption, hashtag, numero di like, commenti, condivisioni, visualizzazioni, data di pubblicazione, informazioni sull’autore. È ciò su cui si concentrano la maggior parte dei tutorial.
  2. Download dei file video reali (.mp4): salvare il video sul proprio dispositivo. È ciò che la maggior parte delle persone vuole davvero quando digita "scrape TikTok videos" — ed è la parte che quasi nessuno copre.

Questa guida tratta entrambe le cose. Ogni metodo qui sotto può estrarre i metadati e fornirti gli URL di download necessari per salvare i file .mp4.

Perché fare scraping dei video TikTok con Python?

Con e TikTok Shop che genera , i motivi di business per usare i dati di TikTok sono decisamente concreti. Ecco gli scenari più comuni:

Caso d'usoCosa stai estraendoPer chi è utile
Ricerca influencer e marketingTassi di engagement, numero di follower, formati dei contenuti, performance degli hashtagTeam marketing, agenzie
Strategia di contenutoHashtag di tendenza, formati video virali, frequenza di pubblicazioneCreator, social media manager
Monitoraggio del brandMenzioni, copertura delle campagne, sentiment del pubblicoBrand manager, team PR
Competitive intelligencePerformance dei video dei competitor, creatività pubblicitarie, inserzioni TikTok ShopE-commerce, team prodotto
Ricerca di mercatoTrend emergenti, comportamento del pubblico, scoperta di prodottiAnalisti, hedge fund, società di ricerca
Archiviazione e complianceFile video per revisione interna o conservazione documentaleLegale, compliance, agenzie

La posta in gioco è reale: i ricavi pubblicitari di TikTok negli Stati Uniti sono previsti a 23,4 miliardi di dollari nel 2026, e i creator affiliate generano nelle principali categorie di TikTok Shop. Se lavori nell’e-commerce o nell’influencer marketing, questi dati hanno un valore economico diretto.

Perché il tuo codice Python 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 sottoporre a scraping. Una semplice requests.get() restituisce per lo più una shell HTML vuota perché il contenuto reale viene renderizzato in browser tramite JavaScript. Inoltre, TikTok utilizza un sistema anti-bot molto aggressivo che include rilevamento comportamentale, TLS fingerprinting, una che genera le signature delle richieste e selettori CSS dinamici che cambiano senza preavviso.

tiktok-anti-bot-wall.webp

Secondo l’Imperva 2025 Bad Bot Report, il traffico automatizzato ha superato per la prima volta quello umano nel 2024: i bot rappresentano ora . TikTok ne è perfettamente consapevole e ha costruito le sue difese di conseguenza.

Ecco una tabella diagnostica rapida per capire cosa non va e saltare direttamente al metodo giusto:

SintomoCausa probabileMetodo risolutivo
HTML vuoto / nessun datoContenuto renderizzato in JS; requests non esegue JavaScriptMetodo 1 (JSON nascosto) o Metodo 3 (Playwright)
403 / Accesso negatoHeader mancanti o errati; rilevamento anti-botMetodo 1 con header corretti
Funziona una volta, poi si bloccaRate limiting / blocco IPRotazione proxy (tutti i metodi)
Compare una login wallRichiesta di sessione/cookieMetodo 3 (browser con sessione salvata)
Il codice generato da ChatGPT non restituisce nullaLa struttura di TikTok è cambiata dopo i dati di training del modelloTutti e 3 i metodi (approcci aggiornati)

La soglia di rate limit è all’incirca 30–60 richieste al minuto per IP prima che inizino blocchi soft o CAPTCHA. Gli IP da datacenter vengono segnalati in pochi minuti — proxy residential o mobile sono di fatto indispensabili per volumi significativi.

Panoramica: 3 metodi per fare scraping dei video TikTok con Python

Ecco la roadmap. Ogni metodo ha compromessi diversi, e li vedremo tutti con codice funzionante:

  1. Estrazione JSON nascosto — Analizza il tag <script> __UNIVERSAL_DATA_FOR_REHYDRATION__ incorporato nelle pagine TikTok. Il metodo più veloce, semplice e senza browser.
  2. API interna di TikTok — Chiama direttamente l’endpoint non documentato /api/post/item_list/ per ottenere dati in bulk con paginazione basata su cursor.
  3. Automazione browser con Playwright — Renderizza le pagine in un browser headless per gestire infinite scroll, contenuti dinamici e login wall.

Tutti e tre i metodi possono essere usati anche per scaricare i file video .mp4 reali — lo spiego in una sezione dedicata dopo le guide passo passo. Alla fine trovi una tabella comparativa completa per scegliere con cognizione di causa.

Metodo 1: fare scraping dei video TikTok usando il JSON nascosto (adatto ai principianti)

È l’approccio che consiglio di provare per primo. TikTok incorpora in quasi ogni pagina un enorme blob JSON dentro un tag <script> con id __UNIVERSAL_DATA_FOR_REHYDRATION__. Questo blob contiene tutti i dati del profilo e dei video che normalmente verrebbero renderizzati dal JavaScript frontend — quindi puoi recuperarli con una sola richiesta HTTP, senza browser.

Cosa ti serve

  • Python 3.8+
  • requests (oppure httpx)
  • beautifulsoup4 (oppure parsel)
  • Header corretti: User-Agent, Referer, Accept-Language

Installa le dipendenze:

1pip install requests beautifulsoup4

Passo dopo passo: estrarre i dati dei video TikTok dal tag script

Passo 1: invia una richiesta GET con header realistici da browser.

Qui sbagliano in molti. Se fai una semplice requests.get() senza header, TikTok restituisce un 403 oppure una pagina CAPTCHA. Ti servono almeno un User-Agent aggiornato e un 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 ti ha bloccato (controlla lo status code) oppure ha cambiato l’ID del tag (raro, ma possibile).

Passo 3: carica il contenuto dello script come JSON.

1data = json.loads(script_tag.string)

Passo 4: esplora la 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# Lista video (prima pagina di video)
7item_list = user_detail.get("itemList", [])
8for video in item_list:
9    print(video["desc"])  # Caption
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 overlay watermark di TikTok), mentre downloadAddr include il watermark standard. Entrambi sono URL diretti al file .mp4 — ma richiedono header specifici per il download (li vediamo nella sezione dedicata al download qui sotto).

A questo punto dovresti avere una lista di oggetti metadati per ogni video, ciascuno con caption, 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 infinite scroll o paginazione (non c’è una "pagina successiva" da richiamare)
  • Se TikTok cambia l’ID del tag script o la struttura del JSON, il parser si rompe (accade periodicamente — la aiuta a intercettarlo subito)
  • Ideale per: scraping veloce di profili, estrazioni una tantum, o quando ti servono solo i video più recenti

Metodo 2: fare scraping dei video TikTok tramite l’API interna

Il frontend di TikTok non carica tutti i video in una volta sola — durante lo scroll effettua chiamate XHR verso endpoint API interni. Quello principale per i video utente è /api/post/item_list/. Puoi chiamare questo endpoint direttamente 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 a URL come:

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, sotto userInfo.user.secUid)
  • cursor — offset di paginazione (parte da 0, ogni risposta restituisce il valore successivo)
  • count — numero di elementi per pagina (di solito 30–35)

Passo dopo passo: interrogare l’API interna di TikTok con Python

Passo 1: recupera il secUid del profilo target.

Puoi prenderlo dal JSON nascosto (Metodo 1) oppure 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: interpreta la risposta.

Ogni elemento in data["itemList"] contiene la stessa struttura video del Metodo 1 — desc, stats, video.playAddr, video.downloadAddr, ecc.

Passo 4: scorri tutti i video con la paginazione.

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"Video totali estratti: {len(all_videos)}")

Ogni iterazione restituisce il batch successivo e un nuovo cursor. Il ciclo continua finché hasMore è 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-Bogus o altri parametri di firma generati dalla di TikTok (spoiler: replicarla in puro Python non è banale).
  • Per alcuni tipi di dati possono servire cookie di sessione o token aggiuntivi
  • Il rate limiting basato su IP si applica comunque — è consigliata la rotazione dei proxy
  • Se inizi a ricevere array itemList vuoti, molto probabilmente il tuo msToken è scaduto (nel browser ruota circa ogni 10 secondi)
  • Ideale per: estrazione massiva di dati quando ti servono tutti i video di un profilo e il limite della prima pagina del Metodo 1 non basta

Metodo 3: fare scraping dei 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 riserva. Avvia un vero browser (headless), naviga su TikTok come farebbe un utente reale e può gestire rendering JavaScript, infinite scroll e perfino sessioni autenticare.

Configurare Playwright per lo scraping di TikTok

Installa Playwright e i binari del browser:

1pip install playwright
2playwright install firefox

Per lo scraping di TikTok consiglio Firefox invece di Chromium. I test della community mostrano in modo coerente una con Firefox, e il sistema anti-bot di TikTok è particolarmente aggressivo contro i browser headless basati su Chromium.

Per un ulteriore livello di stealth, valuta di combinare Playwright con (un fork patchato di Playwright) oppure (Firefox modificato a livello C++ per evitare il rilevamento). In , Camoufox ottiene punteggi di stealth quasi perfetti contro i principali servizi di bot detection.

Passo dopo passo: fare scraping dei video profilo TikTok con Playwright

Passo 1: avvia un browser Firefox headless e apri il 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: aspetta che si carichi la griglia dei video.

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", potresti dover cliccare un pulsante di retry:

1        retry_btn = page.locator('button:has-text("Retry")')
2        if await retry_btn.count() &gt; 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 in Playwright).

L’approccio più affidabile resta recuperare il JSON di hydration, anche quando usi 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 l’infinite scroll per ottenere più video.

Se ti servono più dei circa 30 video iniziali, scorri verso il basso e intercetta ulteriori risposte XHR:

1        all_videos = list(videos)
2        # Intercetta le risposte API durante lo 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        # Scorri verso il basso per attivare altri 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"Video totali: {len(all_videos)}")
21        await browser.close()
22        return all_videos
23# Esegui lo script
24videos = asyncio.run(scrape_tiktok_profile("charlidamelio"))

Ora dovresti avere una lista di oggetti video provenienti sia dal caricamento iniziale sia dalle pagine aggiuntive caricate tramite scroll.

Limiti del metodo Playwright

  • È il metodo più lento in assoluto (rendering completo della pagina, round-trip di rete, ritardi di scroll)
  • Consuma molte risorse — ogni istanza del browser usa parecchia memoria e CPU
  • Rimane soggetto a blocchi basati su IP su larga scala — abbinalo alla rotazione dei proxy
  • Ideale per: interazioni complesse, contenuti dietro login wall, gestione dei CAPTCHA o quando i Metodi 1 e 2 vengono bloccati

Come scaricare i video TikTok (.mp4) con Python

Questa è la sezione che colma la lacuna più grande di quasi tutti i tutorial sullo scraping di TikTok. Estrarre i 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 ridotto
  • downloadAddr — la versione che TikTok intende per il download in-app (include l’overlay watermark di TikTok)

Entrambi gli URL sono sensibili al tempo e scadono dopo una finestra breve (di solito poche ore), quindi devi scaricare i file subito dopo averli estratti.

Passo dopo passo: scaricare un file video TikTok

Passo 1: estrai l’URL del video da uno qualsiasi 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 su cui molti si inceppano. Se fai semplicemente requests.get(video_url), otterrai 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 grandi e non vuoi caricare l’intero file 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}")

A questo punto 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 fornisce una versione più pulita (quella usata dal player), mentre downloadAddr include il watermark di TikTok con il nome utente del creator.

Una nota etica importante: il watermark serve a dare credito al creator. Se scarichi video per ricerca, analisi o revisione interna, usare playAddr è in genere accettabile. Se invece redistribuisci o ripubblichi il contenuto, rimuovere l’attribuzione del creator solleva sia questioni etiche sia di copyright. Ne parliamo meglio nella sezione legale più avanti.

Per una pipeline di download più robusta, considera — il suo estrattore TikTok gestisce automaticamente la matematica delle signature e la risoluzione degli URL, così non devi occuparti tu di header e scadenza dei token.

Confronto fianco a fianco: quale metodo Python dovresti usare?

Ecco la tabella comparativa che avrei voluto avere quando ho iniziato a lavorare a progetti di scraping di TikTok:

CriterioMetodo 1: JSON nascostoMetodo 2: API internaMetodo 3: Playwright
DifficoltàPrincipianteIntermedioIntermedio
VelocitàAlta (1 richiesta per pagina)Alta (API JSON)Bassa (rendering completo della pagina)
Resistenza anti-botMediaBassa (gli endpoint cambiano)Alta (simula un browser reale)
Scarica video .mp4?Sì (estrae playAddr)Sì (URL nella risposta)Sì (intercetta la rete)
Gestisce infinite scrollNo (solo prima pagina)Sì (paginazione con cursor)Sì (simulazione dello scroll)
Serve un proxy su larga scalaSìSìSì
Manutenzione richiestaMedia (cambia la struttura JSON)Alta (endpoint e signature cambiano spesso)Bassa-Media (il browser si adatta)
Ideale perRaccolte veloci e una tantum di profiliEstrazione massiva di dati, tutti i videoContenuti con login wall o complessi

Il mio consiglio:

  • Ti serve solo uno snapshot veloce di un profilo? Parti dal Metodo 1. Richiede circa 30 secondi di configurazione 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 strada giusta, ma preparati a fare manutenzione quando TikTok cambia i parametri API.
  • Devi gestire login wall, CAPTCHA o vuoi la massima robustezza? Usa il Metodo 3 con Playwright. È più lento e più pesante, ma è il più difficile da bloccare per TikTok.

In pratica, spesso parto dal Metodo 1 e passo al Metodo 2 o 3 solo quando incontro dei limiti. Così l’infrastruttura resta semplice e i costi bassi.

Non ti serve Python? Fai scraping dei 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 marketing analyst che vuole i metadati video di alcuni profili competitor, oppure un brand manager che monitora le menzioni, mettere in piedi un ambiente Python con rotazione proxy e gestione delle signature è eccessivo.

python-vs-nocode-ai-comparison.webp

Ecco un confronto onesto tra gli approcci:

ApproccioLivello di competenzaCostoManutenzioneIdeale per
Python (fai da te)Intermedio+Gratis (+ costi proxy)Alta (gli script si rompono)Controllo totale, pipeline personalizzate
Thunderbit (estensione Chrome)PrincipiantePiano gratuito disponibileNessuna (l’AI rilegge il sito ogni volta)Estrazione rapida dei dati video, export su Sheets/Excel
Apify TikTok ScraperPrincipianteA pagamento (per esecuzione)Bassa (gestito da Apify)Esecuzioni massive e automatizzate su schedulazione
TikAPIDeveloperAbbonamento a pagamentoMediaCreare app basate sui dati TikTok

Come Thunderbit gestisce lo scraping di TikTok

è l’AI web scraper 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’AI di Thunderbit legge la struttura della pagina da zero ogni volta e suggerisce le colonne rilevanti — caption, like, hashtag, URL del video, autore e così via.

Il flusso di lavoro è davvero di due clic:

  1. Apri un profilo TikTok in Chrome, clicca sull’estensione Thunderbit e premi "AI Suggest Fields". Thunderbit analizza la pagina e propone una struttura tabellare.
  2. Rivedi le colonne suggerite, modificale se necessario e clicca "Scrape".

I dati vengono esportati direttamente su Google Sheets, Excel, Airtable o Notion. Nessun selettore CSS da mantenere, nessun codice da debuggare, nessuna configurazione proxy. Per il marketing analyst che ha bisogno dei metadati video di pochi profili, questa soluzione è sensibilmente più veloce che configurare un ambiente Python — e non si rompe quando TikTok aggiorna il frontend (cosa che, stando ai report della community, accade ogni poche settimane).

Thunderbit supporta anche lo — può visitare ogni singola pagina video per arricchire la tabella con dettagli aggiuntivi come il numero completo di commenti, informazioni sulla musica o durata del video.

Puoi provarlo gratuitamente tramite la . Per saperne di più su come funziona, guarda il nostro .

Linee guida legali ed etiche per lo scraping di TikTok

Zero dei tutorial più in alto nei risultati di ricerca su questo argomento parla di legalità, ed è una lacuna 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 i ToS è una violazione contrattuale, non un reato penale — ma può portare a ban dell’account, blocchi IP o azioni civili.

Lo scenario 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 lo scraping di dati pubblicamente accessibili quando si è scollegati non viola i Termini di Servizio di Meta. Meta ha ritirato il caso e rinunciato all’appello. La precedente sentenza hiQ v. LinkedIn del Nono Circuito (confermata dopo Van Buren) ha stabilito che lo scraping di dati pubblicamente accessibili non costituisce una violazione del CFAA — anche se hiQ alla fine ha raggiunto un accordo, pagando 500.000 dollari e accettando un’inibitoria permanente, il che mostra che l’enforcement dei ToS può comunque colpire.

GDPR e CCPA si applicano se stai raccogliendo dati personali di utenti UE o della California. Fare scraping di post pubblici è una cosa; creare database con informazioni personali di singoli utenti è un’altra.

Linee guida pratiche:

  • Limita la frequenza delle richieste (non martellare i server di TikTok)
  • Non fare scraping di account privati o contenuti di minorenni
  • 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 capire la distinzione

Disclaimer: questo contenuto è a scopo informativo, non costituisce consulenza legale. Se stai costruendo un prodotto commerciale basato su dati TikTok estratti, consulta un avvocato.

In chiusura: 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 approcci ingenui (semplici requests, snippet generati da ChatGPT, tutorial obsoleti) falliranno. Ma con il metodo giusto, è assolutamente fattibile.

Ecco cosa portarti 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) 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 misure anti-bot, al prezzo di maggiore lentezza 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 una strada davvero più rapida verso gli stessi dati, senza scrivere o mantenere codice. Il suo approccio basato su AI non si rompe quando TikTok cambia layout — cosa che, secondo la community, succede più spesso di quanto chiunque vorrebbe.

Se vuoi iniziare senza configurare Python, — il piano gratuito basta per testarla su alcuni profili e capire se si adatta al tuo flusso di lavoro. Se invece vuoi seguire la strada Python, inizia dal Metodo 1, valida i dati e poi scala da lì.

Vuoi approfondire le tecniche di web scraping? Dai un’occhiata alle nostre guide su , e .

FAQ

È legale fare scraping dei video TikTok con Python?

Fare scraping di dati pubblicamente accessibili è una zona grigia dal punto di vista legale, non una violazione netta e automatica. La sentenza Meta v. Bright Data (2024) supporta la posizione secondo cui lo scraping di dati pubblici quando si è scollegati non viola i Termini di Servizio della piattaforma. Tuttavia, i ToS di TikTok vietano esplicitamente l’accesso automatizzato e gli obblighi 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 fare scraping di TikTok?

Dipende dall’approccio. Per l’estrazione del JSON nascosto (Metodo 1), requests + beautifulsoup4 è tutto ciò che ti serve. Per chiamare l’API interna (Metodo 2), vanno bene requests o httpx. Per l’automazione browser (Metodo 3), playwright è lo standard attuale — ha superato Selenium in 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 più astratta, anche se può essere fragile.

Posso scaricare video TikTok senza watermark usando Python?

Sì. I dati di TikTok includono un URL playAddr che di solito fornisce una versione del video senza il watermark standard. Questa guida ti mostra come estrarre quell’URL con uno qualsiasi 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 shell — 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 n. 1 degli errori 403) oppure passa al Metodo 3 con Playwright.

Come faccio a evitare di essere bloccato quando faccio scraping di TikTok?

Usa header realistici da browser (inclusi User-Agent, Referer e Accept-Language), ruota proxy residential o mobile (gli IP da datacenter vengono segnalati in pochi minuti), inserisci ritardi casuali tra le richieste (almeno 1–3 secondi) ed evita volumi estremamente elevati. Il Metodo 3 (Playwright) offre la migliore resilienza contro i blocchi perché imita una vera sessione browser. Per volumi seri, metti in conto il costo dei proxy — i residential proxy entry-level costano circa presso i principali provider.

  • Scopri di più
Topics
Scrape Tiktok pythonEstrazione dati TikTok con PythonScript Python per scrapers TikTokCome fare scraping dei video TikTok con Python
Indice

Prova Thunderbit

Estrai lead e altri dati in soli 2 clic. Con l'AI.

Scarica Thunderbit È gratis
Estrai dati con l'AI
Trasferisci facilmente i dati su Google Sheets, Airtable o Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week