Если покупатели обсуждают ваш продукт в TikTok, поиск по названию бренда может дать команде материал для списка повторяющихся вопросов. Практический результат — CSV с описанием ролика, автором, ссылкой и доступными счётчиками реакций. Такой файл можно передать специалисту поддержки или использовать как входные данные для тематической классификации.

Для примера возьмём вопрос «как пользоваться кофемашиной Acme». Скрипт ниже выполняет один запрос к поиску TikTok, аккуратно извлекает ролики из двух документированных вариантов структуры ответа и сохраняет найденные результаты. Затем команда вручную проверяет описания, объединяет близкие формулировки и превращает их в темы FAQ или подсказки для карточки товара.
Почему поиск стоит превратить в таблицу
Ручной просмотр поисковой выдачи затрудняет повторную проверку: результаты нужно снова находить, а заметки часто остаются в браузере или переписке. Сохраняемая таблица даёт единый рабочий список: у каждой записи есть идентификатор видео, ссылка, описание, автор и доступные показатели. Повторный запуск можно встроить в расписание, а архив JSON поможет разобраться, что именно вернул API в конкретном запуске.
Здесь важна граница метода: поиск возвращает найденные результаты по запросу, а не гарантированный полный каталог всех упоминаний. Поэтому таблица годится для обнаружения примеров и наблюдения за повторяющимися вопросами; выводы о частоте лучше подкреплять повторными запусками и ручной проверкой.
Что возвращает поиск
В документации TikTok Scraper API маршрут /searchVideo принимает обязательный параметр keyword. Среди поддерживаемых параметров также перечислены count, cursor, date_posted, sort_by и region. Для этого сценария достаточно ключевого запроса и числа результатов.
Ответ содержит внешний статус и объект tiktok. В проверенной схеме видео могут находиться в aweme_list либо в элементах search_item_list внутри поля aweme_info. Код учитывает обе формы и извлекает только реально присутствующие поля. В зависимости от результата доступны идентификатор ролика, описание, ссылка, имя и ID автора, дата публикации, а также счётчики просмотров, лайков, комментариев и публикаций.
Минимальный сборщик на Python
Установите библиотеку запросов и задайте ключ в переменной окружения JSONSCRAPER_TIKTOK_LICENSE_KEY. Код совместим с Python 3.8+. Он сохраняет исходный ответ в JSON и нормализованные строки в CSV. Секрет передаётся запросу, но не выводится на экран.
import csv
import json
import os
from datetime import datetime, timezone
from pathlib import Path
import requests
API_KEY = os.environ["JSONSCRAPER_TIKTOK_LICENSE_KEY"]
KEYWORD = "Acme кофемашина"
response = requests.get(
"https://tiktok.evelode.com/searchVideo",
params={
"license_key": API_KEY,
"keyword": KEYWORD,
"count": 30,
"region": "US",
},
timeout=60,
)
response.raise_for_status()
payload = response.json()
if payload.get("status") != "ok":
raise RuntimeError("TikTok API вернул неожиданный внешний статус")
tiktok = payload.get("tiktok") or {}
items = list(tiktok.get("aweme_list") or [])
for result in tiktok.get("search_item_list") or []:
video = result.get("aweme_info")
if video:
items.append(video)
# Убираем повторы, сохраняя порядок первого появления.
unique = {}
for item in items:
video_id = item.get("aweme_id")
if video_id:
unique.setdefault(video_id, item)
stamp = datetime.now(timezone.utc).strftime("%Y%m%dT%H%M%SZ")
Path("data").mkdir(exist_ok=True)
Path(f"data/raw-{stamp}.json").write_text(
json.dumps(payload, ensure_ascii=False, indent=2), encoding="utf-8"
)
columns = [
"video_id", "description", "share_url", "author", "author_id",
"created_at", "views", "likes", "comments", "collected_at"
]
with open("data/videos.csv", "w", newline="", encoding="utf-8") as file:
writer = csv.DictWriter(file, fieldnames=columns)
writer.writeheader()
for item in unique.values():
author = item.get("author") or {}
stats = item.get("statistics") or {}
created = item.get("create_time")
writer.writerow({
"video_id": item.get("aweme_id"),
"description": item.get("desc"),
"share_url": item.get("share_url"),
"author": author.get("nickname"),
"author_id": author.get("uid"),
"created_at": created,
"views": stats.get("play_count"),
"likes": stats.get("digg_count"),
"comments": stats.get("comment_count"),
"collected_at": stamp,
})
print(f"Сохранено строк: {len(unique)}")
Установить зависимость можно командой python -m pip install requests. Если поле отсутствует в конкретной записи, код оставляет соответствующую ячейку пустой. Для показателей это принципиально: пустое значение сообщает, что поле не пришло, и не подменяется нулём.
Как превратить CSV в полезный список вопросов
Первый этап — фильтр по содержанию описания. Можно искать слова вроде «как», «почему», «не работает», название модели и характерные названия деталей. Такой фильтр создаёт очередь для редакторской проверки, но сам по себе не устанавливает намерение автора: упоминание бренда может быть обзором, шуткой или вопросом о совместимости.
Для тематической группировки передавайте классификатору только необходимые текстовые поля: описание и, если это уместно для задачи, обезличенный идентификатор записи. Попросите вернуть фиксированные категории, например «первый запуск», «очистка», «совместимость», «неисправность» и «покупка». Сохраняйте исходное описание рядом с категорией, чтобы сотрудник мог проверить присвоение и исправить ошибку.
Рабочий отчёт может содержать тему, число найденных примеров, ссылки на несколько иллюстративных роликов и отдельную колонку «проверено человеком». Число примеров в собранном наборе описывает результаты этого запроса и периода сбора; оно не равно доле всех покупателей, испытывающих проблему.
Пагинация и регулярный запуск
Если нужна следующая страница результатов, документация указывает cursor как параметр прокрутки: передавайте значение курсора из предыдущего ответа следующему запросу. Считайте его непрозрачным токеном и прекращайте обход, когда в ответе больше нет результатов или API сообщает отсутствие следующей страницы. Для ограниченного пилота разумно начать с одного запроса, проверить состав выдачи и лишь затем добавлять пагинацию.
Чтобы сделать сбор регулярным, запускайте скрипт по расписанию через планировщик операционной системы или CI. Для каждого запуска сохраняйте отдельный исходный JSON и добавляйте в таблицу время сбора. При накоплении истории дедуплицируйте записи по ID видео, но сохраняйте повторные снимки отдельно, если задача включает отслеживание меняющихся счётчиков. Сравнение счётчиков имеет смысл только при наличии нескольких снимков одной и той же записи.
Ключ храните в менеджере секретов CI или переменной окружения, ограничьте доступ к архиву и установите внутренний срок хранения. Перед передачей материалов в систему классификации проверьте, какие поля ей действительно нужны. Это снижает лишнее копирование пользовательских данных и упрощает контроль доступа.
Какой результат получает команда
После запуска у вас будет архив исходного ответа и CSV с найденными видеозаписями и доступными полями. Поддержка сможет проверять ссылки и собирать повторяющиеся вопросы; маркетинг — видеть формулировки, которыми аудитория описывает задачу; аналитик — повторять сбор и сравнивать наблюдения за разные даты.

Для начала задайте узкий запрос с названием продукта и конкретной проблемой, проверьте 20–30 найденных записей вручную и уточните словарь категорий. Затем можно добавить несколько тематических запросов, расписание и экспорт в таблицу или базу данных. Возможности маршрута и параметры приведены в описании TikTok Scraper API; начните с проверки выбранного запроса, прежде чем строить более широкий мониторинг.