Marketér může na TikToku najít video, jehož autor mluví o produktu, který ho zajímá, ale od takového signálu k ověřitelnému kontaktu vede složitější cesta: jméno autora na TikToku se může lišit od jména na IGu a profil může být soukromý nebo nemusí existovat potvrzená vazba na danou osobu. Praktickým výsledkem proto není automatický seznam „hotových leadů“, ale tabulka kontrol: původní video, autor na TikToku, předpokládané uživatelské jméno na IGu, odpověď API a stav pro další posouzení.
Níže najdete základní postup v Pythonu. Vyhledá veřejná videa podle klíčové fráze, vytáhne dostupná pole o autorovi a ověří instagramové profily pouze v případě, že už máte odůvodněné uživatelské jméno k ověření. API může načíst údaje profilu podle uživatelského jména; samo ale neurčí, zda dva účty patří stejné osobě.
Jaký výsledek se vyplatí automatizovat
Představte si tým, který prodává vybavení na domácí přípravu kávy a chce najít autory veřejných videí o přípravě nápojů. Ruční vyhledávání se hodí k prvnímu seznámení s obsahem, ale při opakování je obtížné uchovat informaci o tom, které video vedlo ke kontaktu, odkud pochází jméno profilu a co přesně bylo ověřeno.

Postup odděluje tři činnosti: vyhledávání videí na TikToku, ukládání pozorovaných údajů a ověřování předpokládaného instagramového profilu. Analytik tak může otevřít jeden soubor CSV a u každého kandidáta vidět původ údajů. Pole pro IG vyplňujte až poté, co uživatelské jméno najdete ve veřejném popisu, v odkazu autora nebo ho člověk ověří z dalších dostupných materiálů.
Tento přístup se hodí pro agenturu, výzkumný tým nebo interního marketéra, který potřebuje menší opakovatelný seznam k ruční kvalifikaci. Zachovává kontext nálezu a nepovažuje podobnost jmen za potvrzení totožnosti.
Jaká pole lze získat
Dokumentovaná trasa TikToku /searchVideo vyžaduje parametr keyword; k dispozici jsou také parametry count, date_posted, sort_by, region a cursor. V pozorovaných odpovědích se objevují identifikátor videa, popis, datum zveřejnění, odkaz, údaje o autorovi a veřejné statistiky interakcí. Skutečná sada polí se může lišit, proto níže uvedený kód bezpečně načítá hodnoty a chybějící ponechává prázdné.
Pro IG se v tomto postupu používá dokumentovaná trasa GET /v1/user/by/username s parametrem username. Odpověď může obsahovat uživatelské jméno, zobrazované jméno, stav soukromí a ověření, počet příspěvků, sledujících a sledovaných účtů i životopis. Jde o informace k posouzení specialistou, nikoli o hodnocení autora.
Oficiální dokumentace TikTok API popisuje parametry vyhledávání a dokumentace IG API metody a parametry IGu. Vestavěné definice API jsonscraper rovněž uvádějí trasy, názvy parametrů a pozorované podoby odpovědí; datum uvedených kontrol je 25. října 2026.
Nastavte klíče a seznam kandidátů
Klíče API uložte do proměnných prostředí: JSONSCRAPER_TIKTOK_LICENSE_KEY a JSONSCRAPER_INSTAGRAM_LICENSE_KEY. Nevkládejte je do zdrojového kódu, souborů CSV ani protokolů úloh. K instalaci knihovny pro požadavky použijte python -m pip install requests. Následující příklad je určen pro Python 3.8 a novější.
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",
})
# Vyplňte tento slovník pouze uživatelskými jmény,
# která jste samostatně našli a po ruční kontrole zdroje ověřili.
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.")
Proč obsluha zohledňuje dvě struktury odpovědi
Ve výsledcích vyhledávání TikToku se videa mohou nacházet na dvou místech: tiktok.aweme_list a tiktok.search_item_list[].aweme_info. V pozorované odpovědi mohl být první seznam prázdný, zatímco položky se nacházely ve druhém. Příklad proto oba zdroje spojuje a odstraňuje duplicity podle aweme_id. Nejprve ověří vnější status a poté načte objekt tiktok.

Kód ukládá pouze pole, která jsou v odpovědi skutečně přítomná. Prázdná hodnota znamená, že pole v přijatém objektu chybělo; nelze ji vykládat jako nulový ukazatel. Odkazy a popisy videí je vhodné uchovávat společně s metrikami, jinak tabulka při pozdější kontrole ztrácí původní kontext.
Přidávejte stránkování, jen když je potřeba
Příklad vyžádá jednu stránku a zpracuje pouze vrácené položky. Pokud chcete ve vyhledávání pokračovat, dokumentace uvádí pro vyhledávání videí parametr cursor; jeho hodnota se převezme z předchozí odpovědi. Uchovávejte cursor jako neprůhlednou hodnotu a předávejte jej bez vlastních výpočtů. Smyčku zastavte, když odpověď oznámí, že nejsou k dispozici další výsledky, nebo když dosáhnete limitu stanoveného týmem. Stránkování rozšíří sadu vrácených výsledků, ale neopravňuje k tomu označit ji za úplný přehled všech příspěvků na dané téma.
Před přidáním automatického stahování ověřte skutečnou odpověď pomocí vlastního klíče a zvolte přiměřený počet stránek. Ukládejte původní JSON vedle normalizovaného řádku nebo samostatně podle data spuštění. Snáze pak zjistíte, zda se změnilo některé pole odpovědi, a budete moci sběr zpracovat znovu, pokud se změní schéma.
Jak používat CSV při kvalifikaci
V tabulce můžete filtrovat řádky podle přítomnosti odkazu na video, popisu, autora a vyplněného instagramového profilu. Pro první kolo kontroly se hodí jednoduché stavy: „video nalezeno“, „uživatelské jméno na IGu nalezeno“, „profil vrácen“, „vazbu účtů ověřil člověk“ a „vyřazeno“. Stavy popisují průběh kontroly, nikoli kvalitu nebo záměry autora.
Pokud potřebujete opakovatelný report, spouštějte skript podle plánu a přidejte samostatný sloupec s datem získání údajů. Porovnání snímků pak ukáže, co se mezi spuštěními změnilo v dostupných polích, například počet sledujících profilu. Ukazatele TikToku a IGu uchovávejte odděleně a označte platformu i čas pozorování: jde o odlišné kontexty a různé odpovědi API.
U většího objemu nahraďte CSV databází s primárním klíčem tvořeným platformou a ID videa. Uchovejte původní textový dotaz, čas sběru a nezpracovanou odpověď. Oznámení ve Slacku nebo předání řádku do CRM proveďte až po ručním potvrzení vazby profilů, nikoli hned po shodě jména.
Meze interpretace a bezpečný provoz
Vyhledávání podle klíčové fráze vrací výsledky nalezené API, nikoli úplný seznam příspěvků. Počet zhlédnutí, lajků a sledujících je snímek odpovědi v okamžiku dotazu. Hodí se k řazení pracovního seznamu a následné kontrole, ale sám o sobě nepotvrzuje obchodní záměr, publikum ani souhlas s kontaktováním.
Vazbu profilů potvrzujte na základě jednoznačných veřejných znaků a zaznamenejte, kdo a kdy kontrolu provedl. Pokud uživatelské jméno na IGu pochází z externí tabulky bez ověřitelného zdroje, ponechte stav „vyžaduje kontrolu“. Soukromý profil nebo chybějící údaje zobrazte jako samostatný výsledek kontroly a nedoplňujte mezery domněnkami.
Klíče ukládejte v úložišti tajných údajů pracovního prostředí, omezte přístup k exportům a nastavte dobu uchovávání odpovídající účelu výzkumu. Do CRM předávejte pouze pole potřebná pro další ruční práci a dodržujte příslušná pravidla platforem i požadavky na zpracování údajů.
Co získáte
Po spuštění vznikne soubor CSV se seznamem nalezených videí, jejich autory a dostupnými metrikami i se samostatnými poli pro ověření IGu. Skript lze spouštět ručně, podle plánu v CI nebo prostřednictvím uzlu HTTP požadavku v automatizační platformě. Základní praktická zásada je automatizovat sběr a strukturu údajů, ale propojení účtů ponechat jako ověřitelný krok člověka.
Kontrolu tras a dostupných parametrů začněte na stránkách TikTok Scraper API a IG Scraper API. Stránky produktů obsahují příklady požadavků a odkazy na dokumentaci; než sběr začleníte do trvalého procesu, začněte s malým dotazem.