Команді підтримки потрібен список публічних відео TikTok, у яких люди обговорюють незрозумілу функцію або ставлять запитання про продукт. Ручний пошук складно повторювати однаково, а відповіді API пошуку можуть зберігати відео в різних частинах JSON. Нижче наведено мінімальний сценарій Python, який запитує результати за ключовими словами, об’єднує обидві структури, усуває дублікати за ID та зберігає знайдені записи у CSV.
Що дасть сценарій
На виході ви отримаєте таблицю з ID відео, посиланням, описом, часом публікації, автором і доступними лічильниками реакцій. Команда підтримки або маркетингу зможе вручну позначити теми, на які потрібно відповісти, для яких слід оновити інструкцію або які варто перевірити у власній CRM. Таблиця відображає саме результати API за заданими запитами; вважайте її робочою вибіркою для аналізу, а не вичерпним каталогом усіх обговорень.

Сценарій призначений для збору й первинного сортування. Він не визначає автоматично, чи є опис запитанням, скаргою або жартом: таку мітку краще додавати після ручної перевірки або за допомогою окремого класифікатора, фіксуючи вихідний текст і причину рішення.
Що запитувати та як побудована відповідь
Для пошуку відео jsonscraper документує GET-маршрут /searchVideo на хості https://tiktok.evelode.com. Обов’язковий параметр — keyword; також можна передати count, регіон, сортування, період публікації та курсор наступної сторінки. Наприклад, пошук можна повторювати за кількома заздалегідь визначеними фразами: назвою функції, поширеним формулюванням помилки й коротким запитанням про налаштування. Параметри та допустимі значення наведено у довіднику TikTok API.
У пошуку є важлива для парсера особливість: масив aweme_list може бути порожнім, тоді як знайдені об’єкти містяться в search_item_list, а в кожному з них — aweme_info. Тому наведений нижче обробник перевіряє обидві форми. Приклад відповіді та поля, зафіксовані під час перевірки 25 жовтня 2026 року, наведено в первинній специфікації jsonscraper; поля статистики можуть бути відсутні, тож код не підставляє вигаданих значень.
Підготуйте ключ і список запитів
Збережіть ключ у змінній середовища JSONSCRAPER_TIKTOK_LICENSE_KEY, а не у вихідному файлі. У командній оболонці Linux або macOS це можна зробити так:
export JSONSCRAPER_TIKTOK_LICENSE_KEY="ваш_ключ"
Установіть бібліотеку для запитів і підготуйте файл queries.txt з одним пошуковим виразом у кожному рядку, наприклад назва продукту налаштування і назва функції не працює. Формулювання слід добирати відповідно до мови аудиторії та зберігати в окремому списку, щоб щотижневі вивантаження порівнювали ті самі запити.
python -m pip install requests
Зберіть і нормалізуйте знайдені відео
Приклад сумісний із Python 3.8+. Він виконує один запит для кожної фрази з обмеженням кількості результатів, перевіряє HTTP-помилки й статус у відповіді, а потім зберігає лише поля, які справді наявні. Повторні збіги об’єднуються за aweme_id, а всі запити, за якими знайдено відео, записуються в поле keywords. Окреме поле collected_at_utc фіксує час отримання даних для порівняння з наступними запусками.

import csv
import os
import sys
from datetime import datetime, timezone
import requests
BASE_URL = "https://tiktok.evelode.com/searchVideo"
API_KEY = os.environ.get("JSONSCRAPER_TIKTOK_LICENSE_KEY")
if not API_KEY:
raise SystemExit("Установіть JSONSCRAPER_TIKTOK_LICENSE_KEY")
def get_items(tiktok):
"""Витягує відео з обох задокументованих форм відповіді пошуку."""
items = list(tiktok.get("aweme_list") or [])
for entry in tiktok.get("search_item_list") or []:
info = entry.get("aweme_info") if isinstance(entry, dict) else None
if info:
items.append(info)
return items
with open("queries.txt", encoding="utf-8") as query_file:
queries = [line.strip() for line in query_file if line.strip()]
collected_at = datetime.now(timezone.utc).isoformat()
videos = {}
for keyword in queries:
response = requests.get(
BASE_URL,
params={
"license_key": API_KEY,
"keyword": keyword,
"count": 30,
"region": "US",
"sort_by": "relevance",
},
timeout=30,
)
response.raise_for_status()
payload = response.json()
if payload.get("status") != "ok":
print("Статус API для запиту неуспішний:", keyword, file=sys.stderr)
continue
tiktok = payload.get("tiktok") or {}
for item in get_items(tiktok):
video_id = item.get("aweme_id")
if not video_id:
continue
if video_id not in videos:
author = item.get("author") or {}
stats = item.get("statistics") or {}
videos[video_id] = {
"aweme_id": video_id,
"keywords": [keyword],
"description": item.get("desc"),
"share_url": item.get("share_url"),
"create_time": item.get("create_time"),
"author": author.get("unique_id") or author.get("nickname"),
"play_count": stats.get("play_count"),
"digg_count": stats.get("digg_count"),
"comment_count": stats.get("comment_count"),
"share_count": stats.get("share_count"),
"collected_at_utc": collected_at,
}
elif keyword not in videos[video_id]["keywords"]:
videos[video_id]["keywords"].append(keyword)
columns = [
"aweme_id", "keywords", "description", "share_url", "create_time",
"author", "play_count", "digg_count", "comment_count", "share_count",
"collected_at_utc",
]
with open("tiktok_support_review.csv", "w", newline="", encoding="utf-8-sig") as output:
writer = csv.DictWriter(output, fieldnames=columns)
writer.writeheader()
for video in videos.values():
row = dict(video)
row["keywords"] = " | ".join(row["keywords"])
writer.writerow(row)
print("Збережено знайдених унікальних відео:", len(videos))
Запит надсилається через параметр params, тому бібліотека коректно кодує текстові фрази в URL. Ключ при цьому передається в параметрі запиту, як зазначено в документації; не виводьте повний URL запиту в журнал застосунку. Для діагностики зберігайте HTTP-код відповіді, назву пошукової фрази та час запуску, але не записуйте секрети й персональні дані, які не потрібні для завдання.
Як читати CSV без хибних висновків
Стовпець keywords містить усі фрази, за якими було знайдено відео; collected_at_utc допомагає відрізнити час публікації від часу збору. ID зручний для усунення дублікатів, а посилання — для перевірки людиною. Порожній лічильник означає, що поле було відсутнє в конкретній відповіді, а не те, що його значення дорівнює нулю.
Для первинного сортування додайте до робочої копії CSV стовпці тема, тип сигналу, потрібна відповідь і посилання на внутрішній матеріал. Варіанти тем мають відповідати вашому продукту: наприклад, встановлення, оплата, сумісність або усунення помилки. Така схема перетворює вивантаження на чергу для аналізу й дає змогу перевірити рішення за вихідним відео.
Запустіть збір за розкладом
Спочатку запускайте сценарій вручну й перевірте кілька рядків і посилань. Потім додайте його до cron, завдання CI або сценарію автоматизації, який уміє запускати процес Python. Для регулярних звітів зберігайте кожне вивантаження або додавайте рядки до сховища з унікальним ключем відео й датою знімка. Так команда зможе відрізнити нові знайдені публікації від повторних спостережень і відстежувати, як між запусками змінюються доступні лічильники.
Параметр cursor призначений для прокручування видачі; його потрібно передавати з відповіді попереднього виклику. У наведеному мінімальному варіанті пагінацію навмисно не включено: обмежений набір запитів простіше перевіряти й відтворювати. Якщо додасте сторінки, зберігайте курсор без змін, зупиняйтеся за прапорцем наявності продовження та встановіть верхню межу кількості викликів за один запуск. Запит API повертає вибірку; не трактуйте кількість рядків як повне охоплення TikTok.
Практичні обмеження використання
Пошукова видача підходить для виявлення відео за формулюваннями, які вже відомі команді. Вона допомагає зібрати матеріал для класифікації, але не замінює вхідні звернення, аналітику власного сайту чи перевірку контексту відео. Опис може не передавати зміст відео, а доступні метрики відображають стан даних на момент отримання. Позначайте теми й висновки окремо від вихідних полів, щоб співробітники могли переглянути класифікацію.
Перш ніж запускати регулярний моніторинг, визначте, хто матиме доступ до вивантаження, як довго зберігатимуться дані та з якою метою використовуватимуться публічні відомості. Зберігайте лише поля, потрібні для аналізу продукту, і віддавайте перевагу посиланням на вихідні публікації замість копіювання медіафайлів. Щоб надіслати запит і перевірити доступні варіанти інтеграції, перегляньте сторінку TikTok Scraper API та документацію маршруту пошуку.