Alıcılar ürününüzü TikTok’ta konuşuyorsa, marka adına göre arama yapmak ekibin tekrar eden soruların listesini hazırlamasına yardımcı olabilir. Pratik sonuç; video açıklamasını, içerik üreticisini, bağlantıyı ve mevcut etkileşim sayılarını içeren bir CSV’dir. Bu dosya destek uzmanına iletilebilir veya konu sınıflandırması için girdi olarak kullanılabilir.

Örnek olarak “Acme kahve makinesi nasıl kullanılır?” sorusunu ele alalım. Aşağıdaki betik TikTok aramasına tek bir sorgu gönderir, yanıt yapısının belgelenmiş iki biçiminden videoları dikkatlice çıkarır ve bulunan sonuçları kaydeder. Ardından ekip açıklamaları elle inceler, benzer ifadeleri bir araya getirir ve bunları SSS konularına ya da ürün sayfası ipuçlarına dönüştürür.
Arama sonuçlarını neden tabloya dönüştürmeli?
Arama sonuçlarına elle göz atmak tekrar incelemeyi zorlaştırır: sonuçları yeniden bulmak gerekir ve notlar çoğu zaman tarayıcıda ya da yazışmalarda kalır. Kaydedilen bir tablo tek bir çalışma listesi sunar: her kayıtta video kimliği, bağlantı, açıklama, içerik üreticisi ve mevcut ölçümler bulunur. Betiği düzenli çalışacak şekilde ayarlayabilir, JSON arşivini ise API’nin belirli bir çalıştırmada tam olarak ne döndürdüğünü anlamak için kullanabilirsiniz.
Burada yöntemin sınırını unutmamak gerekir: arama, bir sorguya göre bulunan sonuçları döndürür; tüm bahsedenlerin eksiksiz kataloğunu garanti etmez. Bu nedenle tablo örnekleri keşfetmek ve tekrar eden soruları gözlemlemek için uygundur. Sıklıkla ilgili çıkarımları ise tekrarlanan çalıştırmalar ve elle incelemeyle desteklemek daha doğru olur.
Arama hangi verileri döndürür?
TikTok Scraper API belgelerine göre /searchVideo uç noktası zorunlu keyword parametresini kabul eder. Desteklenen diğer parametreler arasında count, cursor, date_posted, sort_by ve region yer alır. Bu senaryo için arama terimi ve sonuç sayısı yeterlidir.
Yanıt, bir dış durum ve tiktok nesnesi içerir. İncelenen şemada videolar aweme_list içinde veya aweme_info alanındaki search_item_list öğelerinde bulunabilir. Kod her iki biçimi de dikkate alır ve yalnızca gerçekten mevcut alanları çıkarır. Sonuca bağlı olarak video kimliği, açıklama, bağlantı, içerik üreticisinin adı ve kimliği, yayın tarihi ile görüntülenme, beğeni, yorum ve paylaşım sayıları kullanılabilir.
Python ile temel bir toplayıcı
İstekler kitaplığını yükleyin ve anahtarı JSONSCRAPER_TIKTOK_LICENSE_KEY ortam değişkeninde tanımlayın. Kod Python 3.8 ve üzeri sürümlerle uyumludur. Ham yanıtı JSON, normalleştirilmiş satırları ise CSV olarak kaydeder. Gizli anahtar isteğe eklenir, ancak ekrana yazdırılmaz.
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 beklenmeyen bir dış durum döndürdü")
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)
# İlk görünme sırasını koruyarak tekrarları kaldır.
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"Kaydedilen satır sayısı: {len(unique)}")
Bağımlılığı python -m pip install requests komutuyla yükleyebilirsiniz. Belirli bir kayıtta alan yoksa kod ilgili hücreyi boş bırakır. Ölçümler için bu önemlidir: boş değer, alanın yanıtta bulunmadığını gösterir ve sıfırla değiştirilmez.
CSV’yi yararlı bir soru listesine dönüştürme
İlk adım, açıklama içeriğine göre filtreleme yapmaktır. “Nasıl”, “neden”, “çalışmıyor” gibi sözcükleri, model adını ve belirli parça adlarını arayabilirsiniz. Bu filtre editörün inceleyeceği bir kuyruk oluşturur; ancak tek başına yazarın niyetini belirlemez: marka bahsi bir inceleme, şaka ya da uyumluluk sorusu olabilir.
Konuları gruplamak için sınıflandırıcıya yalnızca gerekli metin alanlarını gönderin: açıklamayı ve görev için uygunsa anonimleştirilmiş kayıt kimliğini. “İlk kurulum”, “temizlik”, “uyumluluk”, “arıza” ve “satın alma” gibi sabit kategoriler döndürmesini isteyin. Çalışanın sınıflandırmayı kontrol edip hataları düzeltebilmesi için özgün açıklamayı kategorinin yanında saklayın.
Çalışma raporunda konu, bulunan örnek sayısı, açıklayıcı birkaç videonun bağlantısı ve “insan tarafından doğrulandı” adlı ayrı bir sütun bulunabilir. Toplanan veri kümesindeki örnek sayısı, bu sorgu ve toplama dönemi için bulunan sonuçları ifade eder; aynı sorunu yaşayan tüm alıcıların oranı değildir.
Sayfalama ve düzenli çalıştırma
Sonuçların sonraki sayfasına geçmek için belgelerde kaydırma parametresi olarak cursor belirtilir: önceki yanıttaki imleç değerini bir sonraki isteğe gönderin. Bunu opak bir belirteç olarak ele alın; yanıtta sonuç kalmadığında veya API başka sayfa olmadığını bildirdiğinde taramayı durdurun. Sınırlı bir pilot çalışma için tek bir sorguyla başlayıp sonuç kümesini kontrol ettikten sonra sayfalama eklemek makuldür.
Toplamayı düzenli hâle getirmek için betiği işletim sistemi zamanlayıcısı veya CI üzerinden çalıştırın. Her çalıştırmanın ham JSON dosyasını ayrı kaydedin ve tabloya toplama zamanını ekleyin. Geçmiş biriktikçe kayıtları video kimliğine göre tekilleştirin; değişen ölçümleri izlemek gerekiyorsa yinelenen anlık görüntüleri ayrıca saklayın. Ölçümleri karşılaştırmak, ancak aynı kaydın birden fazla anlık görüntüsü varsa anlamlıdır.
Anahtarı CI gizli bilgi yöneticisinde veya ortam değişkeninde saklayın, arşive erişimi sınırlandırın ve kurum içi bir saklama süresi belirleyin. Verileri sınıflandırma sistemine aktarmadan önce sistemin hangi alanlara gerçekten ihtiyacı olduğunu kontrol edin. Bu, kullanıcı verilerinin gereksiz yere kopyalanmasını azaltır ve erişim denetimini kolaylaştırır.
Ekip hangi sonuçları elde eder?
Çalıştırmanın ardından ham yanıt arşivi ve bulunan videolarla mevcut alanları içeren bir CSV elde edersiniz. Destek ekibi bağlantıları kontrol edip tekrar eden soruları derleyebilir; pazarlama ekibi kitlenin ihtiyaçlarını nasıl ifade ettiğini görebilir; analist ise toplamayı tekrarlayıp farklı tarihlerdeki gözlemleri karşılaştırabilir.

Başlangıç için ürün adını belirli bir sorunla birleştiren dar kapsamlı bir sorgu kullanın, bulunan 20–30 kaydı elle inceleyin ve kategori sözlüğünü netleştirin. Ardından birkaç konu sorgusu, zamanlama ve tabloya ya da veritabanına aktarım ekleyebilirsiniz. Uç noktanın özellikleri ve parametreleri TikTok Scraper API açıklamasında verilmiştir; daha geniş kapsamlı bir izleme oluşturmadan önce seçtiğiniz sorguyu doğrulayın.