Internet Archive vs Common Crawl vs web archive

Ce que l’Internet Archive et Common Crawl stockent chacun, ce que coûte une recherche, et quand la collection en direct de Bright Data est plus adaptée.
27 min de lecture
Internet Archive vs Common Crawl vs Web archive

Nous avons interrogé l’index Common Crawl CC-MAIN-2026-30 pour theguardian.com et obtenu 185 enregistrements. Pas un seul n’est un article. Chaque enregistrement est le robots.txt du site ou une redirection vers celui-ci, et ce fichier interdit CCBot. La vérification des permissions est la seule chose que le crawl a conservée.

La Wayback Machine de l’Internet Archive et Common Crawl conservent tous deux des copies de pages qui n’existent plus, et ils répondent à des questions différentes. La Wayback Machine rejoue une URL unique telle qu’elle apparaissait à une date que vous choisissez. Common Crawl vous remet des milliards de pages sous forme de texte brut en masse, sans replay. Une archive web est la catégorie à laquelle appartiennent les deux, plutôt qu’un troisième produit. Cette même catégorie comprend les archives web nationales, les services par abonnement comme Archive-It, les sites de capture à la demande comme archive.today, et les fichiers WARC que vous créez vous-même. Les deux services répondent à des questions sur le passé ; aucun ne collecte un ensemble nommé de sites de manière continue.

TL;DR

  • CCBot n’exécute pas JavaScript. Une page rendue côté client arrive sous forme de coquille.
  • Interrogez d’abord Common Crawl pour le travail en masse et Wayback pour les manques ; inversez pour une liste d’URL connues.
  • Un digest CDX est le SHA-1 de la charge utile, donc collapse=digest et collapse=timestamp diffèrent dans l’index avant la récupération. Common Crawl ignore collapse.
  • Concevez un client Wayback CDX à 24 demandes par minute, soit 80 % du pool partagé de 30/min.
  • Aucun des deux ne publie de garantie de couverture ni de SLA, et aucun ne collecte un ensemble nommé de sites de manière continue. Mesurez vos domaines d’abord.

What the Internet Archive and Common Crawl each store

Une capture Wayback est adressable sous la forme web.archive.org/web/<timestamp>/<url>, et la même URL peut porter des milliers de captures sur trois décennies. Le replay par défaut réécrit les liens et injecte une barre d’outils pour que la page s’affiche dans un navigateur.

Chaque crawl mensuel de Common Crawl est un ensemble de fichiers WARC plus des fichiers de texte et de métadonnées dérivés, publiés dans un bucket public. Un index indique quelle plage d’octets de quel fichier contient une URL donnée.

Wayback Machine Common Crawl
Stocke des captures d’URL individuelles dans le temps des crawls mensuels entiers, WARC plus texte dérivé
Répond à une URL sur de nombreuses dates de nombreuses URL à partir d’une date de crawl
Replay oui, avec liens réécrits et barre d’outils injectée aucun
Recherche plein texte aucune aucune, mais les fichiers WET vous donnent le texte à indexer
Export en masse aucun, accès API le crawl entier, gratuit dans un bucket public
Limite de débit 30 demandes par minute, CDX et timemap partagés, non publiée par l’Internet Archive aucune publiée, « fortement limitée »
Garantie de couverture aucune aucune, et échantillonnée par rang de domaine

CC-MAIN-2026-30 est annoncé à 2,14 milliards de pages et 364 Tio de contenu non compressé répartis sur 40,5 millions d’hôtes, crawlé sur 18 jours. Common Crawl estime le corpus total à plus de 300 milliards de pages et décrit le rythme à 3 à 5 milliards de nouvelles pages par mois, bien que les 18 derniers crawls publiés soient tous inférieurs à 3 milliards. Dimensionnez un travail à partir d’un seul crawl.

La FAQ de Common Crawl indique : « Actuellement, JavaScript n’est pas exécuté et les cookies ne sont pas utilisés ». CCBot stocke la réponse HTTP brute, donc une page rendue côté client arrive sous forme de coquille. Si les pages qui vous intéressent construisent leur contenu dans le navigateur, vérifiez une capture avant de planifier autour de Common Crawl.

Chaque crawl comprend cinq ensembles de fichiers parallèles de 100 000 fichiers chacun. WARC contient la réponse complète, WAT les métadonnées et liens extraits, WET le texte brut uniquement, et deux autres contiennent les captures robots.txt et les réponses non-200. Un travail de graphe de liens lisant WARC déplace bien plus d’octets que nécessaire.

Common Crawl ne promet pas de revisiter une page, donc de nombreuses URL sur de nombreuses dates est une question à laquelle aucun des deux services ne répond.

Matrice deux par deux. Axe vertical d'une date à plusieurs dates, horizontal d'une URL à plusieurs URL. La Wayback Machine occupe une URL sur plusieurs dates ; Common Crawl plusieurs URL à partir d'une date de crawl ; une URL à une date est triviale pour l'un ou l'autre. Le quadrant restant, plusieurs URL sur plusieurs dates, n'est rempli par aucun des deux.

La FAQ de Common Crawl précise la politique d’échantillonnage : le jeu de données « est un échantillon du web, et nous n’archivons généralement pas un site entier mais un sous-ensemble sélectionné aléatoirement ». Le mécanisme est documenté dans une conférence d’ingénierie Common Crawl plutôt que dans la FAQ : les rangs de centralité harmonique au niveau du domaine définissent un budget pour le nombre d’URL que chaque domaine obtient, de sorte que les domaines bien liés obtiennent un budget plus important et les domaines peu classés peuvent n’en obtenir aucun.

La Wayback Machine ne dispose d’aucune recherche plein texte du contenu des pages archivées. Sa propre page d’aide indique que l’Internet Archive espère « mettre en œuvre un moteur de recherche plein texte à un moment donné ». La recherche du site correspond aux métadonnées du site, pas au texte à l’intérieur des pages archivées. Common Crawl vous donne le texte mais sans replay, donc une page reconstruite à partir d’un fichier WET ne ressemblera pas à l’original.

What a domain lookup returns

Nous avons exécuté la même requête sur cinq domaines, avec correspondance par préfixe.

Domaine interrogé Enregistrements d’index Enregistrements robots.txt Pages de contenu
nytimes.com/* 1 1 0
cnn.com/* 1 1 0
bbc.com/* 2 2 0
theguardian.com/* 185 185 0
github.blog/* 4 700 49 4 651

Les 185 enregistrements de The Guardian se résolvent en seulement deux URL, le robots.txt et sa redirection http, récupérés tout au long du crawl. Un script comptant les enregistrements d’index dirait que les cinq sont couverts et se tromperait sur quatre. Parmi les 4 651 enregistrements de contenu de github.blog, 3 647 ont répondu 200.

Le type de correspondance change la réponse. La canonicalisation SURT intègre www. dans l’hôte nu, mais une correspondance par préfixe domaine/ n’atteint aucun autre sous-domaine : cnn.com/ a retourné 1 enregistrement tandis que .cnn.com en a retourné 11, et nytimes.com/ a retourné 1 contre 2 pour *.nytimes.com. Chaque enregistrement était une récupération de robots.txt dans les deux cas, mais les comptes sont une propriété de la requête autant que du crawl. Indiquez toujours votre type de correspondance lorsque vous signalez un nombre de ce type.

La même requête date approximativement le blocage si vous l’exécutez sur des identifiants de crawl plus anciens. La requête a un angle mort : elle voit ce qu’un éditeur a écrit dans robots.txt, pas un blocage appliqué au niveau du réseau ou une désinscription ultérieure, donc elle se lit comme un plancher plutôt que comme un compte. Notre guide robots.txt pour le scraping web explique comment les groupes d’agents se résolvent.

La taille par crawl a également diminué. Les statistiques de taille de crawl publiées par Common Crawl montrent que le nombre mensuel de pages est passé de 3,031 milliards dans CC-MAIN-2025-05 à 2,149 milliards dans CC-MAIN-2026-30, en baisse de 29,1 %. Sur les 29 crawls de CC-MAIN-2024-10 à CC-MAIN-2026-30, les 10 crawls de 2024 affichent une moyenne de 2,69 milliards de pages, les 12 crawls de 2025 une moyenne de 2,53 milliards, et les 7 crawls publiés en 2026 jusqu’en juillet une moyenne de 2,15 milliards.

Graphique linéaire des pages Common Crawl par crawl passant de 3,1 à environ 2,1 milliards, avec des moyennes annuelles en pointillés à 2,69 Md pour 2024, 2,53 Md pour 2025, et 2,15 Md pour les sept crawls de 2026 jusqu'en juillet.

Rien ici n’identifie une cause : la taille du crawl évolue avec l’infrastructure, le budget et la planification internes à Common Crawl autant qu’avec ce que font les éditeurs. La baisse signifie qu’un corpus dimensionné à partir d’un crawl 2024 surestime un crawl 2026 d’environ un quart, et que les comptes par crawl ne s’additionnent pas. Les crawls consécutifs récupèrent une grande partie du même espace, donc les additionner sans dédoublonnage sur urlkey et digest gonfle à nouveau l’estimation.

Check your own domains

Le script compte les enregistrements de contenu par rapport aux récupérations robots.txt pour le crawl publié le plus récent, en utilisant le même préfixe de correspondance domaine/* que le tableau. Il parcourt l’index une page à la fois, rejette une page dont la troncature divise un enregistrement plutôt que d’en compter une partie, et continue même si un domaine ne répond jamais proprement. Les deux domaines ci-dessous prennent environ 70 secondes, presque entièrement dues aux pauses délibérées :

import http.client, json, time, urllib.error, urllib.parse, urllib.request

DOMAINS = ["theguardian.com", "github.blog"]
# Use your own contact address. One shared UA string arriving from many callers
# is the string an operator blocks.
UA = {"User-Agent": "coverage-check/1.0 ([email protected])"}

def latest_crawl():
    """Common Crawl ships roughly monthly. Hardcoding an ID measures a stale crawl
    and returns a number that looks current."""
    url = "https://index.commoncrawl.org/collinfo.json"
    info = urllib.request.urlopen(urllib.request.Request(url, headers=UA), timeout=60).read()
    return json.loads(info)[0]["id"]        # newest first

CRAWL = latest_crawl()
INDEX = f"https://index.commoncrawl.org/{CRAWL}-index"
print(f"crawl: {CRAWL}")

def fetch(params, tries=3):
    url = f"{INDEX}?{urllib.parse.urlencode(params)}"
    for attempt in range(tries):
        wait = None
        try:
            return urllib.request.urlopen(
                urllib.request.Request(url, headers=UA), timeout=120).read()
        except urllib.error.HTTPError as e:
            if e.code == 404:
                return None               # this crawl never captured the domain
            if e.code not in (429, 500, 502, 503, 504):
                raise
            wait = e.headers.get("Retry-After")   # the server's own number beats ours
        except (urllib.error.URLError, http.client.IncompleteRead, TimeoutError):
            pass                          # dropped connection
        time.sleep(int(wait) if wait and wait.isdigit() else 5 * 2 ** attempt)
    return b""

def coverage(domain):
    """(robots, content) for one domain, or None if the index never answered cleanly."""
    query = {"url": f"{domain}/*", "output": "json", "pageSize": 1}
    head = fetch({**query, "showNumPages": "true"})
    if head is None:
        return 0, 0
    if not head:
        return None
    robots = content = 0
    for page in range(json.loads(head)["pages"]):
        body = fetch({**query, "page": page})
        if not body:
            return None
        # CDXJ is one JSON object per line. Use split, not splitlines(): splitlines()
        # breaks on several characters that are not newlines, which cuts records in half.
        for line in body.split(b"\n"):
            if not line.strip():
                continue
            try:
                record = json.loads(line)
            except json.JSONDecodeError:
                return None               # the page arrived incomplete
            if record.get("url", "").rstrip("/").endswith("/robots.txt"):
                robots += 1
            else:
                content += 1
        time.sleep(5)
    return robots, content

for domain in DOMAINS:
    result = coverage(domain)
    if result is None:
        print(f"{domain}: no clean response")
    else:
        robots, content = result
        print(f"{domain}: {robots + content} records, {robots} robots.txt, {content} content")
    time.sleep(20)

Il affiche :

crawl: CC-MAIN-2026-30
theguardian.com: 185 records, 185 robots.txt, 0 content
github.blog: 4700 records, 49 robots.txt, 4651 content

Avec CC-MAIN-2026-30, les deux lignes de domaine reproduisent le tableau ci-dessus. Un crawl plus récent retourne des comptes différents ; ce qui devrait rester stable, c’est la forme : uniquement robots pour theguardian.com et contenu présent pour github.blog. Des enregistrements sans pages de contenu signifient que le crawl ne contient aucun contenu de page de ce domaine.

How to query each source, and what the round trip costs

Les deux services exposent un index CDX, mais les formats de réponse diffèrent : le serveur CDX Wayback retourne un tableau JSON de tableaux, le output=json de Common Crawl retourne du CDXJ, un objet JSON par ligne.

Le serveur CDX Wayback retourne une ligne par capture, et le filtrage côté serveur maintient la réponse suffisamment petite pour la parcourir :

curl "https://web.archive.org/cdx/search/cdx?url=example.com&output=json&from=2026&limit=3&fl=timestamp,original,statuscode"

Cela retourne :

[["timestamp","original","statuscode"],
["20260101000936","http://www.example.com/","200"],
["20260101002937","https://example.com/","200"],
["20260101004445","https://example.com/","200"]]

Pour analyser une page archivée plutôt que de la rendre, demandez la capture brute. Ajouter id_ après le timestamp retourne les octets originaux, sans barre d’outils et sans liens réécrits :

curl -sL "https://web.archive.org/web/2026id_/https://example.com/" -o raw.html
curl -sL "https://web.archive.org/web/2026/https://example.com/"    -o rewritten.html

La copie réécrite contient des références injectées vers web.archive.org, ce qui peut casser les sélecteurs ancrés sur la structure du DOM.

Au-delà du type de correspondance, deux champs dans une ligne CDX et un paramètre de requête déterminent ce qu’une requête correspond, si vous pouvez détecter un changement, et ce que cela coûte.

urlkey est la forme SURT de l’URL. https://github.blog/ est indexé comme blog,github)/ : hôte inversé, puis chemin. Les requêtes par préfixe et par plage opèrent sur cette clé plutôt que sur l’URL que vous avez saisie, c’est pourquoi la gestion de www. et l’ordre des chaînes de requête déterminent si une requête correspond à quelque chose.

digest est le SHA-1 de la charge utile, encodé en base32, et c’est la valeur que l’enregistrement WARC porte comme WARC-Payload-Digest. Un digest hexadécimal ne correspondra pas. La détection de changement est donc une opération d’index : deux lignes partageant un digest ont les mêmes octets de charge utile.

collapse transforme cela en la requête que vous voulez réellement. Demander au serveur CDX Wayback toutes les captures de example.com en 2024 retourne 130 115 lignes. La même requête avec collapse=timestamp:8 retourne 366, une par jour : les timestamps sont au format YYYYMMDDhhmmss, donc tronquer à huit chiffres collapse sur la date. Avec collapse=digest, elle retourne 17 448, une par changement entre captures adjacentes. L’index de Common Crawl accepte le paramètre et l’ignore, retournant les mêmes lignes dans les deux cas.

La pagination via page et pageSize compte les blocs d’index plutôt que les lignes de résultats, et la taille des blocs varie : deux blocs adjacents sur une même requête ont retourné 2 032 et 4 726 enregistrements. Interroger le serveur CDX Wayback pour bbc.com avec matchType=domain et pageSize=1 a signalé 28 257 pages.

Une page peut revenir vide simplement parce que vos filtres n’ont rien correspondu dans ces blocs, ce qui ne signifie pas que l’ensemble de résultats est terminé. Le pageSize par défaut est 1, et la documentation ne nomme aucun maximum.

L’index de Common Crawl pagine de la même façon, avec trois différences : showNumPages retourne du JSON plutôt qu’un simple nombre, le pageSize par défaut est 5 plutôt que 1, et ses blocs ont une taille différente. Dimensionnez une boucle à partir de showNumPages plutôt qu’à partir d’une taille de bloc supposée, et demandez le nombre de pages au pageSize que vous comptez utiliser, car le compte change avec lui.

Il y a deux façons d’itérer. La valeur par défaut est le mode limite, où limit et une clé de reprise parcourent l’ensemble de résultats ; le mode paginé utilise page et pageSize à la place. Le mode paginé existe pour que le nombre de pages soit connaissable à l’avance et que le travail se répartisse entre les workers. Le mode limite fait généralement moins de requêtes au total, mais sur une URL rarement capturée sur une large plage de dates, il peut scanner suffisamment loin pour expirer.

Common Crawl inverse l’étape de récupération, et l’avantage est que récupérer une page coûte une seule requête de plage au lieu d’un téléchargement de fichier. L’index vous donne un nom de fichier, un décalage d’octets et une longueur, donc une requête HTTP de plage récupère un seul enregistrement. Comme CDXJ place un objet par ligne, le code ci-dessous lit une ligne plutôt que d’analyser le corps entier :

import gzip, json, urllib.error, urllib.parse, urllib.request

url = "https://example.com/"
crawl = "CC-MAIN-2026-30"
q = urllib.parse.quote(url, safe="")

# Common Crawl asks API clients for a properly formed UserAgent. Use your own.
ua = {"User-Agent": "coverage-check/1.0 ([email protected])"}

# Step 1: ask the index which WARC file and byte range holds this page.
index = f"https://index.commoncrawl.org/{crawl}-index?url={q}&output=json&limit=1"
try:
    req = urllib.request.Request(index, headers=ua)
    rec = json.loads(urllib.request.urlopen(req, timeout=60).read().split(b"\n")[0])
except urllib.error.HTTPError as e:
    if e.code != 404:
        # 502, 503 and 504 all mean try again later, not "not captured".
        # Treating them as a miss under-reports coverage.
        raise
    # A URL this crawl never captured returns 404. That is the normal case for a
    # blocked domain, not an error in your code.
    raise SystemExit(f"{url} is not in {crawl}")

# Step 2: fetch only those bytes.
offset, length = int(rec["offset"]), int(rec["length"])
warc = "https://data.commoncrawl.org/" + rec["filename"]
req = urllib.request.Request(warc, headers={**ua, "Range": f"bytes={offset}-{offset + length - 1}"})
record = gzip.decompress(urllib.request.urlopen(req, timeout=60).read())

print(record.decode("utf-8", "replace")[:400])

Cela retourne un enregistrement WARC compressé contenant les en-têtes de réponse et le HTML de la page. Sur 29 enregistrements de contenu échantillonnés, la taille compressée allait de 7 à 45 Kio, donc la requête de plage déplace des kilo-octets d’un fichier d’environ 900 Mio. Le même chemin fonctionne pour tout crawl listé par le serveur d’index.

Pour un travail à l’échelle du corpus, l’URL Index de Common Crawl livre le même index en Parquet avec des colonnes supplémentaires, publié à s3://commoncrawl/cc-index/table/cc-main/warc/ et interrogeable avec DuckDB localement ou Athena sur AWS. Common Crawl estime l’index columaire à environ 300 Go par crawl mensuel et un scan Athena complet à environ 1,50 $ en septembre 2025, donc la plupart des requêtes filtrées coûtent moins. L’accès aux données est gratuit via le programme AWS Open Data, et data.commoncrawl.org ne nécessite pas de compte AWS, bien que l’egress de votre propre fournisseur cloud reste à votre charge.

Rate limits and quotas you will hit

La FAQ de Common Crawl indique que l’endpoint CDX « est fréquemment abusé et donc fortement limité en débit ». Un HTTP 503 signifie de ralentir, et une IP temporairement bloquée devrait attendre 24 heures. Les directives demandent également de dormir entre les appels, d’éviter plusieurs threads depuis une même IP, d’éviter les réseaux de proxies, et d’envoyer un User-Agent correctement formé, ce que sa FAQ lie à la RFC 9110. La clause sur les proxies mérite qu’on s’y attarde. Le blocage de la FAQ et ses directives de threading s’adressent tous deux à l’IP, donc répartir un travail sur plus d’adresses contourne la limite plutôt que de la respecter, et l’escalade est un blocage de l’adresse plutôt que plus de 503.

L’Internet Archive publie des quotas pour Save Page Now et pratiquement rien pour les API de lecture. La spécification Save Page Now 2 donne ces limites :

Limite Authentifié Anonyme
Captures par minute 7 3
Captures par jour 30 000 200
Octets archivés par jour 5 Go 2 Go
Captures de la même URL par jour 5 5

La spécification ne nomme aucun niveau payant au-dessus de ces chiffres et dirige les utilisateurs plus intensifs vers l’email de l’Internet Archive. La spécification donne le chiffre anonyme à la fois comme 2 Go et 500 Mo, et son journal des modifications a abaissé le chiffre authentifié à 4 Gio tandis que le tableau indique toujours 5 Go.

Pour les API de lecture, les chiffres proviennent de l’extérieur de l’Internet Archive. Le mainteneur du client Python wayback a rédigé une conversation avec le personnel de l’Internet Archive et a encodé le résultat comme valeurs par défaut de la bibliothèque. Ce document n’est pas une publication de l’Internet Archive.

Les endpoints /cdx/search/cdx et /web/timemap/ sont désormais un seul service sur les mêmes serveurs, différant uniquement dans la façon dont ils lisent le paramètre output, et ils partagent un seul pool de limite de débit. Ce pool est de 30 demandes par minute pour les deux. Le document ne précise pas si le compteur est lié à une adresse ou à un compte, donc un travail réparti sur des workers ne peut pas supposer que le budget se multiplie. L’endpoint memento sert le replay et s’appuie sur un pool séparé.

La bibliothèque encode ces limites comme valeurs par défaut, 0,8 * 30 / 60 pour CDX et 0,8 * 600 / 60 pour le replay, après que le personnel de l’Internet Archive a demandé aux clients de se maintenir à 80 % des limites strictes. C’est 24 demandes par minute plutôt que 30, et 480 pour le replay. Concevez en fonction de cela, pas des plafonds.

L’endpoint de disponibilité à archive.org/wayback/available est un troisième service sans limite publiée propre, donc traitez-le comme limité plutôt que libre. Respectez Retry-After lorsque la réponse en contient un. Lorsqu’il n’en contient pas, le client wayback fait une pause de 60 secondes avant de réessayer.

Why archive.today captures cannot be verified on their own

archive.today rend les pages dans un navigateur au moment de la capture et ignore robots.txt, donc il contient des pages que la Wayback Machine n’a pas. Les flux de travail de citation ont adopté archive.today pour cette couverture.

archive.today stocke du HTML mutable plutôt que du WARC, donc il n’y a pas de digest de charge utile et rien à l’intérieur de la capture pour le vérifier. Des preuves ont été présentées que ses opérateurs ont modifié des pages archivées, et Wikipedia a déprécié le site et l’a ajouté à la liste noire de spam. La déclaration de clôture commence par un motif différent : elle indique que le site a intégré du code qui transformait les navigateurs des visiteurs en une attaque par déni de service contre un blog, et traite les instantanés modifiés comme supplémentaires.

Vérifiez à nouveau tout ce que vous citez déjà depuis archive.today par rapport à une deuxième source. La même page indique que le code était toujours présent en juin 2026 à un taux d’appel réduit, et conseille à quiconque a besoin du site de le charger derrière un bloqueur de contenu.

National archives, formats, and replay tools

Arquivo.pt : l’archive web nationale portugaise dispose d’une API de recherche plein texte que la Wayback Machine n’a pas. Un GET vers arquivo.pt/textsearch retourne du JSON portant un linkToExtractedText par résultat, vous évitant ainsi l’analyse HTML. L’API est gratuite et ne nécessite pas de clé, et la limite documentée est de 250 demandes par 60 secondes depuis une IP, partagée entre la recherche plein texte et la recherche d’URL plutôt que budgétée séparément. Dépasser cette limite est documenté comme motif de blocage permanent, tandis que le blocage de Common Crawl est temporaire. La couverture est axée sur le portugais, et la latence est inégale, de moins de 3 secondes à 18 sur trois requêtes à résultat unique, donc réglez le timeout du client à 30 secondes.

WARC et WACZ : WARC est le conteneur d’archivage, standardisé comme ISO 28500:2017, qui couvre WARC 1.1. Il n’existe pas de WARC 1.2. WACZ empaquète les enregistrements WARC avec un index CDX pour qu’un navigateur puisse les rejouer sans serveur. Un brouillon 1.2.0 est disponible, mais wacz/latest sert toujours 1.1.1, donc implémentez contre 1.1.1.

Browsertrix : lorsque vous avez besoin de captures que vous contrôlez, le crawler de Webrecorder produit des fichiers WACZ qui se rejouent dans un navigateur via ReplayWeb.page sans serveur. Les plans hébergés commencent à 30 $ par mois pour le plan d’entrée, et le crawler est open source si vous préférez le gérer vous-même.

How to choose

Commencez par la forme de la question : des URL spécifiques, du texte en masse, ou une propriété qu’aucun des deux services n’offre.

Utilisez la Wayback Machine quand l’URL et la date sont l’essentiel. Récupérer une page supprimée, prouver ce qu’un site disait avant une modification, suivre une page produit dans le temps, ou reconstruire une documentation défunte. Aucune autre option généraliste ne correspond à sa profondeur temporelle sur les URL individuelles, bien qu’une archive nationale puisse l’égaler dans son propre périmètre.

Si l’usage est probatoire, prévoyez plus que la seule capture. Les tribunaux américains ont admis des captures Wayback, mais une impression seule est rarement suffisante, car les captures ne s’authentifient pas d’elles-mêmes. Une déclaration de l’Internet Archive est la voie que les tribunaux ont acceptée, et aux tarifs publiés début 2025, cela coûte 250 $ par demande plus 20 $ pour chaque URL, ou 30 $ pour les URL contenant un fichier téléchargeable comme un PDF.

Utilisez Common Crawl quand vous voulez de nombreuses pages et peu importe lesquelles. Corpus linguistiques, pré-entraînement de modèles, analyse de graphes de liens, recherche en sécurité sur de nombreux hôtes, et toute mesure où un échantillon biaisé par rang est acceptable. La plupart des grands corpus ouverts de pré-entraînement s’en inspirent, dont C4, RefinedWeb, FineWeb et Dolma. Si vous voulez un corpus plutôt que le crawl brut, ces dérivés et leurs licences méritent d’être lus en premier, et notre enquête sur les sources de données d’entraînement LLM est un point de départ. Ne l’utilisez pas pour garantir la couverture d’un site nommé, car la politique d’échantillonnage rend la couverture imprévisible.

Une étude de Sichang Steven He et ses collègues a classifié environ 100 000 sites dans Common Crawl et a trouvé que 6,0 % d’entre eux étaient dominés par du texte généré avec peu d’intervention humaine. Parmi les sites vus pour la première fois au premier semestre 2025, la part était de 29,4 %, contre 2,1 % parmi les sites vus pour la première fois fin 2022.

Lisez les 6,0 % et les 29,4 % comme des sous-estimations probables. Les auteurs signalent une forte corrélation négative entre la précision de leur classifieur et le score de benchmark du modèle qui a généré un site, donc la part que le classifieur manque augmente à mesure que les générateurs s’améliorent.

Utilisez une archive nationale ou auto-gérée quand vous avez besoin d’une propriété qu’aucun des deux services n’offre. Recherche plein texte sur le contenu archivé, captures que vous contrôlez de bout en bout, ou pages rendues côté client qui se rejouent mal ailleurs.

archive.today est exclu pour une raison différente : une capture pouvant changer après coup ne peut pas servir de preuve à elle seule.

Pour un travail en masse sur de nombreux hôtes, interrogez d’abord Common Crawl pour la largeur et le coût, puis revenez à la Wayback Machine pour ce que le crawl a manqué. Pour une liste d’URL connues, faites l’inverse : la plupart des recherches Common Crawl échoueront, et chaque recherche consomme une demande contre un index dont la pénalité documentée pour un usage excessif est un blocage de 24 heures. Et quand un domaine compte pour votre travail sur le long terme, effectuez vos propres captures avec un crawler produisant des WARC en parallèle, car c’est une copie dont vous contrôlez la disponibilité.

Gérer votre propre crawler coûte du stockage, une infrastructure de replay et une charge de maintenance qu’aucun service public ne vous facture, donc gérez-le vous-même là où perdre l’accès casserait quelque chose, et appuyez-vous sur les archives publiques ou une collection achetée pour le reste.

When you need collection instead of an archive

Aucun des deux services n’est conçu pour collecter un ensemble défini de sites selon un calendrier. Save Page Now collecte bien à la demande, et fonctionne à 7 captures par minute lorsqu’authentifié, 3 sinon.

Les quatre domaines d’actualités que nous avons interrogés n’avaient aucune page de contenu dans CC-MAIN-2026-30. Aucun des deux ne publie de garantie de couverture, de SLA ou d’engagement de support contre lequel vous pouvez escalader.

Quand vous avez besoin que des sites nommés soient collectés selon un calendrier, avec une couverture que vous définissez, c’est un produit de collection plutôt qu’une archive. Le crawling découvre ce qui existe ; la collection ciblée retourne les pages connues à la demande. Notre guide crawling vs scraping web explique la différence.

Payer pour la collection n’achète pas d’exemption au blocage. Les éditeurs restreignent les crawlers commerciaux tout autant que les crawlers d’archives ; un fournisseur change qui supporte la maintenance quand un site modifie ses défenses.

Bright Data vend de la collection ciblée : l’API Web Scraper à 1 $ pour 1 000 enregistrements, avec les 5 000 premiers chaque mois gratuits, et des jeux de données prêts à l’emploi à partir de 0,0025 $ par enregistrement avec un minimum de 250 $. Les deux couvrent les sites pris en charge de façon continue. Aucun ne remplace la Wayback Machine, et la raison est une plage de dates : les données pré-collectées remontent à des jours ou des mois, pas à 1996, donc une question sur ce qu’une page disait en 2014 va toujours vers l’archive.

Next steps

Exécutez le script de couverture sur les domaines qui vous intéressent, puis vérifiez les mêmes domaines dans le serveur CDX Wayback pour la densité de capture.

Les enregistrements de contenu indiquent si un travail en masse est possible ; la densité de capture indique si l’historique au niveau URL est possible. Un compte sain est une lecture plutôt qu’un engagement : la politique d’échantillonnage ne promet aucun plancher, et les totaux par crawl ont chuté d’environ un quart depuis 2024, donc relancez la vérification avant d’en dépendre.

Capturez ce qui compte maintenant là où perdre l’accès casserait quelque chose, achetez de la collection pour le reste, conservez ce que vous capturez en WARC pour qu’il reste portable, et traitez les deux archives publiques comme des sources que vous interrogez plutôt que comme un stockage dont vous dépendez.

Frequently asked questions

Can I use Common Crawl commercially?

Les conditions d’utilisation le permettent et font peser le risque sur vous. Common Crawl plafonne sa responsabilité totale à 100 $ et vous oblige à l’indemniser pour les réclamations découlant de l’utilisation de contenu crawlé pour développer, entraîner ou déployer des systèmes d’IA. Common Crawl recommande un avis juridique avant toute utilisation commerciale.

Can you download all Wayback Machine data?

Pas en masse. L’Internet Archive ne publie aucun export en masse de l’archive web générale, et l’accès passe par des API à débit limité. Pour une analyse à l’échelle de la recherche, l’Internet Archive propose ARCH, sa plateforme de calcul, qui est sur devis uniquement et sans tarification publiée.

What rate should I design a Wayback CDX client against?

Concevez en fonction de 24 demandes par minute. La limite est de 30 par minute, que l’Internet Archive ne publie pas, partagée entre les endpoints CDX et timemap depuis qu’ils sont devenus un seul service, et le client wayback livre 80 % de celle-ci comme valeur par défaut. Le replay est un pool séparé à 600 par minute, donc concevez en fonction de 480 pour celui-là.

Why does a Common Crawl domain lookup return records but no content?

Parce que ces enregistrements sont des récupérations de robots.txt. CCBot demande robots.txt à chaque hôte qu’il touche, et quand un site le désautorise, cette demande et toute redirection vers celle-ci sont tout ce que le crawl conserve. Classifiez les URL retournées avant de conclure qu’un domaine est couvert, et indiquez votre type de correspondance, car une requête par préfixe et une requête par domaine peuvent retourner des comptes différents.