Lær hvordan du henter TikTok-videoer med Python

Sist oppdatert April 14, 2026

TikTok har nå rundt , og skapere laster opp anslagsvis 23 millioner videoer hver eneste dag. Har du noen gang prøvd å hente data fra bare en liten bit av denne strømmen, vet du allerede hvor krevende det kan være.

Slik går det ofte: Du søker på "scrape TikTok videos with Python", kopierer et kodeeksempel fra en guide (eller ber ChatGPT skrive et), kjører det – og får … ingenting. Tom HTML. En 403-feil. Eller den beryktede "Process finished with exit code 0" uten noe som helst output. Jeg har sett denne samme historien utspille seg i utallige GitHub-issues og Reddit-tråder, og det er derfor jeg har laget denne guiden. Her går vi gjennom tre Python-metoder som faktisk fungerer i 2025, en komplett steg-for-steg-gjennomgang for å laste ned de faktiske .mp4-filene (ikke bare metadata – som er der de fleste andre guider stopper), og en sammenligningstabell som hjelper deg å velge riktig metode for ditt behov. Hvis du ikke trenger Python i det hele tatt, tar jeg også med no-code-alternativer som som kan gi deg de samme dataene på omtrent to klikk.

Hva betyr egentlig "å hente TikTok-videoer"?

Før vi går inn i koden, er det lurt å avklare hva folk mener når de sier "scrape TikTok videos" – for uttrykket kan bety to ganske forskjellige ting:

  1. Å hente videometadata: Bildetekster, hashtags, antall likerklikk, kommentarer, delinger, visninger, publiseringsdato og info om skaperen. Dette er det de fleste guider fokuserer på.
  2. Å laste ned selve videofilene (.mp4): Å få videoen lagret på din egen maskin. Dette er det de fleste egentlig vil ha når de søker etter hvordan man henter TikTok-videoer – og det er delen nesten ingen dekker.

Denne guiden tar for seg begge deler. Hver metode nedenfor kan hente metadata og gi deg nedlastings-URL-ene du trenger for å lagre .mp4-filene.

Hvorfor hente TikTok-videoer med Python?

Med og TikTok Shop som genererer , er de kommersielle grunnene til å bruke TikTok-data betydelige. Her er bruksområdene jeg ser oftest:

| Bruksområde | Hva du henter | Hvem det passer for | |---|---|---| | Influencer- og markedsundersøkelser | Engasjementsrate, antall følgere, innholdsformat, hashtag-prestasjon | Markedsføringsteam, byråer | | Innholdsstrategi | Trendende hashtags, virale videoforater, publiseringsfrekvens | Innholdsskapere, sosiale medier-managere | | Merkevareovervåking | Omtaler, kampanjerespons, publikumssentiment | Brand managers, PR-team | | Konkurrentanalyse | Konkurrenters videoprestasjon, annonsemateriell, TikTok Shop-oppføringer | E-handel, produktteam | | Markedsanalyse | Nye trender, publikumsatferd, produktoppdagelse | Analytikere, hedgefond, analysebyråer | | Arkivering og etterlevelse | Videofiler for intern gjennomgang eller dokumentasjon | Juridisk, compliance, byråer |

Det økonomiske potensialet er reelt: Annonseinntektene fra TikTok i USA er anslått til 23,4 milliarder dollar i 2026, og affiliate-skapere står for i de største TikTok Shop-kategoriene. Hvis du jobber med e-handel eller influencer-markedsføring, har disse dataene direkte økonomisk verdi.

Hvorfor enkel Python-kode feiler på TikTok

Hvis du allerede har prøvd noe slikt og ikke kommet noen vei, er du ikke alene:

1import requests
2from bs4 import BeautifulSoup
3resp = requests.get("https://www.tiktok.com/@someuser")
4soup = BeautifulSoup(resp.text, "html.parser")
5# ...og så er det ingenting nyttig i HTML-en

Årsaken er enkel: TikTok er en av de vanskeligste plattformene å hente data fra. En vanlig requests.get() returnerer stort sett bare et tomt HTML-skall, fordi innholdet faktisk rendres av JavaScript i nettleseren. I tillegg bruker TikTok et aggressivt anti-bot-oppsett med atferdsdeteksjon, TLS-fingerprinting, en som genererer forespørselsignaturer, og dynamiske CSS-selektorer som endres uten varsel.

tiktok-anti-bot-wall.webp

Ifølge Imperva 2025 Bad Bot Report passerte automatisert trafikk menneskelig trafikk for første gang i 2024 – roboter står nå for . TikTok vet dette godt og har bygget forsvarsmekanismene deretter.

Her er en rask feilsøkingstabell som hjelper deg å finne ut hva som går galt og gå rett til riktig metode:

| Symptom | Sannsynlig årsak | Metode som fikser det | |---|---|---| | Tom HTML / ingen data | JS-rendret innhold; requests kan ikke kjøre JavaScript | Metode 1 (skjult JSON) eller Metode 3 (Playwright) | | 403 / Access Denied | Manglende eller feil headers; anti-bot-deteksjon | Metode 1 med riktige headers | | Det fungerer én gang, så stopper det | Rate limiting / IP-blokkering | Proxy-rotasjon (alle metoder) | | Innloggingsmur vises | Krav om session/cookies | Metode 3 (nettleser med lagret økt) | | Kode generert av ChatGPT gir ingenting | TikTok-strukturen har endret seg siden modellens treningsdata | Alle 3 metodene (oppdaterte tilnærminger) |

Grensen for rate limiting ligger omtrent på 30–60 forespørsler i minuttet per IP før du begynner å få myke blokkeringer eller CAPTCHA-er. Databasesenter-IP-er blir ofte flagget i løpet av minutter – bolig- eller mobilproxyer er i praksis nødvendig ved større volum.

Oversikt: 3 metoder for å hente TikTok-videoer med Python

Her er veikartet. Hver metode har sine fordeler og ulemper, og jeg går gjennom alle tre med fungerende kode:

  1. Uttrekk av skjult JSON — Parse __UNIVERSAL_DATA_FOR_REHYDRATION__-script-taggen som ligger innebygd i TikTok-sidene. Raskest, enklest og uten behov for nettleser.
  2. TikToks interne API — Kall det udokumenterte /api/post/item_list/-endepunktet direkte for bulk-data med cursor-basert paginering.
  3. Nettleserautomatisering med Playwright — Rendrer sider i en headless nettleser for å håndtere uendelig scrolling, dynamisk innhold og innloggingsmurer.

Alle tre metodene kan også brukes til å laste ned de faktiske .mp4-filene — det dekker jeg i en egen seksjon etter gjennomgangen av metodene. En full sammenligningstabell kommer helt på slutten, så du kan ta et informert valg.

Metode 1: Hent TikTok-videoer ved hjelp av skjult JSON (nybegynnervennlig)

Dette er metoden jeg anbefaler å starte med. TikTok legger inn en stor JSON-blokk i en <script>-tag med id-en __UNIVERSAL_DATA_FOR_REHYDRATION__ på så å si hver sideinnlasting. Denne blokken inneholder all profil- og videodata som front-end-JavaScript vanligvis ville rendret – noe som betyr at du kan hente den med én enkelt HTTP-forespørsel, uten nettleser.

Det du trenger

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

Installer avhengighetene:

1pip install requests beautifulsoup4

Steg for steg: hent TikTok-videodata fra script-taggen

Steg 1: Send en GET-forespørsel med realistiske nettleser-headers.

Dette er der de fleste nybegynnere feiler. Hvis du sender en ren requests.get() uten headers, svarer TikTok med 403 eller en CAPTCHA-side. Du trenger minst en oppdatert nettleser-User-Agent og 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: Parse HTML-en og finn hydration-script-taggen.

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

Hvis script_tag er None, har TikTok enten blokkert deg (sjekk statuskoden) eller endret tag-id-en (sjeldent, men mulig).

Steg 3: Last inn script-innholdet som JSON.

1data = json.loads(script_tag.string)

Steg 4: Naviger JSON-strukturen for å hente ut videometadata.

Strukturen ligger nestet under __DEFAULT_SCOPE__. For en profilside:

1user_detail = data["__DEFAULT_SCOPE__"]["webapp.user-detail"]
2user_info = user_detail["userInfo"]
3# Profilstatistikk
4stats = user_info["stats"]
5print(f"Følgere: {stats['followerCount']}, Likes: {stats['heartCount']}")
6# Videoliste (første side med videoer)
7item_list = user_detail.get("itemList", [])
8for video in item_list:
9    print(video["desc"])  # Bildetekst
10    print(video["stats"]["playCount"])  # Visninger
11    print(video["video"]["playAddr"])  # Nedlastings-URL for video (uten vannmerke)
12    print(video["video"]["downloadAddr"])  # Nedlastings-URL for video (med vannmerke)

Steg 5: Hent nedlastings-URL-er for videoene.

Feltet playAddr gir vanligvis en renere versjon av videoen (ofte uten TikToks vannmerke), mens downloadAddr inkluderer standard-vannmerket. Begge er direkte URL-er til .mp4-filen – men de krever spesifikke headers for å kunne lastes ned (det kommer vi tilbake til i nedlastingsdelen under).

Nå bør du ha en liste med videometadata-objekter, hvert med bildetekst, statistikk, tidspunkt for publisering, hashtags (i challenges[] og textExtra), og direkte video-URL-er.

Begrensninger ved metoden med skjult JSON

  • Henter bare data fra den første sideinnlastingen – vanligvis de første ~30 videoene på en profil
  • Håndterer ikke uendelig scrolling eller paginering (det finnes ingen "neste side" å be om)
  • Hvis TikTok endrer script-tag-id-en eller JSON-strukturen, slutter parseren å virke (dette skjer med jevne mellomrom – kan hjelpe med å fange det tidlig)
  • Best for: raske profilscrapes, engangshenting av data eller når du bare trenger de nyeste videoene

Metode 2: Hent TikTok-videoer via det interne API-et

Front-end-en til TikTok laster ikke inn alle videoer samtidig – den gjør XHR-kall til interne API-endepunkter mens du scroller. Det viktigste for brukervideoer er /api/post/item_list/. Du kan kalle dette endepunktet direkte fra Python, noe som gir deg cursor-basert paginering og tilgang til alle videoer på en profil (ikke bare første side).

Hvordan finne det interne API-endepunktet

Åpne Chrome DevTools på en TikTok-profilside, gå til Network-fanen, filtrer på XHR og scroll ned. Du vil se forespørsler til URL-er som:

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

De viktigste parameterne er:

  • secUid — profilens unike ID (du kan hente den fra JSON-en i Metode 1, under userInfo.user.secUid)
  • cursor — offset for paginering (starter på 0, hver respons gir neste cursor-verdi)
  • count — antall elementer per side (vanligvis 30–35)

Steg for steg: spørr TikToks interne API med Python

Steg 1: Hent secUid for målprofilen.

Du kan hente denne fra den skjulte JSON-en (Metode 1) eller fra HTML-en på profilsiden.

Steg 2: Bygg og send API-forespørselen.

1import requests
2import json
3sec_uid = "MS4wLjABAAAA..."  # Fra Metode 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: Parse responsen.

Hvert element i data["itemList"] inneholder samme videostruktur som i Metode 1 — desc, stats, video.playAddr, video.downloadAddr, osv.

Steg 4: Bla gjennom alle videoene med paginering.

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"Hentet {len(items)} videoer, totalt: {len(all_videos)}, hasMore: {has_more}")
13print(f"Totalt antall videoer hentet: {len(all_videos)}")

Hver iterasjon returnerer neste batch og en ny cursor. Løkken fortsetter til hasMore er False.

Begrensninger ved metoden med intern API

  • TikTok endrer disse endepunktene og nødvendige parametere ofte — dette er metoden som krever mest vedlikehold. De siste månedene har enkelte forespørsler begynt å kreve msToken, X-Bogus eller andre signaturparametere generert av TikToks (spoiler: å gjenskape dette i ren Python er ikke trivielt).
  • Kan kreve sesjonscookies eller ekstra tokens for enkelte datatyper
  • IP-basert rate limiting gjelder fortsatt — proxy-rotasjon anbefales
  • Hvis du begynner å få tomme itemList-arrays, er msToken sannsynligvis utdatert (den roterer omtrent hvert 10. sekund i nettleseren)
  • Best for: bulk-uttrekk når du trenger alle videoer fra en profil, og begrensningen i Metode 1 med kun første side ikke er nok

Metode 3: Hent TikTok-videoer med Playwright (nettleserautomatisering)

Når de to første metodene møter veggen – innloggingskrav, CAPTCHA-er eller signaturparametere du ikke klarer å gjenskape – er Playwright fallbacken. Den starter en ekte (headless) nettleser, navigerer TikTok som en menneskelig bruker, og kan håndtere JavaScript-rendring, uendelig scrolling og til og med autentiserte økter.

Slik setter du opp Playwright for TikTok-henting

Installer Playwright og nettleserbinærene:

1pip install playwright
2playwright install firefox

Jeg anbefaler Firefox fremfor Chromium for TikTok-henting. Fellestesting viser jevnlig med Firefox, og TikToks bot-deteksjon er spesielt aggressiv mot headless nettlesere basert på Chromium.

For ekstra stealth kan du kombinere Playwright med (en modifisert Playwright-fork) eller (Firefox modifisert på C++-nivå for anti-deteksjon). I oppnår Camoufox nær perfekte stealth-scorer mot store bot-deteksjonstjenester.

Steg for steg: hent TikTok-profilvideoer med Playwright

Steg 1: Start en headless Firefox-nettleser og gå til 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: Vent til videogriden er lastet inn.

1        # Vent til videoelementene vises
2        await page.wait_for_selector('[data-e2e="user-post-item"]', timeout=15000)

Hvis TikTok viser en "Something went wrong"-overlay, må du kanskje klikke 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: Hent data fra den skjulte JSON-en (også i Playwright).

Den mest pålitelige metoden er fortsatt å hente hydration-JSON-en, selv når du bruker en nettleser:

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

Steg 4: Håndter uendelig scrolling for flere videoer.

Hvis du trenger mer enn de første ~30 videoene, kan du scrolle ned og fange opp flere XHR-responser:

1        all_videos = list(videos)
2        # Intercepter API-responser mens vi scroller
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        # Scroll ned for å trigge flere innlastinger
13        for _ in range(5):  # Juster antall scroll etter behov
14            await page.evaluate("window.scrollTo(0, document.body.scrollHeight)")
15            await asyncio.sleep(2)
16        # Samle videoer fra avlyttede responser
17        for api_resp in api_responses:
18            items = api_resp.get("itemList", [])
19            all_videos.extend(items)
20        print(f"Totalt antall videoer: {len(all_videos)}")
21        await browser.close()
22        return all_videos
23# Kjør det
24videos = asyncio.run(scrape_tiktok_profile("charlidamelio"))

Nå bør du ha en liste med videoobjekter fra både den første sideinnlastingen og eventuelle ekstra sider som ble lastet inn via scrolling.

Begrensninger ved Playwright-metoden

  • Tregest av alle metodene (full side-rendering, nettverksrunder og scroll-forsinkelser)
  • Høyere ressursbruk — hver nettleserinstans bruker betydelig minne og CPU
  • Fortsatt utsatt for IP-blokkering i stor skala — kombiner med proxy-rotasjon
  • Best for: komplekse interaksjoner, innhold bak innlogging, CAPTCHA-håndtering, eller når Metode 1 og 2 blir blokkert

Slik laster du ned TikTok-videoer (.mp4) med Python

Dette er delen som fyller det største hullet i nesten alle andre TikTok-guider. Å hente metadata er nyttig, men de fleste som søker etter hvordan man henter TikTok-videoer, vil ha selve videofilene.

TikTok legger nedlastings-URL-er inn i videoobjektet:

  • playAddr — vanligvis versjonen uten vannmerke, eller med mindre vannmerke
  • downloadAddr — versjonen TikTok bruker for nedlasting i appen (inkluderer TikTok-vannmerket)

Begge URL-ene er tidsfølsomme og utløper etter kort tid (vanligvis noen timer), så du må laste dem ned raskt etter at du har hentet dem ut.

Steg for steg: last ned en TikTok-videofil

Steg 1: Hent video-URL-en fra en av de tre metodene over.

1video_url = video["video"]["playAddr"]  # Versjon uten vannmerke
2# eller
3video_url = video["video"]["downloadAddr"]  # Med vannmerke

Steg 2: Send en GET-forespørsel med riktige headers.

Dette er steget som ofte feller folk. Hvis du bare gjør requests.get(video_url), får du en 403. TikTok sjekker Referer-headeren og forventer en User-Agent som ligner på en nettleser.

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 responsinnholdet til en .mp4-fil.

Bruk stream=True og skriv i biter – TikTok-videoer kan være store, og du vil ikke laste hele filen inn 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-biter
5        if chunk:
6            f.write(chunk)
7print(f"Lastet ned: {filename}")

Nå skal du ha en spillbar .mp4-fil på maskinen din.

Vannmerke vs. nedlasting uten vannmerke

TikTok lagrer både versjoner med og uten vannmerke for hver video. playAddr-URL-en gir ofte en renere versjon (den spilleren bruker), mens downloadAddr inkluderer TikTok-vannmerket med skaperens brukernavn.

Et raskt etisk poeng: Vannmerket finnes for å kreditere skaperen. Hvis du laster ned videoer til forskning, analyse eller intern gjennomgang, er playAddr vanligvis greit å bruke. Hvis du skal distribuere eller publisere innholdet på nytt, skaper fjerning av kreditering både etiske og opphavsrettslige utfordringer. Mer om dette i juridikkdelen under.

For en mer robust nedlastingsløsning kan du vurdere — TikTok-ekstraktoren der håndterer signaturberegning og URL-oppløsning automatisk, så du slipper å administrere headers og token-utløp selv.

Side om side: Hvilken Python-metode bør du velge?

Her er sammenligningstabellen jeg skulle ønske fantes da jeg begynte å jobbe med TikTok-hentingsprosjekter:

| Kriterium | Metode 1: Skjult JSON | Metode 2: Intern API | Metode 3: Playwright | |---|---|---|---| | Vanskelighetsgrad | Nybegynner | Middels | Middels | | Hastighet | Rask (1 forespørsel per side) | Rask (JSON API) | Treg (full side-rendering) | | Robusthet mot anti-bot | Middels | Lav (endepunkter endres) | Høy (imiterer ekte nettleser) | | Laster ned video .mp4? | Ja (hent playAddr) | Ja (URL i responsen) | Ja (intercepter nettverk) | | Håndterer uendelig scrolling | Nei (kun første side) | Ja (cursor-paginering) | Ja (simulert scrolling) | | Trenger proxy i stor skala | Ja | Ja | Ja | | Vedlikeholdsnivå | Middels (JSON-strukturen endres) | Høyt (endepunkter/signaturer endres ofte) | Lav–middels (nettleseren tilpasser seg) | | Best for | Raske, enkle profilscrapes | Bulk-uttrekk, alle videoer | Innhold bak innlogging eller komplekst innhold |

Min anbefaling:

  • Trenger du bare et raskt øyeblikksbilde av en profil? Start med Metode 1. Den tar omtrent 30 sekunder å sette opp og gir data på under ett sekund per side.
  • Trenger du alle videoene fra en profil med paginering? Metode 2 er veien å gå, men vær forberedt på vedlikehold når TikTok endrer API-parametrene sine.
  • Har du med innloggingsmurer, CAPTCHA-er eller trenger maksimal robusthet? Metode 3 med Playwright. Den er tregere og tyngre, men også vanskeligst for TikTok å blokkere.

I praksis starter jeg ofte med Metode 1 og går bare videre til Metode 2 eller 3 når jeg møter begrensninger. Det holder infrastrukturen enkel og kostnadene lave.

Trenger du ikke Python? Hent TikTok-videoer med no-code-verktøy

Mange som søker etter "scrape TikTok videos with Python" trenger egentlig ikke Python. De trenger dataene. Hvis du er en markedsanalytiker som vil ha videometadata fra noen få konkurrentprofiler, eller en brand manager som følger med på omtaler, er det å sette opp et Python-miljø med proxy-rotasjon og signaturhåndtering sannsynligvis mer enn du trenger.

python-vs-nocode-ai-comparison.webp

Her er en ærlig sammenligning av tilnærmingene:

| Tilnærming | Nivå | Kostnad | Vedlikehold | Best for | |---|---|---|---|---| | Python (DIY) | Middels+ | Gratis (+ proxy-kostnader) | Høyt (skript knekker) | Full kontroll, egne pipelines | | (Chrome-utvidelse) | Nybegynner | Gratis nivå tilgjengelig | Ingen (AI leser siden på nytt hver gang) | Raskt uttrekk av videodata, eksport til Sheets/Excel | | Apify TikTok Scraper | Nybegynner | Betalt (per kjøring) | Lavt (vedlikeholdt av Apify) | Store automatiserte kjøringer på timeplan | | TikAPI | Utvikler | Betalt abonnement | Middels | Bygge apper oppå TikTok-data |

Slik håndterer Thunderbit TikTok-henting

er AI-webskraperen vi har bygget hos Thunderbit, og den fungerer annerledes enn tradisjonelle skrapeverktøy. I stedet for å stole på forhåndsdefinerte CSS-selektorer eller XPath-regler (som ryker hver gang TikTok endrer layout), leser Thunderbits AI sidens struktur på nytt hver gang og foreslår relevante kolonner — bildetekst, likes, hashtags, video-URL, forfatter osv.

Arbeidsflyten er virkelig to klikk:

  1. Gå til en TikTok-profil i Chrome, klikk på Thunderbit-utvidelsen og trykk på "AI Suggest Fields." Thunderbit skanner siden og foreslår en tabellstruktur.
  2. Gå gjennom de foreslåtte kolonnene, juster om nødvendig, og klikk på "Scrape."

Dataene eksporteres direkte til Google Sheets, Excel, Airtable eller Notion. Ingen CSS-selektorer å vedlikeholde, ingen kode å feilsøke, ingen proxy-konfigurasjon. For markedsanalytikeren som trenger videometadata fra noen få profiler, går dette merkbart raskere enn å sette opp et Python-miljø – og det slutter ikke å virke når TikTok oppdaterer front-end-en sin (noe som, ifølge tilbakemeldinger fra brukere, skjer med noen ukers mellomrom).

Thunderbit støtter også — det kan besøke hver enkelt videoside for å berike datatabellen med ekstra detaljer som fullstendige kommentartall, musikkinfo eller videovarighet.

Du kan prøve det gratis via . For mer om hvordan det fungerer, sjekk vår .

Juridiske og etiske rammer for å hente TikTok-data

Null av de topprangerte guidene om dette temaet snakker om lovlighet, noe som er en merkbar utelatelse med tanke på at TikTok aktivt har forfulgt rettslige skritt mot scraping-tjenester. Her er det du bør vite.

TikToks bruksvilkår (§ 4.1) forbyr uttrykkelig automatisert tilgang. Å bryte bruksvilkårene er et kontraktsbrudd, ikke en straffbar handling – men det kan føre til kontoblocking, IP-blokkering eller sivilt søksmål.

Det juridiske landskapet er mer tillatende enn mange tror når det gjelder offentlige data. Det viktigste prejudikatet er Meta Platforms v. Bright Data (N.D. Cal., jan. 2024), der retten slo fast at scraping av offentlig tilgjengelige data mens man er utlogget ikke bryter Metas bruksvilkår. Meta droppet saken og avsto fra anke. Den tidligere hiQ v. LinkedIn-avgjørelsen i Ninth Circuit (bekreftet etter Van Buren) slo fast at scraping av offentlig tilgjengelige data ikke er et CFAA-brudd – selv om hiQ til slutt inngikk forlik, betalte 500 000 dollar og gikk med på et permanent forføyningsvedtak, noe som viser at håndheving av bruksvilkår fortsatt kan bite fra seg.

GDPR og CCPA gjelder hvis du samler inn personopplysninger fra EU- eller California-brukere. Å hente offentlige innlegg er én ting; å bygge databaser over enkeltpersoners personlige informasjon er noe annet.

Praktiske retningslinjer:

  • Sett en fornuftig rate-limit på forespørslene dine (ikke bombardér TikToks servere)
  • Ikke hent private kontoer eller innhold fra mindreårige
  • Ikke distribuer opphavsrettsbeskyttet videoinnhold kommersielt
  • Respekter robots.txt (TikTok blokkerer det meste av automatisert crawling)
  • Å laste ned videoer for personlig forskning eller analyse er noe annet enn å republisere dem – forstå forskjellen

Ansvarsfraskrivelse: Dette er opplæringsinnhold, ikke juridisk rådgivning. Hvis du bygger et kommersielt produkt basert på innhentede TikTok-data, bør du snakke med en advokat.

Oppsummering: de viktigste læringene

TikTok-henting i 2025 er et bevegelig mål. Plattformens anti-bot-system er blant de mest avanserte på nettet, og naive tilnærminger (vanlig requests, kodebiter generert av ChatGPT, utdaterte guider) vil feile. Men med riktig metode er det fullt mulig.

Dette er det viktigste å ta med seg:

  • Metode 1 (Skjult JSON) er raskest og enklest – start her for raske profilscrapes.
  • Metode 2 (Intern API) gir paginering og bulk-tilgang, men krever mest vedlikehold ettersom endepunkter og signaturkrav endrer seg.
  • Metode 3 (Playwright) er mest robust mot anti-bot-mekanismer, men koster mer i tid og ressurser.
  • Alle tre metodene kan hente nedlastings-URL-er til videoene – og denne guiden er den eneste som faktisk viser deg hvordan du laster ned .mp4-filene med riktige headers.
  • For ikke-tekniske brukere tilbyr en reelt raskere vei til de samme dataene uten å skrive eller vedlikeholde kode. Den AI-baserte tilnærmingen betyr at den ikke knekker når TikTok endrer layout – noe som, ifølge brukeropplevelser, skjer oftere enn noen skulle ønske.

Hvis du vil komme i gang uten å sette opp Python, kan du – gratisnivået er nok til å teste det på noen få profiler og se om det passer arbeidsflyten din. For deg som går Python-veien, start med Metode 1, valider dataene, og skaler videre derfra.

Vil du lære mer om web scraping-teknikker? Sjekk guidene våre om , , og .

Vanlige spørsmål

Er det lov å hente TikTok-videoer med Python?

Å hente offentlig tilgjengelige data er et juridisk gråområde, ikke et entydig lovbrudd. Meta v. Bright Data (2024)-avgjørelsen støtter synet om at scraping av offentlig data mens man er utlogget ikke bryter plattformens bruksvilkår. Samtidig forbyr TikToks bruksvilkår uttrykkelig automatisert tilgang, og GDPR/CCPA gjelder for personopplysninger. Det er ikke ulovlig på den måten de fleste frykter, men det er heller ikke risikofritt. Snakk med en jurist om ditt konkrete brukstilfelle.

Hva er det beste Python-biblioteket for TikTok-henting?

Det kommer an på metoden din. For uttrekk av skjult JSON (Metode 1) holder det med requests + beautifulsoup4. For kall til det interne API-et (Metode 2) fungerer requests eller httpx. For nettleserautomatisering (Metode 3) er playwright dagens standard – det har passert Selenium i bruk for nye scraping-prosjekter, med mot Seleniums omtrent 53 millioner. TikTok-Api-wrapperen (ca. 6,3K GitHub-stjerner) er også verdt å vurdere hvis du vil ha et mer høynivågrensesnitt, men den kan være skjør.

Kan jeg laste ned TikTok-videoer uten vannmerke med Python?

Ja. TikToks egne data inneholder en playAddr-URL som vanligvis gir en versjon av videoen uten standard vannmerke. Denne guiden viser hvordan du henter den URL-en fra hvilken som helst av de tre metodene og laster ned .mp4-filen med riktige headers. Feltet downloadAddr inkluderer derimot vannmerket.

Hvorfor gir TikTok-skraperen min tomme data?

Den vanligste årsaken er at TikTok krever JavaScript for å rendere innholdet. En enkel requests.get() henter bare HTML-skallet – de faktiske dataene ligger enten i en skjult JSON-script-tag (Metode 1) eller lastes inn dynamisk via JavaScript (Metode 3). Hvis du får tom HTML, prøv Metode 1 først. Hvis det ikke fungerer, sjekk headers (manglende Referer er den vanligste årsaken til 403-feil) eller gå videre til Metode 3 med Playwright.

Hvordan unngår jeg å bli blokkert når jeg henter data fra TikTok?

Bruk realistiske nettleser-headers (inkludert User-Agent, Referer og Accept-Language), roter mellom bolig- eller mobilproxyer (datacenter-IP-er blir ofte flagget i løpet av minutter), legg inn tilfeldige forsinkelser mellom forespørsler (minst 1–3 sekunder), og unngå ekstremt høyt volum. Metode 3 (Playwright) gir høyest robusthet mot blokkering fordi den etterligner en ekte nettleserøkt. Ved seriøst volum bør du budsjettere med proxy-kostnader — rimelige boligproxyer ligger på rundt hos de store leverandørene.

Prøv Thunderbit for TikTok-henting
Shuai Guan
Shuai Guan
Co-founder/CEO @ Thunderbit. Passionate about cross section of AI and Automation. He's a big advocate of automation and loves making it more accessible to everyone. Beyond tech, he channels his creativity through a passion for photography, capturing stories one picture at a time.
Topics
Hente TikTok med PythonTikTok-datauttrekk med PythonPython TikTok-skrapeskriptHvordan hente TikTok-videoer med Python
Innhold

Prøv Thunderbit

Hent leads og andre data med bare 2 klikk. Drevet av AI.

Få Thunderbit Det er gratis
Hent data med AI
Overfør enkelt data til Google Sheets, Airtable eller Notion
PRODUCT HUNT#1 Product of the Week