Test
10 000 pages
3,75 $US
0,38 $US/1K pages
- Testez-le sur vos vraies URL
- Même API que le pack le plus grand
- Les crédits n'expirent jamais
Cas d'usage · monitoring · /batch
Comparer le HTML brut déclenche une alerte à chaque changement de publicité ou de token. Comparer le contenu principal en Markdown ne signale que ce qu'un lecteur remarquerait : un nouveau prix, une clause reformulée, une nouvelle entrée de changelog.
Réponse rapide
Comment surveiller les modifications de contenu des pages web ?
Lisez chaque page selon un planning en Markdown de son contenu principal, stockez le texte et comparez-le à la version précédente ; alertez uniquement quand le texte change. WebReaderAPI lit jusqu'à 100 URLs par job batch, supprime publicités et menus pour qu'ils ne déclenchent pas de fausses alertes, et facture un crédit par page à partir de 0,07 $US/1K pages, en octobre 2026. Sans KYC ; payez en crypto.
| Endpoint | POST https://webreaderapi.com/api/v1/batch, puis GET https://webreaderapi.com/api/v1/jobs/{job_id} |
|---|---|
| Taille du batch | Jusqu'à 100 URLs par job batch |
| Ce qui est comparé | Le Markdown du contenu principal, sans publicités, menus ni bannières |
| Facturation | 1 crédit = 1 page lue sans navigateur ; 2 crédits quand la page nécessite un navigateur pour exécuter JavaScript. Une requête qui échoue, ou qu'un robots.txt de site refuse, n'est pas facturée |
| Volume d'exemple | 200 pages vérifiées par jour = environ 6 000 pages par mois |
| Prix | 3,75 $US pour 10 000 pages ; les crédits n'expirent jamais |
Les pages dont la formulation compte pour votre activité et qui changent sans prévenir :
Limitez la liste aux pages publiques. Les profils personnels et les pages derrière un login sont hors périmètre.
Parce que le HTML change sans arrêt sans que le contenu change. Publicités en rotation, jetons de session, horodatages en pied de page et balisage d'A/B test font différer deux chargements de la même page. Un diff sur le HTML transforme ce bruit en alertes, et les gens arrêtent de les lire.
Le Markdown du contenu principal élimine l'essentiel du bruit avant la comparaison. Il reste le texte qu'une personne lit : titres, paragraphes, listes et tableaux. Un diff sur ce texte est court, lisible et mérite une alerte.
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")
Aussi souvent que la page change réellement, et pas plus. Le quotidien convient aux pages de tarifs et aux changelogs ; l'hebdomadaire convient aux politiques et à la documentation. Une page lue toutes les heures vous apprend rarement plus qu'une lecture par jour, et elle coûte 24 fois plus cher.
WebReaderAPI respecte robots.txt pour chaque page et honore le Crawl-delay d'un site dans les crawl jobs. Les pages que le site interdit sont ignorées et non facturées, donc un site strict disparaît simplement de votre rapport. Demandez au propriétaire si vous avez besoin d'accéder à une page qui refuse robots.
Un crédit par page et par vérification. Quelques exemples aux prix d'octobre 2026 :
Les pages qui nécessitent un navigateur consomment deux crédits ; réglez render=false pour les pages dont vous savez qu'elles sont en HTML simple, afin de rester à un crédit.
Multipliez les pages par les vérifications par mois, puis choisissez un pack qui dure quelques mois. Les crédits n'expirent jamais.
10 000 pages
3,75 $US
0,38 $US/1K pages
50 000 pages
14,25 $US
0,28 $US/1K pages
100 000 pages
21,75 $US
0,22 $US/1K pages
Dans chaque offre: Extraction du contenu principal · Rendu JavaScript si nécessaire · Pages en échec et refusées non facturées · Les crédits n'expirent jamais
Non. Il lit les pages et renvoie du Markdown ; votre script compare les versions et envoie l'alerte par email, chat ou ticket. Le code ci-dessus affiche les lignes modifiées comme point de départ.
Comparez le Markdown du contenu principal, pas le HTML, et supprimez avant le diff les lignes dont vous savez qu'elles changent à chaque chargement, comme « mis à jour il y a 5 minutes ». La plupart des éléments en rotation sont déjà retirés par l'extraction du contenu principal.
Oui. Avec render=auto, les pages vides sans JavaScript sont rendues dans un navigateur headless pour deux crédits. Les pages qui fonctionnent sans JavaScript restent à un crédit.
Oui : lancez un crawl job plutôt qu'un batch, puis comparez page par page. Pour les grands sites, comparez d'abord les dates lastmod du sitemap et ne relisez que les pages qui ont bougé.
À partir de 0,07 $US/1K pages · sans KYC
Obtenir une clé API