jsonscraper

TikTok Scraper API: zo haal je videogegevens op als JSON met jsonscraper

Praktische start met de route getVideoByID, JSON-validatie en sleutelverwerking in cURL en Python.

Als een applicatie gegevens over een specifieke TikTok-video nodig heeft, is het handig om te beginnen met één verzoek en te controleren welke gegevens het oplevert. Daarna kun je het antwoord valideren en voorbereiden voor opslag of analyse.

Op de pagina TikTok Scraper API van jsonscraper staan routes voor video's, gebruikers, zoekopdrachten, hashtags, muziek en andere gegevenstypen. Hieronder bespreken we het gedocumenteerde verzoek getVideoByID en manieren om het antwoord veilig te verwerken. De voorbeelden zijn gebaseerd op materiaal van de aanbieder; controleer ze vóór gebruik met een actieve sleutel en de actuele documentatie.

Eerste verzoek: video-informatie ophalen

Laptop met code en plant in een koffiebar
James Harrison

In de Postman-documentatie van getVideoByID staat de GET-methode met de parameter video_id. Het voorbeeld toont ook region en cache_timeout. Het basisadres dat op de servicepagina wordt gepubliceerd, is https://tiktok.evelode.com.

Voorbeeldverzoek met cURL:

export JSONSCRAPER_LICENSE_KEY="uw_sleutel"

curl --get "https://tiktok.evelode.com/getVideoByID" \
  --data-urlencode "video_id=7106855913906081070" \
  --data-urlencode "license_key=$JSONSCRAPER_LICENSE_KEY" \
  --data-urlencode "region=US"

De ID in het voorbeeld komt uit het gepubliceerde verzoek. Vervang die door de ID van de video die je wilt controleren. Bewaar de sleutel in een omgevingsvariabele of geheimenbeheerder: zet hem niet in een openbare repository, client-side JavaScript of logs.

Postman beschrijft region als een regiocode en noemt US als standaardwaarde. Voor cache_timeout vermeldt de documentatie een standaardcacheperiode van 3600 seconden; met de waarde 0 schakel je caching uit. Als deze parameter relevant is voor je scenario, kun je hem expliciet meegeven:

curl --get "https://tiktok.evelode.com/getVideoByID" \
  --data-urlencode "video_id=7106855913906081070" \
  --data-urlencode "license_key=$JSONSCRAPER_LICENSE_KEY" \
  --data-urlencode "region=US" \
  --data-urlencode "cache_timeout=0"

Dit is een aanpassing van de voor de route gepubliceerde parameters, geen garantie dat alle antwoorden dezelfde structuur hebben of dat uitschakelen van caching geschikt is voor elke taak. Controleer vóór implementatie de authenticatie en parameters in de actuele collectie: Postman kan de sleutel via een ingestelde API Key doorgeven, terwijl het cURL-voorbeeld hierboven de sleutel als URL-parameter laat zien.

Hetzelfde verzoek in Python

Hieronder staat een variant met de standaardbibliotheek van Python. Deze bouwt een GET-verzoek op, geeft de parameters mee en handelt netwerkfouten, HTTP-fouten en ongeldige JSON af.

import json
import os
from urllib.error import HTTPError, URLError
from urllib.parse import urlencode
from urllib.request import Request, urlopen

base_url = "https://tiktok.evelode.com/getVideoByID"
license_key = os.environ.get("JSONSCRAPER_LICENSE_KEY")

if not license_key:
    raise RuntimeError("Stel de omgevingsvariabele JSONSCRAPER_LICENSE_KEY in")

params = {
    "video_id": "7106855913906081070",
    "license_key": license_key,
    "region": "US",
}

url = f"{base_url}?{urlencode(params)}"
request = Request(url, method="GET")

try:
    with urlopen(request, timeout=30) as response:
        status_code = response.status
        payload = json.loads(response.read().decode("utf-8"))
except HTTPError as error:
    print(f"HTTP-fout: {error.code}")
    raise
except URLError as error:
    print(f"Netwerkfout: {error.reason}")
    raise
except json.JSONDecodeError:
    raise RuntimeError("Het serviceantwoord kon niet als JSON worden verwerkt")

print("HTTP-status:", status_code)
print("Sleutels op het hoogste niveau:", list(payload.keys()))

Dit is een aanpassing van het gedocumenteerde verzoek, geen voorbeeld dat de aanbieder afzonderlijk voor Python heeft getest. Het beschrijft ook niet alle mogelijke serviceantwoorden. Omdat de sleutel in de URL wordt doorgegeven, moet je de volledige URL niet loggen: daarin kan een geheim staan.

Een JSON-antwoord controleren

In het gepubliceerde Postman-antwoord staat het veld status en het geneste object tiktok.aweme_detail met gegevens over de video en de maker. Dit is een voorbeeld van de vorm van één antwoord, geen garantie dat het schema onveranderd blijft. Je kunt het bekijken in het antwoordvoorbeeld voor getVideoByID.

Controleer elk niveau wanneer je geneste velden uitleest:

def get_video_details(payload):
    tiktok = payload.get("tiktok")
    if not isinstance(tiktok, dict):
        return None

    details = tiktok.get("aweme_detail")
    if not isinstance(details, dict):
        return None

    return details

details = get_video_details(payload)

if details is None:
    print("Het verwachte object met video-informatie ontbreekt in het antwoord")
else:
    video_id = details.get("id")
    description = details.get("desc")
    author = details.get("author")

    print("ID:", video_id)
    print("Beschrijving:", description)
    print("Maker:", author)

De veldnamen komen uit het gepubliceerde voorbeeld. Controleren met .get() betekent niet dat de velden verplicht zijn: zo kun je een antwoord verwerken waarin de verwachte waarden ontbreken. Als de logica van je applicatie afhankelijk is van een specifiek veld, controleer dan of het aanwezig is in antwoorden voor jouw scenario en bepaal wat er moet gebeuren als het ontbreekt.

Het is nuttig om drie controles te onderscheiden:

  1. Transport: is er een HTTP-antwoord ontvangen en wat is de status ervan?
  2. Formaat: kon de inhoud van het antwoord als JSON worden verwerkt?
  3. Inhoud: zijn de gegevens aanwezig die de applicatie nodig heeft?

Dat JSON succesvol is verwerkt, betekent nog niet dat het antwoord het benodigde object bevat. Leg technische fouten en controleresultaten vast voor diagnose, maar maskeer sleutels.

Van één verzoek naar een werkende pipeline

Speedcurve-prestatieanalyse
Luke Chesser

Voor een prototype volstaat het om een verzoek te versturen en enkele waarden weer te geven. Splits de verwerking voor regelmatig gebruik op in stappen:

Verzoek → controle → normalisatie → ontdubbeling → opslag.

  • Verzoek. Haal het antwoord op via de gedocumenteerde route en bewaar de technische status afzonderlijk.
  • Controle. Controleer of de inhoud als JSON kan worden verwerkt en de gegevens bevat die voor de specifieke taak nodig zijn.
  • Normalisatie. Zet de benodigde waarden om naar je eigen datamodel. Sla niet de volledige geneste structuur op in de database als de applicatie slechts enkele velden nodig heeft.
  • Ontdubbeling. Kies een identificator nadat je hebt gecontroleerd of die aanwezig en geschikt is voor je taak. Ga er niet van uit dat die in elk antwoord beschikbaar is.
  • Opslag. Bewaar indien nodig de aanvraagtijd en het oorspronkelijke antwoord apart van de genormaliseerde registratie. Zo kun je nagaan welke wijzigingen de applicatie heeft aangebracht.

Dit zijn aanbevelingen voor de opbouw van een applicatie, geen functies die aan de service moeten worden toegeschreven. Door het externe antwoord gescheiden te houden van het interne model, kun je wijzigingen ook eenvoudiger afhandelen: problemen zijn dan te vinden bij de controle of normalisatie, in plaats van verspreid door de hele code.

Bepaal vooraf wanneer je gegevens bij terugkerende verzoeken vernieuwt en welke fouten een nieuwe poging waard zijn. Beperk het aantal pogingen: een oneindige lus lost een onjuiste parameter of een authenticatieprobleem niet op.

Caching en regio

In de beschrijving van de route getVideoByID bepaalt de parameter cache_timeout de cacheduur in seconden: de standaardwaarde is volgens de documentatie 3600 seconden en met 0 schakel je caching uit. De parameter region wordt beschreven als een landcode; de documentatie geeft US als voorbeeld. Controleer deze gegevens vóór implementatie in de actuele Postman-verzoekdocumentatie.

De aanwezigheid van een cache-instelling bevestigt op zichzelf niet hoe actueel een specifiek antwoord is. Als actualiteit belangrijk is, controleer dan de resultaten van herhaalde verzoeken met gegevens uit jouw scenario en kies een passend gedrag.

Welke taken kun je hierna onderzoeken?

Op de productpagina staan routes voor het zoeken naar video's en gebruikers, hashtags, locaties, muziek en trends. Voorbeelden zijn searchVideo, searchHashtag, getUserFeed en getTrendingFeed. Dit is het routeoverzicht dat de aanbieder heeft gepubliceerd, geen onafhankelijke verificatie van elke route. Raadpleeg de documentatie van de specifieke route voor de parameters en de vorm van het antwoord: je kunt die niet automatisch afleiden uit het voorbeeld van getVideoByID.

jsonscraper raadt aan de Postman-collectie te gebruiken om de sleutel in te stellen en verzoeken uit te voeren. Dat kan een handige manier zijn om een afzonderlijke route te testen voordat je een integratie schrijft. De service noemt ook automatiseringsscenario's, maar controleer de compatibiliteit van een specifieke workflow afzonderlijk in je eigen configuratie. Controleer bij het exporteren of delen van de collectie dat er geen actieve sleutel in staat.

Wat je moet controleren vóór gebruik in een applicatie

Controleer het verzoek met de video en parameters die het project nodig heeft voordat je het in een terugkerend proces opneemt:

  • Wordt het verzoek uitgevoerd met een actieve sleutel en een geldige ID?
  • Hoe verwerkt de applicatie een ongeldige of ontbrekende parameter?
  • Wat gebeurt er als de JSON geldig is, maar het benodigde veld ontbreekt?
  • Hoe worden een HTTP-fout, netwerkstoring en time-out afgehandeld?
  • Welke velden zijn geschikt voor identificatie en ontdubbeling in jouw specifieke taak?
  • Hoe verandert het resultaat van een herhaald verzoek bij verschillende waarden van cache_timeout, als je deze parameter gebruikt?

Noteer de datum van de controle, de parameters zonder geheimen en een geanonimiseerd voorbeeld van het antwoord. Eén geslaagd verzoek bevestigt alleen dat een specifiek scenario onder specifieke omstandigheden werkt; het bewijst niet dat alle routes en antwoorden stabiel zijn.

Begin met één reproduceerbaar scenario

Test getVideoByID met de gewenste video, bekijk de daadwerkelijke JSON en schrijf een handler die rekening houdt met ontbrekende velden en fouten. Breid het proces daarna zo nodig uit met normalisatie, ontdubbeling en opslag.

De documentatie van jsonscraper biedt een uitgangspunt: het basisadres en het routeoverzicht. In productiecode moet je het specifieke antwoord alsnog controleren, de sleutel beveiligen en rekening houden met gevallen waarin de gegevens afwijken van de verwachte structuur.

Gerelateerde artikelen

Community Pulse · Handleiding

Claude Code of Codex: vergelijk niet het merk, maar je werk

De meningen van ontwikkelaars over Claude Code en Codex lopen uiteen, en onderzoek naar pull requests wijst geen universele winnaar aan. De praktische manier om de tools te vergelijken is ze te testen op taken en in de omgeving waarin je daadwerkelijk werkt.

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