Kiểm tra
10.000 trang
3,75 US$
0,38 US$/1K trang
- Dùng thử trên URL thật của bạn
- Cùng API như gói lớn nhất
- Credit không bao giờ hết hạn
Trường hợp sử dụng · giám sát · /batch
So sánh HTML thô sẽ báo động mỗi khi một quảng cáo hay một token thay đổi. So sánh nội dung chính dưới dạng Markdown chỉ đánh dấu những gì người đọc sẽ nhận ra: một giá mới, một điều khoản được viết lại, một mục changelog mới.
Câu trả lời nhanh
Làm sao tôi có thể theo dõi các trang web để phát hiện thay đổi nội dung?
Đọc từng trang theo lịch dưới dạng Markdown của nội dung chính, lưu văn bản và so sánh với phiên bản trước; chỉ cảnh báo khi văn bản thay đổi. WebReaderAPI đọc tối đa 100 URL mỗi batch job, loại bỏ quảng cáo và menu để chúng không thể kích hoạt báo động giả, và tính một credit mỗi trang 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.
| Endpoint | POST https://webreaderapi.com/api/v1/batch, sau đó GET https://webreaderapi.com/api/v1/jobs/{job_id} |
|---|---|
| Kích thước batch | Tối đa 100 URL mỗi batch job |
| Nội dung được so sánh | Markdown của nội dung chính, không có quảng cáo, menu hay banner |
| 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í |
| Khối lượng mẫu | 200 trang kiểm tra mỗi ngày = khoảng 6.000 trang mỗi tháng |
| Giá | 3,75 US$ cho 10.000 trang; credit không bao giờ hết hạn |
Những trang mà cách diễn đạt ảnh hưởng đến doanh nghiệp của bạn và thay đổi mà không báo trước:
Giữ danh sách ở các trang công khai. Hồ sơ cá nhân và các trang sau đăng nhập nằm ngoài phạm vi.
Vì HTML thay đổi liên tục mà nội dung không đổi. Quảng cáo luân phiên, session token, dấu thời gian ở footer và markup A/B test khiến hai lần tải cùng một trang khác nhau. Diff trên HTML biến sự nhiễu đó thành cảnh báo, và người ta bỏ không đọc nữa.
Markdown của nội dung chính loại bỏ phần lớn nhiễu trước khi bạn so sánh. Cái còn lại là văn bản con người đọc: tiêu đề, đoạn văn, danh sách và bảng. Diff trên phần văn bản đó ngắn, dễ đọc và đáng để cảnh báo.
import difflib
import json
import os
import pathlib
import time
import requests
API = "https://webreaderapi.com/api/v1"
HEADERS = {"Authorization": "Bearer " + os.environ["WEBREADER_API_KEY"]}
STORE = pathlib.Path("snapshots.json")
URLS = [
"https://example.com/pricing",
"https://example.com/legal/terms",
"https://example.com/changelog",
]
old = json.loads(STORE.read_text(encoding="utf-8")) if STORE.exists() else {}
job = requests.post(API + "/batch", headers=HEADERS, json={"urls": URLS}, timeout=60).json()
results, 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()
results += page.get("results", [])
cursor = page.get("next_cursor")
if page["status"] == "done" and not cursor:
break
if not cursor:
time.sleep(delay)
delay = min(delay * 2, 60)
new = dict(old)
for item in results:
if "markdown" not in item:
print("not read:", item["url"], item.get("error", {}).get("code"))
continue
before = old.get(item["url"], "")
if before and before != item["markdown"]:
diff = difflib.unified_diff(before.splitlines(), item["markdown"].splitlines(), lineterm="", n=0)
print("CHANGED:", item["url"])
print("\n".join(list(diff)[:40]))
new[item["url"]] = item["markdown"]
STORE.write_text(json.dumps(new, ensure_ascii=False), encoding="utf-8")
Kiểm tra thường xuyên như trang thực sự thay đổi, và không hơn. Hàng ngày phù hợp với trang giá và changelog; hàng tuần phù hợp với chính sách và tài liệu. Một trang đọc mỗi giờ hiếm khi cho bạn biết nhiều hơn một lần đọc mỗi ngày, và tốn gấp 24 lần.
WebReaderAPI tuân theo robots.txt cho mọi trang và tôn trọng Crawl-delay của một trang web trong các crawl job. Các trang mà trang web đó không cho phép sẽ bị bỏ qua và không bị tính phí, nên một trang web nghiêm ngặt chỉ đơn giản là biến mất khỏi báo cáo của bạn. Hãy hỏi chủ sở hữu nếu bạn cần truy cập một trang từ chối robots.
Một credit mỗi trang mỗi lần kiểm tra. Vài ví dụ theo giá tháng 10 năm 2026:
Các trang cần trình duyệt dùng hai credit; đặt render=false cho những trang bạn biết là HTML thuần để giữ số lượng ở mức một.
Nhân số trang với số lần kiểm tra mỗi tháng, rồi chọn một gói dùng được vài tháng. Credit không bao giờ hết hạn.
10.000 trang
3,75 US$
0,38 US$/1K trang
50.000 trang
14,25 US$
0,28 US$/1K trang
100.000 trang
21,75 US$
0,22 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
Không. Nó đọc các trang và trả về Markdown; script của bạn so sánh các phiên bản và gửi cảnh báo qua email, chat hoặc ticket. Đoạn code ở trên in ra các dòng thay đổi như một điểm khởi đầu.
So sánh Markdown của nội dung chính, không phải HTML, và gỡ các dòng mà bạn biết thay đổi mỗi lần tải, như "cập nhật 5 phút trước", trước khi diff. Hầu hết các phần tử luân phiên đã được loại bỏ bởi trích xuất nội dung chính.
Có. Với render=auto, các trang trống nếu không có JavaScript sẽ được render trong trình duyệt headless với giá hai credit. Các trang hoạt động mà không cần JavaScript vẫn giữ ở mức một.
Có: chạy một crawl job thay vì một batch, rồi so sánh từng trang. Với các trang web lớn, hãy so sánh ngày lastmod trong sitemap trước và chỉ đọc lại những trang đã thay đổi.
Từ 0,07 US$/1K trang · không cần KYC
Lấy khóa API