# Search endpoint referansı: POST ve GET /search

> Search endpoint referansı: POST ve GET /search'ün her parametresi, read ve max_chars'tan topic, time_range ve domain filtrelerine kadar. KYC yok, kripto.

- URL: https://llmwebsearch.com/tr/docs/search/
- Son güncelleme: 2026-10-22
- Yayıncı: LLMWebSearch (https://llmwebsearch.com)

`/search` canlı bir web araması çalıştırır, 20'ye kadar sonucu sıralar ve ilk sonuçların arkasındaki sayfaları okur. Bu sayfa her parametreyi, varsayılanını, sınırlarını ve fiyata etkisini listeler.

**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

| Özellik | Değer |
| --- | --- |
| 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. |

*Örnek: five results, the top three read as Markdown*

```json
{
  "q": "how to rotate api keys without downtime",
  "max_results": 5,
  "read": 3,
  "max_chars": 6000
}
```

*Örnek: news of the past week from two sites, nothing read*

```json
{
  "q": "open source license change",
  "topic": "news",
  "time_range": "week",
  "include_domains": [
    "news.example.com",
    "example.org"
  ],
  "read": 0
}
```

**Yanıt** `200`

```json
{
  "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"
    }
  ]
}
```

*curl*

```bash
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}'
```

*Python*

```python
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"])
```

*Node.js*

```javascript
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`

```json
{
  "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"
    }
  ]
}
```

*curl*

```bash
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=0
```

*Python*

```python
import 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"]])
```

*Node.js*

```javascript
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ı](https://llmwebsearch.com/tr/docs/extract/) 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.

*Son bir haftanın haberleri, okunan en iyi 3 makale*

```bash
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.

---

LLMWebSearch: LLMWebSearch, AI ajanları için bir web arama API'sidir; sıralanmış sonuçları en iyi sayfaların Markdown içeriğiyle birlikte döndürür ve kripto ile ödenir, kimlik yüklemesi gerekmez. $1,20/1K arama kredilik ön ödemeli krediler hiç süresi dolmaz. KYC yok — kimlik yok, selfie yok, belge yok. Kripto ile ödeme.
