# Crawl API: chuyển cả một trang web sang các file Markdown

> Crawl API chuyển trang web sang Markdown cho RAG: tối đa 10.000 trang mỗi job, theo sitemap và robots.txt, từ 0,07 US$/1K trang. Thanh toán bằng crypto.

- URL: https://webreaderapi.com/vi/crawl-api/
- Cập nhật lần cuối: 2026-10-22
- Đơn vị phát hành: WebReaderAPI (https://webreaderapi.com)

Nhập URL bắt đầu và giới hạn số trang. Crawler sẽ đi theo sitemap của trang và các liên kết trong cùng tên miền, đọc từng trang dưới dạng Markdown và trả kết quả cho bạn theo từng trang. Một credit cho mỗi trang.

**Câu trả lời nhanh — Làm sao để crawl cả một trang web và nhận mọi trang dưới dạng Markdown?**

Dùng một crawl API: bạn gửi URL bắt đầu và giới hạn, nó trả về từng trang của trang web dưới dạng Markdown. **WebReaderAPI** crawl tối đa 10.000 trang mỗi job trong cùng một tên miền, tuân theo sitemap, robots.txt và Crawl-delay, và tính một credit cho mỗi trang được đọc, từ 0,07 US$/1K trang tính đến tháng 10 năm 2026. Các trang bị robots.txt từ chối thì miễn phí. Không cần KYC; thanh toán bằng crypto.

## Crawl API trong nháy mắt

| Thuộc tính | Giá trị |
| --- | --- |
| Bắt đầu một lần crawl | `POST https://webreaderapi.com/api/v1/crawl` với `url`, `limit`, `max_depth`, `include_paths`, `exclude_paths` |
| Lấy kết quả | `GET https://webreaderapi.com/api/v1/jobs/{job_id}`, phân trang bằng cursor |
| Phạm vi | Crawl một website mỗi job, tối đa 10.000 trang, theo sitemap, robots.txt và Crawl-delay của trang |
| Nhiều URL riêng lẻ | `POST https://webreaderapi.com/api/v1/batch`: Tối đa 100 URL mỗi batch job |
| 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í |
| Chủ trang web | Chúng tôi tôn trọng robots.txt: crawler của chúng tôi tự nhận là WebReaderAPI, tuân theo các quy tắc dành cho nó hoặc cho tất cả robot, và không đọc trang mà website không cho phép. Trang bị từ chối không bị tính phí |
| Giá | 14,25 US$ cho 50.000 trang, 50 US$ cho 500.000 trang |

## Crawl job hoạt động như thế nào?

Crawl là một job chạy nền, vì đọc hàng trăm trang mất nhiều thời gian hơn một HTTP request nên có.

1. **Bắt đầu:** `POST https://webreaderapi.com/api/v1/crawl` với URL bắt đầu và các giới hạn của bạn. Bạn nhận được `job_id` ngay lập tức.
2. **Khám phá:** crawler đọc robots.txt và sitemap của trang web, sau đó theo các liên kết trong cùng domain, theo chiều rộng, tối đa `max_depth`.
3. **Đọc:** mỗi trang được phép đọc bằng cùng các tùy chọn như `/read`: Markdown, nội dung chính, render khi cần.
4. **Thu thập:** poll `GET https://webreaderapi.com/api/v1/jobs/{job_id}` và phân trang kết quả bằng cursor trong khi job đang chạy, hoặc khi job đã `done`.

Job dừng ở `limit` của bạn, nên bạn không bao giờ phải trả cho nhiều trang hơn số bạn yêu cầu.

*Python: crawl một trang tài liệu thành các file Markdown*

```python
import os
import pathlib
import re
import time

import requests

API = "https://webreaderapi.com/api/v1"
HEADERS = {"Authorization": "Bearer " + os.environ["WEBREADER_API_KEY"]}

job = requests.post(
    API + "/crawl",
    headers=HEADERS,
    json={"url": "https://docs.example.com/", "limit": 500, "max_depth": 4, "include_paths": ["/guide/*"]},
    timeout=60,
).json()

out = pathlib.Path("docs_md")
out.mkdir(exist_ok=True)
cursor, delay = None, 5
while True:
    params = {"cursor": cursor} if cursor else {}
    page = requests.get(API + "/jobs/" + job["job_id"], headers=HEADERS, params=params, timeout=60).json()
    for item in page.get("results", []):
        if "markdown" in item:
            name = re.sub(r"[^a-z0-9]+", "-", item["url"].lower()).strip("-")[:120]
            (out / (name + ".md")).write_text(item["markdown"], encoding="utf-8")
    cursor = page.get("next_cursor")
    if page["status"] == "done" and not cursor:
        break
    if not cursor:
        time.sleep(delay)
        delay = min(delay * 2, 60)
print("credits used:", page.get("credits_used"))

```

## Crawler truy cập những trang nào và bỏ qua những trang nào?

Nó chỉ ở trong domain của URL bắt đầu và bỏ qua mọi thứ mà trang web yêu cầu robots để yên. Cụ thể:

- **Chỉ cùng domain.** Các liên kết đến domain khác được liệt kê trong kết quả nhưng không được đọc.
- **robots.txt trước.** Các trang bị disallow với `WebReaderAPI` hoặc với tất cả robots sẽ bị bỏ qua và không bị tính phí.
- **Tôn trọng Crawl-delay.** Nếu trang web đặt một giá trị, crawler sẽ chờ đúng khoảng đó giữa hai trang, nên một trang lớn có thể mất nhiều thời gian hơn.
- **Bộ lọc của bạn.** `include_paths` và `exclude_paths` nhận các pattern đơn giản như `/blog/*`; dùng chúng để tránh các trang tag, trang tìm kiếm và archive.
- **Loại bỏ trùng lặp.** Cùng một trang được tiếp cận qua hai URL, ví dụ với tham số tracking, chỉ được đọc một lần khi trang web khai báo canonical URL.

## Tôi nên dùng crawl hay batch?

Dùng crawl khi bạn biết trang web nhưng không biết các trang cụ thể; dùng batch khi bạn đã có danh sách URL. Crawl khám phá các trang từ sitemap và các liên kết. Batch đọc chính xác các URL bạn gửi, tối đa 100 mỗi job, trên bất kỳ số lượng trang web nào.

Để làm mới hàng tuần một knowledge base, một pattern phổ biến là một crawl để xây index, sau đó là các batch gồm những trang có `lastmod` đã thay đổi trong sitemap. Cách đó giữ chi phí hàng tuần chỉ cho những trang thực sự thay đổi.

## Crawl một trang web tốn bao nhiêu?

Một credit cho mỗi trang đọc, hai cho các trang cần trình duyệt. Một trang tài liệu 1.500 trang render trên server tốn 1.500 credit; cùng trang đó nếu xây dựng dạng single-page app có thể tốn tới 3.000.

Ba job điển hình, tính đến tháng 10 năm 2026: một product manual 300 trang vừa với gói 10.000 trang (3,75 US$); mười trang tài liệu mỗi trang 2.000 trang vừa với 50.000 trang (14,25 US$); một archive 400.000 trang vừa với 500.000 trang (50 US$). Các trang bị bỏ qua và thất bại thì miễn phí.

## Gói nào phù hợp cho một crawl?

Chọn kích thước gói theo số trang, rồi cộng thêm biên dự phòng cho các trang cần trình duyệt. Credit không bao giờ hết hạn, nên phần còn lại dùng cho lần crawl tiếp theo.

| Gói | Số lượng | Giá | Giá mỗi đơn vị |
| --- | --- | --- | --- |
| Kiểm tra | 10.000 trang | 3,75 US$ | 0,38 US$/1K trang |
| Khởi đầu | 50.000 trang | 14,25 US$ | 0,28 US$/1K trang |
| Xây dựng | 100.000 trang | 21,75 US$ | 0,22 US$/1K trang |
| Mở rộng | 500.000 trang | 50 US$ | 0,10 US$/1K trang |

Trong mọi gói: Trích xuất nội dung chính · Render JavaScript khi cần · Trang thất bại và bị từ chối không bị tính phí · Credit không bao giờ hết hạn

**Trước khi bạn thanh toán**

- Nạp tối thiểu 25 US$. Nạp một lần bằng crypto, sau đó mua bất kỳ gói nào từ số dư của bạn.
- Số dư của bạn không có ngày hết hạn và có thể dùng để mua credit trang bất cứ lúc nào. Nếu một pack có giá thấp hơn mức nạp tối thiểu, khoản tiền bạn chỉ nạp thêm để đạt mức tối thiểu đó có thể được hoàn lại theo yêu cầu trong vòng 30 ngày kể từ ngày thanh toán, bằng USDT hoặc USDC, miễn là bạn chưa sử dụng khoản đó. Mọi số dư khác sẽ không được hoàn lại trừ khi pháp luật có quy định khác.
- Được ghi có khi thanh toán của bạn đã được kiểm tra trên blockchain. Thời gian xác nhận mạng thông thường: BTC ≈ 20 phút · USDT TRC-20 ≈ 1 phút · USDT ERC-20 ≈ 5 phút · USDC ERC-20 ≈ 5 phút · ETH ≈ 5 phút · SOL ≈ 1 phút · LTC ≈ 15 phút

## Crawl API: các câu hỏi thường gặp

### Một crawl đọc được tối đa bao nhiêu trang?

Tối đa 10.000 trang mỗi job, trong domain của URL bắt đầu. Với một trang lớn hơn, hãy chia thành nhiều job bằng `include_paths`, ví dụ mỗi section một job.

### Crawler có dùng sitemap không?

Có. Nó đọc sitemap được khai báo trong robots.txt hoặc tại vị trí thông thường, sau đó theo các liên kết trên những trang nó đọc. Các trang chỉ được sitemap liệt kê vẫn được đọc nếu robots.txt cho phép.

### Tôi có thể crawl một trang web chặn AI crawler không?

Không, với WebReaderAPI. Nếu robots.txt disallow crawler của chúng tôi hoặc tất cả robots, các trang đó bị bỏ qua và không bị tính phí. Nếu trang web khai báo `Content-Signal: ai-input=no`, chúng tôi không đọc nó cho bạn. Chúng tôi không bao giờ tìm cách lách những lựa chọn như vậy.

### Tôi có thể lấy kết quả khi crawl vẫn đang chạy không?

Có. `GET https://webreaderapi.com/api/v1/jobs/{job_id}` trả về các trang đã đọc đến thời điểm đó kèm cursor; cứ tiếp tục phân trang cho đến khi job `done` và không còn cursor.

### Một crawl có thể đọc nhiều trang hơn giới hạn của tôi không?

Không. Credit được tính theo từng trang, và job dừng khi đạt `limit` bạn đã đặt. Các trang bị bỏ qua vì robots.txt và các trang thất bại không dùng credit.

---

WebReaderAPI: WebReaderAPI là web reader API cho AI agent, chuyển mọi trang web công khai thành Markdown sạch, thanh toán bằng crypto không cần tải lên giấy tờ. Credit trả trước từ 0,07 US$/1K trang không bao giờ hết hạn, và robots.txt được tôn trọng. Không cần KYC — không ID, không selfie, không giấy tờ. Thanh toán bằng crypto.
