API Platformu

Backlink API

Herhangi bir domain, subdomain veya sayfa için backlink profili, referans domainler, anchor metinleri, rakipler ve geçmiş link verilerini alın.

Herhangi bir domain, subdomain veya sayfa için backlink profili, referans domainler, anchor metinleri, rakipler ve geçmiş link verilerini alın. Tek bir endpoint, type parametresiyle seçilen sekiz farklı rapor sunar.

Ürün sayfası: Backlink API.

Kimlik Doğrulama

Tüm istekler header 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 bilgilerinizi API Erişim sayfasından oluşturabilirsiniz.

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

Rapor Tipleri

type parametresi hangi raporu alacağınızı belirler. Sekiz raporun tamamı aynı endpoint, kimlik doğrulama ve fiyatlandırmayı paylaşır.

typeDöndürdüğü veri
summaryTek bir metrik bloğu: toplamlar, referans domainler, spam skorları ve dağılımlar
historyAynı metriklerin aylık serisi
backlinksBacklinklerin kendisi
referring_domainsHedefe link veren domainler, gruplanmış
anchorsAnchor metinleri, gruplanmış
competitorsBacklink profili örtüşen domainler
pagesHedefin kendi sayfaları, aldıkları backlink sayısına göre
timeseriesZaman içinde kazanılan ve kaybedilen link sayıları

Varsayılan summary raporudur. Tek bir row döndürür, böylece type belirtilmeden gönderilen bir request en düşük ücreti alır.

{
  "target": "example.com",
  "type": "backlinks",
  "limit": 100
}

Request Parameters

application/json bir Body gönderin. Seçilen type için geçerli olmayan parametreler yok sayılmaz, reddedilir — böylece bir yazım hatası sessizce beklediğinizden farklı bir sonuç döndürmez.

Body

targetstringrequired

Domain, subdomain veya sayfa URL'i. Domain sorgularında protokol ve www. otomatik olarak temizlenir.

typestringdefault: summary

Hangi raporun döneceğini belirler. Yukarıdaki Rapor Tipleri bölümüne bakın.

scopestringdefault: domain

domain tüm subdomainleri kapsar, host yalnızca belirtilen host'u, url tek bir sayfayı kapsar. url kullanırken target http:// veya https:// içermelidir.

statusstringdefault: live

live hâlâ duran linkleri, lost kaybolmuş linkleri, all ikisini birden döndürür. history, timeseries ve competitors raporlarında kabul edilmez — bu raporlarda link durumu boyutu yoktur.

limitintegerdefault: 100

Dönecek row sayısı, 1–1000. Row döndüren raporlar için geçerlidir.

offsetintegerdefault: 0

Atlanacak row sayısı, 0–20000. Daha ilerisi için cursor kullanın.

cursorstring

next_cursor alanından gelen sayfalama token'ı. Yalnızca type: "backlinks" destekler. offset ile birlikte kullanılamaz.

group_bystringdefault: none

none tüm backlinkleri, domain her referans domain için bir tane, anchor her anchor metni için bir tane döndürür. Yalnızca type: "backlinks" için.

include_subdomainsbooleandefault: true

Hedefin subdomainlerine gelen linkleri dahil eder. history raporunda kabul edilmez.

exclude_internalbooleandefault: true

Hedefin kendi domaininden gelen linkleri hariç tutar. history ve timeseries raporlarında kabul edilmez.

include_redirectsbooleandefault: true

Hedefe redirect veya canonical üzerinden ulaşan linkleri dahil eder. history, timeseries ve competitors raporlarında kabul edilmez.

filtersarray

Response alanları üzerinde filtre ifadesi. Aşağıdaki Filtreler bölümüne bakın.

order_byarray

En fazla 3 sıralama kuralı; her biri "field,asc" veya "field,desc" biçiminde.

date_fromstring

Başlangıç tarihi, YYYY-MM-DD. history ve timeseries için. Default olarak 12 ay öncesidir; 2019-02-01 öncesi bu tarihe sabitlenir.

date_tostring

Bitiş tarihi, YYYY-MM-DD. Default olarak bugündür.

granularitystringdefault: month

timeseries için periyot boyutu: day, week, month veya year.

include_breakdownsbooleandefault: false

history response'unda her noktaya links_by_* dağılımlarını ekler. Payload'ı belirgin şekilde büyüttüğü için default olarak kapalıdır.

breakdown_limitintegerdefault: 25

Her links_by_* dağılımında tutulacak kayıt sayısı, 1–1000. Sayıya göre azalan sırada tutulur.

idempotency_keystring

Opsiyonel. 24 saat içinde aynı key ile tekrarlanan request, saklanan response'u ücretsiz döndürür; böylece timeout alan bir request güvenle tekrarlanabilir.

Tarih aralığı ücreti etkiler

history raporu, aralıktaki her ay için bir row ücretlendirir. Tarih belirtmezseniz tüm arşiv yerine son 12 ay döner; bu da tarih verilmeyen bir request'i ucuz tutar.

{
  "target": "example.com",
  "type": "backlinks",
  "scope": "domain",
  "status": "live",
  "limit": 100,
  "filters": [
    ["is_dofollow", "=", true],
    "and",
    ["source_domain_rate", ">=", 40]
  ],
  "order_by": ["source_domain_rate,desc"]
}

Filtreler

filters tek bir koşul ya da "and" / "or" ile birleştirilmiş koşul dizisi alır. Bir koşul [field, operator, value] biçimindedir. İki operatörü birlikte kullanmak için diziyi iç içe yazın — tek bir grup ikisini karıştıramaz, bu da öncelik belirsizliğini önler.

Kullanılabilir operatörler alanın tipine göre değişir:

TypeOperatörler
boolean=, <>
integer<, <=, >, >=, =, <>, in, not_in
string=, <>, in, not_in, like, not_like, ilike, not_ilike, match, not_match, regex, not_regex
enum=, <>, in, not_in
datetime<, <=, >, >=, =

like kalıplarında % joker karakterdir. Datetime değerleri RFC3339 biçimindedir.

Limitler: 8 koşul, 3 sıralama kuralı, 3 seviye iç içe yapı, regex için 1000 karakter, diğer string'ler için 255 karakter.

GET /v1/backlinks/filters, her rapor tipi için filtrelenebilir ve sıralanabilir alanları kabul ettikleri operatörlerle birlikte döndürür — tek bir rapor için ?type=backlinks ekleyin.

{
  "target": "example.com",
  "type": "backlinks",
  "filters": ["source_domain", "like", "%.edu"]
}

Kod Örnekleri

Farklı dillerde backlink listesi çeken tam örnekler.

curl -X POST https://data.semust.com/v1/backlinks \
  -H "SEMUST-API-USER: your_username" \
  -H "SEMUST-API-PASSWORD: your_password" \
  -H "Content-Type: application/json" \
  -d '{
    "target": "example.com",
    "type": "backlinks",
    "limit": 100,
    "filters": [["is_dofollow", "=", true]],
    "order_by": ["source_domain_rate,desc"]
  }'

Sayfalama

Row döndüren raporlar 20.000'e kadar offset kabul eder. Bunun ötesi için bir önceki response'taki next_cursor değerini bir sonraki request'te cursor olarak gönderin. Cursor'lar hesabınıza ve onu üreten sorgunun tam haline bağlıdır; bu yüzden sayfalama sırasında filtreler değiştirilemez ve cursor'lar 30 dakika sonra geçersiz olur.

Başka row kalmadığında next_cursor değeri null olur. Yalnızca type: "backlinks" cursor döndürür.

{
  "target": "example.com",
  "type": "backlinks",
  "limit": 1000
}

Response

Her rapor aynı zarfı döndürür. results row'ları içerir; summary bunun yerine tek bir result nesnesi döndürür.

total, sorgunuzla eşleşen kayıtların yaklaşık sayısıdır; dönen row sayısı değildir — bunun için count alanını kullanın.

{
  "success": true,
  "cached": false,
  "cost": 0.030360,
  "type": "backlinks",
  "target": "example.com",
  "scope": "domain",
  "total": 337785,
  "count": 100,
  "limit": 100,
  "next_cursor": "bl_4f2c8a91d0e34b7c9a15e8f60b2d7c43",
  "results": [
    {
      "source_url": "https://blog.example.de/seo-tools",
      "source_domain": "blog.example.de",
      "target_url": "https://example.com/",
      "target_domain": "example.com",
      "source_tld": "de",
      "anchor_text": "example seo tools",
      "anchor_type": "branded",
      "image_url": null,
      "image_alt": null,
      "context_before": "we recommend",
      "context_after": "for link research",
      "link_type": "text",
      "link_position": "content",
      "is_dofollow": true,
      "is_ugc": false,
      "is_sponsored": false,
      "rel_attributes": [],
      "via_redirect": false,
      "identical_links_count": 1,
      "is_new": false,
      "is_live": true,
      "is_broken": false,
      "first_seen": "2024-02-12T03:09:59Z",
      "last_seen": "2026-08-16T18:51:04Z",
      "link_rate": 70,
      "source_page_rate": 81,
      "source_domain_rate": 65,
      "source_spam_score": 0,
      "target_spam_score": 0,
      "source_type": "blog",
      "source_country": "DE",
      "source_language": "de",
      "source_page_title": "The best SEO tools in 2026",
      "source_page_status_code": 200,
      "source_page_size_bytes": 28259,
      "source_page_internal_links": 31,
      "source_page_external_links": 4,
      "target_status_code": 200,
      "target_redirect_url": null
    }
  ]
}

Response Alanları

Zarf

AlanTypeAçıklama
successbooleanRequest başarılıysa true
cachedbooleanCache'den indirimli ücretle sunulduysa true
costnumberBu request'in USD cinsinden ücreti
typestringDönen rapor tipi
targetstringNormalize edilmiş target
scopestringUygulanan scope
totalintegerEşleşen kayıtların yaklaşık sayısı
countintegerBu response'taki row sayısı
limitintegerUygulanan limit
offsetintegerUygulanan offset
next_cursorstring | nullSonraki sayfa için cursor olarak gönderin
resultsarraysummary dışındaki tüm raporlarda row'lar
resultobjectsummary için tek metrik bloğu
AlanTypeAçıklama
source_urlstringLinki içeren sayfa
source_domainstringLink veren sayfanın host'u, www. olmadan
target_urlstringLink verilen URL
target_domainstringLink verilen host
source_tldstringLink veren domainin TLD'si
anchor_textstringGörünen tıklanabilir metin
anchor_typestringexact, branded, naked_url, generic, partial, image, empty veya other
image_urlstring | nullGörsel linklerinde görselin kaynağı
image_altstring | nullLinklenen görselin alt metni
context_beforestring | nullAnchor'dan hemen önceki metin
context_afterstring | nullAnchor'dan hemen sonraki metin
link_typestringtext, image, redirect, canonical, alternate, meta, feed, form veya other
link_positionstringcontent, nav, header, footer veya sidebar
is_dofollowbooleanLinkin otorite aktarıp aktarmadığı
is_ugcbooleanKullanıcı içeriği olarak işaretlenmiş
is_sponsoredbooleanÜcretli olarak işaretlenmiş
rel_attributesarrayAnchor üzerindeki rel değerleri
via_redirectbooleanRedirect veya canonical üzerinden ulaşılmış
identical_links_countintegerKaynak sayfadaki aynı linkin kopya sayısı
is_newbooleanEn son tarama döneminde ortaya çıkmış
is_livebooleanLink hâlâ yerinde
is_brokenboolean4xx veya 5xx dönen bir sayfayı işaret ediyor
first_seenstring | nullİlk görülme zamanı, RFC3339
last_seenstring | nullEn son görülme zamanı, RFC3339
link_ratenumberBu linkin aktardığı otorite, 0–100
source_page_ratenumberLink veren sayfanın otoritesi, 0–100
source_domain_ratenumberLink veren domainin otoritesi, 0–100
source_spam_scoreintegerKaynağın spam olasılığı, 0–100
target_spam_scoreinteger | nullLinklenen sayfanın spam olasılığı
source_typestringblog, forum, news, business, wiki, ecommerce veya other
source_countrystring | nullLink veren sunucunun ülkesi, ISO 3166-1 alpha-2
source_languagestring | nullLink veren sayfanın tespit edilen dili
source_page_titlestring | nullLink veren sayfanın başlığı
source_page_status_codeinteger | nullLink veren sayfanın HTTP status'ü
source_page_size_bytesinteger | nullLink veren sayfanın byte boyutu
source_page_internal_linksinteger | nullLink veren sayfadaki internal link sayısı
source_page_external_linksinteger | nullLink veren sayfadaki external link sayısı
target_status_codeinteger | nullLinklenen sayfanın HTTP status'ü
target_redirect_urlstring | nullLinklenen sayfanın yönlendirdiği adres

Buradaki null sıfır değil, bilinmiyor demektir — crawler'ın çekmediği bir sayfanın status code'u yoktur ve bunu 0 saymak yanıltıcı olurdu.

Summary ve history metrikleri

AlanTypeAçıklama
semust_ratenumberHedefin otoritesi, 0–100
total_backlinksintegerTüm backlinkler
dofollow_backlinksintegerOtorite aktaran backlinkler
nofollow_backlinksintegerNofollow işaretli backlinkler
broken_backlinksintegerKırık sayfalara işaret eden backlinkler
broken_pagesinteger4xx veya 5xx dönen hedef sayfalar
avg_spam_scoreintegerBacklinklerin ortalama spam skoru
referring_domainsintegerHedefe link veren benzersiz domainler
referring_domains_dofollowintegerYalnızca dofollow link veren domainler
referring_domains_nofollowintegerEn az bir nofollow linki olan domainler
referring_root_domainsintegerBenzersiz kök domainler
referring_ipsintegerBenzersiz IP adresleri
referring_subnetsintegerBenzersiz subnet sayısı
referring_pagesintegerHedefe link veren benzersiz sayfalar
text_links_countintegerMetin linkleri
image_links_countintegerGörsel linkleri
redirect_links_countintegerRedirect linkleri
internal_links_countintegerHedefteki internal link sayısı
outgoing_links_countintegerHedeften çıkan link sayısı
links_by_tldobjectTLD'ye göre link sayısı
links_by_typeobjectLink tipine göre link sayısı
links_by_attributeobjectrel özelliğine göre link sayısı
links_by_positionobjectSayfadaki konuma göre link sayısı
links_by_countryobjectÜlkeye göre link sayısı
links_by_source_typeobjectSite türüne göre link sayısı

referring_domains_dofollow

referring_domains_nofollow, en az bir nofollow linki olan her domaini sayar. Bu nedenle referring_domains_dofollow, yalnızca dofollow link veren domain sayısıdır — en az bir dofollow linki olanların sayısı değil.

history her noktaya date, new_backlinks, lost_backlinks, new_referring_domains ve lost_referring_domains alanlarını ekler. include_breakdowns true olmadıkça links_by_* dağılımları boş döner.

Hata Kodları

StatusCodeAçıklama
400INVALID_REQUESTBody hatalı veya bir parametre bu type için geçerli değil
400TARGET_REQUIREDtarget alanı eksik
400INVALID_TARGETtarget geçerli bir domain veya URL değil
400INVALID_TYPEBilinmeyen type
400INVALID_FILTERBilinmeyen alan, alana uygun olmayan operatör veya çok fazla koşul
400INVALID_ORDER_BYBilinmeyen sıralama alanı veya 3'ten fazla kural
400INVALID_DATE_RANGEdate_from, date_to'dan sonra veya tarihler okunamıyor
400INVALID_CURSORCursor bilinmiyor, süresi dolmuş veya bu request için geçerli değil
401INVALID_CREDENTIALSKullanıcı adı veya şifre hatalı
402INSUFFICIENT_CREDITSBu request için yeterli bakiye yok
403SERVICE_NOT_ENABLEDBacklink servisi hesabınızda etkin değil
403IP_NOT_WHITELISTEDIP adresiniz whitelist'te değil
409REQUEST_IN_PROGRESSAynı idempotency_key ile bir request zaten çalışıyor
413REQUEST_TOO_LARGERequest body 64 KB sınırını aşıyor
429RATE_LIMIT_EXCEEDEDÇok fazla request
502REQUEST_FAILEDRequest tamamlanamadı
504TIMEOUTRequest zaman aşımına uğradı

Yukarıdaki tüm 4xx durumları ücretlendirmeden önce kontrol edilir; reddedilen bir request hiçbir ücret oluşturmaz.

Hatalar bir request_id içerir. Destek ile iletişime geçerken bu değeri paylaşırsanız nedenini tam olarak bulabiliriz.

{
  "error": "invalid filter: unknown field \"domain_rating\"",
  "code": "INVALID_FILTER"
}

Krediler & Rate Limits

Krediler

Fiyatlandırma, her request için sabit bir ücret ve dönen her row için ek ücretten oluşur:

cost = $0.0264 + (rows / 1000) x $0.0396
Dönen rowÜcret
0$0.026400
1 (summary)$0.026440
100$0.030360
500$0.046200
1000 (maksimum)$0.066000

Hiçbir sonuç bulunmayan bir request de sabit ücreti öder. Daha az row istemek daha ucuzdur; bu yüzden limit değerini gerçekten ihtiyacınız olan sayıya ayarlayın.

history ve timeseries, aralıktaki her periyot için bir row ücretlendirir.

Cache

Aynı request'ler cache'lenir ve response'ta "cached": true ile birlikte sabit $0.005 ücretle sunulur. Çoğu rapor 24 saat, history ise aylık güncellendiği için 7 gün cache'lenir.

Rate Limits

Rate limitler API kullanıcısı bazındadır ve hesabınızda tanımlıdır. Aşıldığında 429 RATE_LIMIT_EXCEEDED döner. Ayrıntılar için Rate Limits sayfasına bakın.

Son güncelleme: 2026-08-29