API Platformu

Teknik SEO API

Herhangi bir URL üzerinde kapsamlı teknik SEO denetimi yapın.

Herhangi bir URL üzerinde kapsamlı teknik SEO denetimi yapın. Meta etiketler, başlıklar, bağlantılar, görseller, içerik, URL yapısı ve sosyal etiketler olmak üzere 7 kategoride 27 kontrol — puanlı rapor ve aksiyona dönüştürülebilir sorunlar döndürür.

Ürün sayfası: Teknik SEO API.

Kimlik Doğrulama

Tüm istekler başlık tabanlı kimlik doğrulama gerektirir. Her istekte API kimlik bilgilerinizi ekleyin.

HeaderTypeAçıklama
SEMUST-API-USERstringAPI kullanıcınızın kullanıcı adı
SEMUST-API-PASSWORDstringAPI kullanıcınızın şifresi

API kimlik bilgilerini API Erişim sayfasında doğrulayabilirsiniz.

SEMUST-API-USER: your_username
SEMUST-API-PASSWORD: your_password

Request Parameters

Aşağıdaki parametrelerle bir application/json gövdesi gönderin:

Body

urlstringrequired

Denetlenecek URL. http:// veya https:// ile başlamalıdır (ör: "https://example.com").

render_jsbooleandefault: false

True olduğunda, denetim öncesi JavaScript'i işlemek için headless tarayıcı kullanır. SPA ve JS-ağırlıklı sayfalar için kullanın. Maliyeti artırabilir.

proxy_countrystringdefault: null

Proxy seçimi için ISO 3166-1 alpha-2 ülke kodu (ör: "US", "TR", "DE"). Hedef site coğrafi engelleme yapıyorsa kullanın.

JavaScript İşleme

render_js etkinleştirildiğinde headless tarayıcı kullanılır, bu işlem süresini ve maliyeti artırır. Yalnızca içeriğini göstermek için JavaScript gerektiren sayfalar (SPA, React/Vue uygulamaları) için etkinleştirin.

{
  "url": "https://example.com",
  "render_js": false,
  "proxy_country": "US"
}

Kod Örnekleri

Farklı programlama dillerinde Teknik SEO denetimi nasıl çalıştırılacağını gösteren örnekler.

curl -X POST https://data.semust.com/v1/technical-seo \
  -H "Content-Type: application/json" \
  -H "SEMUST-API-USER: your_username" \
  -H "SEMUST-API-PASSWORD: your_password" \
  -d '{
    "url": "https://example.com",
    "render_js": false
  }'

Response

Kategorize edilmiş denetim sonuçları ve özet puan içeren bir JSON nesnesi döndürür.

Root Response Fields

AlanTypeAçıklama
successbooleanBaşarılı yanıtta her zaman true
urlstringDenetlenen URL
costfloatBu istek için düşülen kredi (USD)
audit_resultsobjectKategoriye göre gruplandırılmış denetim sonuçları (meta, başlıklar, bağlantılar, görseller, içerik, url_analizi, sosyal)
summaryobjectToplu istatistikler: toplam kontrol, ciddiyet seviyesine göre sorunlar ve genel puan

Audit Result Structure

Her kategorideki denetim aynı yapıyı izler:

AlanTypeAçıklama
statusstring"pass", "fail" veya "error" — denetim sonucu
severitystring"critical", "warning" veya "notice" — etki seviyesi
issuestringSorun kodu tanımlayıcısı (yalnızca status "fail" olduğunda mevcut)
dataobjectKontrole özgü ayrıntılı veriler (her denetime göre değişir)

Summary Object Fields

AlanTypeAçıklama
total_checksintegerYapılan toplam denetim sayısı
passed_checksintegerGeçen denetim sayısı
total_issuesintegerBaşarısız olan denetim sayısı
critical_issuesintegerKritik ciddiyet seviyesindeki başarısızlık sayısı
warning_issuesintegerUyarı ciddiyet seviyesindeki başarısızlık sayısı
notice_issuesintegerBilgi ciddiyet seviyesindeki başarısızlık sayısı
scoreintegerGenel puan (0-100) — geçen kontrollerin yüzdesi
{
  "success": true,
  "url": "https://example.com",
  "cost": 0.0012,
  "audit_results": {
    "meta": {
      "title": {
        "status": "fail",
        "severity": "warning",
        "issue": "long_title",
        "data": { "title": "Very Long Page Title...", "length": 66 }
      },
      "meta_description": {
        "status": "pass",
        "severity": "warning",
        "data": { "meta_description": "Page description...", "length": 93 }
      },
      "canonical_url": {
        "status": "pass",
        "severity": "warning",
        "data": { "current_url": "https://example.com", "canonical_url": "https://example.com" }
      },
      "robots_noindex": { "status": "pass", "severity": "critical", "data": {} },
      "viewport": {
        "status": "pass",
        "severity": "critical",
        "data": { "content": "width=device-width, initial-scale=1" }
      }
    },
    "headings": {
      "missing_h1": {
        "status": "pass",
        "severity": "critical",
        "data": { "h1_count": 1, "h1_text": "Welcome" }
      },
      "broken_heading_structure": {
        "status": "fail",
        "severity": "warning",
        "issue": "broken_heading_structure",
        "data": { "total_count": 12, "skipped_levels": 1 }
      }
    },
    "images": {
      "images_without_alt": { "status": "pass", "severity": "warning", "data": { "total_images": 10 } },
      "missing_image_dimensions": {
        "status": "fail",
        "severity": "warning",
        "issue": "missing_image_dimensions",
        "data": { "total_images": 10, "count": 5 }
      }
    },
    "content": {
      "low_word_count": { "status": "pass", "severity": "warning", "data": { "word_count": 684 } },
      "low_html_text_ratio": {
        "status": "fail",
        "severity": "warning",
        "issue": "low_html_text_ratio",
        "data": { "text_to_html_ratio": 8.08 }
      }
    }
  },
  "summary": {
    "total_checks": 27,
    "passed_checks": 23,
    "total_issues": 4,
    "critical_issues": 0,
    "warning_issues": 4,
    "notice_issues": 0,
    "score": 85
  }
}

Audit Kontrolleri (27)

Meta Etiketler (8)

AuditSeverityAçıklama
titlecriticalEksik, çok kısa (≤10 karakter) veya çok uzun (>60 karakter) title etiketi kontrolü
meta_descriptionwarningEksik, çok kısa (<50 karakter) veya çok uzun (>160 karakter) meta açıklama kontrolü
canonical_urlwarningEksik, birden fazla veya uyumsuz canonical URL kontrolü
robots_noindexcriticalRobots veya googlebot meta etiketlerinde noindex direktifi algılama
viewportcriticalEksik veya geçersiz viewport meta etiketi kontrolü (width=device-width içermeli)
missing_langwarningHTML etiketinin lang özniteliğine sahip olduğunu kontrol eder
noindex_canonical_conflictcriticalSayfada hem noindex hem canonical URL bulunması çakışmasını algılar
hreflangwarningHreflang uygulamasını doğrular: dil kodları, x-default, kendi kendine referans etiketleri

Başlıklar (4)

AuditSeverityAçıklama
missing_h1criticalSayfada en az bir H1 etiketi olduğunu kontrol eder
multiple_h1_tagswarningSayfada tam olarak bir H1 etiketi olduğunu kontrol eder (birden fazla değil)
duplicate_h1_tagswarningH1 etiketlerinin aynı metne sahip olmadığını kontrol eder
broken_heading_structurewarningBaşlık hiyerarşisini doğrular (H1→H2→H3), atlanan seviye veya boş başlık olmamalı

Bağlantılar (5)

AuditSeverityAçıklama
empty_anchor_textwarningBağlantı etiketlerinin metin içeriğine sahip olduğunu kontrol eder (boş değil)
non_descriptive_anchorsnotice"Buraya tıklayın" veya "devamını oku" gibi açıklayıcı olmayan bağlantı metinlerini kontrol eder
internal_links_nofollowwarningİç bağlantıların nofollow özniteliğine sahip olmadığını kontrol eder
too_many_internal_linkswarningSayfada çok fazla iç bağlantı varsa uyarır (eşik değişir)
too_many_external_linkswarningSayfada çok fazla dış bağlantı varsa uyarır (eşik: 100)

Görseller (2)

AuditSeverityAçıklama
images_without_altwarningGörsellerin erişilebilirlik için alt özniteliğine sahip olduğunu kontrol eder
missing_image_dimensionswarningGörsellerin width ve height özniteliklerine sahip olduğunu kontrol eder (CLS'yi önler)

İçerik (4)

AuditSeverityAçıklama
low_word_countwarningAna içeriğin en az 200 kelime içerdiğini kontrol eder
low_html_text_ratiowarningMetin-HTML oranının %10'un üzerinde olduğunu kontrol eder
lorem_ipsumnoticeSayfa içeriğinde "lorem ipsum" yer tutucu metni algılar
page_sizewarningHTML boyutunu (<3MB) ve DOM element sayısını (<1500) kontrol eder

URL Analizi (2)

AuditSeverityAçıklama
http_urlcriticalURL'nin HTTP değil HTTPS kullandığını kontrol eder
long_urlnoticeURL 75 karakteri aşarsa uyarır

Sosyal Etiketler (2)

AuditSeverityAçıklama
open_graphwarningGerekli Open Graph etiketlerini kontrol eder: og:title, og:description, og:image, og:url, og:type
twitter_cardnoticeTwitter Card meta etiketlerini kontrol eder: card, title, description, image

Hata Kodları

Tüm hatalar, insan tarafından okunabilir bir mesaj ve bir hata kodu içeren bir JSON nesnesi döndürür.

HTTPKodAnlamı
400INVALID_REQUESTİstek gövdesi hatalı biçimlendirilmiş veya gerekli alanlar eksik
400URL_REQUIREDurl alanı zorunludur
400INVALID_URLGeçersiz URL formatı veya şeması — http:// veya https:// ile başlamalıdır
401INVALID_API_KEYKimlik doğrulama başarısız — geçersiz kullanıcı adı veya şifre
402INSUFFICIENT_CREDITSHesabınızda yeterli kredi yok
500INTERNAL_ERRORBir iç sunucu hatası oluştu
502AUDIT_FAILEDHedef URL denetlenemedi
502TARGET_BLOCKEDHedef web sitesi otomatik erişimi aktif olarak engelliyor (403 Forbidden)
502TARGET_UNREACHABLEHedefe ulaşılamıyor — DNS hatası, bağlantı zaman aşımı veya ağ hatası
502SCRAPE_FAILEDSayfanın alınmasında genel hata
504TIMEOUTİstek zaman aşımına uğradı (maksimum 2 dakika)
{
  "error": "Your account does not have enough credits",
  "code": "INSUFFICIENT_CREDITS"
}

Krediler & Rate Limits

Krediler

Her istek bakiyenizden kredi tüketir. Maliyet, render_js parametresine göre değişir (JS işleme daha pahalıdır). Başarısız istekler otomatik olarak iade edilir.

Rate Limits

İstekler, planınıza göre dakika başına ve gün başına sınırlara tabidir. Sınırların aşılması HTTP 429 döndürür.

Son güncelleme: 2026-08-22