For å finne ut om en bestemt TikTok-video får respons, sammenligner du de offentlige målingene med videoens forrige øyeblikksbilde. Et enkelt søk viser visninger og reaksjoner som allerede er samlet opp; hvis du henter de samme videoene på nytt, kan du se endringen mellom to kjøringer. Nedenfor finner du en enkel Python-pipeline: søk, lagre målinger i en CSV-fil og beregne differansen.
Hva måler denne typen overvåking?
Skriptet passer for en markedsfører, analytiker eller utvikler som trenger en liste over videoer fra et tema og en etterprøvbar observasjonshistorikk. Et team kan for eksempel følge videoer om en produktlansering eller et bestemt søk fra målgruppen jevnlig, og se hvilke videoer som har fått flere visninger, likerklikk, kommentarer eller delinger siden forrige kontroll.

Den sentrale sammenligningsenheten er videoen, identifisert med aweme_id. For hver oppføring lagres innsamlingstidspunkt, ID, beskrivelse, URL, skaperens navn og tilgjengelige tellere. Deretter kobles to øyeblikksbilder sammen ved hjelp av ID-en. Dermed blandes ikke økningen i visninger for én video sammen med visningene en annen video har samlet opp.
Resultatet beskriver bare videoene som returneres av et bestemt søk ved en bestemt kjøring. Søkeresultatene kan endre seg, og enkelte statistikkfelt kan mangle. Derfor er det nyttig å lagre selve øyeblikksbildene og innsamlingstidspunktet, og behandle rapporten som en observasjon av videoer som allerede er funnet – ikke som en fullstendig katalog over alle publiseringer om temaet.
Hvordan fungerer innsamlingen via API-et?
Dokumentasjonen for TikTok Scraper API beskriver GET-ruten /searchVideo. Søkestrengen keyword er obligatorisk; blant tilleggsparameterne finner vi count, region, sort_by og date_posted. API-nøkkelen sendes som license_key. Referansen oppgir https://tiktok.evelode.com som basisadresse.
Svaret inneholder en ytre status og et tiktok-objekt. Søkeresultatene kan ligge i tiktok.aweme_list eller under tiktok.search_item_list[].aweme_info. Behandleren nedenfor støtter begge formatene. Målingene hentes fra statistics, blant annet play_count, digg_count, comment_count og share_count; verdier som mangler, lagres som tomme i stedet for å erstattes med null.
Ruteoversikten lister opp cursor for å bla gjennom søkeresultatene og angir gyldige alternativer for date_posted og sort_by. For enkel, gjentakbar overvåking holder det først å hente én resultatside og lagre svaret. Legg bare til paginering ved behov. Hvis du trenger det, sender du videre markøren du mottok, uten å endre den.
Et fungerende Python-eksempel
Installer requests-biblioteket med python -m pip install requests, og angi nøkkelen i miljøvariabelen JSONSCRAPER_TIKTOK_LICENSE_KEY. Skriptet tar et søkeuttrykk som argument og legger de innsamlede øyeblikksbildene til i én CSV-fil. Koden er kompatibel med Python 3.8+.
import csv
import os
import sys
from datetime import datetime, timezone
from pathlib import Path
import requests
BASE_URL = "https://tiktok.evelode.com/searchVideo"
CSV_PATH = Path("tiktok_video_snapshots.csv")
FIELDS = [
"collected_at", "aweme_id", "author", "description", "share_url",
"play_count", "digg_count", "comment_count", "share_count",
]
def extract_items(payload):
"""Support the observed search response layouts."""
data = payload.get("tiktok") or {}
items = data.get("aweme_list") or []
if items:
return items
found = []
for result in data.get("search_item_list") or []:
info = result.get("aweme_info")
if info:
found.append(info)
return found
def main():
key = os.environ.get("JSONSCRAPER_TIKTOK_LICENSE_KEY")
if not key:
raise SystemExit("Set JSONSCRAPER_TIKTOK_LICENSE_KEY first")
if len(sys.argv) < 2:
raise SystemExit('Usage: python collect.py "search phrase"')
params = {
"license_key": key,
"keyword": sys.argv[1],
"count": 20,
"region": "US",
"sort_by": "relevance",
"date_posted": "this-week",
}
response = requests.get(BASE_URL, params=params, timeout=30)
response.raise_for_status()
payload = response.json()
if payload.get("status") != "ok":
raise RuntimeError("API returned a non-ok outer status")
data = payload.get("tiktok") or {}
items = extract_items(payload)
collected_at = datetime.now(timezone.utc).isoformat()
rows = []
for item in items:
stats = item.get("statistics") or {}
author = item.get("author") or {}
rows.append({
"collected_at": collected_at,
"aweme_id": item.get("aweme_id"),
"author": author.get("unique_id") or author.get("nickname"),
"description": item.get("desc"),
"share_url": item.get("share_url"),
"play_count": stats.get("play_count"),
"digg_count": stats.get("digg_count"),
"comment_count": stats.get("comment_count"),
"share_count": stats.get("share_count"),
})
write_header = not CSV_PATH.exists()
with CSV_PATH.open("a", newline="", encoding="utf-8") as file:
writer = csv.DictWriter(file, fieldnames=FIELDS)
if write_header:
writer.writeheader()
writer.writerows(rows)
print("Saved", len(rows), "returned videos")
print("has_more:", data.get("has_more"), "cursor:", data.get("cursor"))
if __name__ == "__main__":
main()
Kjør for eksempel python collect.py "produktsøk". Biblioteket legger nøkkelstrengen inn i URL-parametrene; skriptet skriver den ikke ut i terminalen. Ikke lagre hele forespørsels-URL-en i offentlige logger, siden den inneholder nøkkelen. Bruk en hemmelighetsløsning i produksjon, og begrens tilgangen til filen med øyeblikksbilder.
Hvordan beregner du økningen mellom kjøringer?
Skriptet skriver med vilje alle observasjonene i stedet for å overskrive tidligere verdier. Den neste, korte analysatoren kobler sammen de to siste øyeblikksbildene for hver video og skriver ut differansen for tellerne. Hvis en måling mangler i én av de to oppføringene, vises resultatet som utilgjengelig.

import csv
from collections import defaultdict
from pathlib import Path
rows_by_video = defaultdict(list)
with Path("tiktok_video_snapshots.csv").open(encoding="utf-8", newline="") as file:
for row in csv.DictReader(file):
if row["aweme_id"]:
rows_by_video[row["aweme_id"]].append(row)
metrics = ("play_count", "digg_count", "comment_count", "share_count")
for video_id, snapshots in rows_by_video.items():
snapshots.sort(key=lambda row: row["collected_at"])
if len(snapshots) < 2:
continue
previous, latest = snapshots[-2], snapshots[-1]
changes = {}
for metric in metrics:
old, new = previous[metric], latest[metric]
changes[metric] = int(new) - int(old) if old and new else None
print(video_id, changes, latest["share_url"])
Differansen er endringen mellom to lagrede verdier, ikke en veksthastighet med garantert tidsintervall. Hvis det går ulikt lang tid mellom kjøringene, kan du beregne tidsrommet mellom collected_at-verdiene og sammenligne økningen over det faktiske intervallet. Tellerne kan endre seg mellom observasjonene; de lagrede tidsstemplene viser når verdiene som er brukt, ble hentet.
Hvordan automatiserer og tolker du rapporten?
For en daglig rapport kan du legge innsamlingen inn i en oppgaveplanlegger på en server eller i CI, angi en fast liste med søkefraser og lagre CSV-filen eller laste radene inn i en database. Fjern duplikater innenfor hvert enkelt øyeblikksbilde ved hjelp av aweme_id hvis resultatene inneholder gjentakelser. Lagre rå JSON sammen med normaliserte kolonner for historikken; da blir det enklere å behandle dataene på nytt hvis rapportskjemaet endres.
Det er praktisk å vise videoens ID og URL, skaperen, beskrivelsen, innsamlingstidspunktet og endringer for hver enkelt måling i tabellen. Sortering etter økning i visninger viser spredning, mens økning i kommentarer eller delinger kan fremheve en annen type respons. Ikke slå disse målene sammen til én samlet rangering uten å angi en tydelig regel: hver teller uttrykker noe forskjellig.
Oppgaveplanleggeren kan sende rapporten på e-post, til et regneark eller til en intern kanal, men dette håndteres av infrastrukturen din – eksemplet ovenfor samler bare inn og analyserer data. Hvis du vil hente flere resultater, kan du gå gjennom resultatsidene, lagre markøren og avslutte løkken når API-et melder at det ikke finnes flere sider. Søkemarkøren er en ugjennomsiktig verdi fra svaret; ikke beregn den selv. Selv om du går gjennom sidene, beskriver resultatet bare det API-et returnerer og garanterer ikke en fullstendig liste over alle relevante publiseringer.
Det praktiske resultatet du kan forvente, er en gjentakbar observasjonslogg og en tabell med endringer for videoene du har funnet. Det gjør det lettere å oppdage hvilke publiseringer som har fått endrede offentlige tellere mellom kontrollene, og å sende konkrete lenker til en fagperson for nærmere innholdsanalyse. Du finner produktdetaljer og API-tilgang på siden for TikTok Scraper API.
Hva bør du kontrollere før du setter kjøringen på fast plan?
- Kontroller at den ytre statusen i svaret er
okfør du behandlertiktok. - Kontroller begge formatene for søkeelementer; hvis listen mangler, skal innsamlingen gi et tomt resultat, ikke en feil.
- Lagre de opprinnelige verdiene og tidsstemplene. En tom måling skal forbli tom.
- Bruk de samme søkene og parameterne for å gjøre sammenligningen av øyeblikksbilder tydeligere; noter endringer i disse innstillingene sammen med rapporten.
- Følg med på hvor ofte kjøringene skjer, HTTP-feil og historikkens størrelse. Følg også gjeldende plattformregler og krav til databehandling.
For å få et observerbart resultat holder det altså å gjenta det samme søket, identifisere videoene med aweme_id og sammenligne de lagrede målingene over tid. Denne metoden besvarer et avgrenset, praktisk spørsmål – hvilke av videoene du allerede har funnet, som har fått endrede offentlige tellere mellom to kontroller – samtidig som originaldataene er tilgjengelige for revisjon og videre behandling.