ไม่ต้อง KYC — ไม่ต้องใช้บัตรประชาชน ไม่ต้องเซลฟี่ ไม่ต้องเอกสาร จ่ายด้วยคริปโต: BTC, USDT, USDC, ETH, SOL, LTC
ภาษา: ไทย
รับ API key

เอกสาร · เอกสารอ้างอิง API

อ่านเอกสารอ้างอิง endpoint: GET และ POST /read

/read ดึงหน้าเว็บสาธารณะหนึ่งหน้า ดึงเนื้อหาหลักและส่งคืนเป็น Markdown, ข้อความล้วน หรือ HTML ที่ทำความสะอาดแล้ว หน้านี้แสดงรายการทุก parameter ค่าเริ่มต้น และค่าใช้จ่าย

อัปเดตล่าสุด: · 4 นาทีในการอ่าน

คำตอบสั้น

WebReaderAPI read endpoint รับ parameter อะไรบ้าง

endpoint /read ของ WebReaderAPI ต้องมี parameter หนึ่งตัวคือ url ส่วนตัวเลือกกำหนดรูปแบบผลลัพธ์ (format) จำนวนเนื้อหาที่เก็บ (main_content) ว่าจะรันเบราว์เซอร์หรือไม่ (render) ลิงก์และรูปภาพ ประเทศที่อ่าน ขีดจำกัดตัวอักษร และ timeout หน้าธรรมดาราคา 1 เครดิต 2 เครดิตหากใช้เบราว์เซอร์ เริ่มที่ US$0.07/1K หน้า ณ ตุลาคม 2026 ไม่ต้อง KYC จ่ายด้วยคริปโต

/read at a glance

MethodGET พร้อม query parameter หรือ POST พร้อม JSON body ที่ใช้ชื่อเดียวกัน
URLhttps://webreaderapi.com/api/v1/read
จำเป็นurl: ที่อยู่ http หรือ https ยาวสูงสุด 2,048 ตัวอักษร
รูปแบบผลลัพธ์เริ่มต้นMarkdown ของเนื้อหาหลัก
การเรียกเก็บเงิน1 เครดิต = อ่าน 1 หน้าโดยไม่ใช้เบราว์เซอร์; 2 เครดิตเมื่อหน้านั้นต้องใช้เบราว์เซอร์เพื่อเรนเดอร์ JavaScript คำขอที่ล้มเหลว หรือที่ robots.txt ของเว็บไซต์ปฏิเสธ จะไม่ถูกคิดเครดิต
ประเทศการเลือกประเทศที่จะอ่านหน้าจาก จะเพิ่ม 10 เครดิต เพราะหน้าจะถูกอ่านผ่านการเชื่อมต่อแบบ residential ในประเทศนั้น
PDFไฟล์ PDF ขนาดไม่เกิน 20 MB และไม่เกิน 100 หน้า จะถูกแปลงเป็น Markdown ในอัตรา 1 เครดิตต่อทุก 10 หน้าที่เริ่มต้น
ข้อมูลระบุตัวตน crawlerWebReaderAPI/1.0 (+https://webreaderapi.com/bot/)

อ่านหนึ่งหน้า (GET)

GET/api/v1/read

ดึงหน้าเว็บสาธารณะหนึ่งหน้าและส่งคืนเนื้อหาหลักเป็น Markdown พร้อม metadata ของหน้า parameter อยู่ใน query string แบบ URL-encoded ตัวอย่างนี้อ่านโพสต์บล็อก ID วันที่ และค่าเป็นเพียงตัวอย่าง

การยืนยันตัวตน: API key ใน header Authorization: Bearer API_KEY

พารามิเตอร์

ชื่อตำแหน่ง (In)ประเภทจำเป็นคำอธิบาย
urlquerystringใช่หน้าที่จะอ่าน: http หรือ https ยาวไม่เกิน 2,048 ตัวอักษร ที่อยู่ private, local และ cloud metadata จะถูกปฏิเสธ
formatquerystringไม่ใช่markdown (ค่าเริ่มต้น), text (ข้อความล้วน ไม่มี markup) หรือ html (HTML ที่ทำความสะอาดแล้วของเนื้อหา)
main_contentquerybooleanไม่ใช่true (ค่าเริ่มต้น) เก็บเฉพาะบทความหรือเนื้อหาหลัก; false แปลงทั้งหน้า รวมถึงเมนูและ footer
renderquerystringไม่ใช่auto (ค่าเริ่มต้น) เริ่มเบราว์เซอร์เฉพาะเมื่อ HTML ดิบมีข้อความน้อยเกินไป; true ทุกครั้ง; false ไม่เลย หน้าที่ render แล้วมีค่าใช้จ่าย 2 เครดิต
include_linksquerybooleanไม่ใช่true เพิ่มรายการ links ของ {url, text} ค่าเริ่มต้น false
include_imagesquerybooleanไม่ใช่true เก็บรูปภาพเป็น ![alt](src) ใน Markdown ค่าเริ่มต้น false
countryquerystringไม่ใช่รหัสประเทศสองตัวอักษร (ISO 3166-1 alpha-2) หน้าจะถูกอ่านจากที่อยู่ในประเทศนั้น เพิ่ม 10 เครดิต (การเชื่อมต่อ residential)
max_charsqueryintegerไม่ใช่ตัดผลลัพธ์ที่จำนวนตัวอักษรนี้ ตั้งแต่ 1,000 ถึง 500,000 มีประโยชน์เพื่อให้พอดีกับ context ของโมเดล
timeoutqueryintegerไม่ใช่รอเว็บไซต์เป็นเวลาไม่กี่วินาที ตั้งแต่ 5 ถึง 60 ค่าเริ่มต้น 30
api_keyquerystringไม่ใช่API key ของคุณ หากคุณไม่ได้ส่ง header Authorization

Response 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
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
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
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));

อ่านหนึ่งหน้า (POST)

POST/api/v1/read

endpoint เดียวกัน พารามิเตอร์เดียวกัน ส่งเป็น JSON body ใช้ POST เมื่อ URL ยาวมาก หรือเมื่อ HTTP client ของคุณสร้าง JSON ได้ง่ายกว่า query string การตอบกลับเหมือนกับรูปแบบ GET ทุกประการ

การยืนยันตัวตน: API key ใน header Authorization: Bearer API_KEY

Request body

ฟิลด์ประเภทจำเป็นคำอธิบาย
urlstringใช่หน้าที่จะอ่าน
format, main_content, render, include_links, include_images, country, max_chars, timeoutmixedไม่ใช่เช่นเดียวกับตาราง GET ด้านบน ด้วยชนิดข้อมูล JSON: boolean เป็น true/false ตัวเลขไม่ต้องใส่เครื่องหมายคำพูด
ตัวอย่าง: a JavaScript-heavy page, read from Germany, with its links
{
  "url": "https://example.com/app/pricing",
  "render": "true",
  "country": "de",
  "include_links": true,
  "max_chars": 30000
}

Response 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
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
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
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);

ฉันควรเลือกรูปแบบ output แบบไหน?

เลือก markdown สำหรับ language model และ RAG: หัวข้อ รายการ ตาราง และลิงก์ยังคงอยู่ และข้อความยังกระชับ เลือก text เมื่อคุณเพียงนับคำ จำแนกประเภท หรือค้นหา และ markup จะเป็นเพียงสัญญาณรบกวน เลือก html เมื่อ pipeline ของคุณเองแยกวิเคราะห์ HTML อยู่แล้ว และคุณต้องการเพียงกำจัดความรกออก

ฟิลด์ metadata เหมือนกันในทั้งสามรูปแบบ เฉพาะชื่อฟิลด์เนื้อหาเท่านั้นที่เปลี่ยน: markdown, text หรือ html

ฉันควรตั้ง main_content เป็น false เมื่อใด?

ตั้งเป็น false เมื่อส่วนต่างๆ รอบบทความคือสิ่งที่คุณต้องการ ตัวอย่างเช่น navigation ของเว็บไซต์เพื่อทำแผนที่ส่วนต่างๆ footer ที่มีข้อมูลทางกฎหมายหรือข้อมูลติดต่อ หรือหน้า product ที่ข้อมูลสเปกอยู่ใน sidebar

ด้วยค่าเริ่มต้น true ตัวดึงเนื้อหาจะเก็บบล็อกเนื้อหาหลักและตัด navigation, cookie banner, โฆษณา, ปุ่มแชร์ และ footer ออก นั่นคือสิ่งที่ agent และ RAG pipeline ส่วนใหญ่ต้องการ และมักลดหน้าเว็บให้เหลือเพียงเศษเสี้ยวของขนาด HTML

render=auto ตัดสินใจใช้เบราว์เซอร์อย่างไร?

ขั้นแรกจะดึง HTML ดิบ ซึ่งรวดเร็วและใช้ 1 เครดิต หาก HTML นั้นมีข้อความที่อ่านได้น้อยเกินไป โดยทั่วไปคือแอปที่สร้างหน้าด้วย JavaScript มันจะโหลดหน้าอีกครั้งในเบราว์เซอร์แบบ headless และการเรียกจะใช้ 2 เครดิต การตอบกลับจะบอกคุณว่าเส้นทางใดทำงาน: rendered คือ true หรือ false

ตั้ง render=false เมื่อคุณรู้ว่าเว็บไซต์ให้ HTML ครบถ้วนและต้องการต้นทุนคงที่ ตั้ง render=true สำหรับ single-page app เพื่อข้ามการพยายามครั้งแรก

country และ max_chars เปลี่ยนอะไร?

country อ่านหน้าจากที่อยู่ในประเทศที่คุณระบุ ด้วย User-Agent เดียวกัน ใช้สำหรับหน้าที่ราคา ภาษา หรือการพร้อมให้บริการเปลี่ยนตามประเทศ มีค่าใช้จ่ายเพิ่ม 10 เครดิต เนื่องจากหน้าจะถูกอ่านผ่านการเชื่อมต่อ residential และไม่สามารถใช้กับประเทศที่บริการไม่ดำเนินการได้

max_chars ตัด output หลังจากจำนวนตัวอักษรนั้น ไม่เปลี่ยนราคา แต่ช่วยปกป้อง context window ของ agent: 20,000 ตัวอักษรเป็นค่าเริ่มต้นที่เหมาะสมสำหรับหน้าเดียวที่ส่งให้โมเดล

/read รองรับไฟล์ PDF ได้ไหม?

ได้ เมื่อ URL ส่งคืน PDF ข้อความจะกลับมาเป็น Markdown ในฟิลด์ markdown เดียวกัน ไฟล์ PDF ขนาดไม่เกิน 20 MB และไม่เกิน 100 หน้า จะถูกแปลงเป็น Markdown ในอัตรา 1 เครดิตต่อทุก 10 หน้าที่เริ่มต้น PDF ที่สแกนโดยไม่มีชั้นข้อความจะส่งคืนข้อความน้อยหรือไม่มีเลย เนื่องจากไม่มีขั้นตอนการรู้จำอักขระ

Read endpoint: คำถามที่พบบ่อย

/read ติดตาม redirect หรือไม่?

ใช่ สูงสุด 5 ครั้ง การตอบกลับให้ที่อยู่ที่คุณขอใน url และที่อยู่ที่อ่านจริงใน final_url redirect ไปยังที่อยู่ส่วนตัวหรือภายในจะถูกปฏิเสธ

ฉันสามารถอ่านหน้าที่ต้องเข้าสู่ระบบได้ไหม?

ไม่ได้ หากเว็บไซต์ปฏิเสธคำขอของเรา เราจะส่งคำตอบของเว็บนั้นกลับไป: เราไม่แก้ CAPTCHA ไม่เข้าสู่ระบบบัญชี และไม่พยายามหลบเลี่ยงการบล็อกหรือ paywall หน้าที่อยู่หลังการเข้าสู่ระบบหรือ paywall จะส่งคืนการปฏิเสธของเว็บไซต์ และการเรียกนั้นฟรี

ตรวจสอบ robots.txt ทุกครั้งที่เรียกหรือไม่?

ใช่ เทียบกับสำเนา robots.txt ของเว็บไซต์ที่มีอายุไม่เกิน 24 ชั่วโมง URL ที่ไม่อนุญาตจะส่งคืน 403 blocked_by_robots และไม่ใช้เครดิต

ฉันสามารถอ่านได้กี่หน้าพร้อมกัน?

ทุกบัญชีมีขีดจำกัดจำนวนหน้าที่อ่านพร้อมกัน แดชบอร์ดแสดงให้เห็น และฝ่ายสนับสนุนสามารถเพิ่มให้ได้ สำหรับหลาย URL batch job ง่ายกว่าการเรียกแบบขนานจำนวนมาก

เริ่มต้นที่ US$0.07/1K หน้า · ไม่ต้อง KYC

รับ API key