jsonscraper
Markets
Back to journal

How to Find TikTok Videos Asking About Your Product and Compile a Report

A step-by-step Python script collects matching videos, saves engagement counts, and surfaces descriptions for manual review or topic classification.

Editorial Policy Report an error

If customers are discussing your product on TikTok, searching for your brand name can give your team material for a list of recurring questions. The practical result is a CSV containing video descriptions, authors, links, and available engagement counts. You can share the file with support specialists or use it as input for topic classification.

Article: How to Find TikTok Videos Asking About Your Product and Compile a Report
Summary: A brand search can help collect public TikTok videos whose descriptions include questions about a product. Learn how to retrieve results with jsonscraper, handle both response formats, and export rows to CSV for your support or marketing team.
Image role: cover — the central idea
Section: 
Visual subject: Editorial still life: a small household coffee machine beside printed cards r
An example of how product mentions found through search can become verifiable FAQ topics.© jsonscraper · AI-generated

For our example, let’s use the query “how to use an Acme coffee machine.” The script below makes one request to TikTok search, carefully extracts videos from two documented response structures, and saves the results. The team can then manually review the descriptions, combine similar phrasings, and turn them into FAQ topics or product-page tips.

Why turn search results into a table

Manually browsing search results makes it difficult to revisit them: you have to find the results again, and notes often get left in a browser or a conversation. A saved table provides a shared working list, with a video ID, link, description, author, and available metrics for each entry. You can schedule repeat runs, while the JSON archive helps you inspect exactly what the API returned for a particular run.

It is important to understand the limits of this method: search returns results found for a query, not a guaranteed complete catalog of all mentions. The table is therefore useful for discovering examples and observing recurring questions; conclusions about frequency are best supported by repeat runs and manual review.

What the search returns

In the TikTok Scraper API documentation, the /searchVideo endpoint requires the keyword parameter. Other listed supported parameters include count, cursor, date_posted, sort_by, and region. For this workflow, a search term and a result count are enough.

The response contains an outer status and a tiktok object. In the schema examined, videos may be found in aweme_list or in search_item_list entries under the aweme_info field. The code handles both formats and extracts only fields that are actually present. Depending on the result, available fields include the video ID, description, link, author name and ID, posting date, and counts for views, likes, comments, and shares.

A minimal Python collector

Install the requests library and set your key in the JSONSCRAPER_TIKTOK_LICENSE_KEY environment variable. The code is compatible with Python 3.8+. It saves the original response as JSON and normalized rows as CSV. The secret is sent with the request but is not printed to the screen.

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)}")

Install the dependency with python -m pip install requests. If a field is missing from a particular entry, the code leaves its cell blank. This matters for metrics: a blank value indicates that the field was not returned, rather than substituting zero.

How to turn the CSV into a useful list of questions

The first step is filtering descriptions by content. You could search for words like “how,” “why,” and “not working,” as well as the model name and distinctive names for parts. This creates a queue for editorial review, but does not, by itself, establish the author’s intent: a brand mention could be a review, a joke, or a compatibility question.

For topic grouping, pass a classifier only the text fields it needs: the description and, if appropriate for the task, a pseudonymized record identifier. Ask it to return a fixed set of categories, such as “first use,” “cleaning,” “compatibility,” “malfunction,” and “purchase.” Keep the original description alongside the category so a staff member can check the assignment and correct any errors.

A working report might include a topic, the number of examples found, links to a few representative videos, and a separate “human reviewed” column. The number of examples in the collected dataset describes the results of that query and collection period; it is not the share of all customers experiencing the issue.

Pagination and scheduled runs

If you need the next page of results, the documentation identifies cursor as the pagination parameter: pass the cursor value from the previous response to the next request. Treat it as an opaque token and stop when the response contains no more results or the API indicates there is no next page. For a limited pilot, it makes sense to start with one request, review the result set, and only then add pagination.

To collect data regularly, schedule the script with an operating system scheduler or CI. Save a separate raw JSON file for each run and add the collection time to the table. As history accumulates, deduplicate records by video ID, but save repeat snapshots separately if you need to track changing metrics. Comparing counts only makes sense when you have multiple snapshots of the same record.

Store the key in your CI secret manager or an environment variable, restrict access to the archive, and set an internal retention period. Before sending data to a classification system, check which fields it actually needs. This reduces unnecessary copying of user data and simplifies access control.

What the team gets

After running the script, you will have an archive of the original response and a CSV of the videos found and the fields available for them. Support can check links and gather recurring questions; marketing can see how the audience describes its needs; and analysts can repeat the collection and compare observations across dates.

Article: How to Find TikTok Videos Asking About Your Product and Compile a Report
Summary: A brand search can help collect public TikTok videos whose descriptions include questions about a product. Learn how to retrieve results with jsonscraper, handle both response formats, and export rows to CSV for your support or marketing team.
Image role: supporting illustration 2 — a different specific aspect
Section: What the team gets
Visual subject: Clear infograp
Collection workflow: two JSON structures feed into deduplication, an archive, and a review table.© jsonscraper · AI-generated illustration

To get started, use a focused query with the product name and a specific problem, manually review 20–30 results, and refine your category vocabulary. You can then add several topic-specific queries, a schedule, and an export to a spreadsheet or database. The TikTok Scraper API description lists the endpoint’s capabilities and parameters; check your chosen query before building broader monitoring.

People

No people listed for this article yet.

Keep readingHow to Build a Weekly TikTok Report on Audience Response to a Product Launch
Read the next article

Turn what you read into a working integration

Explore jsonscraper's social-data APIs, test requests and build your next workflow.

Explore APIs