En bref.IndexNow permet de notifier Bing qu'une URL vient de changer en moins de 60 secondes. ChatGPT Search, Perplexity et Copilot indexent plus rapidement en conséquence. Setup en 15 minutes : générer une clé, poser un fichier de vérification à la racine, appeler l'API via un POST JSON. Le reste est de la plomberie dans votre workflow de publication.
Qu'est-ce qu'IndexNow ?
IndexNow est un protocole ouvert publié conjointement par Microsoft Bing et Yandex le 18 octobre 2021. Sa logique est simple : au lieu d'attendre qu'un moteur de recherche vienne crawler votre site pour découvrir qu'une page a changé, vous notifiez explicitement les moteurs du changement. Un appel HTTP POST, un payload JSON de quelques lignes, et l'information est propagée en moins de 60 secondes à tous les moteurs du consortium.
Le protocole repose sur deux éléments. Une clé alphanumérique que vous générez une fois pour toutes et qui identifie votre site. Un fichier de vérification servi à la racine (https://votre-site.com/[cle].txt) qui prouve que vous contrôlez le domaine. Ensuite, chaque soumission d'URL contient la clé, et les moteurs refusent toute soumission dont la clé ne correspond pas au fichier de vérification. Le mécanisme est à la fois léger et sécurisé.
Les moteurs qui respectent le protocole en 2026 sont Bing, Yandex, DuckDuckGo, Seznam (moteur tchèque) et Naver (Corée du Sud). La spécification complète est publiée sur indexnow.org, et la documentation d'implémentation côté Bing sur Microsoft Learn. Une soumission unique à l'endpoint Bing propage automatiquement l'information aux autres moteurs du consortium.
Google, Baidu, Apple et Brave ne font pas partie du consortium. Google a publiquement refusé de rejoindre IndexNow en 2022, par la voix de John Mueller, invoquant des problèmes d'abus potentiels et la préférence pour son propre système de découverte. Cette position n'a pas changé depuis.
Pourquoi IndexNow accélère la citation IA ?
Comprendre l'intérêt pour le GEO (Generative Engine Optimization) oblige à tracer la chaîne complète. ChatGPT Search, lancé par OpenAI fin 2024, et Microsoft Copilot utilisent tous deux l'index Bing comme source primaire pour leur recherche en temps réel. Perplexity utilise un index propriétaire mais complète par Bing et Google. Toute accélération de l'indexation Bing bénéficie donc directement à ces trois moteurs génératifs.
La chaîne temporelle sans IndexNow ressemble à ceci. Vous publiez une page. BingBot la découvre via le sitemap ou un lien externe, en général sous 3 à 10 jours. Après crawl, l'URL entre dans l'index Bing sous 1 à 7 jours supplémentaires. Entre publication et possibilité de citation par ChatGPT Search ou Copilot, comptez 2 à 3 semaines dans un scénario standard.
Avec IndexNow, la même chaîne est compressée. Votre système de publication POSTe l'URL à l'API IndexNow en moins d'une seconde après la mise en ligne. Bing la découvre sous 60 secondes selon la documentation Microsoft, et la crawle sous 24 à 48 heures en pratique. Résultat observé sur des sites éditoriaux : citabilité possible dans ChatGPT Search et Copilot sous 48 à 72 heures, contre 2 à 3 semaines sans IndexNow. Le gain est d'un ordre de grandeur.
L'avantage est encore plus marqué pour les sites à publication fréquente (presse, blogs techniques, catalogues e-commerce) ou pour les mises à jour urgentes (correction d'info, actualité, communiqué). Pour une analyse détaillée des canaux et des délais Copilot, voir le guide être cité par Copilot.
IndexNow fonctionne-t-il pour Google ?
Non. Google n'a jamais rejoint le consortium IndexNow et a publiquement expliqué les raisons de son refus. John Mueller (Search Advocate chez Google) a mentionné en 2022 trois objections principales : le risque d'abus par spamming des endpoints, la préférence pour un système centralisé via Search Console, et le besoin de capter des signaux plus riches qu'une simple notification de changement.
Pour Google, l'équivalent fonctionnel passe par trois canaux. La Search Consolepermet une soumission manuelle via l'outil Inspection d'URL, avec un bouton « Demander l'indexation » limité à quelques dizaines d'appels par jour. L'Indexing API est réservée aux types de contenu JobPosting et BroadcastEventdepuis 2022 : son usage pour d'autres types viole les conditions d'utilisation. Enfin, le sitemap reste le canal de découverte principal pour tout le reste.
Nuance importante pour le GEO : Google via SGE et AI Overviews dispose d'autres canaux (Googlebot historique, Common Crawl, feedback utilisateurs). Même si IndexNow ne touche pas Google directement, votre contenu indexé plus vite par Bing génère plus rapidement des brand mentionset des liens externes, que Google détecte. L'effet indirect existe mais reste marginal. Pour accélérer l'indexation Google elle-même, le bon réflexe est le sitemap bien tenu couplé à une soumission Search Console sur les URLs prioritaires.
Comment implémenter IndexNow en 15 minutes ?
L'intégration tient en cinq étapes. Comptez 15 minutes pour la mise en place initiale, puis quelques lignes d'intégration dans votre workflow de publication.
Étape 1. Générer la clé IndexNow
La clé est une chaîne alphanumérique de 8 à 128 caractères hexadécimaux (0 à 9, a à f). Vous pouvez la créer avec n'importe quel générateur, mais le plus propre est une sortie aléatoire d'OpenSSL.
# Génération d'une clé IndexNow de 32 caractères
openssl rand -hex 16
# Exemple de sortie : a1b2c3d4e5f67890abcdef1234567890Conservez cette clé dans un gestionnaire de secrets ou dans vos variables d'environnement. Elle sert d'identifiant permanent du site auprès du consortium IndexNow. Ne la régénérez pas sans nécessité : chaque rotation oblige à mettre à jour le fichier de vérification.
Étape 2. Déposer le fichier de vérification
Créez un fichier texte dont le nom est exactement la clé suivie de .txt, et dont le contenu est la clé elle-même sans aucune autre information. Déposez-le à la racine HTTP du domaine.
# Nom du fichier
a1b2c3d4e5f67890abcdef1234567890.txt
# Contenu du fichier (une seule ligne, pas de retour final)
a1b2c3d4e5f67890abcdef1234567890Testez l'accès via curl :
curl https://votre-site.com/a1b2c3d4e5f67890abcdef1234567890.txt
# Doit renvoyer HTTP 200 avec la clé en corps de réponseSur une app Next.js, placez le fichier dans public/. Sur WordPress, à la racine FTP. Sur Shopify, servez-le via un endpoint custom car la plateforme ne permet pas de poser un fichier arbitraire à la racine.
Étape 3. Écrire la fonction de soumission
L'endpoint IndexNow accepte deux formats. Une URL simple par GET pour tester : https://api.indexnow.org/indexnow?url=X&key=Y. Un batch par POST JSON pour la production, jusqu'à 10 000 URLs dans un seul appel. Voici la structure JSON du POST :
{
"host": "votre-site.com",
"key": "a1b2c3d4e5f67890abcdef1234567890",
"keyLocation": "https://votre-site.com/a1b2c3d4e5f67890abcdef1234567890.txt",
"urlList": [
"https://votre-site.com/blog/article-1",
"https://votre-site.com/blog/article-2"
]
}Les codes de réponse attendus : 200 ou 202 en succès, 400 si le JSON est malformé, 403 si la clé ne correspond pas au fichier de vérification, 422si le domaine n'est pas vérifiable (clé mal placée ou inaccessible), 429 si vous dépassez la limite de 10 000 URLs par jour.
Étape 4. Intégrer au workflow de publication
Le but : qu'aucune publication ne parte sans qu'une soumission IndexNow ne suive dans la seconde. Trois patterns selon la stack :
- WordPress. Un hook
save_postdansfunctions.phpou dans un petit plugin maison. Alternative plus propre : installer le plugin officiel IndexNow par Microsoft Bing disponible sur wordpress.org, qui gère tout automatiquement. - Next.js / Vercel. Un endpoint
/api/indexnowappelé depuis le script de build, ou mieux : depuis la logique de revalidation ISR viarevalidatePath. Vous pouvez aussi utiliser un Deploy Hook Vercel qui déclenche la soumission après chaque déploiement réussi. - Shopify. Pas de hook natif. La route de contournement : lire le flux
products.atomdepuis un cron externe (GitHub Actions, Vercel Cron), détecter les URLs nouvelles ou modifiées via leurupdated_at, soumettre la liste à IndexNow.
Étape 5. Vérifier dans Bing Webmaster Tools
Connectez-vous à Bing Webmaster Tools, vérifiez votre domaine (via DNS, meta tag ou fichier XML), puis ouvrez la section IndexNow Insights. Vous y voyez le nombre d'URLs soumises par jour, le statut de chacune (soumise, découverte, indexée) et les erreurs éventuelles. Un décalage de 24 à 48 heures entre soumission et indexation est normal. Un taux de rejet supérieur à 5 % indique un problème côté site (robots.txt bloquant, 301 en chaîne, canonical pointant ailleurs).
Script Node.js prêt à copier
Voici une implémentation complète en Node.js (fetch natif, disponible depuis Node 18) avec gestion d'erreurs, retry exponentiel et logging. Elle fonctionne telle quelle dans un endpoint Next.js, un script cron ou un hook Vercel.
// lib/indexnow.ts
// Soumission IndexNow avec retry exponentiel et logging structure.
// Compatible Node 18+ (fetch natif) et environnements edge (Next.js).
const INDEXNOW_ENDPOINT = "https://api.indexnow.org/indexnow";
const INDEXNOW_KEY = process.env.INDEXNOW_KEY!;
const INDEXNOW_HOST = process.env.INDEXNOW_HOST!;
const INDEXNOW_KEY_LOCATION = `https://${INDEXNOW_HOST}/${INDEXNOW_KEY}.txt`;
interface IndexNowResult {
ok: boolean;
status: number;
submittedUrls: number;
error?: string;
retries: number;
}
export async function submitToIndexNow(
urls: string[]
): Promise<IndexNowResult> {
if (!INDEXNOW_KEY || !INDEXNOW_HOST) {
return {
ok: false,
status: 0,
submittedUrls: 0,
error: "INDEXNOW_KEY ou INDEXNOW_HOST manquant",
retries: 0,
};
}
// Dedoublonnage et validation basique.
const validUrls = Array.from(new Set(urls)).filter(
(u) => u.startsWith(`https://${INDEXNOW_HOST}`)
);
if (validUrls.length === 0) {
return {
ok: false,
status: 0,
submittedUrls: 0,
error: "Aucune URL valide pour ce host",
retries: 0,
};
}
// Decoupage en batchs de 10 000 (limite de l'API).
const batches: string[][] = [];
for (let i = 0; i < validUrls.length; i += 10000) {
batches.push(validUrls.slice(i, i + 10000));
}
let totalSubmitted = 0;
let lastStatus = 0;
let totalRetries = 0;
for (const batch of batches) {
const payload = {
host: INDEXNOW_HOST,
key: INDEXNOW_KEY,
keyLocation: INDEXNOW_KEY_LOCATION,
urlList: batch,
};
let attempt = 0;
let success = false;
while (attempt < 3 && !success) {
try {
const res = await fetch(INDEXNOW_ENDPOINT, {
method: "POST",
headers: {
"Content-Type": "application/json; charset=utf-8",
"User-Agent": "YourSite/1.0 IndexNowClient",
},
body: JSON.stringify(payload),
});
lastStatus = res.status;
if (res.status === 200 || res.status === 202) {
totalSubmitted += batch.length;
success = true;
console.log(
`[IndexNow] ${batch.length} URLs soumises (status ${res.status})`
);
} else if (res.status === 429) {
// Rate limit : attendre 60s puis reessayer.
await new Promise((r) => setTimeout(r, 60000));
totalRetries++;
attempt++;
} else {
// 400, 403, 422 : erreur definitive, pas de retry.
const body = await res.text();
console.error(
`[IndexNow] Erreur ${res.status} : ${body.slice(0, 200)}`
);
break;
}
} catch (err) {
// Erreur reseau : backoff exponentiel.
const delay = Math.min(1000 * Math.pow(2, attempt), 10000);
await new Promise((r) => setTimeout(r, delay));
totalRetries++;
attempt++;
}
}
}
return {
ok: totalSubmitted > 0,
status: lastStatus,
submittedUrls: totalSubmitted,
retries: totalRetries,
};
}Utilisation dans un endpoint Next.js :
// app/api/indexnow/route.ts
import { NextResponse } from "next/server";
import { submitToIndexNow } from "@/lib/indexnow";
export async function POST(req: Request) {
const { urls } = await req.json();
if (!Array.isArray(urls)) {
return NextResponse.json(
{ error: "urls doit etre un tableau" },
{ status: 400 }
);
}
const result = await submitToIndexNow(urls);
return NextResponse.json(result, { status: result.ok ? 200 : 500 });
}Variables d'environnement à ajouter dans .env.local et dans le dashboard Vercel :
INDEXNOW_KEY=a1b2c3d4e5f67890abcdef1234567890
INDEXNOW_HOST=votre-site.comFaut-il aussi Bing Webmaster Tools ?
Oui, les deux sont complémentaires. IndexNow est un canal de notification. Bing Webmaster Tools est un outil de monitoring et de diagnostic. Sans l'un ou sans l'autre, vous êtes aveugle sur une moitié de la chaîne d'indexation.
Les fonctionnalités clefs de Bing Webmaster Tools qui complètent IndexNow :
- Submit Sitemap.Pousser votre sitemap XML donne à Bing une vue d'ensemble de vos URLs, utile pour le crawl initial et pour détecter les URLs orphelines.
- URL Inspection.Vérifier le statut d'une URL précise (indexée, bloquée par robots.txt, erreur de crawl) et forcer un recrawl immédiat. Limité à environ 10 inspections par jour.
- IndexNow Insights.Statistiques détaillées des URLs soumises via IndexNow : taux d'acceptation, dates de crawl, erreurs. Indispensable pour debugger un script IndexNow qui ne fonctionne pas.
- Backlinks. Vue des liens entrants vus par Bing. Souvent plus riche que Google Search Console pour les domaines européens.
- Search Performance.Impressions et clics depuis Bing, utile pour mesurer l'effet indirect de votre présence Copilot et ChatGPT Search sur le trafic direct Bing.
Vérification du domaine en 2 minutes via meta tag, fichier XML ou DNS. Pour un site déjà vérifié sur Google Search Console, Bing propose une importation directe des propriétés : cliquer sur Import from GSC, s' authentifier avec le compte Google, et toutes les propriétés sont transférées en un clic.
Comment vérifier que ça marche ?
Trois niveaux de vérification, du plus synthétique au plus granulaire. Faites les trois sur un cycle de 7 jours après mise en production.
Dashboard Bing Webmaster Tools
Allez dans IndexNow Insights. Vous voyez le nombre d'URLs soumises par jour, le code de réponse de chaque soumission, le statut d'indexation. Chiffres attendus pour un site de taille moyenne qui pousse à chaque publication : 1 à 50 soumissions par jour, taux de succès supérieur à 95 %, délai moyen entre soumission et indexation de 24 à 36 heures.
Logs serveur sur l'endpoint IndexNow
Loggez chaque appel à api.indexnow.org depuis votre serveur avec timestamp, URL soumise, code de réponse et body. Un simple fichier JSON append-only ou une table en base suffit. Vous détectez ainsi :
- Les erreurs HTTP 403 (clé mal placée) ou 422 (domaine non vérifiable).
- Les pics de latence quand api.indexnow.org est lent (quelques fois par an, en général moins de 2 heures).
- Les doublons involontaires (même URL soumise plusieurs fois par jour), qui ne cassent rien mais polluent les statistiques.
Test de citabilité via site:yourdomain.com
Dans Bing ou Copilot, tapez site:votre-site.com/blog/nouvel-article. Si la page apparaît, elle est indexée. Faites le test 24, 48 et 72 heures après soumission IndexNow pour confirmer le délai. En parallèle, posez une question dans ChatGPT Search ou Copilot dont la réponse se trouve uniquement dans la page nouvellement publiée : si vous êtes cité, la chaîne complète fonctionne. Pour une analyse des délais typiques observés en 2026, voir combien de temps pour être cité par ChatGPT.
Erreurs fréquentes et comment les éviter
Clé mal placée ou inaccessible
Symptôme : HTTP 403 ou 422 à chaque appel. Cause : le fichier [cle].txtn'est pas servi à la racine HTTP du domaine, ou son contenu diffère de la clé déclarée dans le payload. Vérifiez avec curl https://votre-site.com/[cle].txt : le contenu renvoyé doit être exactement la clé, sans espace, sans BOM, sans retour chariot final. Sur Vercel, placez le fichier dans public/. Sur un CDN avec cache agressif, purgez après dépôt.
URL malformée
Symptôme : HTTP 400. Cause : URLs dans le tableau urlList qui ne commencent pas par https:// ou dont le host ne correspond pas à celui déclaré dans host. Nettoyage simple : avant POST, filtrer la liste pour ne garder que les URLs qui commencent exactement par https://${host}/. Rejeter silencieusement les autres.
Dépassement de la limite de 10 000 URLs/jour
Symptôme : HTTP 429 après plusieurs centaines de soumissions. Cause : vous poussez plus de 10 000 URLs sur 24 heures. Solution : implémenter un throttler côté client qui compte les soumissions par jour glissant et bascule en file d'attente au-delà du seuil. Pour les très gros catalogues, ne soumettez que les URLs nouvelles ou modifiées, pas l'ensemble à chaque run.
Mauvais Content-Type
Symptôme : HTTP 400 avec message Content-Type not supported. Cause : header Content-Type: text/plain ou application/x-www-form-urlencoded. IndexNow exige strictement Content-Type: application/json; charset=utf-8. Ajoutez-le explicitement dans toute requête fetch ou axios.
Oubli de l'encodage UTF-8 pour les URLs avec caractères spéciaux
Les URLs contenant des caractères non-ASCII (accents, idéogrammes) doivent être percent-encoded avant soumission. https://site.com/article-été devient https://site.com/article-%C3%A9t%C3%A9. En JavaScript, utilisez new URL(raw).toString() pour normaliser automatiquement.
Soumission d'URLs bloquées par robots.txt
Symptôme : la soumission réussit (HTTP 200), mais l'URL n'apparaît jamais dans l'index. Cause : votre robots.txt bloque BingBot ou OAI-SearchBot sur cette URL. IndexNow notifie, mais le crawl échoue. Vérifiez que votre robots.txt autorise bien tous les bots IA avant toute soumission IndexNow.
Où placer IndexNow dans une stratégie GEO complète ?
IndexNow est un multiplicateur de vitesse, pas un créateur de citabilité. Si votre contenu n'est pas structuré pour être cité (pas de paragraphe answer-first, pas de JSON-LD, pas de chiffres sourcés), accélérer son indexation ne change rien à sa non-citation. Pour construire une base de citabilité robuste, voir les deux piliers méthode être cité par ChatGPT et être cité par Copilot. Pour la couche technique d'accès, le prérequis absolu reste la configuration robots.txt pour les bots IA.
IndexNow devient pertinent une fois ces fondations posées. Il transforme une publication citable mais lente en une publication citable et rapide. Pour un diagnostic complet de votre citabilité IA, l'outil Calculer mon Score GEOévalue les 13 critères sur 100 points en moins de 10 secondes, dont la couche technique d'accès et la fraîcheur du contenu (deux signaux directement liés à l'efficacité d'IndexNow). La méthodologie ScoreGeo détaille la calibration et les sources. Pour un accompagnement expert sur l'architecture technique et le cycle de publication, l'équipe intervient en consultant GEO France sur mission ponctuelle ou récurrente.
Sources et lectures complémentaires
Les affirmations techniques et chiffrées de cet article s'appuient sur les sources officielles suivantes :
- IndexNow Protocol Specification. Spécification canonique du protocole, publiée par le consortium Microsoft / Yandex. Référence pour la structure du payload, les codes de réponse et les règles de validation.
- Microsoft Learn, Bing Webmaster IndexNow Documentation. Guide d'implémentation détaillé côté Bing : limites d'appel, format de clé, intégration CMS, débogage.
- Bing Webmaster Tools. Console officielle de vérification de domaine, soumission sitemap, IndexNow Insights, URL Inspection, backlinks.
- OpenAI Documentation, Overview of OpenAI Crawlers. Référence sur OAI-SearchBot, le crawler utilisé par ChatGPT Search, qui bénéficie de l'indexation Bing accélérée via IndexNow.
- Yandex Webmaster IndexNow Guide. Documentation côté Yandex, cofondateur du protocole, pour les sites cherchant à toucher le marché russophone en plus de Bing.
- Google Indexing API Quickstart. Référence sur le système concurrent de Google, limité à JobPosting et BroadcastEvent, à ne pas confondre avec IndexNow.
- ScoreGeo, Configurer robots.txt pour les bots IA. Prérequis technique : IndexNow ne sert à rien si les bots IA n'ont pas l'autorisation de crawl.
- ScoreGeo, Combien de temps pour être cité par ChatGPT. Analyse des délais typiques observés avec et sans IndexNow, et de la variance entre moteurs.