En markedsfører kan finne en TikTok-video der skaperen snakker om et relevant produkt, men det er vanskeligere å gå fra et slikt signal til en kontakt som kan verifiseres: Skaperens navn på TikTok kan være annerledes på IG, og profilen kan være privat eller mangle en bekreftet tilknytning til personen. Et praktisk resultat er ikke en automatisk liste over «ferdige leads», men en kontrolltabell med den opprinnelige videoen, TikTok-skaperen, antatt IG-brukernavn, API-svar og status for videre gjennomgang.
Nedenfor finner du en enkel Python-prosess for denne oppgaven. Den søker etter offentlige videoer med en søkefrase, henter tilgjengelige felt om skaperen og sjekker IG-profiler bare når du allerede har et begrunnet brukernavn å undersøke. API-et kan hente profildata etter brukernavn; det fastslår ikke automatisk at to kontoer tilhører samme person.
Hvilket resultat bør automatiseres?
Se for deg et team som selger utstyr til hjemmekaffe og vil finne skapere av offentlige videoer om tilberedning av kaffe. Manuelt søk er nyttig for å bli kjent med innholdet, men når det gjentas, er det vanskelig å holde oversikt over hvilken video som førte til kontakten, hvor profilnavnet kom fra, og hva som faktisk ble sjekket.

Arbeidsflyten skiller mellom tre handlinger: å søke etter videoer på TikTok, lagre observerbare data og sjekke en antatt IG-profil. Dermed kan en analytiker åpne én CSV-fil og se hvordan hver kandidat ble funnet. IG-feltene bør bare fylles ut når brukernavnet er funnet i en offentlig profilbeskrivelse eller forfatterlenke, eller er kontrollert av et menneske mot annet tilgjengelig materiale.
Denne metoden passer for et byrå, et researchteam eller en intern markedsfører som trenger en liten, reproduserbar liste til manuell kvalifisering. Den bevarer konteksten for funnet og gjør ikke lignende navn til en påstand om at kontoene tilhører samme person.
Hvilke felt kan hentes?
Den dokumenterte TikTok-ruten /searchVideo krever parameteren keyword; dessuten er count, date_posted, sort_by, region og cursor tilgjengelige. Observerte svar inneholder blant annet video-ID, beskrivelse, publiseringsdato, lenke, skaperdata og offentlige engasjementstall. De faktiske feltene kan variere, så koden nedenfor leser data på en måte som håndterer manglende verdier.
Dette oppsettet bruker den dokumenterte GET-ruten /v1/user/by/username for IG, med parameteren username. Svaret kan inneholde brukernavn, visningsnavn, status for personvern og verifisering, antall innlegg, følgere og kontoer brukeren følger, samt biografi. Dette er opplysninger for gjennomgang og videre vurdering av en fagperson, ikke en rangering av skaperen.
Den offisielle dokumentasjonen for TikTok API beskriver søkeparametrene, mens dokumentasjonen for IG API beskriver IGs metoder og parametere. De innebygde API-definisjonene fra jsonscraper fastsetter også rutene, parameternavnene og observerte svarstrukturer; datoen for kontrollene som omtales, er 25. oktober 2026.
Konfigurer nøkler og kandidatlisten
Lagre API-nøklene som miljøvariabler: JSONSCRAPER_TIKTOK_LICENSE_KEY og JSONSCRAPER_INSTAGRAM_LICENSE_KEY. Ikke legg dem i kildekode, CSV-filer eller jobblogger. Installer forespørselsbiblioteket med python -m pip install requests. Eksempelet nedenfor er laget for Python 3.8 eller nyere.
import csv
import os
import sys
from urllib.parse import urlencode
import requests
TIKTOK_KEY = os.environ.get("JSONSCRAPER_TIKTOK_LICENSE_KEY")
INSTAGRAM_KEY = os.environ.get("JSONSCRAPER_INSTAGRAM_LICENSE_KEY")
if not TIKTOK_KEY or not INSTAGRAM_KEY:
sys.exit("Set JSONSCRAPER_TIKTOK_LICENSE_KEY and JSONSCRAPER_INSTAGRAM_LICENSE_KEY")
def get_json(base_url, path, params):
response = requests.get(
f"{base_url}{path}",
params=params,
timeout=30,
)
response.raise_for_status()
return response.json()
def extract_videos(payload):
"""Handle both observed TikTok search result locations."""
if payload.get("status") != "ok":
raise RuntimeError(f"TikTok API status: {payload.get('status')}")
tiktok = payload.get("tiktok") or {}
videos = list(tiktok.get("aweme_list") or [])
for item in tiktok.get("search_item_list") or []:
video = item.get("aweme_info")
if video:
videos.append(video)
unique = {}
for video in videos:
video_id = video.get("aweme_id")
if video_id:
unique[video_id] = video
return list(unique.values())
keyword = "hjemmekaffe"
tiktok_payload = get_json(
"https://tiktok.evelode.com",
"/searchVideo",
{
"license_key": TIKTOK_KEY,
"keyword": keyword,
"count": 20,
"date_posted": "this-month",
"sort_by": "relevance",
},
)
rows = []
for video in extract_videos(tiktok_payload):
author = video.get("author") or {}
stats = video.get("statistics") or {}
rows.append({
"tiktok_video_id": video.get("aweme_id", ""),
"tiktok_url": video.get("share_url", ""),
"video_description": video.get("desc", ""),
"created_at": video.get("create_time", ""),
"tiktok_username": author.get("unique_id", ""),
"tiktok_author_name": author.get("nickname", ""),
"tiktok_followers": author.get("follower_count", ""),
"views": stats.get("play_count", ""),
"likes": stats.get("digg_count", ""),
"instagram_username": "",
"instagram_status": "not checked",
"instagram_followers": "",
"instagram_is_private": "",
"manual_match_review": "required",
})
# Fyll ut denne ordboken bare med brukernavn som er funnet separat
# og lagt inn etter manuell kontroll av kilden.
verified_instagram_usernames = {
# "tiktok_video_id": "instagram_username"
}
for row in rows:
username = verified_instagram_usernames.get(row["tiktok_video_id"])
if not username:
continue
ig_payload = get_json(
"https://ig.jsonscraper.com",
"/v1/user/by/username",
{
"license_key": INSTAGRAM_KEY,
"username": username,
},
)
if ig_payload.get("status") != "ok":
row["instagram_status"] = "api status: " + str(ig_payload.get("status"))
continue
profile = ig_payload.get("ig") or {}
row["instagram_username"] = profile.get("username", username)
row["instagram_status"] = "profile returned"
row["instagram_followers"] = profile.get("follower_count", "")
row["instagram_is_private"] = profile.get("is_private", "")
row["manual_match_review"] = "check relationship manually"
if rows:
with open("social_lead_checks.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=rows[0].keys())
writer.writeheader()
writer.writerows(rows)
else:
print("No video rows returned for this query.")
Hvorfor behandler funksjonen to svarstrukturer?
TikTok-søket kan ha videoer på to steder: tiktok.aweme_list og tiktok.search_item_list[].aweme_info. I et observert søkeresultat kunne den første listen være tom, mens elementene lå i den andre. Derfor slår eksempelet sammen begge kildene og fjerner duplikater basert på aweme_id. Først sjekker det den ytre status-verdien og leser deretter tiktok-objektet.

Koden lagrer bare feltene som faktisk finnes i svaret. En tom verdi betyr at feltet manglet i det mottatte objektet; den skal ikke tolkes som null. Det er nyttig å lagre videolenker og beskrivelser sammen med måltallene. Ellers mister tabellen den opprinnelige konteksten ved en senere gjennomgang.
Legg til paginering bare ved behov
Eksempelet henter én side og behandler bare elementene det får tilbake. Hvis du vil fortsette søket, støtter dokumentasjonen cursor for videosøk; verdien hentes fra det forrige svaret. Behandle cursor som en ugjennomsiktig verdi, og send den videre uten å beregne den selv. Stopp løkken når svaret sier at det ikke finnes flere resultater, eller når teamets fastsatte grense er nådd. Paginering utvider mengden returnerte resultater, men gir ikke grunnlag for å kalle den en fullstendig oversikt over alle publiseringer om temaet.
Før du legger til automatisk uthenting, bør du kontrollere et faktisk svar med din egen nøkkel og velge et moderat antall sider. Lagre den opprinnelige JSON-filen sammen med den normaliserte raden, eller separat med datoen for kjøringen. Da kan du finne ut om et svarfelt er endret og behandle innsamlingen på nytt hvis skjemaet endres.
Slik bruker du CSV-filen i kvalifiseringen
Du kan filtrere tabellen etter om en rad har videolenke, beskrivelse, skaper og utfylt IG-profil. Nyttige statuser for den første gjennomgangen kan være «video funnet», «IG-brukernavn funnet», «profil returnert», «kontotilknytning kontrollert av en person» og «utelatt». Statusene beskriver kontrollprosessen, ikke skaperens kvalitet eller hensikt.
Hvis du trenger en rapport som kan gjentas, kan du kjøre skriptet etter en tidsplan og legge til en egen kolonne med datoen dataene ble hentet. Sammenligning av øyeblikksbilder viser da hva som har endret seg mellom kjøringene i de tilgjengelige feltene, for eksempel antall følgere på profilen. TikTok- og IG-måltall bør lagres separat, med plattform og tidspunkt for observasjonen angitt: De tilhører ulike kontekster og kommer fra ulike API-svar.
For større datamengder kan du erstatte CSV-filen med en database som bruker plattform og video-ID som primærnøkkel. Lagre den opprinnelige søketeksten, innsamlingstidspunktet og det ubehandlede svaret. Varsler i Slack eller overføring av en rad til CRM bør skje etter at et menneske har bekreftet at profilene hører sammen, ikke umiddelbart etter et navnesamsvar.
Begrensninger i tolkning og sikker drift
Søk med en søkefrase returnerer API-resultatene som ble funnet, ikke en fullstendig liste over publiseringer. Antall visninger, likerklikk og følgere er et øyeblikksbilde av svaret på forespørselstidspunktet. Det kan brukes til å sortere en arbeidsliste og gjøre videre undersøkelser, men bekrefter ikke i seg selv kommersiell interesse, målgruppe eller samtykke til kontakt.
Bekreft kontotilknytningen ved hjelp av tydelige offentlige tegn, og registrer hvem som utførte kontrollen og når. Hvis IG-brukernavnet kommer fra en tredjepartsliste uten en kilde som kan bekreftes, lar du statusen stå som «må kontrolleres». En privat IG-profil eller manglende data skal vises som et eget kontrollresultat; ikke forsøk å fylle inn hull med antakelser.
Bruk nøkler i en hemmelighetshvelv i driftsmiljøet, begrens tilgangen til eksportfiler, og fastsett en lagringsperiode som passer formålet med undersøkelsen. Overfør bare feltene som trengs for det videre manuelle arbeidet til CRM, og følg gjeldende plattformregler og krav til databehandling.
Resultatet
Når skriptet er kjørt, får du en CSV-fil med videoene som ble funnet, skaperne og tilgjengelige måltall, samt egne felt for IG-kontrollen. Skriptet kan kjøres manuelt, etter en tidsplan i CI eller via en HTTP-forespørselsnode i en automatiseringsplattform. Det viktigste er å automatisere innsamlingen og strukturen på dataene, mens et menneske fortsatt kontrollerer forbindelsen mellom kontoene.
For å kontrollere rutene og tilgjengelige parametere kan du begynne med TikTok Scraper API og IG Scraper API. Produktsidene inneholder eksempler på forespørsler og lenker til dokumentasjonen; start med en liten forespørsel før du bygger inn datainnsamlingen i en fast prosess.