jsonscraper

TikTok-hashtags monitoren met Python: een werkende API-aanvraag

Controleer het endpoint en de parameters in Postman, sla API-antwoorden op en bouw een geschiedenis van waarnemingen op basis van bevestigde gegevens.

Redactioneel beleid Een fout melden

Een marketingteam merkt dat er op TikTok video’s verschijnen over een nieuw product, maar het is lastig om elke dag handmatig meerdere hashtags te controleren. Om publicaties en zichtbare statistieken in de loop van de tijd te vergelijken, is een herhaalbare gegevensverzameling nodig, met tijdstempels, een archief van de oorspronkelijke antwoorden en controles op wijzigingen.

Artikel: TikTok-hashtags monitoren met Python: een werkende API-aanvraag
Samenvatting: Praktische handleiding voor het verzamelen van openbare TikTok-video’s op basis van een hashtag: controle van het endpoint, aanvragen met Python, JSON-archivering en verwerking van bevestigde antwoordvelden.
Beeldrol: omslag — het centrale idee
Rubriek: 
Visueel onderwerp: Editorial stillevenfoto van een afgedrukte tijdlijn voor sociale media-analyses naast een smartphone met een generieke korte-video-hashtagfeed, gekleurde hashtagkaarten en gedateerde JSON-waarnemingen
© jsonscraper · door AI gegenereerde illustratie

Voor zo’n prototype is de TikTok Scraper API van jsonscraper geschikt: op de productpagina staan endpoints voor hashtags, gebruikers, video’s en zoekopdrachten. De eerste stap is het gewenste endpoint en de antwoordindeling in Postman controleren en vervolgens de bevestigde configuratie overzetten naar Python. Zo bouw je een herhaalbaar proces dat alleen velden uitleest die daadwerkelijk in het antwoord voorkomen.

De uitdaging: trends zien, niet slechts één populaire video

Een publicatie met veel weergaven kan de aandacht trekken, maar voor campagneplanning is het nuttiger om te weten hoeveel nieuwe video’s over een onderwerp worden gevonden en hoe openbare statistieken van eerder gevonden publicaties veranderen. Een webshop voor sportartikelen wil bijvoorbeeld inschatten hoeveel video’s er over een bepaalde trainingsvorm verschijnen voordat het bedrijf bijpassend campagnemateriaal maakt.

Handmatige controles maken vergelijken lastig: de resultaten veranderen, statistieken lopen op en medewerkers kunnen gegevens in verschillende indelingen noteren. Door bij elke uitvoering een momentopname op te slaan met het verzameltijdstip en de oorspronkelijke JSON, krijgt het team een geschiedenis van eigen waarnemingen en kan het de gegevens opnieuw verwerken als de analysestructuur verandert.

Automatisering bestaat uit een aantal stappen: het endpoint en de parameters controleren, gegevens volgens een schema opvragen, het antwoord opslaan, de structuur ervan bevestigen en vervolgens de gewenste velden uitlezen. De resulterende tabel kan worden gebruikt voor grafieken, thematische classificatie of rapportage.

Wat de API-documentatie bevestigt

Op de pagina van de TikTok Scraper API staat het basisadres https://tiktok.evelode.com en worden de Hashtag-endpoints vermeld: GET /getHashtagInfo, GET /getHashtagFeed en GET /getHashtagFeedByID. De pagina toont ook een voorbeeldaanvraag naar een ander endpoint met de parameter license_key en beschrijft hoe je de sleutel in de Postman-collectie instelt.

Voor GET /getHashtagFeed vermeldt de officiële endpoint-specificatie de verplichte parameter query (de URL van een hashtag of de tagnaam) en de optionele parameters cursor, count, region en cache_timeout. In het feedantwoord wordt een array tiktok.aweme_list verwacht. De vermelde velden van een item omvatten aweme_id, desc, create_time, share_url, auteursgegevens en statistics. Afzonderlijke velden kunnen ontbreken, dus controleer de daadwerkelijke JSON voordat je die verwerkt.

Met de jsonscraper-collectie in Postman kun je eenvoudig een testaanvraag uitvoeren, het daadwerkelijke antwoord controleren en een testvoorbeeld verkrijgen om je code later mee te toetsen. Voor autorisatie geef je license_key mee; bewaar de sleutel in een omgevingsvariabele en neem hem niet op in logbestanden.

Controleer de aanvraag eerst in Postman

Begin met één testhashtag. Selecteer in de collectie het hashtagfeed-endpoint, stel license_key in op de in de documentatie beschreven manier en geef de tagnaam op bij query. Voeg zo nodig count en een landcode bij region toe. Voer de aanvraag uit en controleer de HTTP-status, het veld status op het hoogste niveau en de inhoud van tiktok.aweme_list.

Sla een geslaagd antwoord op als test-JSON-bestand. Controleer aan de hand daarvan of de publicatie-ID, beschrijving, publicatietijd, link en statistieken aanwezig zijn. Neem een veld pas op in het analyseschema nadat je hebt gecontroleerd of het met het gewenste gegevenstype wordt aangeleverd.

Bewaar de API-sleutel in een omgevingsvariabele, niet in het bronbestand. Als de sleutel in de URL wordt meegestuurd, maskeer hem dan in de logbestanden zodat de volledige URL daar niet terechtkomt.

Een Python-client voor aanvragen en archivering

Het endpoint en de parameternamen hieronder komen overeen met de gepubliceerde specificatie: voor een hashtag gebruik je query en voor autorisatie geef je license_key mee. Het voorbeeld werkt met Python 3.8+ en slaat het oorspronkelijke antwoord samen met metadata over de uitvoering op.

import json
import os
from datetime import datetime, timezone
from pathlib import Path

import requests

BASE_URL = "https://tiktok.evelode.com"
API_KEY = os.environ["JSONSCRAPER_TIKTOK_LICENSE_KEY"]


def fetch_hashtag_feed(hashtag: str) -> dict:
    params = {
        "license_key": API_KEY,
        "query": hashtag,
        "count": 20,
    }
    response = requests.get(
        f"{BASE_URL}/getHashtagFeed",
        params=params,
        timeout=45,
    )
    response.raise_for_status()
    payload = response.json()
    if payload.get("status") != "ok":
        raise RuntimeError("De API heeft een andere status dan ok teruggegeven")
    return payload


def archive_response(hashtag: str, payload: dict) -> Path:
    collected_at = datetime.now(timezone.utc).isoformat()
    safe_tag = hashtag.lstrip("#").replace("/", "_")
    output_dir = Path("data/raw") / safe_tag
    output_dir.mkdir(parents=True, exist_ok=True)

    filename = datetime.now(timezone.utc).strftime("%Y%m%dT%H%M%SZ.json")
    file_path = output_dir / filename
    file_path.write_text(
        json.dumps(
            {
                "hashtag": hashtag,
                "collected_at": collected_at,
                "response": payload,
            },
            ensure_ascii=False,
            indent=2,
        ),
        encoding="utf-8",
    )
    return file_path


if __name__ == "__main__":
    tag = "#voorbeeldthema"
    payload = fetch_hashtag_feed(tag)
    saved_path = archive_response(tag, payload)
    print(f"Archief opgeslagen: {saved_path}")

Stel voordat je het script uitvoert de omgevingsvariabele JSONSCRAPER_TIKTOK_LICENSE_KEY in. De aanvraag gebruikt de bevestigde parameter query en beperkt met count het aantal opgevraagde items. Het script controleert de externe status en de JSON-status; het archief bewaart de daadwerkelijke gegevens voor latere verwerking. Test de uitvoering met één hashtag voordat je een schema en analyses toevoegt.

Normaliseren zonder kwetsbare aannames

In het feedantwoord vermeldt de documentatie de array tiktok.aweme_list. Controleer voordat je de gegevens omzet of tiktok een object is en aweme_list een lijst. Haal voor elk item alleen bevestigde velden op, zoals aweme_id, desc, create_time, share_url en waarden uit statistics, indien aanwezig.

Een interne tabel kan de opgevraagde hashtag, het verzameltijdstip, de video-ID en geselecteerde statistieken bevatten. Sla voor een optionele of ontbrekende statistiek een lege waarde op: een ontbrekende statistiek is iets anders dan een gemeten waarde van nul. Bewaar de oorspronkelijke antwoorden apart, zodat je de tabel opnieuw kunt opbouwen zonder een nieuwe aanvraag te doen.

Als de antwoordindeling verandert, moet de typecontrole onjuiste verwerking stoppen en een diagnostische melding opleveren. Bewaar de test-JSON naast de test voor de parser: zo kun je nagaan of een nieuwe versie van de code de bekende structuur nog steeds verwerkt.

Statistieken op basis van herhaalde waarnemingen

Als het antwoord tellers bevat, sla dan elke waarneming op met een tijdstempel. Vergelijk voor één publicatie de waarden van twee uitvoeringen en bereken de waargenomen verandering gedurende dat interval. Gebruik voor het matchen aweme_id, zoals vermeld in de specificatie, en controleer of die ID bij elk item aanwezig is.

Het aantal publicaties dat per dag voor het eerst wordt gevonden, kun je berekenen op basis van de resultaten van je uitvoeringen. Deze statistiek beschrijft de stroom aan resultaten van specifieke aanvragen met bepaalde parameters en een vastgesteld schema. Hiermee kun je je eigen momentopnamen vergelijken, zolang de verzamelmethode consistent blijft.

Een basisrapport kan het aantal nieuw gevonden publicaties per dag tonen, de verdeling van beschikbare tellers weergeven en veranderingen in waarden laten zien voor video’s die opnieuw zijn gevonden. Voeg het aanvraagtijdstip en de naam van het bronbestand toe, zodat een analist de herkomst van elke registratie kan controleren.

Planning en foutafhandeling

Wanneer de aanvraag en de verwerking zijn getest, kun je het script volgens een schema uitvoeren, bijvoorbeeld met cron, GitHub Actions of een data-orkestrator. Zet de lijst met hashtags in een aparte configuratie, zodat je onderwerpen kunt toevoegen of verwijderen zonder de clientlogica aan te passen.

Stel voor automatische uitvoering een time-out en een beperkt aantal pogingen in bij tijdelijke netwerkfouten, en log de HTTP-status en de duur van de aanvraag. Schrijf de sleutel niet naar het logbestand. Sla bij een verwerkingsfout veilige diagnostische gegevens op en waarschuw de verantwoordelijke medewerker.

De specificatie ondersteunt paginering met de parameter cursor voor de hashtagfeed. Als je die nodig hebt, sla de cursor uit het antwoord op en geef hem ongewijzigd door in de volgende aanvraag; verwerk alleen de geretourneerde resultaten en controleer has_more als dat veld aanwezig is. Als aanvragen voor meerdere hashtags dezelfde publicatie opleveren, kies dan een deduplicatiesleutel die bij je doel past: tel de publicatie afzonderlijk voor elke hashtag of tel alleen unieke video’s.

Classificatie en geautomatiseerde rapporten

Nadat je gecontroleerde rijen hebt verzameld, kun je videobeschrijvingen classificeren aan de hand van opgegeven thema’s: het veld desc staat in het schema van een item. Een model kan publicaties groeperen op formaat, bijvoorbeeld instructies, recensies of gebruikerservaringen. Bewaar de oorspronkelijke tekst, het label, de versie van de instructie en het resultaat; laat twijfelgevallen door een mens controleren.

Bereken numerieke statistieken met gewone code, zodat herhaalde uitvoeringen reproduceerbare resultaten opleveren. Een classifier is nuttig voor tekstverwerking; het eindrapport moet conclusies koppelen aan concrete rijen en waarnemingsdatums.

In een no-code-workflow kun je dezelfde stappen verbinden in een automatiseringstool: planning, een HTTP-aanvraag met de gecontroleerde configuratie, controle van het antwoord, opslag van de JSON, omzetting van bevestigde velden en een foutmelding. Controleer het contract eerst in Postman en zet het daarna over naar Python, n8n of Make.

Verwacht resultaat en volgende stap

Na de configuratie beschikt het team over een archief met API-antwoorden en een tabel met waarnemingen voor de geselecteerde hashtags. Daarmee kan het nieuwe publicaties vinden, beschikbare statistieken in de loop van de tijd vergelijken en materiaal selecteren voor een inhoudelijke analyse. Voor vergelijkbare resultaten moeten het schema, de aanvraagparameters en de normalisatieregels consistent blijven.

Begin met één endpoint en één echt antwoord: voer /getHashtagFeed uit met de parameter query, sla de JSON op en voeg daarna de verwerking van velden en de planning toe. De pagina van de TikTok Scraper API toont het basisadres en het overzicht van de endpoints; de endpoint-specificatie bevat de parameternamen voor de clientimplementatie.

People

No people listed for this article yet.

Keep readingTikTok-zoekresultaten archiveren met Python
Read the next article

Maak van wat je leest een werkende integratie

Ontdek de socialdata-API's van jsonscraper, test aanvragen en bouw je volgende workflow.

API's verkennen