Crawl budget: guida pratica per grandi piattaforme

Audit passo a passo del crawl budget: analisi dei log, GSC, fonti di spreco e rimedi, Sitemap index, rate limiting, KPI e roadmap per team Dev/SEO.

Il crawl budget è il numero di pagine che Googlebot è disposto a scansionare sul tuo sito in un dato periodo. Sui siti piccoli è praticamente illimitato. Sulle piattaforme con milioni di URL diventa una risorsa strategica: il bot lo spreca su filtri, paginazione, template vuoti e pagine di staging invece di scansionare i contenuti prioritari. Il risultato: indicizzazione ritardata dei nuovi prodotti, copertura debole del catalogo, posizionamenti persi.

Dove va il crawl budget: le pagine di valore competono con filtri, parametri UTM e paginazione per l'attenzione del bot.
Google distingue ufficialmente due concetti: crawl rate limit (quanto spesso il bot può visitare senza sovraccaricare il server) e crawl demand (quante pagine Google vuole scansionare in base al valore percepito). Il crawl budget è l'intersezione dei due fattori. L'ottimizzazione dà un impatto reale proprio sulle grandi piattaforme.
5–10×

Spreco di budget

Rapporto tipico fra URL scansionati e pagine davvero di valore su una piattaforma e-commerce non ottimizzata

60–80%

Perso nei duplicati

Quota di budget consumata da URL parametrici e paginazione quando non ci sono mitigazioni

2–4 sett.

Ritardo di indicizzazione

Ritardo tipico prima che un nuovo SKU compaia nell'indice quando il budget è saturo

>50k

Soglia del problema

Le piattaforme con più di 50.000 URL sentono già gli effetti dei vincoli di crawl budget

Passo 1: raccolta e analisi dei log dei crawler

I log del server web sono la fonte di verità primaria su ciò che Googlebot scansiona davvero. L'analisi dei log rivela la frequenza reale delle richieste, quali sezioni il bot ignora o dove si impantana, e quali risposte HTTP restituisce il server. Senza log, ogni ottimizzazione è un azzardo.

Estrarre le richieste di Googlebot da Nginx / Apache

bash
# Filter only Googlebot requests from the last 7 days
grep 'Googlebot' /var/log/nginx/access.log \
  | awk '{print $7}' \
  | sort | uniq -c | sort -rn \
  | head -50

# HTTP status codes seen by Googlebot
grep 'Googlebot' /var/log/nginx/access.log \
  | awk '{print $9}' \
  | sort | uniq -c | sort -rn

# Top URLs returning 404 to Googlebot
grep 'Googlebot' /var/log/nginx/access.log \
  | awk '$9 == "404" {print $7}' \
  | sort | uniq -c | sort -rn | head -30

Per l'analisi strutturata di grandi volumi di log usa strumenti dedicati: Screaming Frog Log File Analyser, Semrush Log Analyser o uno stack ELK (Elasticsearch + Kibana). Raggruppano automaticamente gli URL per pattern e tracciano il crawl rate nel tempo.

MetricaCosa mostraIntervallo target
Crawl rate (rich./giorno)Intensità di scansione — quante pagine Googlebot richiede al giornoDipende dalla piattaforma; monitora il trend
Pagine scansionate/giornoURL unici scansionati al giorno — il KPI principale del crawl budgetDeve salire dopo l'ottimizzazione
Rapporto 200 / (301+302) / 404 / 500Quota di ogni tipo di risposta HTTP su tutte le richieste del bot200 > 90%; 404 < 5%; 500 ≈ 0%
% URL duplicati nella scansioneQuota di URL parametrici e duplicati nel log< 15% dopo l'ottimizzazione
Nuove pagine / totale scansionatoRapporto fra prime scansioni e visite ripetutePunta ad aumentare la quota di pagine nuove

Passo 2: Google Search Console e analisi delle risposte del server

Google Search Console fornisce dati aggregati di scansione senza richiedere accesso ai log del server. Il report Statistiche sulla scansione è il punto d'ingresso chiave. Mostra il numero medio di richieste giornaliere, la velocità di caricamento percepita e la distribuzione dei codici di risposta.

  • GSC → Impostazioni → Statistiche sulla scansione: grafico delle richieste, ripartizione per tipo di file e codice di risposta. Cerca picchi di 404/500 e cali dopo i deploy.
  • GSC → Indicizzazione → Pagine: numero di URL indicizzati e motivi di non indicizzazione. «Scoperta — attualmente non indicizzata» è un segnale diretto di crawl budget.
  • GSC → Controllo URL: verifica manuale dello stato di una pagina specifica — quando è stata scansionata l'ultima volta, cosa ha visto Googlebot.
  • GSC → Impostazioni → Frequenza scansione: puoi limitare il crawl rate se il bot sovraccarica il server. Di norma non serve — limita solo quando hai problemi di performance misurabili.
«Scoperta — attualmente non indicizzata» in GSC è il segnale più diretto di carenza di crawl budget. Google sa che le pagine esistono (trovate via link o nella sitemap) ma non riesce a scansionarle in tempo. La priorità immediata è liberare budget dagli URL spazzatura.

Fonti di spreco del crawl budget

Su una grande piattaforma il bot perde budget in sei fonti tipiche. Identificale nei tuoi log e stima i volumi — avrai l'ordine di priorità per l'ottimizzazione.

Confronto fra allocazione del crawl budget sprecata e ottimizzata.

URL parametrici

?sort=price&filter=red&page=3 genera un numero esponenziale di URL unici con contenuti identici o quasi.

Paginazione infinita

/catalog?page=N — migliaia di URL con valore decrescente. Il bot può scansionare all'infinito le vecchie pagine del catalogo.

Contenuto duplicato

Pagine identiche su URL diversi: /category/ e /category?utm_source=email, HTTP vs HTTPS, www vs non-www.

Pagine temporanee

Landing di webinar, mockup di demo, pagine ?preview=1, bozze — nascono e spariscono, ma il bot continua a spendervi budget.

Template vuoti

Categorie senza prodotti, profili senza contenuti, pagine tag autogenerate — contenuti di bassa qualità prodotti a migliaia.

Parametri di sessione

?sessionid=abc123, ?token=xyz — URL unici per sessione. Ogni URL del genere è una «pagina nuova» per il bot.

Parametri URL e duplicati: rimedi

Gli URL parametrici sono la fonte di spreco più grande sulle piattaforme e-commerce. Non esiste un proiettile d'argento unico — la soluzione giusta dipende dalla natura del parametro.

Tipo di parametroEsempioAzione consigliata
Ordinamento?sort=price_ascDisallow in robots.txt oppure canonical verso l'URL senza parametro
Filtri senza contenuti unici?color=red&size=XLCanonical alla pagina categoria pulita + noindex via meta robots
Paginazione?page=5Canonical delle pagine 2+ alla pagina 1 (o Disallow per la paginazione profonda)
Tracciamento / UTM?utm_source=emailCanonical all'URL senza UTM su ogni pagina, oppure gestione parametri in GSC
Sessioni / token?sessionid=abcDisallow: /*?sessionid= in robots.txt; correggi la generazione degli URL nel codice
Anteprima / bozza?preview=1&draft=trueDisallow: /*?preview= e /*?draft= in robots.txt
Esempio di configurazione robots.txt per i parametri URL:
text
# robots.txt — blocking parametric URLs
User-agent: *

# Sort and filter parameters
Disallow: /*?sort=
Disallow: /*?order=
Disallow: /*?filter=
Disallow: /*?color=
Disallow: /*?size=

# Pagination deeper than page 3 (Allow/Disallow approach)
Disallow: /*?page=
Allow: /*?page=1
Allow: /*?page=2
Allow: /*?page=3

# Session and tracking parameters
Disallow: /*?sessionid=
Disallow: /*?token=
Disallow: /*?ref=
Disallow: /*?utm_

# Preview and drafts
Disallow: /*?preview=
Disallow: /*?draft=
Per i parametri con contenuti parzialmente unici (ad es. un filtro marca con una descrizione dedicata) il canonical è preferibile a Disallow: il bot può visitare la pagina, leggere il canonical e trasferire il valore dei link alla pagina principale. Disallow esclude del tutto la pagina dalla scansione e potenzialmente dall'indice.

Filtri, facet e paginazione

La navigazione a facet è il caso più complesso. Crea un'esplosione combinatoria di URL: 10 filtri con 5 valori ciascuno generano potenzialmente oltre un milione di combinazioni. L'obiettivo è tenere i facet di valore (marca + categoria) e bloccare le combinazioni inutili.

  1. Identifica i facet di valore: pagine con traffico organico alto o contenuti SEO unici (ad es. /catalog/nike/ con un testo dedicato alla marca) — tienile nell'indice con self-canonical.
  2. Aggiungi noindex + follow alle combinazioni di poco valore: la pagina viene renderizzata (i link vengono seguiti) ma non entra nell'indice. Usa <meta name="robots" content="noindex, follow"> nel template quando è attivo più di un facet.
  3. Disallow per i parametri puramente tecnici: ordinamento, colore, taglia — se non portano valore SEO — bloccali via robots.txt.
  4. Facet caricati via AJAX: se i facet si caricano via JavaScript senza riflettersi nell'URL, il bot non vede URL aggiuntivi. Il problema si risolve a livello di architettura.

Paginazione: canonical o Disallow

La strategia ottimale per la paginazione dipende dalla scala: fino a 10 pagine — consenti la scansione e aggiungi un canonical alla pagina 1 sulle pagine 2+. Per centinaia di pagine paginate — Disallow oltre la pagina 3–5. Lo scroll infinito senza parametri URL viene trattato dal bot come pagina unica — bene per il budget.

Pagine temporanee: webinar, mockup, demo

Le pagine temporanee sono un dissipatore nascosto di budget sulle piattaforme con team di marketing attivi. Landing di webinar, mockup di demo, pagine di anteprima per i clienti, varianti di test A/B — nascono in fretta e spesso restano per sempre, consumando silenziosamente crawl budget.

  • meta robots noindex: aggiungi <meta name="robots" content="noindex, nofollow"> al template di tutte le pagine temporanee. Il bot visita, legge la direttiva ed esclude l'URL dall'indice. Il metodo più semplice quando hai accesso al template.
  • Header HTTP X-Robots-Tag: se le pagine temporanee non hanno un template HTML dedicato (ad es. PDF o file generati), usa l'header di risposta HTTP: X-Robots-Tag: noindex, nofollow.
  • Disallow per prefisso di percorso: se le pagine temporanee vivono sotto prefissi prevedibili, bloccale in robots.txt. Nessuna garanzia di rimozione per un URL già indicizzato, ma i nuovi URL non verranno scansionati.
  • Autenticazione HTTP: per pagine di staging e preview è l'unico metodo affidabile di isolamento totale. Googlebot non ha credenziali e non scannerà la pagina.
Esempio di markup noindex nel tag e nell'header HTTP:
text
# robots.txt — patterns for temporary pages
User-agent: *

# Webinars and events
Disallow: /webinars/
Disallow: /events/draft-
Disallow: /landing/test-

# Mockups and previews
Disallow: /_preview/
Disallow: /mockups/
Disallow: /demo/

# A/B tests and experiments
Disallow: /*?variant=
Disallow: /*?experiment=
Disallow: /*?ab_test=

# Template preview parameters
Disallow: /*?preview=
Disallow: /*?draft=
Disallow: /*?revision=
Disallow non rimuove dall'indice una pagina già indicizzata. Per cancellare dall'indice le pagine temporanee già indicizzate usa noindex (il bot deve avere accesso per leggere la direttiva). Una volta che la pagina sparisce dall'indice, applica Disallow o imposta l'autenticazione HTTP.

Sitemap index su larga scala

Con milioni di URL una singola sitemap XML è impraticabile: è limitata a 50.000 URL e 50 MB. Un Sitemap Index è un file indice che punta alle sitemap figlie. Permette di strutturare le priorità e dirigere il budget dove serve di più.

xml
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <!-- Priority sections — crawled first -->
  <sitemap>
    <loc>https://example.com/sitemap-products.xml</loc>
    <lastmod>2026-05-15</lastmod>
  </sitemap>
  <sitemap>
    <loc>https://example.com/sitemap-categories.xml</loc>
    <lastmod>2026-05-15</lastmod>
  </sitemap>
  <!-- Lower-priority sections -->
  <sitemap>
    <loc>https://example.com/sitemap-blog.xml</loc>
    <lastmod>2026-05-10</lastmod>
  </sitemap>
  <!-- Do NOT include noindex pages or duplicates! -->
</sitemapindex>
Consigli per la struttura del Sitemap Index:
  • Dividi le sitemap per tipo di contenuto: prodotti, categorie, blog, pagine statiche — un file separato per ciascuno. Così vedi in GSC le statistiche di indicizzazione per sezione.
  • Mantieni lastmod onesto: lastmod segnala al bot la freschezza. Metti la data dell'ultima modifica reale, non quella di oggi — altrimenti il bot smette di fidarsi del segnale.
  • Escludi gli URL bloccati: le pagine con noindex o Disallow non devono comparire nella sitemap — mandano al bot segnali contraddittori.
  • Limite delle sitemap figlie: ogni file figlio — massimo 50.000 URL o 50 MB (compressi). Superato il limite, dividi in parti: sitemap-products-1.xml, sitemap-products-2.xml.
Consigli per la struttura del Sitemap Index:

Configurazione del server e rate limiting

Il lato server influenza il crawl budget in entrambe le direzioni: risposte lente spingono Googlebot a ridurre l'intensità di scansione, mentre gli errori 5xx fanno perdere tempo al bot in attese e tentativi. L'ottimizzazione del server migliora direttamente l'efficienza della scansione.

Codice HTTPInterpretazione di GooglebotAzione consigliata
200 OKLa pagina esiste; il bot scansiona e indicizzaLa norma per tutte le pagine pubbliche
301/302Redirect — il bot segue; il budget si spende su entrambi gli URLMinimizza le catene di redirect; correggi i link morti
404 Not FoundLa pagina non esiste; il bot smette di scansionare quell'URLAccettabile per pagine cancellate; > 5% di 404 nei log Googlebot = problema
429 Too Many RequestsLimitazione temporanea — il bot rallenta il crawl rateUsalo solo sotto reale carico del server; Googlebot rispetta il 429
503 Service UnavailableIndisponibilità temporanea — il bot riproverà più tardiRisposta corretta durante la manutenzione; non abusarne
500 Server ErrorErrore del server — il bot riprova, sprecando budgetElimina le cause dei 500; ogni 5xx brucia budget
Esempio di configurazione Nginx per la gestione della scansione:
nginx
# Nginx: return 429 when any crawler sends too many requests
limit_req_zone $http_user_agent zone=crawlers:10m rate=10r/s;

location / {
    limit_req zone=crawlers burst=20 nodelay;
    limit_req_status 429;
    # ... other settings
}
Esempio di configurazione Nginx per la gestione della scansione:
Per controllare il crawl rate di Googlebot usa GSC → Impostazioni → Frequenza scansione — non Crawl-delay in robots.txt. Google ignora ufficialmente Crawl-delay. Crawl-delay funziona per Yandex e Bing.

KPI e monitoraggio

Il crawl budget richiede monitoraggio continuo: qualsiasi deploy può esporre per sbaglio migliaia di nuovi URL parametrici. Prepara una dashboard settimanale e una revisione mensile delle metriche seguenti.

KPI chiave del crawl budget

Valori obiettivo per una grande piattaforma ottimizzata

Quota di 200 OK fra le richieste di Googlebot> 90%
Quota di 404 fra le richieste di Googlebot< 5%
Quota di URL duplicati nella scansione< 15%
Pagine indicizzate / pagine inviate nella Sitemap> 85%
  • Ogni settimana: confronta le richieste di scansione GSC della settimana corrente con la precedente. Un picco improvviso segnala nuovi duplicati introdotti da un deploy recente.
  • Ogni mese: controlla GSC → Pagine → «Scoperta — attualmente non indicizzata». Crescita con dimensione del sito invariata = problema di crawl budget.
  • Dopo ogni deploy importante: lancia Screaming Frog sul sito, verifica il numero di URL unici. Confronta con lo snapshot precedente.
  • Ogni trimestre: analisi completa dei log su 30 giorni. Cerca nuovi pattern di URL parametrici introdotti da codice aggiornato.
  • Avvisi: imposta una notifica se le risposte 5xx superano l'1% delle richieste Googlebot in una giornata.

Quick win e roadmap

L'ottimizzazione del crawl budget non è un compito una tantum — è un processo. Dividi il lavoro in quick win (effetto in 1–2 settimane) e cambiamenti sistemici (1–3 mesi).

Settimana 1Blocca le pagine temporanee e i parametri di anteprima

Aggiungi noindex ai template di webinar, mockup e demo. Aggiungi Disallow per ?preview=, ?draft= in robots.txt.

Impatto: −10–30% di budget
Settimana 2Disallow per parametri di tracciamento e sessioni

?utm_, ?sessionid=, ?ref= — in robots.txt. Canonical per le varianti UTM su tutti i template.

Impatto: −5–15% di budget
Mese 1Ottimizzazione del Sitemap Index

Suddividi in sitemap tematiche. Rimuovi le pagine noindex dalla sitemap. Aggiungi lastmod onesto.

Impatto: migliore copertura di indicizzazione
Mesi 1–2Canonical e noindex per i facet

Identifica le combinazioni di facet di valore vs inutili. Implementa noindex + follow per le combinazioni di poco valore.

Impatto: −20–50% di budget
Mesi 2–3Ottimizzazione delle risposte del server

Elimina le catene di redirect. Riduci i 404 dai log. Ottimizza il TTFB delle sezioni scansionate.

Impatto: crawl rate più alto
In continuoMonitoraggio e revisione regolare

Dashboard GSC, avvisi 5xx, analisi dei log trimestrale. Verifica dopo ogni deploy importante.

Impatto: prevenzione delle regressioni

Checklist dei quick win

  • noindex aggiunto a tutti i template di pagine temporanee (webinar, mockup, demo)
  • Disallow per ?preview=, ?draft=, ?sessionid=, ?utm_ in robots.txt
  • Canonical verso URL puliti su tutte le pagine parametriche (ordinamento, paginazione 2+)
  • Pagine con noindex e Disallow rimosse dalla Sitemap
  • Sitemap index suddiviso per sezione con lastmod accurato
  • Catene di redirect ridotte a un solo salto
  • 404 nei log Googlebot < 5% — link morti rimossi
  • Dashboard di monitoraggio settimanale configurata in GSC

FAQ

A quale dimensione del sito il crawl budget inizia a contare?
Google raccomanda di farci attenzione quando il sito supera il milione di URL. Nella pratica i problemi compaiono prima — già a 50–100k URL con generazione attiva di pagine parametriche. Se in GSC cresce «Scoperta — attualmente non indicizzata», è ora di un audit, a prescindere dalle dimensioni.
Per la scansione conta più la Sitemap o i link interni?
Contano entrambi e si completano. La Sitemap garantisce che il bot conosca l'esistenza delle pagine. I link interni trasferiscono PageRank e segnalano l'importanza relativa. Una pagina senza link interni e presente solo nella Sitemap verrà scansionata meno spesso di una pagina con centinaia di link interni.
Una CDN aiuta il crawl budget?
Sì, indirettamente. Una CDN accelera le risposte del server, permettendo a Googlebot di scansionare più pagine per unità di tempo a parità di crawl rate limit. Un TTFB veloce è uno dei fattori che influenza l'intensità di scansione.
Come influisce canonical sul crawl budget?
Canonical non blocca la scansione della pagina — il bot può comunque visitarla. Dopo aver letto il canonical, però, capisce che la pagina è un duplicato e riduce la frequenza di nuova scansione. Canonical risolve il problema dei duplicati in indicizzazione ma non risolve del tutto quello di scansione — per quello sono più efficaci Disallow o noindex.
Posso accelerare l'indicizzazione delle nuove pagine dopo aver ottimizzato il budget?
Sì. Liberato il budget, aggiorna la Sitemap con lastmod corretto per le pagine nuove. Usa l'Indexing API di Google per l'invio diretto degli URL (ufficialmente per notizie e annunci di lavoro, ma nella pratica efficace anche per altri contenuti). Crea link interni dalle sezioni autorevoli verso le pagine nuove.

Check it with SpiderHead

Free and local: run the audit on your own machine.

Try it