Lär dig hur du skrapar TikTok-videor med Python

Senast uppdaterad April 15, 2026

TikTok har nu runt och kreatörer laddar upp uppskattningsvis 23 miljoner videor varje dag. Om du någon gång har försökt samla in data ens från en liten del av det flödet vet du redan hur frustrerande det kan vara.

Det brukar gå till så här: du söker på “skrapa TikTok-videor med Python”, kopierar ett kodavsnitt från en guide (eller ber ChatGPT skriva ett åt dig), kör det — och får… ingenting. Tom HTML. Ett 403-fel. Eller det fruktade “Process finished with exit code 0” utan någon som helst output. Jag har sett exakt den här rundan upprepas i mängder av GitHub-ärenden och Reddit-trådar, och det är därför jag satte ihop den här guiden. Vi går igenom tre Python-metoder som faktiskt fungerar 2025, en fullständig genomgång av hur du laddar ner själva .mp4-filerna (inte bara metadata — vilket är där de flesta andra guider slutar), och en jämförelsetabell så att du kan välja rätt metod för ditt behov. Om du inte behöver Python alls tar jag också upp kodfria alternativ som som kan ge dig samma data på ungefär två klick.

Vad betyder egentligen “att skrapa TikTok-videor”?

Innan vi går in i kod är det värt att reda ut vad folk menar när de säger “skrapa TikTok-videor” — eftersom uttrycket kan syfta på två helt olika saker:

  1. Extrahera videometadata: bildtexter, hashtags, antal likes, kommentarer, delningar, visningar, publiceringsdatum och information om skaparen. Det här är vad de flesta guider fokuserar på.
  2. Ladda ner själva videofilerna (.mp4): att spara själva videon på din dator. Det här är vad de flesta egentligen vill ha när de skriver “skrapa TikTok-videor” — och det är den delen nästan ingen går igenom.

Den här guiden täcker båda. Varje metod nedan kan både extrahera metadata och ge dig de nedladdnings-URL:er du behöver för att spara .mp4-filerna.

Varför skrapa TikTok-videor med Python?

Med och TikTok Shop som genererar , finns det starka affärsskäl att använda TikTok-data. Här är de vanligaste användningsområdena jag ser:

AnvändningsområdeVad du skraparVem det passar för
Influencer- och marknadsanalysEngagemangsgrad, följarsiffror, innehållsformat, hashtag-prestandaMarknadsföringsteam, byråer
InnehållsstrategiTrendande hashtags, virala videoformat, publiceringstaktInnehållsskapare, sociala medier-ansvariga
VarumärkesbevakningOmnämnanden, kampanjräckvidd, publikens sentimentVarumärkesansvariga, PR-team
KonkurrensbevakningKonkurrenters videoprestanda, annonsmaterial, TikTok Shop-listningarE-handels- och produktteam
MarknadsresearchNya trender, användarbeteende, produktupptäcktAnalytiker, hedgefonder, researchbolag
Arkivering och complianceVideofiler för intern granskning eller dokumentationJuridik, compliance, byråer

Insatserna är stora: TikToks annonsintäkter i USA väntas nå 23,4 miljarder dollar 2026, och affiliateverksamhet står för i de största TikTok Shop-kategorierna. Om du jobbar med e-handel eller influencer marketing har den här datan ett tydligt ekonomiskt värde.

Varför ditt grundläggande Python-kodexempel misslyckas på TikTok

Om du redan har testat något i stil med detta utan resultat är du i gott sällskap:

1import requests
2from bs4 import BeautifulSoup
3resp = requests.get("https://www.tiktok.com/@someuser")
4soup = BeautifulSoup(resp.text, "html.parser")
5# ...och sedan finns inget användbart i HTML:en

Orsaken är enkel: TikTok är en av de svåraste plattformarna att skrapa. Ett vanligt requests.get() returnerar i princip ett tomt HTML-skal eftersom själva innehållet renderas av JavaScript i webbläsaren. Utöver det använder TikTok ett aggressivt skydd mot bottar, inklusive beteendedetektion, TLS-fingerprinting, en som skapar request-signaturer och dynamiska CSS-selektorer som ändras utan förvarning.

tiktok-anti-bot-wall.webp

Enligt Impervas Bad Bot Report 2025 passerade automatiserad trafik för första gången mänsklig trafik 2024 — bottar står nu för . TikTok är väl medvetet om detta och har byggt sina försvar därefter.

Här är en snabb felsökningstabell så att du kan se vad som går fel och hoppa till rätt metod:

SymptomTrolig orsakMetod som löser det
Tom HTML / ingen dataJS-renderat innehåll; requests kan inte köra JavaScriptMetod 1 (dold JSON) eller Metod 3 (Playwright)
403 / Åtkomst nekadSaknade eller felaktiga headers; anti-bot-detektionMetod 1 med korrekta headers
Det fungerar en gång, sedan slutar detHastighetsbegränsning / IP-blockeringProxynästantering (alla metoder)
Inloggningsvägg visasKrav på session/cookiesMetod 3 (webbläsare med sparad session)
ChatGPT-genererad kod returnerar ingetTikToks struktur har ändrats sedan modellens träningsdataAlla 3 metoder (uppdaterade angreppssätt)

Gränsen för hastighetsbegränsning ligger ungefär vid 30–60 förfrågningar per minut och IP innan du börjar få mjuka blockeringar eller CAPTCHA. Datacenter-IP:er flaggas inom minuter — residential- eller mobilproxyer är i praktiken nödvändiga om du kör i större volym.

Översikt: 3 metoder för att skrapa TikTok-videor med Python

Här är planen. Varje metod har olika för- och nackdelar, och jag går igenom alla tre med fungerande kod:

  1. Extraktion av dold JSON — tolka __UNIVERSAL_DATA_FOR_REHYDRATION__-script-taggen som är inbäddad i TikTok-sidor. Snabbast, enklast, ingen webbläsare behövs.
  2. TikToks interna API — anropa den odokumenterade slutpunkten /api/post/item_list/ direkt för bulkdata med cursor-baserad paginering.
  3. Webbläsarautomatisering med Playwright — rendera sidor i en headless browser för att hantera oändlig scrollning, dynamiskt innehåll och inloggningsväggar.

Alla tre metoder kan också användas för att ladda ner de faktiska .mp4-videofilerna — det går jag igenom i ett särskilt avsnitt efter metodgenomgångarna. En full jämförelsetabell kommer i slutet så att du kan fatta ett välgrundat beslut.

Metod 1: Skrapa TikTok-videor med dold JSON (nybörjarvänligt)

Det här är metoden jag rekommenderar att börja med. TikTok bäddar in ett stort JSON-objekt i en <script>-tagg med id __UNIVERSAL_DATA_FOR_REHYDRATION__ på i princip varje sidladdning. Det här objektet innehåller all profil- och videodata som front-end-JavaScript normalt skulle rendera — vilket betyder att du kan hämta det med ett enda HTTP-anrop, utan webbläsare.

Det du behöver

  • Python 3.8+
  • requests (eller httpx)
  • beautifulsoup4 (eller parsel)
  • Rätt headers: User-Agent, Referer, Accept-Language

Installera beroenden:

1pip install requests beautifulsoup4

Steg för steg: Extrahera TikTok-videodata från script-taggen

Steg 1: Skicka en GET-förfrågan med realistiska webbläsarheaders.

Det är här de flesta nybörjare faller. Om du skickar en ren requests.get() utan headers svarar TikTok med ett 403-fel eller en CAPTCHA-sida. Du behöver minst en aktuell browser-User-Agent och en Referer-header.

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)

Steg 2: Tolka HTML:en och hitta hydration-script-taggen.

1soup = BeautifulSoup(resp.text, "html.parser")
2script_tag = soup.find("script", id="__UNIVERSAL_DATA_FOR_REHYDRATION__")

Om script_tag är None har TikTok antingen blockerat dig (kolla statuskoden) eller så har taggens id ändrats (ovanligt men möjligt).

Steg 3: Läs in scriptinnehållet som JSON.

1data = json.loads(script_tag.string)

Steg 4: Navigera i JSON-strukturen för att extrahera videometadata.

Strukturen ligger under __DEFAULT_SCOPE__. För en profilsida:

1user_detail = data["__DEFAULT_SCOPE__"]["webapp.user-detail"]
2user_info = user_detail["userInfo"]
3# Profilstatistik
4stats = user_info["stats"]
5print(f"Följare: {stats['followerCount']}, Likes: {stats['heartCount']}")
6# Videolista (första sidan med videor)
7item_list = user_detail.get("itemList", [])
8for video in item_list:
9    print(video["desc"])  # Bildtext
10    print(video["stats"]["playCount"])  # Visningar
11    print(video["video"]["playAddr"])  # Nedladdnings-URL för video (utan vattenstämpel)
12    print(video["video"]["downloadAddr"])  # Nedladdnings-URL för video (med vattenstämpel)

Steg 5: Extrahera URL:er för videonedladdning.

Fältet playAddr ger vanligtvis en renare version av videon (ofta utan TikToks vattenstämpel), medan downloadAddr innehåller den vanliga vattenstämpeln. Båda är direkta URL:er till .mp4-filen — men de kräver vissa headers för att kunna laddas ner (det täcks i nedladdningsavsnittet längre ner).

Nu bör du ha en lista med videometadataobjekt, där varje objekt innehåller bildtext, statistik, skapandetid, hashtags (i challenges[] och textExtra) och direkta video-URL:er.

Begränsningar med metoden för dold JSON

  • Fångar bara data från den första sidladdningen — vanligtvis de första cirka 30 videorna på en profil
  • Kan inte hantera oändlig scrollning eller paginering (det finns ingen “nästa sida” att anropa)
  • Om TikTok ändrar script-taggs-id:t eller JSON-strukturen går parsern sönder (det händer periodiskt — hjälper till att upptäcka det tidigt)
  • Bäst för: snabba profilsökningar, engångsuttag av data eller när du bara behöver de senaste videorna

Metod 2: Skrapa TikTok-videor via det interna API:t

TikToks front-end laddar inte alla videor på en gång — den gör XHR-anrop till interna API-slutpunkter när du scrollar. Den viktigaste för användarvideor är /api/post/item_list/. Du kan anropa den här slutpunkten direkt från Python, vilket ger dig cursor-baserad paginering och tillgång till alla videor på en profil (inte bara första sidan).

Så hittar du den interna API-slutpunkten

Öppna Chrome DevTools på en TikTok-profilliknande sida, gå till Network-fliken, filtrera på XHR och scrolla ned. Du kommer att se anrop till URL:er som:

1https://www.tiktok.com/api/post/item_list/?WebIdLastTime=...&aid=1988&count=35&cursor=0&secUid=...

De viktigaste parametrarna är:

  • secUid — profilens unika ID (du kan hämta det från metod 1:s JSON, under userInfo.user.secUid)
  • cursor — pagineringsposition (börjar på 0, varje svar returnerar nästa cursor-värde)
  • count — antal objekt per sida (vanligtvis 30–35)

Steg för steg: Fråga TikToks interna API med Python

Steg 1: Hämta secUid för målprofilen.

Du kan ta det från den dolda JSON:en (metod 1) eller från profilsidans HTML.

Steg 2: Bygg och skicka API-förfrågan.

1import requests
2import json
3sec_uid = "MS4wLjABAAAA..."  # Från metod 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()

Steg 3: Tolka svaret.

Varje objekt i data["itemList"] innehåller samma videostruktur som i metod 1 — desc, stats, video.playAddr, video.downloadAddr och så vidare.

Steg 4: Loopa igenom alla videor.

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"Hämtade {len(items)} videor, totalt: {len(all_videos)}, hasMore: {has_more}")
13print(f"Totalt antal skrapade videor: {len(all_videos)}")

Varje iteration returnerar nästa batch och en ny cursor. Loopen fortsätter tills hasMore är False.

Begränsningar med den interna API-metoden

  • TikTok ändrar dessa slutpunkter och nödvändiga parametrar ofta — det här är den mest underhållskrävande metoden. På senare tid har vissa anrop börjat kräva msToken, X-Bogus eller andra signaturparametrar som genereras av TikToks (spoiler: att återskapa det i ren Python är långt ifrån trivialt).
  • Kan kräva sessionscookies eller extra tokens för vissa datatyper
  • IP-baserad hastighetsbegränsning gäller fortfarande — proxyrotation rekommenderas
  • Om du börjar få tomma itemList-arrayer är din msToken sannolikt gammal (den roterar ungefär var 10:e sekund i webbläsaren)
  • Bäst för: bulkextraktion när du behöver alla videor från en profil och metod 1:s begränsning till första sidan inte räcker

Metod 3: Skrapa TikTok-videor med Playwright (webbläsarautomatisering)

När de två första metoderna stöter på hinder — inloggning, CAPTCHA eller signaturparametrar du inte kan återskapa — är Playwright fallback-lösningen. Den startar en riktig (headless) webbläsare, navigerar TikTok som en människa och kan hantera JavaScript-rendering, oändlig scrollning och även autentiserade sessioner.

Så sätter du upp Playwright för TikTok-skrapning

Installera Playwright och dess webbläsarbinaries:

1pip install playwright
2playwright install firefox

Jag rekommenderar Firefox framför Chromium för TikTok-skrapning. Communitytester visar konsekvent med Firefox, och TikToks bottendetektering är särskilt aggressiv mot headless-webbläsare baserade på Chromium.

För extra stealth kan du kombinera Playwright med (en patchad Playwright-fork) eller (Firefox modifierad på C++-nivå för att undvika upptäckt). I uppnår Camoufox nästan perfekta stealth-poäng mot stora tjänster för bottendetektion.

Steg för steg: Skrapa TikTok-profilvideor med Playwright

Steg 1: Starta en headless Firefox-webbläsare och gå till profilen.

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")

Steg 2: Vänta tills videogalleriät har laddats.

1        # Vänta tills videoobjekt visas
2        await page.wait_for_selector('[data-e2e="user-post-item"]', timeout=15000)

Om TikTok visar en overlay med texten “Something went wrong” kan du behöva klicka på en retry-knapp:

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)

Steg 3: Extrahera data från den dolda JSON:en (även i Playwright).

Det mest tillförlitliga är fortfarande att hämta hydration-JSON:en, även när du använder en webbläsare:

1        script_el = page.locator("#__UNIVERSAL_DATA_FOR_REHYDRATION__")
2        raw_json = await script_el.inner_text()
3        data = json.loads(raw_json)
4        # Samma JSON-navigering som i metod 1
5        user_detail = data["__DEFAULT_SCOPE__"]["webapp.user-detail"]
6        videos = user_detail.get("itemList", [])

Steg 4: Hantera oändlig scrollning för fler videor.

Om du behöver mer än de initiala cirka 30 videorna kan du scrolla ned och fånga fler XHR-svar:

1        all_videos = list(videos)
2        # Fånga API-svar medan vi scrollar
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        # Scrolla ned för att trigga fler laddningar
13        for _ in range(5):  # Anpassa antalet scrollningar efter behov
14            await page.evaluate("window.scrollTo(0, document.body.scrollHeight)")
15            await asyncio.sleep(2)
16        # Samla videor från avlyssnade svar
17        for api_resp in api_responses:
18            items = api_resp.get("itemList", [])
19            all_videos.extend(items)
20        print(f"Totalt antal videor: {len(all_videos)}")
21        await browser.close()
22        return all_videos
23# Kör den
24videos = asyncio.run(scrape_tiktok_profile("charlidamelio"))

Nu bör du ha en lista med videoobjekt från både den första sidladdningen och eventuella ytterligare sidor som laddades via scrollning.

Begränsningar med Playwright-metoden

  • Långsammast av alla metoder (full sidrendering, nätverksrundor, scrollfördröjningar)
  • Högre resursförbrukning — varje webbläsarinstans använder mycket minne och CPU
  • Fortfarande utsatt för IP-baserad blockering i större skala — kombinera med proxyrotation
  • Bäst för: komplexa interaktioner, innehåll bakom inloggningsvägg, hantering av CAPTCHA eller när metod 1 och 2 blockeras

Så laddar du ner TikTok-videor (.mp4) med Python

Det här är avsnittet som fyller den största luckan i nästan alla andra TikTok-guider. Att extrahera metadata är användbart, men de flesta som söker på “skrapa TikTok-videor” vill ha själva videofilerna.

TikTok bäddar in nedladdnings-URL:er i videoobjektet:

  • playAddr — brukar vara versionen utan vattenstämpel eller med lägre vattenstämpel
  • downloadAddr — versionen TikTok avser för nedladdning i appen (innehåller TikToks vattenstämpel)

Båda URL:erna är tidskänsliga och upphör att gälla efter en kort stund (vanligtvis några timmar), så du behöver ladda ner dem snabbt efter att du har extraherat dem.

Steg för steg: Ladda ner en TikTok-video

Steg 1: Extrahera video-URL:en från någon av de tre metoderna ovan.

1video_url = video["video"]["playAddr"]  # Version utan vattenstämpel
2# eller
3video_url = video["video"]["downloadAddr"]  # Med vattenstämpel

Steg 2: Skicka en GET-förfrågan med rätt headers.

Det här är steget som ofta ställer till det. Om du bara kör requests.get(video_url) får du ett 403-fel. TikTok kontrollerar Referer-headern och förväntar sig en browser-lik User-Agent.

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)

Steg 3: Skriv svarsinnehållet till en .mp4-fil.

Använd stream=True och skriv i chunkar — TikTok-videor kan vara stora, och du vill inte ladda hela filen i minnet:

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):  # 1 MB-chunkar
5        if chunk:
6            f.write(chunk)
7print(f"Nedladdad: {filename}")

Nu bör du ha en spelbar .mp4-fil på din lokala dator.

Vattenstämpel vs. version utan vattenstämpel

TikTok lagrar både vattenstämplade och icke-vattenstämplade versioner av varje video. playAddr-URL:en ger ofta en renare version (den som spelaren använder), medan downloadAddr inkluderar TikToks vattenstämpel med kreatörens användarnamn.

En snabb etisk notis: vattenstämpeln finns för att ge skaparen erkännande. Om du laddar ner videor för forskning, analys eller intern granskning är playAddr i regel okej. Om du återpublicerar eller delar innehållet vidare väcker borttagning av skaparattribution både etiska och upphovsrättsliga frågor. Mer om det i den juridiska delen nedan.

För en mer robust nedladdningspipeline kan du överväga — dess TikTok-extraktor hanterar signaturberäkning och URL-upplösning automatiskt, så du slipper hantera headers och tokenutgång själv.

Jämförelse sida vid sida: Vilken Python-metod ska du välja?

Här är den jämförelsetabell jag önskar att jag hade när jag började arbeta med TikTok-skrapning:

KriteriumMetod 1: Dold JSONMetod 2: Intern APIMetod 3: Playwright
SvårighetsgradNybörjareMedelnivåMedelnivå
HastighetSnabb (1 anrop per sida)Snabb (JSON-API)Långsam (full sidrendering)
Motståndskraft mot botdetektionMedelLåg (slutpunkter ändras)Hög (imiterar riktig webbläsare)
Laddar ner video .mp4?Ja (extrahera playAddr)Ja (URL i svaret)Ja (avlyssna nätverkstrafik)
Klarar oändlig scrollningNej (bara första sidan)Ja (cursor-paginering)Ja (simulerad scrollning)
Kräver proxy i större skalaJaJaJa
UnderhållsbehovMedel (JSON-strukturen ändras)Högt (slutpunkter/signaturer ändras ofta)Låg-medel (webbläsaren anpassar sig)
Bäst förSnabba engångsuttag från profilerBulkextraktion, alla videorInnehåll bakom inloggning eller komplexa sidor

Min rekommendation:

  • Behöver du bara en snabb ögonblicksbild av en profil? Börja med metod 1. Den tar ungefär 30 sekunder att ställa in och returnerar data på under en sekund per sida.
  • Behöver du alla videor från en profil med paginering? Metod 2 är rätt väg, men räkna med underhåll när TikTok ändrar sina API-parametrar.
  • Har du inloggningsväggar, CAPTCHA eller behöver maximal tålighet? Metod 3 med Playwright. Den är långsammare och tyngre, men svårast för TikTok att blockera.

I praktiken börjar jag ofta med metod 1 och går bara vidare till metod 2 eller 3 när jag stöter på begränsningar. Det håller infrastrukturen enkel och kostnaden låg.

Behöver du inte Python? Skrapa TikTok-videor med kodfria verktyg

Många som söker på “skrapa TikTok-videor med Python” behöver egentligen inte Python. De behöver datan. Om du är marknadsanalytiker som vill ha videometadata från några konkurrentprofiler, eller en varumärkesansvarig som följer omnämnanden, är det överdrivet att sätta upp en Python-miljö med proxyrotation och signaturhantering.

python-vs-nocode-ai-comparison.webp

Här är en ärlig jämförelse av olika arbetssätt:

MetodKunskapsnivåKostnadUnderhållBäst för
Python (egen lösning)Medel+Gratis (+ proxykostnader)Högt (skript går sönder)Full kontroll, anpassade flöden
Thunderbit (Chrome-tillägg)NybörjareGratis nivå finnsInget (AI läser sidan på nytt varje gång)Snabb extraktion av videodata, export till Sheets/Excel
Apify TikTok ScraperNybörjareBetalt (per körning)Lågt (underhålls av Apify)Masskörningar enligt schema
TikAPIUtvecklareBetald prenumerationMedelBygga appar ovanpå TikTok-data

Så hanterar Thunderbit TikTok-skrapning

är AI-webbscrapern vi byggt på Thunderbit, och den fungerar annorlunda än traditionella skrapverktyg. I stället för att lita på förbyggda CSS-selektorer eller XPath-regler (som går sönder varje gång TikTok ändrar sitt gränssnitt) läser Thunderbits AI sidstrukturen på nytt varje gång och föreslår relevanta kolumner — bildtext, likes, hashtags, video-URL, skapare med mera.

Arbetsflödet är verkligen två klick:

  1. Gå till en TikTok-profil i Chrome, klicka på Thunderbit-tillägget och välj “AI Suggest Fields.” Thunderbit skannar sidan och föreslår en tabellstruktur.
  2. Granska de föreslagna kolumnerna, justera vid behov och klicka på “Scrape.”

Datan exporteras direkt till Google Sheets, Excel, Airtable eller Notion. Inga CSS-selektorer att underhålla, ingen kod att felsöka, ingen proxykonfiguration. För marknadsanalytikern som behöver videometadata från ett fåtal profiler går det här mätbart snabbare än att sätta upp en Python-miljö — och det går inte sönder när TikTok uppdaterar sitt gränssnitt (vilket, enligt communityrapporter, sker med några veckors mellanrum).

Thunderbit stöder också — den kan besöka varje enskild videosida för att berika din tabell med fler detaljer som fullständigt kommentarsantal, musikinfo eller videolängd.

Du kan prova det gratis via . För mer om hur det fungerar, kolla in vår .

Juridiska och etiska riktlinjer för TikTok-skrapning

Noll av de topprankade guiderna om detta ämne tar upp legalitet, vilket är en tydlig utelämning med tanke på att TikTok aktivt har drivit rättsprocesser mot skrapningstjänster. Här är vad du behöver veta.

TikToks användarvillkor (§ 4.1) förbjuder uttryckligen automatiserad åtkomst. Att bryta mot användarvillkoren är ett avtalsbrott, inte ett brott i straffrättslig mening — men det kan leda till kontoförbud, IP-blockering eller civilrättsliga åtgärder.

Det juridiska läget är mer tillåtande än många tror för offentliga data. Det ledande prejudikatet är Meta Platforms v. Bright Data (N.D. Cal., jan 2024), där domstolen slog fast att skrapning av offentligt tillgänglig data medan man är utloggad inte bryter mot Metas användarvillkor. Meta drog tillbaka målet och avstod från överklagan. Det tidigare hiQ v. LinkedIn-avgörandet i Ninth Circuit (bekräftat efter Van Buren) slog fast att skrapning av offentligt tillgänglig data inte utgör en CFAA-överträdelse — även om hiQ till slut gjorde upp, betalade 500 000 dollar och gick med på ett permanent föreläggande, vilket visar att TOS-efterlevnad fortfarande kan få konsekvenser.

GDPR och CCPA gäller om du samlar in personuppgifter från användare i EU eller Kalifornien. Att skrapa offentliga inlägg är en sak; att bygga databaser med enskilda användares personliga information är något helt annat.

Praktiska riktlinjer:

  • Begränsa takten på dina förfrågningar (överbelasta inte TikToks servrar)
  • Skrapa inte privata konton eller innehåll från minderåriga
  • Återpublicera inte upphovsrättsskyddat videoinnehåll kommersiellt
  • Respektera robots.txt (TikTok förbjuder det mesta automatiserade crawlandet)
  • Att ladda ner videor för egen forskning eller analys är inte samma sak som att återpublicera dem — förstå skillnaden

Ansvarsfriskrivning: Det här är utbildningsinnehåll, inte juridisk rådgivning. Om du bygger en kommersiell produkt på skrapad TikTok-data bör du tala med en jurist.

Sammanfattning: Viktiga slutsatser

TikTok-skrapning 2025 är ett rörligt mål. Plattformens anti-bot-system är bland de mest avancerade på webben, och naiva metoder (vanlig requests, ChatGPT-genererade kodsnuttar, gamla guider) kommer att misslyckas. Men med rätt metod är det fullt möjligt.

Det här är det viktigaste att ta med sig:

  • Metod 1 (dold JSON) är snabbast och enklast — börja här för snabba profilsökningar.
  • Metod 2 (intern API) ger dig paginering och bulkåtkomst, men kräver mest underhåll eftersom slutpunkter och signaturkrav ändras ofta.
  • Metod 3 (Playwright) är mest motståndskraftig mot anti-bot-mekanismer, men kostar mer i hastighet och resurser.
  • Alla tre metoderna kan extrahera nedladdnings-URL:er för videor — och den här guiden är den enda som visar hur du faktiskt laddar ner .mp4-filerna med rätt headers.
  • För icke-tekniska användare erbjuder en genuint snabbare väg till samma data utan att skriva eller underhålla kod. Dess AI-baserade metod gör att den inte går sönder när TikTok ändrar sitt gränssnitt — vilket, enligt communityrapporter, händer oftare än någon skulle önska.

Om du vill komma igång utan någon Python-installation kan du — gratisnivån räcker för att prova på några profiler och se om det passar ditt arbetsflöde. För dig som väljer Python-spåret: börja med metod 1, validera din data och skala sedan upp därifrån.

Vill du fördjupa dig i tekniker för webbscraping? Kolla in våra guider om , och .

Vanliga frågor

Är det lagligt att skrapa TikTok-videor med Python?

Att skrapa offentligt tillgänglig data är ett juridiskt gränsland, inte ett tydligt brott. Avgörandet i Meta v. Bright Data (2024) stödjer uppfattningen att utloggad skrapning av offentlig data inte bryter mot plattformars användarvillkor. TikToks egna villkor förbjuder dock uttryckligen automatiserad åtkomst, och GDPR/CCPA gäller för personuppgifter. Det är inte olagligt på det sätt som många fruktar, men det är inte riskfritt heller. Rådgör med en jurist för ditt specifika användningsområde.

Vilket är det bästa Python-biblioteket för TikTok-skrapning?

Det beror på din metod. För extraktion av dold JSON (metod 1) räcker requests + beautifulsoup4. För interna API-anrop (metod 2) fungerar requests eller httpx. För webbläsarautomatisering (metod 3) är playwright dagens standard — det har passerat Selenium i användning för nya skrapprojekt, med jämfört med Seleniums cirka 53 miljoner. Wrappret TikTok-Api (cirka 6,3K GitHub-stjärnor) är också värt att överväga om du vill ha ett mer hög nivå-gränssnitt, även om det kan vara skört.

Kan jag ladda ner TikTok-videor utan vattenstämpel med Python?

Ja. TikToks egna data innehåller en playAddr-URL som vanligtvis ger en version av videon utan den vanliga vattenstämpeln. Den här guiden visar hur du extraherar den URL:en med någon av de tre metoderna och laddar ner .mp4-filen med rätt headers. Fältet downloadAddr innehåller däremot vattenstämpeln.

Varför returnerar min TikTok-scraper tom data?

Den vanligaste orsaken är att TikTok kräver JavaScript för att rendera innehållet. En enkel requests.get() hämtar bara HTML-skalet — själva datan finns antingen i en dold JSON-script-tagg (metod 1) eller laddas dynamiskt via JavaScript (metod 3). Om du får tom HTML, testa metod 1 först. Om det misslyckas, kontrollera dina headers (saknad Referer är den vanligaste orsaken till 403-fel) eller gå vidare till metod 3 med Playwright.

Hur undviker jag att bli blockerad när jag skrapar TikTok?

Använd realistiska webbläsarheaders (inklusive User-Agent, Referer och Accept-Language), rotera residential- eller mobilproxyer (datacenter-IP:er flaggas inom minuter), lägg in slumpmässiga pauser mellan förfrågningar (minst 1–3 sekunder) och undvik att skrapa i extremt höga volymer. Metod 3 (Playwright) ger bäst motståndskraft mot blockering eftersom den efterliknar en riktig webbläsarsession. Vid seriös volym bör du budgetera för proxykostnader — instegs-nivå för residential proxyer ligger runt hos större leverantörer.

  • Läs mer
Topics
Skrapa TikTok med PythonTikTok-dataextraktion med PythonPython-skript för TikTok-scrapingHur man skrapar TikTok-videor med Python
Innehållsförteckning

Testa Thunderbit

Skrapa leads och annan data med bara 2 klick. Drivet av AI.

Hämta Thunderbit Det är gratis
Extrahera data med AI
Överför enkelt data till Google Sheets, Airtable eller Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week