Kısa yanıt
LLMWebSearch search endpoint'i hangi parametreleri alır?
LLMWebSearch'in /search endpoint'i yalnızca q gerektirir. İsteğe bağlı parametreler kaç sonuç döneceğini (max_results), kaç sayfanın okunacağını (read), içerik formatını ve uzunluğunu, haber veya web, bir zaman aralığını, ülke ve dili ve tutulacak veya çıkarılacak domainleri belirler. 3 sayfaya kadar okuma 1 krediye mal olur, Ekim 2026 itibarıyla $1,20/1K arama'den. KYC yok; kripto ile ödeme yapın.
/search at a glance
| Yöntemler | JSON gövdesiyle POST veya aynı adları sorgu dizesinde taşıyan GET |
|---|---|
| URL | https://llmwebsearch.com/api/v1/search |
| Zorunlu | q: 1 ila 400 karakter; arama operatörleri yazıldığı gibi iletilir |
| Varsayılanlar | 5 sonuç, ilk 3 okunur, sayfa başına 6.000 karaktere kadar Markdown |
| Faturalama | Bir kredi bir aramayı karşılar: en fazla 20 sıralı sonuç, ilk 3'ün sayfaları okunur ve Markdown olarak döndürülür. 4 ile 10 arası sayfa okumak 2 kredi eder. Hata ile biten bir çağrı hiçbir ücrete tabi değildir |
| Sonuçlar | Sonuçlar çağrınız anında çalıştırılan canlı bir web aramasından, arama motorunun sıraladığı sırayla gelir; hiçbir şey eski bir dizinden sunulmaz |
| Filtreler | Sonuçların ülkesini ve dilini, bir zaman aralığını (son gün, hafta, ay veya yıl), web veya haber sonuçlarını ve dahil edilecek ya da hariç tutulacak alan adlarını seçin |
| Sayfa okuyucusu | LLMWebSearch/1.0 (+https://llmwebsearch.com/bot/) |
Web'de arama yapın ve en iyi sonuçları okuyun (POST)
POST/api/v1/search
Canlı bir web araması çalıştırır ve sıralanmış sonuçlar döndürür. İlk read sonucun sayfaları paralel olarak getirilir ve ana içerikleri content olarak döndürülür. Örnek, API anahtarlarının nasıl döndürüleceğini sorar; başlıklar, tarihler ve değerler örnektir.
Kimlik doğrulama: Authorization: Bearer API_KEY başlığında API anahtarı.
İstek gövdesi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
q | string | Evet | Arama sorgusu, 1 ila 400 karakter. Tırnak işaretleri ve site: gibi operatörler yazıldığı gibi korunur. |
max_results | integer | Hayır | Sıralanmış sonuç sayısı, 1 ila 20. Varsayılan 5. |
read | integer | Hayır | İlk sonuçlardan kaçının okunup içeriğiyle döndürüleceği, 0 ila 10. Varsayılan 3. 4'ten itibaren çağrı 2 krediye mal olur. |
format | string | Hayır | Sayfa içeriği için markdown (varsayılan) veya text. |
max_chars | integer | Hayır | Her sayfanın içeriğinin uzunluk sınırı, 500 ila 50.000 karakter. Varsayılan 6.000. |
topic | string | Hayır | web (varsayılan) veya news. |
time_range | string | Hayır | day, week, month veya year. Varsayılan yok: herhangi bir tarih. |
country | string | Hayır | Aramanın çalıştırılacağı yer için iki harfli ülke kodu (ISO 3166-1 alpha-2). Varsayılan us. |
language | string | Hayır | Sonuçların dili, örneğin en, de veya pt-BR. Varsayılan en. |
include_domains | string[] | Hayır | 20'ye kadar domain; yalnızca bu domainlerden ve alt domainlerinden gelen sonuçlar tutulur. |
exclude_domains | string[] | Hayır | Sonuçları çıkarılacak 20'ye kadar domain. |
{
"q": "how to rotate api keys without downtime",
"max_results": 5,
"read": 3,
"max_chars": 6000
}{
"q": "open source license change",
"topic": "news",
"time_range": "week",
"include_domains": [
"news.example.com",
"example.org"
],
"read": 0
}Yanıt 200
{
"query": "how to rotate api keys without downtime",
"created_at": "2026-10-22T10:15:04Z",
"credits_used": 1,
"results": [
{
"position": 1,
"title": "Rotating API keys",
"url": "https://docs.example.com/security/key-rotation",
"host": "docs.example.com",
"snippet": "Create a second key, deploy it everywhere, then revoke the first one.",
"published_at": "2026-09-30",
"content_status": "ok",
"content": "# Rotating API keys\n\n## Zero-downtime rotation\n\n1. Create a second key.\n2. Deploy it to every service.\n3. Revoke the old key.",
"word_count": 948
},
{
"position": 2,
"title": "Key rotation checklist",
"url": "https://blog.example.org/key-rotation-checklist",
"host": "blog.example.org",
"snippet": "Keep two keys active during the switch and alert on the old one.",
"content_status": "blocked_by_robots"
},
{
"position": 3,
"title": "Secrets management basics",
"url": "https://security.example.net/secrets-basics",
"host": "security.example.net",
"snippet": "Never commit keys to a repository.",
"published_at": "2026-06-12",
"content_status": "ok",
"content": "# Secrets management basics\n\n**Never** commit keys to a repository...",
"word_count": 1310
},
{
"position": 4,
"title": "API key best practices",
"url": "https://dev.example.com/api-key-best-practices",
"host": "dev.example.com",
"snippet": "Scope each key to one service and one environment.",
"content_status": "not_requested"
}
]
}Kod örnekleri
curl -s "https://llmwebsearch.com/api/v1/search" \
-H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"q": "how to rotate api keys without downtime", "max_results": 5, "read": 3}'import os
import requests
resp = requests.post(
"https://llmwebsearch.com/api/v1/search",
headers={"Authorization": "Bearer " + os.environ["LLMWEBSEARCH_API_KEY"]},
json={"q": "how to rotate api keys without downtime", "max_results": 5, "read": 3},
timeout=60,
)
resp.raise_for_status()
for r in resp.json()["results"]:
print(r["position"], r["content_status"], r["url"])const res = await fetch('https://llmwebsearch.com/api/v1/search', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.LLMWEBSEARCH_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ q: 'how to rotate api keys without downtime', max_results: 5, read: 3 }),
});
const { results } = await res.json();
for (const r of results) console.log(r.position, r.content_status, r.url);Web'de arama yapın (GET)
GET/api/v1/search
Parametrelerin sorgu dizesinde URL kodlanmış olarak yer aldığı aynı arama. include_domains gibi listeler tek bir virgülle ayrılmış değer olarak yazılır. Hızlı bir test veya yalnızca GET istekleri gönderen araçlar için kullanışlıdır. Örnek yalnızca sonuç ister (read=0).
Kimlik doğrulama: Authorization: Bearer API_KEY başlığında API anahtarı.
Parametreler
| Ad | Konum | Tür | Zorunlu | Açıklama |
|---|---|---|---|---|
q | query | string | Evet | Arama sorgusu, URL ile kodlanmış, 1 ila 400 karakter. |
max_results | query | integer | Hayır | 1 ila 20. Varsayılan 5. |
read | query | integer | Hayır | 0 ila 10. Varsayılan 3; 4 veya daha fazlası 2 kredi tutar. |
format | query | string | Hayır | markdown (varsayılan) veya text. |
max_chars | query | integer | Hayır | Sayfa başına 500 ila 50.000. Varsayılan 6.000. |
topic | query | string | Hayır | web (varsayılan) veya news. |
time_range | query | string | Hayır | day, week, month veya year. |
country | query | string | Hayır | ISO 3166-1 alpha-2 kodu. Varsayılan us. |
language | query | string | Hayır | Dil kodu. Varsayılan en. |
include_domains | query | string | Hayır | Virgülle ayrılmış liste, en fazla 20 alan adı. |
exclude_domains | query | string | Hayır | Virgülle ayrılmış liste, en fazla 20 alan adı. |
api_key | query | string | Hayır | Authorization header'ını göndermediğinizde kullanacağınız API anahtarınız. |
Yanıt 200
{
"query": "postgres connection pooling",
"created_at": "2026-10-22T10:21:47Z",
"credits_used": 1,
"results": [
{
"position": 1,
"title": "Connection pooling explained",
"url": "https://docs.example.com/db/pooling",
"host": "docs.example.com",
"snippet": "A pool keeps a few database connections open and lends them to requests.",
"content_status": "not_requested"
},
{
"position": 2,
"title": "Sizing a connection pool",
"url": "https://blog.example.org/pool-size",
"host": "blog.example.org",
"snippet": "Start small: the right size depends on cores and disk, not on traffic.",
"published_at": "2026-03-04",
"content_status": "not_requested"
}
]
}Kod örnekleri
curl -sG "https://llmwebsearch.com/api/v1/search" \
-H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
--data-urlencode "q=postgres connection pooling" \
-d max_results=10 -d read=0import os
import requests
resp = requests.get(
"https://llmwebsearch.com/api/v1/search",
headers={"Authorization": "Bearer " + os.environ["LLMWEBSEARCH_API_KEY"]},
params={"q": "postgres connection pooling", "max_results": 10, "read": 0},
timeout=60,
)
print([r["url"] for r in resp.json()["results"]])const params = new URLSearchParams({ q: 'postgres connection pooling', max_results: '10', read: '0' });
const res = await fetch(`https://llmwebsearch.com/api/v1/search?${params}`, {
headers: { Authorization: `Bearer ${process.env.LLMWEBSEARCH_API_KEY}` },
});
console.log((await res.json()).results.map((r) => r.url));Sayfa içeriği olmadan sonuçları nasıl alırım?
read değerini 0 yapın. Her sonuç ardından başlığı, URL'si, host'u, snippet'i ve tarihiyle, ayrıca content_status: "not_requested" ile döner. Yanıt çok daha küçüktür; bu da agent'ın yalnızca hangi bağlantıların önemli olduğunu seçmesi gerektiğinde işe yarar.
Fiyat 1 kredi olarak kalır, yani en fazla 3 sayfa okumakla aynıdır. Yaygın bir kalıp, önce kısa liste çıkarmak için read=0 araması yapmak, ardından modelin seçtiği iki veya üç URL üzerinde extract çağrısı yapmaktır.
Bir arama ne zaman 2 kredi tutar?
read değeri 4 ile 10 arasında olduğunda. Daha fazla sayfa okumak bizim tarafımızda daha fazla iş demektir, bu yüzden fiyat bir kez ikiye katlanır ve en fazla 10 sayfaya kadar 2 kredide kalır.
Her yanıttaki credits_used, çağrının ne kadar tuttuğunu gösterir. Bir robots.txt kuralı veya bir ret nedeniyle okunamayan bir sayfa bu fiyatı ne düşürür ne de yükseltir. Çoğu zaman yalnızca birkaç tam sayfaya ihtiyacınız varsa read değerini 3'te tutun ve nadir ekstra sayfa için /extract çağrısı yapın.
Güncel haberleri nasıl ararım?
topic: "news" ve bir time_range gönderin. Sonuçlar ardından haber makalelerinden gelir ve time_range yalnızca son day, week, month veya year içindekileri tutar. published_at, makale veya arama sonucu bir tarih belirttiğinde doldurulur.
Aynı tazelik filtresi topic: "web" ile de çalışır. Son sürümler veya fiyat değişiklikleri gibi eski bir sayfanın modeli yanıltacağı sorular için kullanışlıdır.
curl -s "https://llmwebsearch.com/api/v1/search" \
-H "Authorization: Bearer $LLMWEBSEARCH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"q": "database release security fix", "topic": "news", "time_range": "week", "read": 3}'Sonuçları belirli sitelerle nasıl sınırlarım?
Bunları include_domains içinde listeleyin, en fazla 20 giriş. Yalnızca host'u bu alan adlarından biri veya bunların alt alan adlarından biri olan sonuçlar tutulur: example.com ayrıca docs.example.com ile de eşleşir. Tersini yapmak için exclude_domains kullanın, örneğin kendi sitenizi sonuçlardan çıkarmak için.
Bir POST body'de her iki alan da JSON array'dir. Bir GET isteğinde bunları virgülle ayrılmış tek bir değer olarak yazın. Sorgunun kendisi de bir site: operatörü taşıyabilir; yazıldığı gibi aramaya iletilir.
Ülke ve dil neyi değiştirir?
country aramanın nerede çalışacağını belirler; us, de veya br gibi iki harfli bir kodla. Sıralamalar ülkeye göre farklılık gösterir, özellikle yerel hizmetler, fiyatlar ve düzenlemeler için. language sonuçların dilini belirler; en, fr veya pt-BR gibi.
Her ikisi de varsayılan olarak Amerika Birleşik Devletleri ve İngilizce'dir. Agent tek bir pazardaki kullanıcılar için çalışıyorsa ikisini birlikte ayarlayın: vergi kurallarını soran bir Alman kullanıcı country: "de" ve language: "de" ister.
Ne kadar sayfa metni döner?
Sayfa başına en fazla max_chars karakter; varsayılan 6.000, 500 ila 50.000 arasında. Bu üst sınır modelin context window'unu korur: 6.000 karakterde üç sayfa kabaca 4.500 İngilizce token'dır.
word_count kesimden önceki tüm çıkarılmış metni sayar, böylece bir sayfanın kırpılıp kırpılmadığını anlayabilirsiniz. Bir yanıt tek uzun belge gerektirdiğinde önce düşük bir üst sınırla arama yapın, ardından o sayfayı /extract aracılığıyla daha yüksek bir sınırla tek başına getirin. Yavaş bir sayfa süresiz beklenmez: 15 saniye sonra içerik olmadan fetch_timeout olarak döner.
Search endpoint: sık sorulan sorular
POST mu GET mi kullanmalıyım?
Kodda POST, çünkü JSON array'ler ve uzun sorgular bir body'de daha basittir. GET, terminalde hızlı bir test veya yalnızca query string gönderen bir araç için uygundur. İkisi de aynı yanıtı döner ve aynı tutar.
20'den fazla sonuç isteyebilir miyim?
Hayır. Çağrı başına en fazla 20'dir. Agent'lar nadiren daha fazlasına ihtiyaç duyar: yeniden ifade edilmiş bir sorguyla yapılan ikinci bir arama genellikle uzun bir listeden daha iyi kaynaklar getirir.
Sayfalar arka arkaya mı okunur?
Hayır, paralel olarak. 15 saniye içinde yanıt vermeyen bir sayfa içerik olmadan fetch_timeout olarak döner, böylece yavaş bir site tüm yanıtı bekletmez.
Sonuçları hangi arama motoru üretir?
Sonuçlar çağrınız anında çalıştırılan canlı bir web aramasından, arama motorunun sıraladığı sırayla gelir; hiçbir şey eski bir dizinden sunulmaz. Aramayı hangi upstream sağlayıcıların çalıştırdığını yayınlamıyoruz.