Markkinoija voi löytää TikTokista videon, jonka tekijä käsittelee haluttua tuotetta, mutta tällaisesta signaalista on vaikea edetä tarkistettavaan yhteystietoon: tekijän nimi TikTokissa ja IGissa voivat olla erilaiset, tai profiili voi olla yksityinen eikä sen yhteyttä henkilöön ole vahvistettu. Käytännöllinen tulos ei ole automaattisesti koottu ”valmiiden liidien” lista, vaan tarkistustaulukko: alkuperäinen video, TikTok-tekijä, mahdollinen IG-käyttäjänimi, API-vastaus ja jatkokäsittelyn tila.
Alla on tähän tehtävään tarkoitettu yksinkertainen Python-prosessi. Se etsii julkisia videoita avainsanalla, poimii saatavilla olevat tekijätiedot ja tarkistaa IG-profiilit vain, jos sinulla on jo perusteltu käyttäjänimi tarkistettavaksi. API voi hakea profiilitietoja käyttäjänimen perusteella; se ei automaattisesti vahvista, että kaksi tiliä kuuluvat samalle henkilölle.
Mitä kannattaa automatisoida
Kuvitellaan tiimi, joka myy kotikäyttöön tarkoitettuja kahvilaitteita ja haluaa löytää julkisten juomavideoiden tekijöitä. Manuaalinen haku auttaa tutustumaan sisältöön, mutta sen toistaminen vaikeuttaa sen säilyttämistä, mikä video johti yhteystietoon, mistä profiilinimi löytyi ja mitä tarkalleen tarkistettiin.

Prosessi jakaa työn kolmeen vaiheeseen: videoiden haku TikTokista, havaittujen tietojen tallentaminen ja mahdollisen IG-profiilin tarkistaminen. Näin analyytikko voi avata yhden CSV-tiedoston ja nähdä jokaisen ehdokkaan tietojen alkuperän. IG-kentät kannattaa täyttää vasta, kun käyttäjänimi on löydetty julkisesta kuvauksesta tai tekijän linkistä taikka henkilö on tarkistanut sen muiden saatavilla olevien materiaalien perusteella.
Tämä toimintatapa sopii toimistolle, tutkimusryhmälle tai yrityksen markkinoijalle, joka tarvitsee pienen, toistettavan listan manuaalista arviointia varten. Se säilyttää löydön kontekstin eikä muuta samankaltaisia nimiä väitteeksi henkilöllisyyden yhtenevyydestä.
Mitä tietoja voi saada
Dokumentoitu TikTok-reitti /searchVideo edellyttää keyword-parametria. Lisäksi käytettävissä ovat count, date_posted, sort_by, region ja cursor. Havaituissa vastauksissa esiintyy videon tunniste, kuvaus, julkaisupäivä, linkki, tekijätietoja ja julkisia vuorovaikutuslukuja. Kenttien todellinen joukko voi vaihdella, joten alla oleva koodi lukee tiedot turvallisesti ja käyttää puuttuvien arvojen tilalla tyhjiä arvoja.
Tässä IG-esimerkissä käytetään dokumentoitua GET-reittiä /v1/user/by/username ja username-parametria. Vastauksessa voi olla käyttäjänimi, näyttönimi, yksityisyys- ja vahvistustila, julkaisujen, seuraajien ja seurattavien määrä sekä biografia. Nämä ovat tietoja asiantuntijan tarkasteltaviksi ja päätöksenteon tueksi, eivät tekijän pisteytys.
Virallinen TikTok API -dokumentaatio kuvaa hakuparametrit, ja IG API -dokumentaatio IGin menetelmät ja parametrit. jsonscraperin API-määrittelyt kuvaavat myös reitit, parametrien nimet ja havaitut vastausrakenteet; tässä esitetyt tarkistukset on tehty 25. lokakuuta 2026.
Määritä avaimet ja ehdokaslista
Tallenna API-avaimet ympäristömuuttujiin: JSONSCRAPER_TIKTOK_LICENSE_KEY ja JSONSCRAPER_INSTAGRAM_LICENSE_KEY. Älä lisää niitä lähdekoodiin, CSV-tiedostoon tai tehtävälokeihin. Asenna pyyntökirjasto komennolla python -m pip install requests. Seuraava esimerkki on tarkoitettu Python 3.8:lle ja sitä uudemmille versioille.
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 = "домашний кофе"
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",
})
# Fill this dictionary only with usernames found separately
# and entered after manually checking the source.
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.")
Miksi käsittelijä huomioi kaksi vastausrakennetta
TikTok-haun videot voivat löytyä kahdesta paikasta: tiktok.aweme_list-listasta ja tiktok.search_item_list[].aweme_info-polusta. Havaitussa hakuvastauksessa ensimmäinen lista saattoi olla tyhjä, vaikka jälkimmäinen sisälsi tuloksia. Siksi esimerkki yhdistää molemmat lähteet ja poistaa kaksoiskappaleet aweme_id-tunnisteen perusteella. Ensin se tarkistaa ylimmän tason status-arvon ja lukee sitten tiktok-objektin.

Koodi tallentaa vain vastauksessa todella olevat kentät. Tyhjä arvo tarkoittaa, ettei kenttää ollut saadussa objektissa; sitä ei pidä tulkita nolla-arvoksi. Videolinkit ja kuvaukset kannattaa säilyttää mittareiden rinnalla, sillä muuten taulukosta katoaa alkuperäinen asiayhteys myöhemmän tarkastelun yhteydessä.
Lisää sivutus vain tarvittaessa
Esimerkki hakee yhden sivun ja käsittelee vain palautetut kohteet. Jos hakua halutaan jatkaa, dokumentaatiossa mainitaan videohaun cursor-parametri; sen arvo otetaan edellisestä vastauksesta. Säilytä cursor muuttumattomana arvona äläkä laske sitä itse. Lopeta silmukka, kun vastaus ilmoittaa, ettei jatkoa ole, tai kun tiimin määrittämä raja tulee vastaan. Sivutus laajentaa palautettujen tulosten joukkoa, mutta se ei anna perusteita kutsua tuloksia kattavaksi listaksi kaikista aiheeseen liittyvistä julkaisuista.
Tarkista oikea vastaus omalla avaimellasi ennen automaattisen viennin lisäämistä ja valitse kohtuullinen sivumäärä. Säilytä alkuperäinen JSON normalisoidun rivin rinnalla tai erillisessä tiedostossa ajankohdan mukaan: näin voit selvittää, onko vastauskenttä muuttunut, ja käsitellä kerätyt tiedot uudelleen, jos skeema muuttuu.
CSV-tiedoston käyttäminen arvioinnissa
Taulukosta voi suodattaa rivejä videolinkin, kuvauksen, tekijän ja täytetyn IG-profiilin perusteella. Ensimmäisen tarkistuskierroksen yksinkertaisia tiloja voivat olla ”video löytyi”, ”IG-käyttäjänimi löytyi”, ”profiili palautettiin”, ”ihminen tarkisti tilien välisen yhteyden” ja ”poissuljettu”. Tilat kuvaavat tarkistuksen etenemistä, eivät tekijän laatua tai aikomuksia.
Jos tehtävä edellyttää toistettavaa raporttia, suorita skripti ajastetusti ja lisää tietojen noutopäivä omaan sarakkeeseen. Tilannekuvien vertailu näyttää, mikä saatavilla olevissa kentissä muuttui ajokertojen välillä, esimerkiksi profiilin seuraajamäärässä. TikTok- ja IG-mittarit tulee tallentaa erillään alusta ja havaintoajankohta ilmoittaen: kyse on eri asiayhteyksistä ja eri API-vastauksista.
Jos käsiteltävää on enemmän, korvaa CSV tietokannalla, jossa ensisijainen avain muodostuu alustasta ja videon tunnisteesta. Tallenna alkuperäinen hakuteksti, keräysaika ja käsittelemätön vastaus. Slack-ilmoitus tai rivin siirto CRM:ään kannattaa tehdä vasta, kun ihminen on vahvistanut profiilien yhteyden, ei heti nimiosuman jälkeen.
Tulkinnan rajat ja turvallinen käyttö
Avainsanahaku palauttaa API:n löytämät tulokset, ei kaikkien julkaisujen täydellistä luetteloa. Katselu-, tykkäys- ja seuraajamäärät ovat kyselyhetken tilannekuva. Ne sopivat työlistan järjestämiseen ja myöhempään tarkistamiseen, mutta eivät sellaisenaan vahvista kaupallista aikomusta, yleisöä tai suostumusta yhteydenottoon.
Vahvista profiilien yhteys selkeiden julkisten tunnusmerkkien perusteella ja kirjaa, kuka tarkisti sen ja milloin. Jos IG-käyttäjänimi on saatu ulkopuolisesta taulukosta ilman todennettavaa lähdettä, jätä tilaksi ”vaatii tarkistusta”. Yksityinen profiili tai puuttuvat tiedot tulee merkitä tarkistuksen omana tuloksena, eikä aukkoja pidä täyttää oletuksilla.
Käytä avaimia työympäristön salaisuuksien hallinnassa, rajoita vietyjen tietojen käyttöoikeuksia ja aseta tutkimuksen tarkoitukseen sopiva säilytysaika. Siirrä CRM:ään vain manuaalisen jatkokäsittelyn kannalta tarpeelliset kentät ja noudata soveltuvia alustojen sääntöjä sekä tietojenkäsittelyvaatimuksia.
Lopputulos
Suorituksen jälkeen käytettävissä on CSV, jossa on löydetyt videot, tekijät ja saatavilla olevat mittarit sekä erilliset IG-tarkistuksen kentät. Skriptin voi käynnistää käsin, ajastaa CI:ssä tai suorittaa automaatioalustan HTTP-pyyntösolmun kautta. Keskeinen käytännön periaate on automatisoida tiedon keruu ja jäsentely mutta jättää tilien välisen yhteyden toteaminen ihmisen tarkistettavaksi vaiheeksi.
Reitteihin ja saatavilla oleviin parametreihin voi tutustua aloittamalla TikTok Scraper API- ja IG Scraper API -palveluista. Tuotesivuilla on pyyntöesimerkkejä ja linkkejä dokumentaatioon; tee ensin pieni kysely ennen kuin liität tiedonkeruun pysyvään prosessiin.