概要
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クレジットが加算されます。その場合、ページはその国のレジデンシャル接続経由で読み取られるためです |
| 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内の画像をとして保持します。デフォルトは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
{
"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 -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=20000import 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])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、数値はクォートなしです。 |
{
"url": "https://example.com/app/pricing",
"render": "true",
"country": "de",
"include_links": true,
"max_chars": 30000
}レスポンス 200
{
"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 -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}'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")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の場合は、バッチジョブの方が多数の並列呼び出しを実行するより簡単です。