Không cần KYC — không ID, không selfie, không giấy tờ. Thanh toán bằng crypto: BTC, USDT, USDC, ETH, SOL, LTC
Ngôn ngữ: Tiếng Việt
Lấy khóa API

Tài liệu · Tham chiếu API

Tham chiếu endpoint read: GET và POST /read

/read tải một trang công khai, trích xuất nội dung chính và trả về dưới dạng Markdown, văn bản thuần hoặc HTML đã làm sạch. Trang này liệt kê mọi tham số, giá trị mặc định và chi phí của nó.

Cập nhật lần cuối: · 8 phút đọc

Câu trả lời nhanh

Endpoint read của WebReaderAPI nhận những tham số nào?

WebReaderAPI endpoint /read cần một tham số, url. Các tham số tùy chọn chọn đầu ra (format), giữ bao nhiêu phần của trang (main_content), có chạy trình duyệt hay không (render), liên kết và hình ảnh, quốc gia đọc, giới hạn ký tự và timeout. Một trang thường tốn 1 credit, 2 credit khi dùng trình duyệt, từ 0,07 US$/1K trang tính đến tháng 10 năm 2026. Không cần KYC; thanh toán bằng crypto.

/read at a glance

Phương thứcGET với query parameter, hoặc POST với JSON body dùng cùng tên tham số
URLhttps://webreaderapi.com/api/v1/read
Bắt buộcurl: một địa chỉ http hoặc https, tối đa 2.048 ký tự
Đầu ra mặc địnhMarkdown của nội dung chính
Tính phí1 credit = đọc 1 trang không cần trình duyệt; 2 credit khi trang cần trình duyệt để render JavaScript. Yêu cầu thất bại, hoặc bị robots.txt của trang web từ chối, không bị tính phí
Quốc giaChọn quốc gia để đọc trang cộng thêm 10 credit, vì khi đó trang được đọc qua kết nối dân cư (residential) tại quốc gia đó
PDFTệp PDF tối đa 20 MB và 100 trang được chuyển sang Markdown, với 1 credit cho mỗi khối 10 trang bắt đầu
Danh tính crawlerWebReaderAPI/1.0 (+https://webreaderapi.com/bot/)

Đọc một trang (GET)

GET/api/v1/read

Tải một trang công khai và trả về nội dung chính dưới dạng Markdown, kèm metadata của trang. Các tham số nằm trong query string, được URL-encode. Ví dụ đọc một bài blog; ID, ngày tháng và giá trị chỉ mang tính minh họa.

Xác thực: khóa API trong header Authorization: Bearer API_KEY.

Tham số

TênVị tríKiểuBắt buộcMô tả
urlquerystringCóTrang cần đọc: http hoặc https, tối đa 2.048 ký tự. Các địa chỉ private, local và cloud metadata bị từ chối.
formatquerystringKhôngmarkdown (mặc định), text (văn bản thuần, không markup) hoặc html (HTML đã làm sạch của nội dung).
main_contentquerybooleanKhôngtrue (mặc định) chỉ giữ bài viết hoặc nội dung chính; false chuyển đổi toàn bộ trang, kể cả menu và footer.
renderquerystringKhôngauto (mặc định) chỉ khởi động trình duyệt khi HTML thô chứa quá ít văn bản; true luôn luôn; false không bao giờ. Một trang được render tốn 2 credit.
include_linksquerybooleanKhôngtrue thêm một danh sách links gồm {url, text}. Mặc định false.
include_imagesquerybooleanKhôngtrue giữ hình ảnh dưới dạng ![alt](src) trong Markdown. Mặc định false.
countryquerystringKhôngMã quốc gia hai chữ cái (ISO 3166-1 alpha-2). Trang được đọc từ một địa chỉ ở quốc gia đó, tốn thêm 10 credit (kết nối residential).
max_charsqueryintegerKhôngCắt đầu ra tại số ký tự này, từ 1.000 đến 500.000. Hữu ích để vừa với context của model.
timeoutqueryintegerKhôngThời gian chờ trang web, từ 5 đến 60. Mặc định 30.
api_keyquerystringKhôngKhóa của bạn, nếu bạn không gửi 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
}

Ví dụ code

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

Đọc một trang (POST)

POST/api/v1/read

Cùng endpoint, cùng tham số, gửi dưới dạng JSON body. Ưu tiên POST khi URL rất dài hoặc khi HTTP client của bạn tạo JSON dễ hơn query string. Phản hồi giống hệt dạng GET.

Xác thực: khóa API trong header Authorization: Bearer API_KEY.

Request body

FieldKiểuBắt buộcMô tả
urlstringCóTrang cần đọc.
format, main_content, render, include_links, include_images, country, max_chars, timeoutmixedKhôngNhư trong bảng GET ở trên, với kiểu JSON: boolean dạng true/false, số không đặt trong dấu ngoặc kép.
Ví dụ: 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"
    }
  ]
}

Ví dụ code

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

Tôi nên chọn định dạng đầu ra nào?

Chọn markdown cho các mô hình ngôn ngữ và RAG: tiêu đề, danh sách, bảng và liên kết được giữ nguyên, và văn bản vẫn gọn gàng. Chọn text khi bạn chỉ đếm từ, phân loại hoặc tìm kiếm, và markup sẽ chỉ là nhiễu. Chọn html khi pipeline của riêng bạn đã phân tích HTML và bạn chỉ muốn loại bỏ phần thừa.

Các trường metadata giống nhau ở cả ba định dạng. Chỉ tên của trường nội dung là thay đổi: markdown, text hoặc html.

Khi nào tôi nên đặt main_content thành false?

Đặt thành false khi những phần xung quanh bài viết chính là thứ bạn cần. Ví dụ là thanh điều hướng của trang web để lập bản đồ các mục, footer chứa thông tin pháp lý hoặc liên hệ, hoặc trang sản phẩm có thông số kỹ thuật nằm trong thanh bên.

Với mặc định true, bộ trích xuất giữ lại khối nội dung chính và loại bỏ thanh điều hướng, banner cookie, quảng cáo, nút chia sẻ và footer. Đó là thứ mà hầu hết các agent và pipeline RAG cần, và nó thường rút gọn một trang xuống còn một phần nhỏ kích thước HTML.

render=auto quyết định dùng trình duyệt headless như thế nào?

Đầu tiên nó tải HTML thô, nhanh và tốn 1 credit. Nếu HTML đó chứa quá ít văn bản đọc được, thường là ứng dụng dựng trang bằng JavaScript, nó tải lại trang trong trình duyệt headless và lệnh gọi tốn 2 credit. Phản hồi cho bạn biết đường nào đã chạy: rendered là true hoặc false.

Đặt render=false khi bạn biết trang web phục vụ HTML đầy đủ và muốn chi phí cố định. Đặt render=true cho single-page app, để bỏ qua lần thử đầu tiên.

country và max_chars thay đổi điều gì?

country đọc trang từ một địa chỉ ở quốc gia bạn chỉ định, với cùng User-Agent. Dùng nó cho các trang mà giá, ngôn ngữ hoặc tính khả dụng thay đổi theo quốc gia. Nó cộng thêm 10 credit, vì trang sau đó được đọc qua kết nối residential, và không thể dùng với những quốc gia mà dịch vụ không hoạt động.

max_chars cắt đầu ra sau số ký tự đó. Nó không thay đổi giá, nhưng bảo vệ context window của agent: 20.000 ký tự là mặc định hợp lý cho một trang đơn truyền vào mô hình.

/read có xử lý được tệp PDF không?

Có. Khi URL trả về PDF, văn bản được trả về dưới dạng Markdown trong cùng trường markdown. Tệp PDF tối đa 20 MB và 100 trang được chuyển sang Markdown, với 1 credit cho mỗi khối 10 trang bắt đầu. PDF quét không có lớp văn bản trả về ít hoặc không có văn bản, vì không có bước nhận dạng ký tự.

Endpoint read: các câu hỏi thường gặp

/read có theo redirect không?

Có, tối đa 5. Phản hồi cung cấp địa chỉ bạn yêu cầu trong url và địa chỉ thực sự được đọc trong final_url. Redirect đến địa chỉ riêng tư hoặc cục bộ bị từ chối.

Tôi có thể đọc trang cần đăng nhập không?

Không. Nếu một website từ chối yêu cầu của chúng tôi, chúng tôi trả lại câu trả lời của trang đó: chúng tôi không bao giờ giải CAPTCHA, đăng nhập vào tài khoản, hay tìm cách vượt qua chặn hoặc paywall. Các trang sau đăng nhập hoặc paywall trả về lời từ chối của trang web, và lệnh gọi miễn phí.

Kiểm tra robots.txt có được thực hiện ở mọi lệnh gọi không?

Có, dựa trên bản sao robots.txt của trang web không quá 24 giờ. URL bị cấm trả về 403 blocked_by_robots và không tốn credit.

Tôi có thể đọc bao nhiêu trang cùng lúc?

Mỗi tài khoản có giới hạn số trang đọc cùng lúc; dashboard của bạn hiển thị giới hạn đó, và bộ phận hỗ trợ có thể tăng lên. Với nhiều URL, một batch job đơn giản hơn là chạy nhiều lệnh gọi song song.

Từ 0,07 US$/1K trang · không cần KYC

Lấy khóa API