Het contentteam merkt een nieuw onderwerp op TikTok vaak pas op wanneer concurrenten er al over praten. De oorzaak is meestal eenvoudig: zoekopdrachten worden handmatig en onregelmatig gecontroleerd, terwijl gevonden links in een chat achterblijven, zonder gedeelde tabel, verzameldatum of vergelijkbare statistieken. Om veranderingen eerder te signaleren, kun je zoeken omzetten in een herhaalbaar proces: leg zoekopdrachten vast, bewaar de gevonden video’s regelmatig en vergelijk uitsluitend resultaten die daadwerkelijk zijn waargenomen.

Hieronder staat een opzet voor zulke monitoring met Python en de TikTok Scraper API van jsonscraper. Ze is bijvoorbeeld geschikt voor een bureau dat meerdere thematische zoekopdrachten volgt voor een publicatiekalender, of voor een merk dat wil zien welke openbare video’s over een onderwerp opvallend veel weergaven en reacties krijgen. De API retourneert TikTok-zoekresultaten met onder meer de videobeschrijving, maker, publicatiedatum, link en beschikbare tellers. Het script archiveert elk antwoord en maakt een CSV-momentopname voor analyse.
Het uitgangspunt is niet een abstracte ‘trend’ te meten, maar veranderingen in je eigen waarnemingslogboek: welke video’s in de selectie zijn verschenen, welke bekende video’s hun openbare tellers hebben zien veranderen en welke formuleringen terugkomen in beschrijvingen. Zo krijgt het contentteam een controleerbare lijst onderwerpen om handmatig te beoordelen, met de herkomst van elke conclusie erbij.
Waarom handmatig zoeken geen goede monitoring oplevert
Zoekresultaten vormen een veranderlijke selectie, geen stabiele catalogus van publicaties. Als een medewerker vandaag tien video’s op een woord vindt en volgende week opnieuw zoekt, is vergelijken lastig: eerdere links kunnen zoekraken, de resultatenlijst kan anders zijn en de tellers hebben nieuwe waarden gekregen. Zonder opgeslagen momentopnamen is niet meer te achterhalen wat het team op een bepaalde dag precies heeft gezien.
Zelfs een eenvoudige dagelijkse verzameling lost een deel van dit probleem op. Bij elke run worden de waarnemingsdatum, zoekterm, video-ID, maker, beschrijving, link en beschikbare statistieken opgeslagen. Bij een volgende run kun je de records op video-ID vergelijken en het verschil tussen tellerwaarden berekenen, als beide versies de bijbehorende velden bevatten.
Deze waarden moeten worden beschouwd als openbare statistieken van video’s die in het API-antwoord zijn aangetroffen, niet als het volledige bereik van TikTok of een uitputtende populariteitsranglijst. Zoekresultaten kunnen veranderen, afzonderlijke velden kunnen ontbreken en statistieken hangen af van het moment van verzamelen. Het doel van de pipeline is daarom een reproduceerbare werksample samen te stellen en kandidaten voor nader onderzoek te signaleren, niet om op basis van één getal een onderwerp tot universele trend uit te roepen.
De opzet: zoeken, archiveren, vergelijken
De pipeline bestaat uit vijf onderdelen: de configuratie van trefwoorden, een API-aanvraag, een ongewijzigd JSON-archief, een genormaliseerde laag met records en een rapport met veranderingen. Door de stappen te scheiden, kun je elk onderdeel afzonderlijk controleren. Als de antwoordstructuur verandert of velden ontbreken, blijft de oorspronkelijke JSON beschikbaar voor nieuwe verwerking.
- Stel een reeks zoekopdrachten samen. Gebruik specifieke zinnen die verband houden met een product, sector of doelgroepbehoefte. Een merk voor keukenapparatuur kan bijvoorbeeld ‘meal prep’, ‘air fryer recipes’ en de naam van een specifieke productcategorie volgen. Bewaar de zoekopdrachten in een configuratiebestand in plaats van ze in de verwerkingslogica vast te leggen.
- Bepaal de verzamelregels. Kies een planning en een klein aantal resultaten voor de proef. Noteer de datum, regio en zoekparameters. Voor tijdsvergelijkingen is het belangrijker de instellingen steeds te herhalen dan bij elke run een zo breed mogelijk antwoord op te halen.
- Bewaar het oorspronkelijke antwoord. Sla de JSON op met de starttijd en het zoekwoord. Met het archief kun je het oorspronkelijke record terughalen en de normalisatie aanpassen zonder opnieuw de API aan te roepen.
- Normaliseer alleen bevestigde velden. Haal uitsluitend velden op die in het antwoord aanwezig zijn: ID, bijschrift, publicatietijd, maker, link en beschikbare statistieken. Laat ontbrekende waarden leeg en vervang ze niet door nul.
- Vergelijk momentopnamen. Koppel video’s op ID en bewaar elke waarneming afzonderlijk. Zo kun je nieuwe publicaties in het archief vinden en verschillen tussen waargenomen statistiekwaarden berekenen.
Kies voor de eerste test twee of drie zoekopdrachten en een klein aantal resultaten. Controleer of de beschrijvingen en makers aansluiten op je doel, welke velden daadwerkelijk worden teruggegeven en in hoeverre de selectie bij dezelfde instellingen overeenkomt. Pas daarna is het zinvol het aantal zoektermen uit te breiden en de run volgens een schema te laten uitvoeren.
Wat je met de TikTok Scraper API kunt opvragen
In de officiële documentatie van jsonscraper is de route GET /searchVideo bedoeld om video’s op trefwoord te zoeken. De verplichte parameter is keyword. Gedocumenteerde optionele parameters zijn onder meer count, cursor, date_posted, sort_by, region en cache_timeout. Voor date_posted noemt de documentatie waarden als this-week en this-month; voor sort_by zijn dat relevance, most-liked en date-posted. De exacte parameternamen en hun betekenis staan in de routebeschrijving van de TikTok API.
Het basisadres van de service is https://tiktok.evelode.com; de sleutel wordt meegegeven als queryparameter license_key. In het voorbeeld hieronder staat de sleutel in de omgevingsvariabele JSONSCRAPER_TIKTOK_LICENSE_KEY. Zo hoef je het geheim niet in de broncode te zetten en wordt het niet in het uitvoeringslog afgedrukt.
Verwerk het antwoord met aandacht voor de geneste structuur. Controleer eerst de buitenste status en ga daarna naar het object tiktok. Bij een zoekopdracht zijn er twee mogelijke vormen voor de lijst: video’s kunnen rechtstreeks in tiktok.aweme_list staan, maar ook in elementen van tiktok.search_item_list onder aweme_info. In een zoekantwoord kan aweme_list leeg zijn terwijl er wel video’s in search_item_list staan. Het onderstaande script ondersteunt beide vormen.
In het videoobject tonen de documentatie en een gecontroleerd voorbeeldantwoord velden als aweme_id, desc, create_time, share_url, makersgegevens en het object statistics. De statistieken kunnen tellers voor weergaven, likes, reacties en reposts bevatten. Controleer in elk antwoord welke velden er daadwerkelijk zijn en wat ze betekenen: de code laat ontbrekende velden leeg. Een voorbeeld van de route en de gedocumenteerde parameters vind je in de beschrijving van de TikTok Scraper API.
Een werkend voorbeeld in Python
Het voorbeeld is bedoeld voor Python 3.8 en hoger en gebruikt het pakket requests. Installeer het met python -m pip install requests. Sla de code op als collect_tiktok.py, stel de sleutel in de omgeving in en voer het script uit met een zoekwoord. Het script maakt de map data aan, schrijft de oorspronkelijke JSON weg en voegt genormaliseerde waarnemingen toe aan een CSV-bestand.
import csv
import json
import os
import sys
from datetime import datetime, timezone
from pathlib import Path
from urllib.parse import urlparse
import requests
BASE_URL = "https://tiktok.evelode.com"
ARCHIVE = Path("data/raw")
OUT_CSV = Path("data/observations.csv")
def get_videos(tiktok):
"""Verzamel video’s uit bevestigde varianten van het searchVideo-antwoord."""
videos = []
aweme_list = tiktok.get("aweme_list") or []
if isinstance(aweme_list, list):
videos.extend(item for item in aweme_list if isinstance(item, dict))
search_items = tiktok.get("search_item_list") or []
if isinstance(search_items, list):
for item in search_items:
if not isinstance(item, dict):
continue
aweme_info = item.get("aweme_info")
if isinstance(aweme_info, dict):
videos.append(aweme_info)
# Verwijder duplicaten, behoud de volgorde en bewaar records zonder ID.
result = []
seen = set()
for video in videos:
video_id = video.get("aweme_id")
if video_id and video_id in seen:
continue
if video_id:
seen.add(video_id)
result.append(video)
return result
def fetch(keyword, count=20, region="US"):
license_key = os.environ.get("JSONSCRAPER_TIKTOK_LICENSE_KEY")
if not license_key:
raise RuntimeError("Set JSONSCRAPER_TIKTOK_LICENSE_KEY in the environment")
params = {
"license_key": license_key,
"keyword": keyword,
"count": count,
"region": region,
"sort_by": "relevance",
}
response = requests.get(
f"{BASE_URL}/searchVideo", params=params, timeout=60
)
response.raise_for_status()
payload = response.json()
if payload.get("status") != "ok":
raise RuntimeError("TikTok API returned a non-ok status")
tiktok = payload.get("tiktok")
if not isinstance(tiktok, dict):
raise RuntimeError("Response does not contain a TikTok result object")
return payload, tiktok
def write_rows(keyword, videos, collected_at):
OUT_CSV.parent.mkdir(parents=True, exist_ok=True)
fields = [
"collected_at", "keyword", "aweme_id", "create_time",
"author_id", "author_name", "author_username", "description",
"share_url", "play_count", "digg_count", "comment_count",
"share_count", "collect_count",
]
write_header = not OUT_CSV.exists()
with OUT_CSV.open("a", newline="", encoding="utf-8") as file:
writer = csv.DictWriter(file, fieldnames=fields)
if write_header:
writer.writeheader()
for video in videos:
author = video.get("author") or {}
stats = video.get("statistics") or {}
writer.writerow({
"collected_at": collected_at,
"keyword": keyword,
"aweme_id": video.get("aweme_id"),
"create_time": video.get("create_time"),
"author_id": author.get("uid"),
"author_name": author.get("nickname"),
"author_username": author.get("unique_id"),
"description": video.get("desc"),
"share_url": video.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"),
"collect_count": stats.get("collect_count"),
})
def main():
if len(sys.argv) </code></pre>
Geef de sleutel mee via de omgeving. In Bash ziet de opdracht voor de huidige sessie er zo uit:
export JSONSCRAPER_TIKTOK_LICENSE_KEY="uw_sleutel"
python collect_tiktok.py "meal prep"
In Windows PowerShell kun je de variabele voor het huidige proces instellen met $env:JSONSCRAPER_TIKTOK_LICENSE_KEY="uw_sleutel" en vervolgens hetzelfde Python-bestand starten. Zet de sleutel niet in de repository, CSV, het antwoordarchief of foutmeldingen. Omdat de API de sleutel als queryparameter accepteert, kan de volledige aanvraag-URL in logs van de HTTP-client en infrastructuur terechtkomen. Stel de logging zo in dat geheimen worden uitgesloten.
De code lezen en het resultaat controleren
De functie fetch geeft de gedocumenteerde parameters door en controleert de HTTP-statuscode, de externe status en de aanwezigheid van het object tiktok. De functie beschouwt niet elke geldige antwoordtekst als een geslaagd resultaat: bij een onverwacht formaat stopt de uitvoering met een begrijpelijke foutmelding. Zo kun je een lege resultatenlijst onderscheiden van een toegangsprobleem of een veranderde structuur.
De functie get_videos combineert elementen uit de directe lijst aweme_list met records uit search_item_list[].aweme_info. Vervolgens verwijdert ze duplicaten op basis van aweme_id, omdat een video in beide collecties kan voorkomen. Als de ID ontbreekt, blijft het record behouden; zo kun je het oorspronkelijke resultaat onderzoeken zonder een verzonnen waarde in te vullen.
Voor de normalisatie worden geneste objecten veilig opgehaald. Gegevens over de maker of statistieken kunnen ontbreken, dus de code gebruikt voor het uitlezen een leeg object als terugvalwaarde. De overeenkomstige cellen in de CSV blijven dan leeg. Dat onderscheid is belangrijk: een lege cel betekent dat de waarde in deze waarneming niet is aangeleverd; nul is een getal dat de API daadwerkelijk heeft teruggegeven.
Het archief krijgt voor elke aanvraag een apart JSON-bestand. De bestandsnaam bevat de UTC-tijd en een opgeschoonde versie van het zoekwoord. De CSV bevat platte records voor analyse; de oorspronkelijke JSON blijft het referentiemateriaal om nieuwe velden te onderzoeken of de gegevens opnieuw te verwerken. Dit dubbele formaat is handig voor een lokaal prototype en voor een latere overstap naar een database of objectopslag.
Open voor de controle van de eerste run de JSON en ga na of status gelijk is aan ok, of er een object tiktok in staat en of een of beide ondersteunde collecties elementen bevatten. Vergelijk vervolgens een paar CSV-waarden met het oorspronkelijke object. Controleer met name dat tellers niet veranderen in foutieve tekenreeksen, dat publicatiedata als oorspronkelijke waarden worden bewaard en dat de links bij dezelfde video’s horen als de ID’s.
Bevat een geldig antwoord geen video’s, registreer dat dan als een lege run en niet als een codefout. Als de externe status of HTTP-respons op een fout wijst, voeg die waarneming dan niet toe aan de analyse: verhelp eerst de oorzaak en voer de run opnieuw uit. Noteer voor productie ook de HTTP-statuscode, het zoekwoord, de tijd en een korte foutmelding, maar sluit de sleutel en de volledige URL met geheim uit.
Paginering en herhaalbaarheid van de verzameling
Zoeken ondersteunt de parameter cursor om door resultaten te bladeren. Gebruik voor de volgende pagina de cursor uit het vorige antwoord en geef die ongewijzigd door. Een cursor is een ondoorzichtige API-waarde: de toepassing moet hem bewaren en terugsturen zoals hij is, niet afleiden uit het aantal regels of behandelen als een paginanummer.
Voor de eerste monitoring kun je volstaan met één aanvraag per trefwoord en steeds dezelfde count. Dat is eenvoudiger te interpreteren: het team weet dat elke run een beperkte momentopname van de resultatenlijst bewaart. Voeg je paginering toe, sla dan elke pagina en cursor op en stel ook een maximumaantal pagina’s per run in. Dat maximum voorkomt dat een taak bij een onverwacht antwoord in een oneindige lus terechtkomt.
Met de parameter date_posted kun je de zoekopdracht beperken tot een van de in de documentatie genoemde perioden; met sort_by kies je voor sortering op relevantie, publicatiedatum of likes. Leg deze instellingen vast bij elke run wanneer je veranderingen analyseert. Een vergelijking van zoekopdrachten met verschillende perioden of sorteringen kan immers een wijziging in de zoekvoorwaarden weerspiegelen in plaats van een verandering in het onderwerp zelf.
De parameter cache_timeout bepaalt hoe het antwoord wordt gecachet. De documentatie beschrijft een standaardcachevenster van 3600 seconden en waarde 0 om caching uit te schakelen. Kies de instellingen voor geplande monitoring bewust en bewaar ze in de configuratie. Als een reeks aanvragen vaker dan eens per uur wordt gestart en je antwoorden binnen dat venster van elkaar wilt onderscheiden, controleer dan eerst afzonderlijk hoe caching werkt voordat je herhaalde resultaten als teken van stilstand interpreteert.
Dagelijkse waarnemingen vergelijken
De CSV bevat al de basis voor een eenvoudig rapport. Groepeer regels op zoekwoord en aweme_id, sorteer ze op collected_at en vergelijk uitsluitend paren waarnemingen waarin beide waarden voor de statistiek beschikbaar zijn. Het verschil in weergaven kun je bijvoorbeeld berekenen door de vorige waargenomen waarde van de meest recente af te trekken. Bewaar beide oorspronkelijke meetpunten: het absolute verschil en de tijd tussen waarnemingen zijn nodig om het resultaat goed te begrijpen.
Noem dat verschil geen weergavesnelheid zonder het tijdsinterval erbij te vermelden. Vond de ene run ’s ochtends plaats en de volgende pas dagen later, dan is de waarde de opgetelde verandering in die periode. Voor een beter vergelijkbaar tempo kun je het verschil delen door de werkelijke tijd tussen de waarnemingen, maar ook dan gaat het om een gemiddelde tussen twee momentopnamen en niet om doorlopende telemetrie.
Houd twee soorten signalen apart. Het eerste bestaat uit nieuwe ID’s die bij de huidige zoekopdracht in de resultaten verschijnen. Het tweede is de verandering in statistieken van al eerder waargenomen video’s. Een nieuwe video kan interessant zijn voor nader onderzoek, ongeacht het huidige aantal weergaven; groei bij een oudere video kan laten zien dat een publicatie nog steeds reacties krijgt. Deze signalen beantwoorden verschillende vragen en zijn nuttig voor verschillende vormen van redactionele planning.
Voeg eenvoudige controles voor gegevenskwaliteit toe: het aandeel regels met een ID, het aandeel regels met een beschrijving, de aanwezigheid van een verzameldatum, het aantal unieke video’s per zoekopdracht en het aantal ontbrekende statistieken. Zo merk je dat de pipeline niet langer de gebruikelijke structuur ontvangt voordat het team conclusies trekt op basis van een onvolledig bestand. Deze indicatoren laten ook zien welke zoektermen een bruikbare selectie voor je sector opleveren.
Voor het eerste rapport volstaat een tabel met de kolommen: term, ID, publicatiedatum, maker, beschrijving, link, huidige weergaven, weergaven in de vorige momentopname, verschil en tijd tussen de momentopnamen. Voeg een veld toe voor ‘nieuw in het archief’ en voor de redactionele beoordeling. Een medewerker kan de aansluiting bij het merk, de geschiktheid van het format en het mogelijke risico op het kopiëren van andermans idee markeren — de API beoordeelt dat zelf niet.
Populariteit van een video is niet hetzelfde als de waarde van een onderwerp
Weergaven, likes, reacties en reposts helpen de openbare respons op een specifieke video te beschrijven. Voor de contentplanning is ook de tekst belangrijk: de formulering van de vraag, de belofte aan het begin, een terugkerende uitlegstructuur of het type demonstratie. Geef de redacteur daarom de link en beschrijving samen met de statistieken; één getal verklaart zelden waarom een publicatie aansloeg.
Bij het vergelijken van meerdere video’s kun je de verhouding tussen interacties en weergaven berekenen als beide tellers aanwezig zijn. De som van likes, reacties en reposts gedeeld door het aantal weergaven levert bijvoorbeeld een eenvoudige maat voor het waargenomen aandeel reacties op. Leg de formule vast en meng geen video’s met ontbrekende waarden in de berekening: anders zijn de resultaten niet vergelijkbaar. Deze verhouding beschrijft alleen de geselecteerde openbare tellers en video’s.
Tel statistieken uit meerdere momentopnamen niet op alsof het onafhankelijke gebeurtenissen zijn. Als dezelfde video in vijf dagelijkse antwoorden staat, zijn de weergaven in die regels opeenvolgende standen van dezelfde teller, geen vijf verschillende doelgroepen. Gebruik voor een totaal van unieke publicaties één consistent waarnemingsmoment per video, bijvoorbeeld de laatste momentopname in de rapportageperiode, en leg de selectieregel vast.
Terugkerende woorden in beschrijvingen vormen nog een nuttige invalshoek. Met eenvoudige tekstanalyse kun je publicaties groeperen op basis van vooraf bepaalde woordenlijsten, zoals ‘recept’, ‘review’, ‘voor en na’, ‘fout’ en ‘tip’. Een classificatiemodel of taalmodel kan categorieën en korte samenvattingen voorstellen, maar bewaar in de tabel de oorspronkelijke beschrijving en URL zodat de redacteur de interpretatie aan de hand van de video zelf kan controleren.
Automatiseren volgens een schema
Verplaats de verzameling na een geslaagde handmatige test naar een scheduler, zoals cron op een eigen server, GitHub Actions of een workflow in n8n/Make. De integratie moet hetzelfde gecontroleerde script starten, de sleutel uit een geheimenopslag halen, de JSON archiveren en pas na een geslaagde uitvoering een melding versturen. De precieze invulling hangt af van de infrastructuur; de API-aanvraag en het verwerkingsformaat blijven hetzelfde.
Een voorbeeld van een cron-schema voor een dagelijkse run om 08.15 uur volgens de tijd van de machine:
15 8 * * * cd /srv/tiktok-monitor && /usr/bin/python3 collect_tiktok.py "meal prep" >> logs/collector.log 2>&1
Stel voordat je deze regel gebruikt de omgevingsvariabele in voor de service of shell waaronder cron draait en zorg dat de tijdzone van de host klopt. Bewaar voor meerdere zoekwoorden de lijst in een bestand en laat het script elke zoekopdracht in een afzonderlijke run uitvoeren. Zo hoeft een fout bij één zoekwoord niet de hele reeks te onderbreken en zijn archieven gemakkelijker te vergelijken.
Verplaats de configuratie bij een groter aantal zoekwoorden naar JSON of YAML en voeg een uitvoeringslogboek toe met de status, het aantal ontvangen video’s en het pad naar het archief. Bouw voor de betrouwbaarheid een beperkt aantal herhaalpogingen in voor tijdelijke netwerkfouten, stel een time-out in en verwerk HTTP-fouten afzonderlijk. Eindeloos opnieuw proberen is geen optie: de taak moet met een zichtbare status eindigen, zodat de volgende run het probleem niet verbergt.
Als de resultaten naar Google Sheets, een database of een intern dashboard moeten, voeg dat dan pas toe nadat het archiveren betrouwbaar werkt. Schrijf eerst het oorspronkelijke antwoord weg en laad daarna de genormaliseerde regels. Als het laden mislukt, kun je het vanuit het archief opnieuw proberen zonder de gegevens opnieuw te verzamelen. De video-ID en verzameltijd helpen om gegevens herhaalbaar in te voegen en nieuwe momentopnamen van oudere te onderscheiden.
AI toevoegen: sorteren is nuttig, de bron vervangen niet
Wanneer zich veel beschrijvingen in het archief hebben verzameld, kan een model helpen video’s op onderwerp te groeperen, veelvoorkomende formuleringen te signaleren en korte toelichtingen voor de redacteur op te stellen. Geef het model een beperkte set velden mee: zoekwoord, beschrijving, publicatiedatum en openbare statistieken. Vraag om gestructureerde categorieën en een korte onderbouwing, niet om stellige uitspraken over oorzaken van populariteit die niet in de gegevens staan.
Bewaar modeluitvoer in afzonderlijke kolommen, bijvoorbeeld ai_topic, summary en review_status. Overschrijf de oorspronkelijke beschrijving en API-waarden niet. Als de instructie of het model verandert, moet je de records opnieuw kunnen verwerken; bewaar daarvoor de promptversie en classificatiedatum.
Een praktische taak voor een model is om categorieën voor de redacteur voor te stellen, zoals ‘korte recepten’, ‘apparaten vergelijken’ en ‘fouten van beginners’. Vervolgens controleert een analist aan de hand van links enkele voorbeelden per categorie en past die de woordenlijst aan. Zo wordt AI een hulpmiddel om door het materiaal te navigeren, terwijl de oorspronkelijke, controleerbare waarnemingen beschikbaar blijven.
Laat een model niet zelfstandig op basis van een kleine zoekselectie een oorzakelijk verband tussen format en bereik vaststellen. Daarvoor zijn een vooraf bepaalde methode, vergelijkbare publicaties en aanvullende gegevens nodig. Voor praktisch redactioneel werk volstaan een rangschikking van kandidaten om te bekijken, hypotheses over terugkerende thema’s en een lijst links voor handmatige beoordeling.
Kwaliteit van de selectie en grenzen aan conclusies
De pipeline bewaart antwoorden die op basis van de opgegeven zoekopdrachten en parameters zijn ontvangen. Je kunt die waarnemingen ermee vergelijken, maar het zoekbereik is beperkt tot een specifieke zoekopdracht, het verzamelmoment, de instellingen en het antwoord van de service. Formuleer conclusies daarom precies: ‘In de resultaten voor zoekopdracht X kwam onderwerp Y deze week vaker voor’, niet: ‘Heel TikTok heeft het nu over Y’.
Vergelijk alleen reeksen met dezelfde instellingen: dezelfde regio, sorteerparameters, publicatieperiode en hetzelfde aantal opgevraagde resultaten. Als je de zoekopdracht of filter wijzigt, markeer dat dan als een nieuwe reeks. Bewaar bij analyses van seizoensinvloeden of campagnes de configuratieversie; anders kan een gewijzigde invoer eruitzien als een verandering in de content.
Openbare statistieken kunnen tussen momentopnamen veranderen en video’s kunnen een verschillende leeftijd hebben: een pas gepubliceerde video en een oudere video bevinden zich in verschillende stadia van het verzamelen van reacties. Houd bij vergelijkingen van prestaties rekening met de publicatiedatum en het waarnemingsinterval. Vergelijk publicaties van ongeveer dezelfde leeftijd of analyseer opeenvolgende momentopnamen van dezelfde ID.
Beperk, als het project over concurrenten of makers gaat, de verzameling tot wat voor de taak noodzakelijk is en verzamel zo weinig mogelijk gegevens. Verzamel geen gevoelige informatie en gebruik openbare cijfers niet om iemands persoonlijkheid te beoordelen. Voor een rapport aan een marketingteam zijn een link, beschrijving, profielnaam, publicatietijd en geaggregeerde statistieken meestal voldoende. Controleer vóór automatisering de toepasselijke platformvoorwaarden, de vereisten van je organisatie en de regels voor gegevensbewaring.
Praktische checklist vóór de start
- Formuleer de zakelijke vraag: welke onderwerpen, formats of publicaties wil je signaleren?
- Begin met enkele stabiele zoektermen en leg de exacte spelling vast.
- Controleer de route
/searchVideo, de verplichte parameter keyword en de overige parameters in de documentatie.
- Bewaar de sleutel in een omgevingsvariabele en sluit deze uit van uitvoer, logs en repository.
- Controleer de externe antwoordstatus en de aanwezigheid van het object
tiktok.
- Verwerk zowel
aweme_list als search_item_list[].aweme_info.
- Bewaar de ruwe JSON voordat je normaliseert.
- Laat ontbrekende velden leeg en vervang ze niet door nullen.
- Koppel publicaties op
aweme_id en geef de cursor ongewijzigd door.
- Leg bij elke momentopname de verzameldatum en zoekparameters vast.
- Controleer enkele video’s handmatig voordat je conclusies trekt of resultaten aan een model doorgeeft.
Wat de uitvoer oplevert
Na de configuratie heeft het team een herhaalbaar proces: een lijst met zoekopdrachten wordt volgens een schema uitgevoerd, elk antwoord wordt als oorspronkelijke JSON opgeslagen en genormaliseerde waarnemingen worden aan een CSV toegevoegd. Een analist kan nieuwe video’s in het archief vinden, links en beschrijvingen terugzoeken, beschikbare openbare tellers per momentopname vergelijken en thematische groepen samenstellen.
Voor de redacteur is het resultaat geen automatisch oordeel over ‘de belangrijkste trend’, maar een korte lijst controleerbare kandidaten: nieuwe publicaties, video’s waarvan de statistieken duidelijk zijn veranderd en terugkerende formuleringen over onderwerpen. Dat verkort de weg van handmatig zoeken naar een bespreking van het onderwerp en biedt een controleerbare basis voor de beslissing om iets in het contentplan op te nemen.
Begin met één zoekopdracht, een dagelijkse lokale run en een CSV-bestand. Voeg een planning, database of classificatie van beschrijvingen toe zodra de test laat zien dat de selectie bij de taak past. Je kunt de gedocumenteerde parameters en routes controleren in de documentatie van de TikTok API; informatie over toegang en het product staat op de pagina van de TikTok Scraper API van jsonscraper.