HTTP 200 garanterar inte att den dagliga TikTok-bevakningen har samlat in videor. Sökresultaten kan finnas i aweme_list eller i search_item_list[].aweme_info; ett skript som bara läser den första arrayen kan avslutas utan fel och ändå skapa en tom rapport. En tillförlitlig kontroll bekräftar transport- och applikationsstatus separat, hämtar båda de stödda datastrukturerna och registrerar hur många unika videor som kunde hämtas under körningen.
Vad som bör felsökas
Föreställ dig följande uppgift: varje morgon samlar ett team in offentliga videor för flera sökfrågor för att upptäcka nya inlägg om en produkt. Ett viktigt resultat av processen är en reproducerbar lista över hittade poster med beskrivning, skapare, publiceringsdatum och tillgängliga mätvärden. Om rapporten plötsligt är tom kan orsaken vara JSON-hanteringen, en förändrad uppsättning resultat, att redan kända videor visas igen eller ett verkligt fel i begäran. Ett enda värde – till exempel längden på aweme_list – räcker inte för att skilja mellan dessa fall.
Sökvägen /searchVideo i jsonscrapers TikTok Scraper API kräver parametern keyword och stöder även parametrarna count, cursor, date_posted, sort_by och region. Dokumentationen för sökvägen beskriver paginering med cursor; värdet ska skickas vidare som en opak sträng från föregående svar. Parametern count anger önskat antal resultat, inte en garanti för att alla inlägg täcks.
Dela upp kontrollen i fyra signaler
En användbar felsökning består av fyra separata kontroller. För det första: HTTP-begäran slutfördes utan fel. För det andra: svarens yttre status är ok och det inre tiktok.status_code anger att svaret lyckades. För det tredje: objektet tiktok finns och poster hämtas från båda dokumenterade platserna i svaret. För det fjärde: efter deduplicering återstår poster med ID:n som kan lagras. Spara antalet hämtade poster både före och efter deduplicering i loggen: skillnaden visar om dubbletter uppstod vid normaliseringen.
Om ett fält saknas ska det lämnas tomt, inte ersättas med ett påhittat värde. Exempelvis kan visningsräknaren saknas för en viss post. Om rå JSON sparas tillsammans med den normaliserade raden går det senare att kontrollera om informationen gick förlorad vid parsningen eller saknades redan i det ursprungliga svaret.
En enkel begäran och normalisering i Python
jsonscrapers specifikation anger basadressen https://tiktok.evelode.com och att nyckeln skickas i frågeparametern license_key. Exemplet nedan använder de dokumenterade parametrarna; nyckeln hämtas från en miljövariabel och skrivs inte ut i loggen. Installera beroendet med kommandot python -m pip install requests och ange sedan JSONSCRAPER_TIKTOK_LICENSE_KEY i miljön.


import json
import os
from datetime import datetime, timezone
from pathlib import Path
import requests
BASE_URL = "https://tiktok.evelode.com/searchVideo"
KEY = os.environ["JSONSCRAPER_TIKTOK_LICENSE_KEY"]
def extract_videos(payload):
"""Samla videor från båda kända strukturerna i söksvaret."""
tiktok = payload.get("tiktok") or {}
videos = []
for item in tiktok.get("aweme_list") or []:
if isinstance(item, dict):
videos.append(item)
for item in tiktok.get("search_item_list") or []:
if isinstance(item, dict):
aweme = item.get("aweme_info")
if isinstance(aweme, dict):
videos.append(aweme)
return videos
def main():
params = {
"license_key": KEY,
"keyword": "exempelsökning om en produkt",
"count": 20,
"region": "US",
}
response = requests.get(BASE_URL, params=params, timeout=30)
response.raise_for_status()
payload = response.json()
if payload.get("status") != "ok":
raise RuntimeError("API:et returnerade en yttre status som inte är ok")
tiktok = payload.get("tiktok")
if not isinstance(tiktok, dict):
raise RuntimeError("Objektet tiktok saknas i svaret")
if tiktok.get("status_code") != 0:
raise RuntimeError("Det inre status_code är inte det framgångsvärde som förväntas: 0")
raw_videos = extract_videos(payload)
unique = {}
for video in raw_videos:
video_id = video.get("aweme_id")
if video_id:
unique.setdefault(str(video_id), video)
snapshot = {
"collected_at": datetime.now(timezone.utc).isoformat(),
"keyword": params["keyword"],
"status": payload.get("status"),
"status_code": tiktok.get("status_code"),
"raw_items": len(raw_videos),
"unique_items": len(unique),
"has_more": tiktok.get("has_more"),
"cursor": tiktok.get("cursor"),
"videos": list(unique.values()),
}
Path("snapshots").mkdir(exist_ok=True)
stamp = datetime.now(timezone.utc).strftime("%Y%m%dT%H%M%SZ")
Path(f"snapshots/{stamp}.json").write_text(
json.dumps(snapshot, ensure_ascii=False, indent=2),
encoding="utf-8",
)
print({
"status": snapshot["status"],
"status_code": snapshot["status_code"],
"raw_items": snapshot["raw_items"],
"unique_items": snapshot["unique_items"],
"has_more": snapshot["has_more"],
})
if __name__ == "__main__":
main()
Skriptet kontrollerar transportnivån med raise_for_status() och kontrollerar därefter den yttre statusen, att objektet tiktok finns och det inre status_code. Sedan hämtar det poster från två sökstrukturer, deduplicerar dem med aweme_id och sparar en ögonblicksbild med insamlingstid. Om inga poster kan hämtas innehåller filen ändå information om körningen, så att ett sparat tomt resultat kan skiljas från en rapport som saknas.
Så omvandlar du ögonblicksbilder till en signal för teamet
Kör skriptet enligt ett schema med cron, CI eller en arbetsflödesplanerare. Spara ögonblicksbilder separat för varje sökfråga, eller lägg till sökordet i filnamnet. Det räcker att registrera körningstid, status, antal hämtade och unika poster samt flaggan has_more i en statusrapport. Skicka gärna en avisering vid ett begärandefel, om obligatoriska delar av svaret saknas eller om antalet hämtade poster förändras kraftigt jämfört med den egna historiken.
En sådan jämförelse upptäcker avvikelser i pipelinen, men förklarar inte i sig orsaken. Ett lägre antal resultat kan bero på den aktuella sökresultatsammansättningen och inte på ett fel i API:et eller parsern. Därför är det användbart att spara rå JSON, jämföra identiska parametrar och kontrollera de hittade ID:na. Välj aviseringströskeln utifrån observationer av just din sökfråga, inte utifrån ett universellt värde.
Använd cursor från svaret vid paginering och avsluta genomgången när API:et anger att det inte finns fler resultat. Spara använda markörer och frågeparametrar så att körningen kan återskapas. Parametrarna date_posted och sort_by gör det möjligt att ange tidsfilter och sortering; om uppgiften kräver jämförbara resultat ska dessa vara oförändrade mellan körningarna.
Så tolkar du resultatet
Efter införandet får teamet ett kontrollerbart svar på tre praktiska frågor: genomfördes begäran, var finns resultaten i JSON och hur många unika videor ingår i den sparade ögonblicksbilden? Det förkortar vägen från en tom tabell till felsökning: kontrollera först status och struktur, därefter parametrar, dubbletter och innehållet i det ursprungliga svaret.
Svarsschemat och tillgängliga fält kan skilja sig mellan poster. Vid en livekontroll av jsonscraper den 25 oktober 2026 returnerade sökningen fält för ID, beskrivning, skapare och statistik; värden för en enskild post bör betraktas som valfria. En fungerande rapport sparar de data som faktiskt hämtats och ersätter inte saknade värden med nollor.
Du kan börja på sidan för TikTok Scraper API och kontrollera exakta sökvägar och parametrar i den officiella API-dokumentationen. En sådan kontroll är användbar före start av bevakningen: rapporten blir ett observerbart resultat vars kvalitet går att felsöka.