Testar
10.000 páginas
US$ 3,75
US$ 0,38/1K páginas
- Teste com suas URLs reais
- Mesma API do maior pacote
- Os créditos nunca expiram
Caso de uso · monitoramento · /batch
Comparar HTML bruto gera um alerta toda vez que um anúncio ou um token muda. Comparar o conteúdo principal como Markdown só sinaliza o que um leitor notaria: um novo preço, uma cláusula reescrita, uma nova entrada no changelog.
Resposta rápida
Como posso monitorar páginas web em busca de mudanças de conteúdo?
Leia cada página em uma programação como Markdown do seu conteúdo principal, armazene o texto e compare com a versão anterior; alerte só quando o texto mudar. WebReaderAPI lê até 100 URLs por job em lote, remove anúncios e menus para que não disparem falsos alarmes e cobra um crédito por página a partir de US$ 0,07/1K páginas em outubro de 2026. Sem KYC; pague com cripto.
| Endpoint | POST https://webreaderapi.com/api/v1/batch, depois GET https://webreaderapi.com/api/v1/jobs/{job_id} |
|---|---|
| Tamanho do lote | Até 100 URLs por job em lote |
| O que é comparado | Markdown do conteúdo principal, sem anúncios, menus ou banners |
| Cobrança | 1 crédito = 1 página lida sem navegador; 2 créditos quando a página precisa de um navegador para renderizar JavaScript. Uma requisição que falha, ou que o robots.txt de um site recusa, não é cobrada |
| Volume de exemplo | 200 páginas verificadas por dia = cerca de 6.000 páginas por mês |
| Preço | US$ 3,75 por 10.000 páginas; os créditos nunca expiram |
Páginas cujo texto importa para o seu negócio e que mudam sem aviso:
Mantenha a lista em páginas públicas. Perfis pessoais e páginas atrás de login estão fora do escopo.
Porque o HTML muda o tempo todo sem que o conteúdo mude. Anúncios rotativos, tokens de sessão, timestamps em rodapés e marcação de teste A/B fazem duas cargas da mesma página diferirem. Uma comparação no HTML transforma esse ruído em alertas, e as pessoas param de lê-los.
O Markdown do conteúdo principal remove a maior parte do ruído antes da comparação. O que sobra é o texto que uma pessoa lê: títulos, parágrafos, listas e tabelas. Uma comparação nesse texto é curta, legível e vale um alerta.
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")
Verifique com a frequência com que a página realmente muda, e não mais. Diariamente serve para páginas de preços e changelogs; semanalmente serve para políticas e documentação. Uma página lida a cada hora raramente diz mais do que uma lida por dia, e custa 24 vezes mais.
WebReaderAPI segue o robots.txt em cada página e respeita o Crawl-delay de um site em jobs de rastreamento (crawl). Páginas que o site não permite são puladas e não são cobradas, então um site restritivo simplesmente sai do seu relatório. Pergunte ao dono se você precisar de acesso a uma página que recusa robots.
Um crédito por página por verificação. Alguns exemplos com os preços de outubro de 2026:
Páginas que exigem navegador usam dois créditos; defina render=false para páginas que você sabe serem HTML simples para manter a contagem em um.
Multiplique as páginas pelas verificações por mês e escolha um pack que dure alguns meses. Os créditos nunca expiram.
10.000 páginas
US$ 3,75
US$ 0,38/1K páginas
50.000 páginas
US$ 14,25
US$ 0,28/1K páginas
100.000 páginas
US$ 21,75
US$ 0,22/1K páginas
Em todos os planos: Extração do conteúdo principal · Renderização de JavaScript quando necessário · Páginas com falha e recusadas não são cobradas · Os créditos nunca expiram
Não. Ele lê páginas e retorna Markdown; seu script compara versões e envia o alerta por email, chat ou ticket. O código acima imprime as linhas alteradas como ponto de partida.
Compare o Markdown do conteúdo principal, não o HTML, e remova linhas que você sabe que mudam a cada carga, como "atualizado há 5 minutos", antes de comparar. A maioria dos elementos rotativos já é removida pela extração do conteúdo principal.
Sim. Com render=auto, páginas que ficam vazias sem JavaScript são renderizadas em um navegador por dois créditos. Páginas que funcionam sem ele continuam em um.
Sim: execute um job de rastreamento (crawl) em vez de um lote e depois compare página por página. Para sites grandes, compare primeiro as datas lastmod do sitemap e releia apenas as páginas que mudaram.
A partir de US$ 0,07/1K páginas · sem KYC
Obtenha uma chave de API