4 Adımda Entegrasyon
- SERP API anahtarı oluştur
Kayıt olup giriş yapın → https://www.spindorai.com/api-keys → SERP API sekmesi. Format:
sp_serp_… - POST https://www.spindorai.com/api/public-rank-finder/check
Content-Type: application/json,X-Spindora-Key: sp_serp_… - JSON yanıtı işle
found, position, page ve results[] alanlarını kullanın. Poll gerekmez — tek istek yeterli.
- Attribution göster
Sonuçların yanında: Powered by Spindora → https://www.spindorai.com
Genel Bakış
Spindora SERP API, bir domain ve anahtar kelime için Google (veya DuckDuckGo / Yandex) arama sonuçlarında sıra tespiti yapar. Sonuç anında döner; asenkron kuyruk veya poll yoktur. API key ile kullanımda aylık kota kullanıcı hesabına bağlıdır — tüm SERP anahtarlarınız aynı kotayı paylaşır.
API key zorunlu
Harici isteklerde
Senkron yanıt
POST /check → 200
Attribution
Zorunlu link
Kimlik Doğrulama
Harici entegrasyonlar için geçerli bir SERP API anahtarı zorunludur. Anahtarı panelden oluşturun; tam değer yalnızca oluşturma anında gösterilir.
| Yöntem | Değer |
|---|---|
| Header (önerilen) | X-Spindora-Key: sp_serp_… |
| Bearer | Authorization: Bearer sp_serp_… |
Anahtar oluşturma: https://www.spindorai.com/api-keys (giriş gerekli)
Kota & Planlar
API key ile (harici entegrasyon)
- Kota kullanıcı bazlı aylıktır — tüm SERP anahtarları paylaşır.
- Planlar: Free 50 · Starter 100 · Pro 200 · Pro+ 400 · Enterprise 800 istek/ay.
- Kalan kota:
GET https://www.spindorai.com/api/api-hub/status(Spindora oturum token'ı ile, panelde otomatik görünür). - En fazla 10 aktif SERP anahtarı.
Web arayüzü (/sira-bulucu)
- API key olmadan IP başına günlük limit uygulanır (varsayılan 30/gün).
Plan satın alma: https://www.spindorai.com/api-key-satin-al
İstek Akışı
POST /check
url + keyword gönder
Bekle (≤60s)
SERP taraması sunucuda
200 OK
position + results[]
SEO Analiz API'den farklı olarak task_id ve poll döngüsü yoktur.
İstek Şeması
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
| url | string | Evet | Hedef site (domain veya tam URL) |
| keyword | string | Evet | Aranacak anahtar kelime |
| engine | "google" | "duckduckgo" | "yandex" | Hayır | Varsayılan: google |
| location | string | Hayır | Bölge slug: tr, ankara, istanbul, us, uk, de… |
| locale | "tr" | "en" | Hayır | Hata mesajı dili |
| max_pages | integer 1–10 | Hayır | Taranacak max SERP sayfası (varsayılan 5) |
Uç Noktalar
/checkSıra sorgula — ana entegrasyon uç noktası.
curl -X POST "https://www.spindorai.com/api/public-rank-finder/check" \
-H "Content-Type: application/json" \
-H "X-Spindora-Key: sp_serp_YOUR_KEY_HERE" \
-d '{
"url": "example.com",
"keyword": "seo aracı",
"engine": "google",
"location": "tr",
"locale": "tr",
"max_pages": 5
}'/quotaWeb arayüzü için IP bazlı günlük kota. API key gönderilirse aylık kota için /api-hub/status kullanın.
JSON Yanıt Örnekleri
Bulundu (200)
{
"success": true,
"url": "example.com",
"keyword": "seo aracı",
"engine": "google",
"source": "google",
"location": "tr",
"found": true,
"position": 3,
"page": 1,
"results": [
{
"position": 1,
"page": 1,
"title": "En İyi SEO Araçları",
"url": "https://competitor.com/seo-araclari",
"description": "…",
"is_target": false
},
{
"position": 3,
"page": 1,
"title": "Example — SEO Aracı",
"url": "https://example.com/",
"description": "…",
"is_target": true
}
],
"message": "Siteniz 3. sırada (1. sayfa).",
"attribution": {
"text": "Powered by Spindora",
"url": "https://www.spindorai.com",
"required": true
}
}Bulunamadı (200)
{
"success": true,
"url": "example.com",
"keyword": "çok nadir kelime",
"engine": "google",
"location": "tr",
"found": false,
"position": null,
"page": null,
"results": [],
"message": "İlk 5 sayfada bulunamadı.",
"attribution": {
"text": "Powered by Spindora",
"url": "https://www.spindorai.com",
"required": true
}
}Attribution (Zorunlu)
API modunda yanıtta attribution nesnesi döner. Entegrasyonunuzda sonuçların yakınında görünür olmalıdır:
<a href="https://www.spindorai.com" target="_blank" rel="noopener noreferrer">
Powered by Spindora
</a>Kod Örnekleri
JavaScript (fetch)
const API = 'https://www.spindorai.com/api/public-rank-finder';
const KEY = 'sp_serp_YOUR_KEY_HERE';
async function checkRank(url, keyword) {
const res = await fetch(`${API}/check`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Spindora-Key': KEY,
},
body: JSON.stringify({
url,
keyword,
engine: 'google',
location: 'tr',
locale: 'tr',
max_pages: 5,
}),
});
if (!res.ok) {
const err = await res.json().catch(() => ({}));
throw new Error(err.detail?.message || err.detail || res.statusText);
}
const data = await res.json();
// data.found, data.position, data.page, data.results
return data;
}Python (requests)
import requests
API = "https://www.spindorai.com/api/public-rank-finder"
KEY = "sp_serp_YOUR_KEY_HERE"
HEADERS = {"X-Spindora-Key": KEY, "Content-Type": "application/json"}
def check_rank(url: str, keyword: str) -> dict:
r = requests.post(
f"{API}/check",
headers=HEADERS,
json={
"url": url,
"keyword": keyword,
"engine": "google",
"location": "tr",
"locale": "tr",
"max_pages": 5,
},
timeout=60,
)
r.raise_for_status()
return r.json()
# result["found"], result["position"], result["results"]Node.js
const API = 'https://www.spindorai.com/api/public-rank-finder';
const KEY = 'sp_serp_YOUR_KEY_HERE';
async function checkRank(url, keyword) {
const res = await fetch(`${API}/check`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Spindora-Key': KEY,
},
body: JSON.stringify({
url,
keyword,
engine: 'google',
location: 'tr',
locale: 'tr',
max_pages: 5,
}),
});
if (!res.ok) {
const err = await res.json().catch(() => ({}));
throw new Error(err.detail?.message || err.detail || res.statusText);
}
const data = await res.json();
// data.found, data.position, data.page, data.results
return data;
}PHP
<?php
$api = 'https://www.spindorai.com/api/public-rank-finder';
$key = 'sp_serp_YOUR_KEY_HERE';
function checkRank(string $url, string $keyword): array {
global $api, $key;
$ch = curl_init("$api/check");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
"X-Spindora-Key: $key",
],
CURLOPT_POSTFIELDS => json_encode([
'url' => $url,
'keyword' => $keyword,
'engine' => 'google',
'location' => 'tr',
'locale' => 'tr',
'max_pages' => 5,
]),
CURLOPT_TIMEOUT => 60,
]);
$body = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($code !== 200) {
throw new RuntimeException($body ?: "HTTP $code");
}
return json_decode($body, true);
}Yanıt Alanları
| Alan | Açıklama |
|---|---|
| found | Hedef domain SERP'te bulundu mu |
| position | Global sıra (1 = birinci) |
| page | Bulunduğu SERP sayfa numarası |
| results[] | SERP snippet listesi (position, title, url, is_target) |
| engine | İstenen arama motoru |
| source | Kullanılan veri kaynağı (google, searxng, vb.) |
| message | İnsan okunur özet mesaj |
| attribution | Zorunlu gösterim bilgisi |
Hata Kodları
| HTTP | Anlam | Ne yapmalı |
|---|---|---|
| 401 | Geçersiz veya eksik API anahtarı | sp_serp_ prefix kontrol et |
| 403 | API planının süresi dolmuş | Plan yenile / api-key-satin-al |
| 429 | Aylık kota doldu | Plan yükselt veya gelecek ay bekle |
| 400 | keyword boş veya geçersiz body | keyword alanını doldur |
| 500 | Geçici SERP / sunucu hatası | Kısa süre sonra tekrar dene |
Entegrasyon Kontrol Listesi
- ✓SERP API anahtarı oluşturuldu (sp_serp_…)
- ✓Her POST /check isteğinde X-Spindora-Key gönderiliyor
- ✓found=false durumunda UI kullanıcıya anlamlı mesaj gösteriyor
- ✓429 aylık kota için plan yükseltme yönlendirmesi var
- ✓Sonuç ekranında Powered by Spindora linki görünür
- ✓İstek timeout en az 60 saniye (SERP taraması uzun sürebilir)
AI / LLM için özet
Bir AI asistanına entegrasyon yazdırırken bu metni veya OpenAPI JSON linkini yapıştırın:
# Spindora SERP API — Entegrasyon Özeti
Base URL: https://www.spindorai.com/api/public-rank-finder
Dokümantasyon: https://www.spindorai.com/developers/serp-api
OpenAPI JSON: https://www.spindorai.com/developers/serp-api.openapi.json
API Key: Kayıt ol → giriş yap → https://www.spindorai.com/api-keys → SERP API sekmesinden anahtar oluştur (sp_serp_*)
## Kimlik doğrulama
Header: X-Spindora-Key: sp_serp_YOUR_KEY
Alternatif: Authorization: Bearer sp_serp_YOUR_KEY
## Akış (senkron — poll yok)
POST /check
Body: {"url":"example.com","keyword":"seo aracı","engine":"google","location":"tr","locale":"tr","max_pages":5}
→ HTTP 200 ile position, page, results[] döner
## Kota
Aylık, kullanıcı bazlı (tüm SERP anahtarları paylaşır):
Free 50 | Starter 100 | Pro 200 | Pro+ 400 | Enterprise 800 / ay
Kalan kota: GET https://www.spindorai.com/api/api-hub/status (Spindora oturum JWT ile)
## Zorunluluklar
- Harici entegrasyonda API key zorunlu
- Sonuç UI'ında attribution: Powered by Spindora → https://www.spindorai.com
## Hata kodları
401 geçersiz key | 403 plan süresi dolmuş | 429 aylık kota doldu | 400 eksik keyword | 500 geçici SERP hatasıOpenAPI: https://www.spindorai.com/developers/serp-api.openapi.json