# エンドポイントリファレンスを読む：GETおよびPOST /read

> エンドポイントリファレンスを読む：GETおよびPOST /readのすべてのパラメータを、formatやrenderからcountryやmax_charsまで、例付きで解説。$0.07/1Kページから、KYC不要。

- URL: https://webreaderapi.com/ja/docs/read/
- 最終更新: 2026-10-22
- 発行者: WebReaderAPI (https://webreaderapi.com)

`/read`は1つの公開ページを取得し、本文を抽出してMarkdown、プレーンテキスト、またはクリーンなHTMLとして返します。このページではすべてのパラメータ、そのデフォルト値、およびコストを一覧にしています。

**概要 — WebReaderAPIのreadエンドポイントはどのパラメータを取りますか？**

**WebReaderAPI**の`/read`エンドポイントには必須パラメータが1つ、`url`があります。オプションのパラメータでは、出力形式（`format`）、ページの保持範囲（`main_content`）、ブラウザを実行するか（`render`）、リンクと画像、読み取り国、文字数上限、タイムアウトを選択します。通常のページは1クレジット、ブラウザ使用時は2クレジットで、2026年10月時点で$0.07/1Kページから。KYC不要、暗号資産で支払い。

## /read at a glance

| 項目 | 値 |
| --- | --- |
| メソッド | クエリパラメータ付きの`GET`、または同じ名前を使ったJSONボディ付きの`POST` |
| URL | `https://webreaderapi.com/api/v1/read` |
| 必須 | `url`：httpまたはhttpsのアドレス、最大2,048文字 |
| デフォルトの出力 | 本文のMarkdown |
| 課金 | 1クレジット = ブラウザなしでページを1回読み取り。ページのJavaScriptレンダリングにブラウザが必要な場合は2クレジット。失敗したリクエスト、またはサイトのrobots.txtが拒否したリクエストは課金されません |
| 国 | ページを読み取る国を指定すると10クレジットが加算されます。その場合、ページはその国のレジデンシャル接続経由で読み取られるためです |
| PDF | 20 MB・100ページまでのPDFファイルをMarkdownに変換します。10ページ単位の開始ブロックごとに1クレジットです |
| クローラーの識別情報 | `WebReaderAPI/1.0 (+https://webreaderapi.com/bot/)` |

## 1ページを読む（GET）

`GET /api/v1/read`

1つの公開ページを取得し、その本文をページのメタデータ付きでMarkdownとして返します。パラメータはクエリ文字列にURLエンコードして指定します。例はブログ記事を読み取ります。ID、日付、値は例示用です。

認証：`Authorization: Bearer API_KEY`ヘッダーのAPIキー。

**パラメータ**

| 名前 | 場所 | 型 | 必須 | 説明 |
| --- | --- | --- | --- | --- |
| `url` | query | string | はい | 読み取るページ：httpまたはhttps、最大2,048文字。プライベート、ローカル、クラウドメタデータのアドレスは拒否されます。 |
| `format` | query | string | いいえ | `markdown`（デフォルト）、`text`（プレーンテキスト、マークアップなし）、または`html`（コンテンツのクリーンなHTML）。 |
| `main_content` | query | boolean | いいえ | `true`（デフォルト）は記事または本文のみを保持します。`false`はメニューやフッターを含むページ全体を変換します。 |
| `render` | query | string | いいえ | `auto`（デフォルト）は生のHTMLにテキストが少なすぎる場合にのみブラウザを起動します。`true`は常に、`false`は決して起動しません。レンダリングされたページは2クレジットかかります。 |
| `include_links` | query | boolean | いいえ | `true`は`{url, text}`の`links`リストを追加します。デフォルトは`false`。 |
| `include_images` | query | boolean | いいえ | `true`はMarkdown内の画像を`![alt](src)`として保持します。デフォルトは`false`。 |
| `country` | query | string | いいえ | 2文字の国コード（ISO 3166-1 alpha-2）。その国のアドレスからページを読み取り、10クレジット追加（レジデンシャル接続）。 |
| `max_chars` | query | integer | いいえ | 出力をこの文字数で切り捨てます。1,000〜500,000。モデルのコンテキストに収めるのに便利です。 |
| `timeout` | query | integer | いいえ | サイトの待機秒数（5〜60）。デフォルトは30。 |
| `api_key` | query | string | いいえ | `Authorization`ヘッダーを送信しない場合に使用するAPIキー。 |

**レスポンス** `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));
```

## 1ページを読む（POST）

`POST /api/v1/read`

同じendpoint、同じパラメータをJSONボディとして送信します。URLが非常に長い場合や、HTTPクライアントがクエリ文字列よりもJSONを容易に構築できる場合はPOSTを推奨します。レスポンスはGET形式と同一です。

認証：`Authorization: Bearer API_KEY`ヘッダーのAPIキー。

**リクエストボディ**

| フィールド | 型 | 必須 | 説明 |
| --- | --- | --- | --- |
| `url` | string | はい | 読み取るページ。 |
| `format`, `main_content`, `render`, `include_links`, `include_images`, `country`, `max_chars`, `timeout` | mixed | いいえ | 上記のGETテーブルと同様ですが、JSONの型を使用します。真偽値は`true`/`false`、数値はクォートなしです。 |

*例: 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
}
```

**レスポンス** `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);
```

## どの出力形式を選べばよいですか？

言語モデルやRAGには`markdown`を選択してください。見出し、リスト、テーブル、リンクが保持され、テキストはコンパクトに保たれます。単語のカウント、分類、検索のみを行い、マークアップがノイズになる場合は`text`を選択してください。独自のパイプラインがすでにHTMLを解析しており、不要な要素だけを取り除きたい場合は`html`を選択してください。

メタデータフィールドは3つの形式すべてで同じです。変わるのはコンテンツフィールドの名前のみです: `markdown`、`text`、`html`。

## main_contentをfalseに設定すべきなのはいつですか？

記事の周辺部分が必要な場合に`false`に設定してください。例えば、サイトのセクションをマッピングするためのナビゲーション、法的情報や連絡先を含むフッター、仕様がサイドバーにある商品ページなどです。

デフォルトの`true`では、抽出器はメインコンテンツブロックを保持し、ナビゲーション、Cookieバナー、広告、共有ボタン、フッターを除外します。これはほとんどのエージェントやRAGパイプラインが求める動作であり、ページのHTMLサイズをしばしば大幅に削減します。

## render=autoはどのようにブラウザの使用を決定しますか？

まず生のHTMLを取得します。これは高速で1クレジットかかります。そのHTMLに読み取り可能なテキストが少なすぎる場合（通常、JavaScriptでページを構築するアプリ）、ヘッドレスブラウザで再度ページを読み込み、呼び出しには2クレジットかかります。レスポンスはどのパスが実行されたかを示します: `rendered`は`true`または`false`です。

サイトが完全なHTMLを提供することがわかっていて、固定コストを希望する場合は`render=false`を設定してください。シングルページアプリの場合は、最初の試行をスキップするために`render=true`を設定してください。

## countryとmax_charsは何を変更しますか？

`country`は、指定した国のアドレスから同じUser-Agentでページを読み取ります。価格、言語、可用性が国によって変わるページに使用してください。レジデンシャル接続経由でページを読み取るため、10クレジットが追加され、サービスが運営していない国では使用できません。

`max_chars`は、指定した文字数で出力を切り捨てます。価格は変わりませんが、エージェントのコンテキストウィンドウを保護します。モデルに渡す単一ページには20,000文字が適切なデフォルトです。

## /readはPDFファイルを処理できますか？

はい。URLがPDFを返す場合、テキストは同じ`markdown`フィールドにMarkdownとして返されます。20 MB・100ページまでのPDFファイルをMarkdownに変換します。10ページ単位の開始ブロックごとに1クレジットです。テキストレイヤーのないスキャンされたPDFは、文字認識ステップがないため、テキストがほとんどまたはまったく返されません。

## 読取エンドポイント: よくある質問

### /readはリダイレクトをフォローしますか？

はい、最大5回まで。レスポンスは`url`に要求したアドレス、`final_url`に実際に読み取ったアドレスを返します。プライベートアドレスやローカルアドレスへのリダイレクトは拒否されます。

### ログインが必要なページを読み取れますか？

いいえ。サイトが当社のリクエストを拒否した場合、その回答をそのまま返します。CAPTCHAを解いたり、アカウントにログインしたり、ブロックやペイウォールを回避しようとしたりすることは決してありません。ログインやペイウォールの背後にあるページはサイトの拒否を返し、呼び出しは無料です。

### robots.txtのチェックは毎回の呼び出しで行われますか？

はい、サイトのrobots.txtのコピー（最大24時間前のもの）に対して行われます。許可されていないURLは`403 blocked_by_robots`を返し、クレジットは消費されません。

### 同時にいくつのページを読み取れますか？

すべてのアカウントには同時に読み取れるページ数の上限があります。上限はダッシュボードに表示され、サポートで引き上げられます。多数のURLの場合は、[バッチジョブ](https://webreaderapi.com/ja/docs/crawl/)の方が多数の並列呼び出しを実行するより簡単です。

---

WebReaderAPI: WebReaderAPIはAIエージェント向けのWebリーダーAPIで、あらゆる公開WebページをクリーンなMarkdownに変換します。暗号資産で支払い、本人確認書類のアップロードは不要です。$0.07/1Kページから購入できるプリペイドクレジットに有効期限はなく、robots.txtを尊重します。KYC不要 — 身分証もセルフィーも書類も不要。暗号資産で支払い。
