Supportteamet behöver en lista över offentliga TikTok-videor där människor diskuterar en oklar funktion eller ställer frågor om en produkt. Manuell sökning är svår att upprepa på samma sätt, och sök-API:ets svar kan lagra videor på olika ställen i JSON. Nedan finns ett enkelt Python-skript som hämtar resultat med nyckelord, slår ihop de båda strukturerna, tar bort dubbletter utifrån ID och sparar de hittade posterna i en CSV-fil.
Det här ger skriptet
Resultatet blir en tabell med videons ID, länk, beskrivning, publiceringstid, skapare och tillgängliga reaktionsräknare. Support- eller marknadsteamet kan manuellt markera vilka ämnen som kräver ett svar, en uppdatering av instruktioner eller en kontroll i det egna CRM-systemet. Tabellen återger de API-resultat som kom tillbaka för de angivna sökningarna. Se den som ett arbetsurval för genomgång, inte som en fullständig katalog över alla diskussioner.

Skriptet hanterar insamling och en första sortering. Det avgör inte automatiskt om en beskrivning är en fråga, ett klagomål eller ett skämt. Lägg hellre till en etikett efter manuell granskning eller med en separat klassificerare, och dokumentera originaltexten och skälet till beslutet.
Vad som ska sökas och hur svaret är uppbyggt
För videosökning dokumenterar jsonscraper GET-rutten /searchVideo på värden https://tiktok.evelode.com. Den obligatoriska parametern är keyword. Du kan även ange count, region, sortering, publiceringsperiod och en markör för nästa sida. Du kan till exempel upprepa sökningen med flera förutbestämda fraser: ett funktionsnamn, en vanlig formulering av ett fel och en kort fråga om en inställning. Parametrarna och tillåtna värden listas i TikTok API-referensen.
Sökningen har en viktig egenskap som parsern måste hantera: arrayen aweme_list kan vara tom, medan de hittade objekten i stället finns i search_item_list, med aweme_info inuti varje objekt. Därför kontrollerar hanteraren nedan båda strukturerna. Exempel på ett svar och fält som observerades vid kontrollen den 25 oktober 2026 finns i jsonscrapers primära specifikation. Statistikfält kan saknas, så koden hittar inte på värden.
Förbered nyckeln och söklistan
Spara nyckeln i miljövariabeln JSONSCRAPER_TIKTOK_LICENSE_KEY i stället för i källfilen. I ett Linux- eller macOS-skal kan du göra så här:
export JSONSCRAPER_TIKTOK_LICENSE_KEY="din_nyckel"
Installera förfrågningsbiblioteket och skapa filen queries.txt med ett sökuttryck per rad, till exempel produktnamn inställning och funktionsnamn fungerar inte. Välj formuleringar utifrån målgruppens språk och håll dem i en separat lista, så att de veckovisa utdragen jämför samma sökningar.
python -m pip install requests
Samla in och normalisera hittade videor
Exemplet fungerar med Python 3.8 eller senare. Det gör en förfrågan per fras med en resultatgräns, kontrollerar HTTP-fel och API:ets övergripande status och sparar sedan bara fält som faktiskt finns. Dubbletter slås ihop utifrån aweme_id, och alla sökningar där videon hittades sparas i fältet keywords. Det separata fältet collected_at_utc registrerar när uppgifterna hämtades, så att senare körningar kan jämföras.

import csv
import os
import sys
from datetime import datetime, timezone
import requests
BASE_URL = "https://tiktok.evelode.com/searchVideo"
API_KEY = os.environ.get("JSONSCRAPER_TIKTOK_LICENSE_KEY")
if not API_KEY:
raise SystemExit("Ange JSONSCRAPER_TIKTOK_LICENSE_KEY")
def get_items(tiktok):
"""Extraherar videor från båda dokumenterade formerna av söksvaret."""
items = list(tiktok.get("aweme_list") or [])
for entry in tiktok.get("search_item_list") or []:
info = entry.get("aweme_info") if isinstance(entry, dict) else None
if info:
items.append(info)
return items
with open("queries.txt", encoding="utf-8") as query_file:
queries = [line.strip() for line in query_file if line.strip()]
collected_at = datetime.now(timezone.utc).isoformat()
videos = {}
for keyword in queries:
response = requests.get(
BASE_URL,
params={
"license_key": API_KEY,
"keyword": keyword,
"count": 30,
"region": "US",
"sort_by": "relevance",
},
timeout=30,
)
response.raise_for_status()
payload = response.json()
if payload.get("status") != "ok":
print("API-status misslyckades för sökningen:", keyword, file=sys.stderr)
continue
tiktok = payload.get("tiktok") or {}
for item in get_items(tiktok):
video_id = item.get("aweme_id")
if not video_id:
continue
if video_id not in videos:
author = item.get("author") or {}
stats = item.get("statistics") or {}
videos[video_id] = {
"aweme_id": video_id,
"keywords": [keyword],
"description": item.get("desc"),
"share_url": item.get("share_url"),
"create_time": item.get("create_time"),
"author": author.get("unique_id") or author.get("nickname"),
"play_count": stats.get("play_count"),
"digg_count": stats.get("digg_count"),
"comment_count": stats.get("comment_count"),
"share_count": stats.get("share_count"),
"collected_at_utc": collected_at,
}
elif keyword not in videos[video_id]["keywords"]:
videos[video_id]["keywords"].append(keyword)
columns = [
"aweme_id", "keywords", "description", "share_url", "create_time",
"author", "play_count", "digg_count", "comment_count", "share_count",
"collected_at_utc",
]
with open("tiktok_support_review.csv", "w", newline="", encoding="utf-8-sig") as output:
writer = csv.DictWriter(output, fieldnames=columns)
writer.writeheader()
for video in videos.values():
row = dict(video)
row["keywords"] = " | ".join(row["keywords"])
writer.writerow(row)
print("Antal sparade unika videor:", len(videos))
Förfrågan skickas med parametern params, så att biblioteket kodar textfraserna korrekt i URL:en. Nyckeln skickas däremot som en query-parameter, enligt dokumentationen. Skriv inte ut hela förfrågnings-URL:en i programmets logg. För felsökning kan du spara HTTP-svarskod, sökfras och starttid, men uteslut hemligheter och personuppgifter som inte behövs för uppgiften.
Så läser du CSV-filen utan att dra förhastade slutsatser
Kolumnen keywords innehåller alla fraser där videon hittades; collected_at_utc skiljer insamlingstid från publiceringstid. ID:t är praktiskt för deduplicering, och länken gör det möjligt för en person att kontrollera resultatet. En tom räknare betyder att fältet saknades i det aktuella svaret, inte att värdet var noll.
Lägg till kolumnerna ämne, signaltyp, svar behövs och länk till internt material i en arbetskopia av CSV-filen för den första sorteringen. Ämnesalternativen bör motsvara din produkt, till exempel installation, betalning, kompatibilitet eller felsökning. Då blir utdraget en granskningskö, samtidigt som det går att kontrollera beslutet mot den ursprungliga videon.
Schemalägg insamlingen
Kör först skriptet manuellt och kontrollera några rader och länkar. Lägg sedan till det i cron, ett CI-jobb eller ett automatiseringsflöde som kan köra en Python-process. För regelbundna rapporter sparar du varje utdrag separat eller lägger till rader i en lagring med videons ID och ögonblicksbildens datum som unik nyckel. Då kan teamet skilja nya hittade inlägg från upprepade observationer och följa hur tillgängliga räknare förändras mellan körningarna.
Parametern cursor är avsedd för att bläddra vidare i resultaten och ska skickas vidare från föregående anrop. Paginering ingår avsiktligt inte i den här minimala versionen: ett begränsat antal sökningar är enklare att kontrollera och återskapa. Om du lägger till sidor ska du lagra markören utan att tolka den, sluta när det inte finns någon fortsättning och sätta en övre gräns för antalet anrop per körning. API-förfrågan returnerar ett urval; tolka inte antalet rader som att hela TikTok har täckts.
Praktiska begränsningar
Sökresultat passar för att hitta videor utifrån formuleringar som teamet redan känner till. De hjälper till att samla in material för klassificering, men ersätter inte inkommande kundärenden, analys av den egna webbplatsen eller granskning av videons sammanhang. Beskrivningen kanske inte fångar videons innehåll, och tillgängliga mätvärden speglar uppgifterna när de hämtades. Håll ämnesetiketter och slutsatser åtskilda från originalfälten, så att medarbetare kan ompröva klassificeringen.
Innan du startar regelbunden bevakning bör du bestämma vem som får tillgång till utdraget, hur länge uppgifterna sparas och i vilket syfte offentliga uppgifter används. Spara bara fält som behövs för produktgranskningen och föredra länkar till originalinläggen framför att kopiera mediefiler. Läs sidan om TikTok Scraper API och dokumentationen för sökrutten om du vill undersöka och kontrollera tillgängliga integrationsalternativ.