API Platformu

YouTube API

YouTube arama sıralamaları, video detayları, istenen dilde ve çevirili altyazılar ve yorumlar — her video için, kota olmadan.

Gerçek bir izleyicinin gördüğü YouTube arama sıralamaları, video detayları, altyazılar (çeviriyle birlikte) ve herkese açık her video için yorumlar. Tek bir endpoint, type parametresiyle seçilen dört rapor sunar. Günlük kota yoktur ve altyazılar yalnızca kendi videolarınız için değil, her video için çalışır.

Kimlik Doğrulama

HeaderTipAçıklama
SEMUST-API-USERstringAPI kullanıcınızın kullanıcı adı
SEMUST-API-PASSWORDstringAPI kullanıcınızın şifresi
Accept-Languagestringİsteğe bağlı. Hata mesajlarını Türkçe almak için tr gönderin

API kimlik bilgilerinizi API Erişimi sayfasından oluşturun.

SEMUST-API-USER: kullanici_adiniz
SEMUST-API-PASSWORD: sifreniz
Content-Type: application/json
Accept-Language: tr

Rapor Tipleri

typeDöndürdüğüÜcret
search (varsayılan)Bir anahtar kelime için YouTube sonuçları, sıralama düzeninde: videolar, Shorts, oynatma listeleri, kanallar ve reklamlarBaşlanan her 20 sonuçluk blok için $0.0022
videoBir videonun detayları: izlenme, beğeni, yorum, kanal ve abone sayısı, yayın tarihi, süre, kategori, etiketler ve hangi altyazıların olduğu$0.0066
transcriptBir videonun altyazısı: düz metin ve zaman damgalı bölümler, istenirse çevrilmiş$0.0066
commentsBir videonun öne çıkan yorumları: yazar, beğeni ve yanıt sayısıBaşlanan her 20 yorumluk blok için $0.0022
{
  "type": "search",
  "keyword": "seo nedir",
  "limit": 20
}

İstek Parametreleri

Seçilen type için geçerli olmayan bir parametre yok sayılmaz, reddedilir; yanlış yazılmış bir parametre ise hatada adıyla ve bir öneriyle bildirilir. JSON null değeri "gönderilmedi" sayılır.

Gövde

typestringdefault: search

search, video, transcript veya comments.

keywordstring

Yalnızca search, zorunlu. En fazla 200 karakter.

video_idstring

video, transcript ve comments için zorunlu. 11 karakterlik kimlik (CnQmoQD4xRM) ya da herhangi bir YouTube URL'si: watch?v=, youtu.be/, shorts/, embed/ veya live/.

countrystringdefault: TR

İki harfli ülke kodu: aramanın yapıldığı ve videonun okunduğu bölge. Pazarlar için aşağıya bakın.

languagestring

Yalnızca search. Aramanın arayüz dili. TR için varsayılan tr, diğer ülkelerde en.

devicestringdefault: desktop

Yalnızca search. desktop veya mobile.

limitintegerdefault: 20

search ve comments. Döndürülecek sonuç sayısı, 1–200. Başlanan her 20'lik blok için ücretlendirilir; bu yüzden 20 ve 40 en verimli değerlerdir.

transcript_languagestring

Yalnızca transcript. Hangi altyazının okunacağı, ör. tr veya en-GB. TR için varsayılan tr, diğer ülkelerde en. type: "video" bir videonun hangi altyazıları olduğunu listeler.

translate_tostring

Yalnızca transcript. Altyazıyı bu dile çevirir, ör. en.

idempotency_keystring

İsteğe bağlı, en fazla 128 karakter. Aynı anahtarla 24 saat içinde tekrarlanan istek kayıtlı yanıtı ücretsiz döndürür.

GET /v1/youtube/markets desteklenen tüm ülkeleri ve arama dillerini listeler. Ücretsizdir.

curl -X POST https://data.semust.com/v1/youtube \
  -H "SEMUST-API-USER: kullanici_adiniz" \
  -H "SEMUST-API-PASSWORD: sifreniz" \
  -H "Content-Type: application/json" \
  -H "Accept-Language: tr" \
  -d '{"type": "transcript", "video_id": "https://youtu.be/CnQmoQD4xRM"}'

Yanıt

search ve comments satırları items içinde döndürür; video ve transcript tek bir data nesnesi döndürür. Olmayan ya da geçerli olmayan bir değer 0 değil null döner: bir oynatma listesinde "views": null olur.

URL'ler standarttır (https://www.youtube.com/watch?v=…, izleme parametreleri olmadan); tarihler UTC olarak ISO 8601 biçimindedir. Arama sonuçlarındaki published_at yaklaşıktır, çünkü YouTube orada göreli tarih gösterir ("5 yıl önce"); kesin tarihi type: "video" verir. Aramada total, YouTube'un bildirdiği sonuç sayısıdır.

Aşağıdaki örnekler gerçek yanıtlardır.

{
  "success": true,
  "type": "search",
  "keyword": "seo nedir",
  "country": "TR",
  "language": "tr",
  "device": "desktop",
  "total": 628065,
  "count": 2,
  "limit": 2,
  "items": [
    {
      "position": 1,
      "type": "video",
      "title": "SEO Nedir? | Webtures",
      "url": "https://www.youtube.com/watch?v=CnQmoQD4xRM",
      "video_id": "CnQmoQD4xRM",
      "channel_name": "Webtures",
      "channel_url": "https://www.youtube.com/@Webturescom",
      "views": 241552,
      "video_count": null,
      "published_at": "2021-11-05T21:17:53Z",
      "duration_seconds": 180,
      "is_live": false
    },
    {
      "position": 2,
      "type": "playlist",
      "title": "SEO Eğitimi Serisi - 2024 - Sıfırdan Uzmanlığa",
      "url": "https://www.youtube.com/playlist?list=PLaqVtetWSaGhlXiU48bDd8511btrbx6T2",
      "video_id": null,
      "channel_name": "Mehmet Ali Yassı",
      "channel_url": "https://www.youtube.com/@maliyassi",
      "views": null,
      "video_count": 20,
      "published_at": null,
      "duration_seconds": null,
      "is_live": null
    }
  ],
  "cost": 0.0022,
  "cached": false,
  "request_id": "0b7e6f1a-3c2d-4e5f-9a8b-1c2d3e4f5a6b"
}

Yanıt Alanları Referansı

search satırı

AlanTipAçıklama
positionintegerSonuç sayfasındaki sıra
typestringvideo, short, playlist, channel veya ad
title, urlstringBaşlık ve standart bağlantı
video_idstring | nullVideo, Shorts ve reklamlar için
channel_name, channel_urlstring | nullKanal
viewsinteger | nullİzlenme sayısı (videolar)
video_countinteger | nullOynatma listesi veya kanaldaki video sayısı
published_atstring | nullYaklaşık yayın zamanı, ISO 8601
duration_secondsinteger | nullSüre (videolar)
is_liveboolean | nullCanlı yayın (videolar)

video → data

video_id, title, url, description, channel_name, channel_url, channel_subscribers, views, likes, comments, published_at (kesin), duration_seconds, category, tags (yükleyenin etiketleri), is_live ve transcripts: her biri {language, auto_generated}; bir language değerini transcript_language olarak gönderebilirsiniz.

transcript → data

AlanTipAçıklama
languagestring | nullOkunan altyazının dili
translated_tostring | nulltranslate_to gönderildiyse hedef dil
textstringAltyazının tamamı, tek metin olarak
segmentsarray{start, end, text}, süreler saniye cinsinden

comments satırı

author, author_url, text, likes, replies, published_at. Zarftaki total, videonun yorum sayısıdır.

Hatalar

Her hata sabit bir code, okunabilir bir error ve retryable içerir; faydalı olduğunda ayrıca field, hint ve allowed. Türkçe mesajlar için Accept-Language: tr gönderin. Bir hata için asla ücret alınmaz. Diğer API'lerle ortak tam liste Hata Kodları sayfasındadır. Bu endpoint'e özgü olanlar:

DurumKodAnlamıNe yapmalı
400KEYWORD_REQUIREDtype: "search" ama anahtar kelime yokkeyword gönderin
400VIDEO_ID_REQUIREDVideo raporu ama video_id yokKimliği ya da URL'yi gönderin
400INVALID_VIDEO_ID11 karakterlik kimlik ya da YouTube video URL'si değilKimliği videonun adresinden kopyalayın
400UNSUPPORTED_MARKETBilinmeyen ülke ya da arama diliGET /v1/youtube/markets
404VIDEO_NOT_FOUNDBöyle bir video yok ya da gizli, kaldırılmış veya o ülkede engelliKimliği kontrol edin
404TRANSCRIPT_NOT_FOUNDVideonun o dilde altyazısı yoktype: "video" mevcut dilleri listeler
400INVALID_PARAMETERör. YouTube'un çeviremediği bir translate_to dili; field hangisi olduğunu söylerBaşka bir dil kullanın
{
  "error": "Bu videonun istenen dilde altyazısı yok",
  "code": "TRANSCRIPT_NOT_FOUND",
  "hint": "type=video, videonun hangi dillerde altyazısı olduğunu listeler. Ücret alınmadı",
  "retryable": false,
  "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}

Krediler ve Sınırlar

İstekÜcret
search veya comments, 20 sonuca kadar$0.0022
search veya comments, 21–40 sonuç$0.0044
search, 200 sonuç (en fazla)$0.022
video$0.0066
transcript$0.0066

Bakiyeden limit kadarının ücreti bloke edilir; kullanılmayan kısım hemen iade edilir. Sonuçsuz bir arama ya da yorum listesi geçerli bir yanıttır ve tek blok olarak ücretlendirilir.

Sonuçlar önbellekte tutulur: arama, video detayları ve yorumlar 24 saat, altyazılar 30 gün. Önbellekten dönen yanıt "cached": true ile işaretlenir ve canlı yanıtla aynı ücreti öder.

Dakikalık ve günlük sınırlar hesabınızda tanımlıdır (429 RATE_LIMIT_EXCEEDED). API kullanıcısı başına aynı anda en fazla 10 istek çalışır; fazlası Retry-After ile 429 TOO_MANY_CONCURRENT_REQUESTS alır.

Son güncelleme: 2026-11-06