# Endpoint referansını okuyun: GET ve POST /read

> GET ve POST /read uç noktası referansını okuyun: parametreler, format ve render örnekleri. $0,07/1K sayfa itibarıyla, KYC olmadan.

- URL: https://webreaderapi.com/tr/docs/read/
- Son güncelleme: 2026-10-22
- Yayıncı: WebReaderAPI (https://webreaderapi.com)

`/read` tek bir herkese açık sayfayı getirir, ana içeriğini çıkarır ve Markdown, düz metin veya temizlenmiş HTML olarak döndürür. Bu sayfa her parametreyi, varsayılan değerini ve ne kadar maliyetli olduğunu listeler.

**Hızlı yanıt — WebReaderAPI read endpoint'i hangi parametreleri alır?**

**WebReaderAPI**'nin `/read` endpoint'i tek bir parametre gerektirir, `url`. İsteğe bağlı olanlar çıktıyı (`format`), sayfanın ne kadarının tutulacağını (`main_content`), tarayıcının çalışıp çalışmayacağını (`render`), bağlantıları ve görselleri, okuma ülkesini, bir karakter sınırını ve bir timeout değerini seçer. Düz bir sayfa 1 kredi, tarayıcıyla 2 kredi; Ekim 2026 itibarıyla $0,07/1K sayfa fiyatından. KYC yok; kripto ile ödeme yapın.

## /read at a glance

| Özellik | Değer |
| --- | --- |
| Metotlar | Sorgu parametreleriyle `GET`, veya aynı adları kullanan bir JSON gövdesiyle `POST` |
| URL | `https://webreaderapi.com/api/v1/read` |
| Zorunlu | `url`: bir http veya https adresi, en fazla 2.048 karakter |
| Varsayılan çıktı | Ana içeriğin Markdown'ı |
| Faturalandırma | 1 kredi = tarayıcı olmadan 1 sayfa okuma; sayfa JavaScript render etmek için tarayıcı gerektiriyorsa 2 kredi. Başarısız olan veya bir sitenin robots.txt'inin reddettiği istek için ücret alınmaz |
| Ülke | Sayfanın okunacağı ülkeyi seçmek 10 kredi ekler, çünkü sayfa o ülkedeki bir konut bağlantısı üzerinden okunur |
| PDF | 20 MB ve 100 sayfaya kadar PDF dosyaları, başlayan her 10 sayfalık blok için 1 kredi ile Markdown'a dönüştürülür |
| Tarayıcı kimliği | `WebReaderAPI/1.0 (+https://webreaderapi.com/bot/)` |

## Bir sayfa oku (GET)

`GET /api/v1/read`

Tek bir herkese açık sayfayı getirir ve ana içeriğini sayfanın metadata'sıyla birlikte Markdown olarak döndürür. Parametreler sorgu dizesine URL-encoded olarak gider. Örnek bir blog yazısını okur; ID'ler, tarihler ve değerler örneklidir.

Kimlik doğrulama: `Authorization: Bearer API_KEY` header'ında API anahtarı.

**Parametreler**

| Ad | Konum | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- | --- |
| `url` | query | string | Evet | Okunacak sayfa: http veya https, en fazla 2.048 karakter. Özel, yerel ve bulut metadata adresleri reddedilir. |
| `format` | query | string | Hayır | `markdown` (varsayılan), `text` (düz metin, işaretleme yok) veya `html` (içeriğin temizlenmiş HTML'i). |
| `main_content` | query | boolean | Hayır | `true` (varsayılan) yalnızca makaleyi veya ana içeriği tutar; `false` menüler ve footer dahil tüm sayfayı dönüştürür. |
| `render` | query | string | Hayır | `auto` (varsayılan) tarayıcıyı yalnızca ham HTML çok az metin içerdiğinde başlatır; `true` her zaman; `false` hiçbir zaman. Render edilen bir sayfa 2 kredi maliyetlidir. |
| `include_links` | query | boolean | Hayır | `true` bir `links` listesi ekler: `{url, text}`. Varsayılan `false`. |
| `include_images` | query | boolean | Hayır | `true` görselleri Markdown'da `![alt](src)` olarak tutar. Varsayılan `false`. |
| `country` | query | string | Hayır | İki harfli ülke kodu (ISO 3166-1 alpha-2). Sayfa o ülkedeki bir adresten okunur, 10 ek kredi karşılığında (residential bağlantı). |
| `max_chars` | query | integer | Hayır | Çıktıyı bu karakter sayısında keser, 1.000 ile 500.000 arasında. Bir modelin context'ine sığdırmak için kullanışlıdır. |
| `timeout` | query | integer | Hayır | Site için beklenecek saniye, 5 ile 60 arası. Varsayılan 30. |
| `api_key` | query | string | Hayır | `Authorization` başlığını göndermezseniz anahtarınız. |

**Yanıt** `200`

```json
{
  "url": "https://example.com/blog/first-post",
  "final_url": "https://example.com/blog/first-post",
  "status_code": 200,
  "fetched_at": "2026-10-22T09:41:12Z",
  "rendered": false,
  "credits_used": 1,
  "title": "Our first post",
  "description": "Why we started this blog and what comes next.",
  "language": "en",
  "author": "Jane Doe",
  "published_at": "2026-10-01",
  "site_name": "Example Blog",
  "markdown": "# Our first post\n\nWe started this blog to share what we learn...\n\n## What comes next\n\n- A post every month\n- Notes from our team",
  "word_count": 612
}
```

*curl*

```bash
curl -sG "https://webreaderapi.com/api/v1/read" \
  -H "Authorization: Bearer $WEBREADER_API_KEY" \
  --data-urlencode "url=https://example.com/blog/first-post" \
  -d format=markdown -d max_chars=20000
```

*Python*

```python
import os
import requests

resp = requests.get(
    "https://webreaderapi.com/api/v1/read",
    headers={"Authorization": "Bearer " + os.environ["WEBREADER_API_KEY"]},
    params={"url": "https://example.com/blog/first-post", "max_chars": 20000},
    timeout=70,
)
resp.raise_for_status()
print(resp.json()["markdown"][:300])
```

*Node.js*

```javascript
const params = new URLSearchParams({ url: 'https://example.com/blog/first-post', max_chars: '20000' });
const res = await fetch(`https://webreaderapi.com/api/v1/read?${params}`, {
  headers: { Authorization: `Bearer ${process.env.WEBREADER_API_KEY}` },
});
const page = await res.json();
console.log(page.markdown.slice(0, 300));
```

## Tek sayfa oku (POST)

`POST /api/v1/read`

Aynı endpoint, aynı parametreler, JSON gövdesi olarak gönderilir. URL çok uzunsa veya HTTP istemciniz JSON'u sorgu dizelerinden daha kolay oluşturuyorsa POST'u tercih edin. Yanıt, GET biçimiyle aynıdır.

Kimlik doğrulama: `Authorization: Bearer API_KEY` header'ında API anahtarı.

**İstek gövdesi**

| Alan | Tür | Zorunlu | Açıklama |
| --- | --- | --- | --- |
| `url` | string | Evet | Okunacak sayfa. |
| `format`, `main_content`, `render`, `include_links`, `include_images`, `country`, `max_chars`, `timeout` | mixed | Hayır | Yukarıdaki GET tablosundaki gibi, JSON türleriyle: boolean'lar `true`/`false`, sayılar tırnaksız. |

*Örnek: a JavaScript-heavy page, read from Germany, with its links*

```json
{
  "url": "https://example.com/app/pricing",
  "render": "true",
  "country": "de",
  "include_links": true,
  "max_chars": 30000
}
```

**Yanıt** `200`

```json
{
  "url": "https://example.com/app/pricing",
  "final_url": "https://example.com/de/app/pricing",
  "status_code": 200,
  "fetched_at": "2026-10-22T09:44:03Z",
  "rendered": true,
  "credits_used": 3,
  "title": "Pricing",
  "language": "de",
  "markdown": "# Pricing\n\n| Plan | Price |\n|---|---|\n| Basic | ... |",
  "word_count": 214,
  "links": [
    {
      "url": "https://example.com/de/contact",
      "text": "Contact"
    }
  ]
}
```

*curl*

```bash
curl -s "https://webreaderapi.com/api/v1/read" \
  -H "Authorization: Bearer $WEBREADER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/app/pricing", "render": "true", "country": "de", "include_links": true}'
```

*Python*

```python
import os
import requests

resp = requests.post(
    "https://webreaderapi.com/api/v1/read",
    headers={"Authorization": "Bearer " + os.environ["WEBREADER_API_KEY"]},
    json={"url": "https://example.com/app/pricing", "render": "true", "country": "de", "include_links": True},
    timeout=70,
)
print(resp.json()["credits_used"], "credits")
```

*Node.js*

```javascript
const res = await fetch('https://webreaderapi.com/api/v1/read', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.WEBREADER_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ url: 'https://example.com/app/pricing', render: 'true', country: 'de', include_links: true }),
});
console.log((await res.json()).credits_used);
```

## Hangi çıktı formatını seçmeliyim?

Dil modelleri ve RAG için `markdown` seçin: başlıklar, listeler, tablolar ve bağlantılar korunur, metin kompakt kalır. Yalnızca kelime sayacak, sınıflandıracak veya arama yapacaksanız ve işaretleme gürültü olacaksa `text` seçin. Kendi pipeline'ınız zaten HTML'i ayrıştırıyorsa ve sadece fazlalıkların gitmesini istiyorsanız `html` seçin.

Meta veri alanları üç formatta da aynıdır. Yalnızca içerik alanının adı değişir: `markdown`, `text` veya `html`.

## main_content ne zaman false olarak ayarlanmalı?

Makalenin çevresindeki kısımlar ihtiyacınız olan şeyse `false` olarak ayarlayın. Örnekler: bir sitenin bölümlerini haritalamak için gezinme menüsü, yasal veya iletişim bilgilerini içeren bir alt bilgi ya da özellikleri kenar çubuğunda duran bir ürün sayfası.

Varsayılan `true` ile çıkarıcı ana içerik bloğunu korur; gezinme, çerez bildirimleri, reklamlar, paylaş düğmeleri ve alt bilgileri atar. Çoğu agent ve RAG pipeline'ının istediği budur ve genellikle bir sayfayı HTML boyutunun küçük bir kısmına indirir.

## render=auto tarayıcı kullanmaya nasıl karar verir?

Önce ham HTML'i getirir; bu hızlıdır ve 1 kredi tutar. Bu HTML çok az okunabilir metin içeriyorsa, tipik olarak sayfayı JavaScript ile oluşturan bir uygulamaysa, sayfayı yeniden headless tarayıcıda yükler ve çağrı 2 kredi tutar. Yanıt hangi yolun çalıştığını söyler: `rendered`, `true` veya `false` değerindedir.

Site tam HTML sunuyorsa ve sabit maliyet istiyorsanız `render=false` ayarlayın. Tek sayfa uygulamaları için ilk denemeyi atlamak üzere `render=true` ayarlayın.

## country ve max_chars neyi değiştirir?

`country`, sayfayı belirttiğiniz ülkedeki bir adresten, aynı User-Agent ile okur. Fiyatları, dili veya kullanılabilirliği ülkeye göre değişen sayfalar için kullanın. Sayfa bu durumda konut bağlantısı üzerinden okunduğu için 10 kredi ekler ve hizmetin faaliyet göstermediği ülkelerde kullanılamaz.

`max_chars`, çıktıyı belirtilen karakter sayısından sonra keser. Fiyatı değiştirmez ama bir agent'ın bağlam penceresini korur: bir modele verilen tek bir sayfa için 20.000 karakter makul bir varsayılandır.

## /read PDF dosyalarını işleyebilir mi?

Evet. URL bir PDF döndürdüğünde metin, aynı `markdown` alanında Markdown olarak gelir. 20 MB ve 100 sayfaya kadar PDF dosyaları, başlayan her 10 sayfalık blok için 1 kredi ile Markdown'a dönüştürülür. Metin katmanı olmayan taranmış PDF'ler çok az veya hiç metin döndürmez, çünkü karakter tanıma adımı yoktur.

## Read endpoint: sık sorulan sorular

### /read yönlendirmeleri takip eder mi?

Evet, en fazla 5 tanesini. Yanıt, istediğiniz adresi `url` ve gerçekten okunan adresi `final_url` içinde verir. Özel veya yerel bir adrese yönlendirme reddedilir.

### Giriş gerektiren bir sayfayı okuyabilir miyim?

Hayır. Bir site isteğimizi reddederse, verdiği yanıtı döndürürüz: CAPTCHA'ları asla çözmeyiz, hesaplara giriş yapmayız veya bir engeli ya da ödeme duvarını aşmaya çalışmayız. Giriş veya ödeme duvarı arkasındaki sayfalar sitenin reddini döndürür ve çağrı ücretsizdir.

### robots.txt kontrolü her çağrıda yapılır mı?

Evet, sitenin en fazla 24 saatlik robots.txt kopyasına karşı yapılır. İzin verilmeyen bir URL `403 blocked_by_robots` döndürür ve kredi kullanmaz.

### Aynı anda kaç sayfa okuyabilirim?

Her hesabın aynı anda okuyabileceği sayfa sayısına bir limit vardır; paneliniz bunu gösterir ve destek ekibi bunu yükseltebilir. Çok sayıda URL için bir [toplu iş](https://webreaderapi.com/tr/docs/crawl/), çok sayıda paralel çağrı çalıştırmaktan daha basittir.

---

WebReaderAPI: WebReaderAPI, AI ajanları için bir web reader API'sidir; herkese açık herhangi bir web sayfasını temiz Markdown'a dönüştürür ve kimlik yüklemeden kripto ile ödenir. $0,07/1K sayfa başlangıçlı ön ödemeli kreditler asla süresi dolmaz ve robots.txt'e uyulur. KYC yok — kimlik yok, selfie yok, belge yok. Kripto ile ödeme yapın.
