# Read APIのレスポンス形式、フィールドごとの解説

> Read APIのレスポンス形式: markdownやword_countからfinal_urlやrenderedまで、ページに対して返されるすべてのフィールド、およびジョブ結果。KYC不要、暗号資産で支払い。

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

すべての`/read`呼び出しは1つのJSONオブジェクトを返します: 要求した形式のページコンテンツ、そのメタデータ、および何が起こったかとコストを示す3つのフィールド。ジョブ結果も同じオブジェクトを再利用します。

**概要 — WebReaderAPIの読取レスポンスには何が含まれますか？**

**WebReaderAPI**の`/read`レスポンスには、`markdown`（または`text`、`html`）のページコンテンツ、そのメタデータ（`title`、`description`、`author`、`published_at`、`language`、`site_name`、`word_count`）、およびフェッチの事実（`final_url`、`status_code`、`rendered`、`credits_used`）が含まれます。通常のページは$0.07/1Kページからの2026年10月時点で1クレジットです。KYC不要、暗号資産で支払い。

## どのフィールドがフェッチを説明しますか？

これらのフィールドは成功レスポンスに常に存在します。

| フィールド | 型 | 意味 |
| --- | --- | --- |
| `url` | string | 送信したアドレス |
| `final_url` | string | リダイレクト後（最大5回）に実際に読み取ったアドレス |
| `status_code` | integer | サイトが最終アドレスに対して返したHTTPステータス（通常は200） |
| `fetched_at` | string | 取得日時（UTCのISO 8601形式） |
| `rendered` | boolean | ヘッドレスブラウザがページを構築した場合に`true` |
| `credits_used` | integer | このページの課金クレジット：1、ブラウザ使用時は2、`country`使用時はさらに10を加算。PDFは開始した10ページごとに1 |

## どのフィールドがページを表しますか？

メタデータはページ自体から取得します。titleタグ、metaタグ、構造化データ、表示されている署名です。ページが提供しないフィールドは存在しないため、使用前に確認してください。

| フィールド | 型 | 意味 |
| --- | --- | --- |
| `title` | string | ページまたは記事のタイトル |
| `description` | string | ページが自身について示す要約 |
| `language` | string | コンテンツの言語コード（例：`en`や`de`） |
| `author` | string | ページに記載された著者 |
| `published_at` | string | ページが示す公開日 |
| `site_name` | string | サイト自体の名前 |
| `word_count` | integer | 返却コンテンツの単語数（本文抽出後、`max_chars`前） |

## コンテンツ本体はどこにありますか？

選択した`format`にちなんだ名前のコンテンツフィールドが1つ返されます。

| フィールド | When | Content |
| --- | --- | --- |
| `markdown` | `format=markdown`（デフォルト） | Markdownでの見出し、段落、リスト、表、リンク。`include_images=true`を使えば画像も含む |
| `text` | `format=text` | プレーンテキスト（段落は空行で区切る） |
| `html` | `format=html` | メインコンテンツのクリーンなHTML（スクリプト、スタイル、広告を除く） |
| `links` | `include_links=true` | ページ上で見つかったリンクの`{url, text}`一覧（絶対URL） |

*完全なレスポンス（値は例示）*

```json
{
  "url": "https://example.com/guides/compost",
  "final_url": "https://example.com/guides/compost-at-home",
  "status_code": 200,
  "fetched_at": "2026-10-22T10:02:44Z",
  "rendered": false,
  "credits_used": 1,
  "title": "Compost at home: a beginner's guide",
  "description": "What to put in a compost bin, and what to leave out.",
  "language": "en",
  "author": "Sam Rivera",
  "published_at": "2026-09-14",
  "site_name": "Example Garden",
  "markdown": "# Compost at home: a beginner's guide\n\nA compost bin turns kitchen scraps into soil...\n\n## What goes in\n\n- Fruit and vegetable peels\n- Coffee grounds\n\nSee also [Choosing a bin](https://example.com/guides/bins).",
  "word_count": 1184,
  "links": [
    { "url": "https://example.com/guides/bins", "text": "Choosing a bin" }
  ]
}
```

## レンダリングされたページとそうでないページはどう見分けますか？

`rendered`を確認してください。`render=auto`を指定すると、APIはまず生のHTMLを読み取り、そのHTMLのテキストが少なすぎる場合にのみブラウザを起動し、そのとき`rendered`を`true`に、`credits_used`を2に設定します。よく読むサイトが常にレンダリング済みで返ってくる場合は、最初から`render=true`を送ってください。コストは同じで、無駄な最初のステップを省略できます。

ページが未レンダリングで内容が薄い状態で返ってきた場合は、`word_count`とブラウザで見える内容を比較してください。カウントが少ない場合は通常、コンテンツにJavaScriptが必要という意味です。`render=true`を付けて一度だけ再試行してください。

## final_urlがurlと異なるのはなぜですか？

サイトがリダイレクトするからです。短縮リンク、古いアドレス、末尾スラッシュの欠落、言語切り替えなどは、いずれも別の場所へ転送します。APIは最大5回のリダイレクトをたどり、最終的に読み取ったアドレスを`final_url`で報告します。

RAGインデックスでは、`final_url`をドキュメントの正規のソースとして保存してください。同じ`final_url`に到達する2つの異なる`url`の値は同じページなので、埋め込む前に重複を削除できます。

## ジョブの結果はどのような形ですか？

`GET https://webreaderapi.com/api/v1/jobs/{job_id}`は`job_id`、`status`（`queued`、`running`、`done`のいずれか）、`results`、`next_cursor`、およびジョブの実行中の`credits_used`を返します。`results`の各項目は次の2つの形のいずれかです。

- 読み取られたページに対する、上記で説明したとおりの完全な`/read`レスポンス。
- 読み取られなかったページに対する`{url, error}`。ここで`error`は[APIエラー](https://webreaderapi.com/ja/docs/errors/)と同じ`code`と`message`を持ちます。

`next_cursor`はさらに結果が準備できている間存在します。それを`cursor`として返すと取得できます。[バッチとクロールのページ](https://webreaderapi.com/ja/docs/crawl/)には完全なポーリングループがあります。

*ジョブ結果ページ（値は例示）*

```json
{
  "job_id": "job_5c1e8a90d2",
  "status": "done",
  "results": [
    { "url": "https://example.com/blog/post-1", "final_url": "https://example.com/blog/post-1", "status_code": 200, "rendered": false, "credits_used": 1, "title": "Post one", "markdown": "# Post one\n\n...", "word_count": 802 },
    { "url": "https://example.org/members/area", "error": { "code": "target_refused", "message": "The site refused the request.", "target_status": 403 } }
  ],
  "credits_used": 1
}
```

## エラーレスポンスはどのような形ですか？

エラーは400以上のHTTPステータスとJSONボディ`{"error": {"code", "message"}}`で返ります。サイト自体がリクエストを拒否した場合、`target_status`にはサイトが返したステータスが入ります。エラーに課金はされません。[エラーのページ](https://webreaderapi.com/ja/docs/errors/)には、すべてのコードとその原因、再試行が有効かどうかが記載されています。

## レスポンス形式：よくある質問

### max_charsを設定するとMarkdownは切り詰められますか？

はい。contentフィールドはその文字数で止まります。`word_count`は抽出されたコンテンツ全体を引き続き示すので、どれだけ省略されたかがわかります。

### authorやpublished_atが欠けているのはなぜですか？

ページに読み取れる形で記載されていないためです。多くのページでは著者や日付が示されていません。存在しないフィールドは空で返されるのではなく省略されます。

### Markdown内のリンクは絶対URLですか？

`links`一覧のリンクは絶対URLです。Markdown本文では両方の形式を受け入れるようにコードを書き、相対リンクは`final_url`を基準に解決してください。

### ページ全体の生のHTMLを取得できますか？

最も近いのは`main_content=false`を付けた`format=html`で、スクリプトとスタイルを除去したページ全体を返します。元のバイト単位のHTMLはv1には含まれません。

---

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