Si alguna vez has publicado contenido nuevo y has tenido que esperar semanas para que Google lo indexe, sabes exactamente lo desesperante que puede ser. Sobre todo después de una migración web, un cambio de arquitectura o una limpieza masiva de URLs.
La buena noticia es que existe una solución oficial de Google para acelerar este proceso: la Google Indexing API. En esta guía te voy a explicar exactamente cómo configurarla y usarla para indexar URLs de forma masiva, sin depender de que Googlebot pase cuando le apetezca.
¿Qué es la Google Indexing API y para qué sirve?
La Google Indexing API es una herramienta oficial de Google que te permite notificarle directamente qué URLs quieres que indexe o elimine de su índice. En lugar de esperar a que Googlebot rastree tu web de forma orgánica, tú tomas el control y le dices exactamente qué páginas procesar.
Es especialmente útil en estos casos:
- Después de migraciones web con cambios masivos de URLs
- Cuando publicas contenido nuevo urgente que necesitas posicionar rápido
- Tras una limpieza de URLs con redirecciones 301 que quieres que Google procese cuanto antes
- En webs grandes donde el crawl budget limita la frecuencia de rastreo
Importante: La API permite por defecto 200 peticiones al día por proyecto. Puedes solicitar a Google una ampliación de cuota si necesitas más.
Paso 1: Crear el Proyecto en Google Cloud Platform
Todo empieza en Google Cloud Platform (GCP). Si no tienes cuenta, puedes crearla gratis.
- Ve a Google Cloud Console
- Haz clic en Crear proyecto y dale un nombre descriptivo (por ejemplo: «Indexing API MiWeb»)
- Una vez creado el proyecto, ve al menú lateral y selecciona Biblioteca de APIs
- Busca Web Search Indexing API (también puede aparecer como «Indexing API»)
- Haz clic en Habilitar
Sin este paso no hay nada que hacer — es la base que activa el acceso a la API.
Paso 2: Crear la Cuenta de Servicio y Descargar la Clave JSON
Ahora necesitas crear una Cuenta de Servicio: básicamente un usuario técnico que actuará en nombre de tu aplicación para autenticar las llamadas a la API.
- En el menú de GCP ve a IAM y administración → Cuentas de servicio
- Haz clic en Crear cuenta de servicio y asígnale un nombre descriptivo
- En el campo de rol, selecciona Propietario (o Editor como mínimo)
- Guarda y copia el email que se genera automáticamente — tiene este formato:
[email protected]
Ese email lo vas a necesitar en el siguiente paso, así que no lo pierdas.
Una vez creada la cuenta:
- Entra en la cuenta de servicio recién creada
- Ve a la pestaña Claves → Agregar clave → Crear clave nueva
- Selecciona formato JSON y descarga el archivo
⚠️ Guarda este archivo JSON en un lugar seguro. Es la credencial principal que autentica todas las peticiones. No lo compartas ni lo subas a repositorios públicos.
Paso 3: Vincular la Cuenta de Servicio en Google Search Console
Este paso es crítico: sin él, la API no tiene permisos para enviar URLs aunque todo lo demás esté bien configurado.
- Entra en tu propiedad en Google Search Console
- Ve a Ajustes → Usuarios y permisos → Añadir usuario
- Pega el email de la cuenta de servicio que copiaste en el paso anterior
- Asígnale permisos de Propietario
Ojo: tiene que ser Propietario obligatoriamente. Con permisos de Editor o menor, la API devolverá errores de permisos en cada llamada.
Paso 4: Envío Masivo de URLs con Google Sheets (Método Recomendado)
Aquí viene la parte práctica. Vamos a usar Google Sheets con un script de Apps Script para enviar URLs de forma masiva. Este es el método que recomiendo porque te da control total sobre qué URLs envías, en qué orden, y puedes ver el estado de cada petición directamente en la hoja.
¿Por qué Google Sheets y no el plugin de WordPress?
Existen plugins como Instant Indexing for Google (Rank Math) que también conectan con la Indexing API y son muy cómodos si tienes WordPress. Sin embargo, Google Sheets te ofrece ventajas claras:
- Control total de las URLs: filtras, ordenas y eliges exactamente qué envías
- Registro de respuestas: ves en tiempo real qué URL se procesó correctamente y cuál dio error
- Independencia de plataforma: funciona aunque no tengas WordPress
- Escalabilidad: puedes trabajar con listas de cientos de URLs de forma ordenada
Cómo configurar el script en Google Sheets
- Abre una hoja de cálculo nueva en Google Sheets
- En la columna A pon el encabezado
URLy lista todas las URLs que quieres indexar debajo - En la columna B pon el encabezado
Estado— aquí el script escribirá el resultado de cada petición - Ve a Extensiones → Apps Script
- Pega el script de conexión con la Indexing API (que incluye tus credenciales del JSON)
- Crea un botón en la hoja (Insertar → Dibujo) y asígnale la función principal del script
- Ejecuta y autoriza los permisos la primera vez
El script irá procesando cada URL de la lista y escribirá Enviado o el código de error en la columna B, para que tengas un registro completo de todo lo que se ha procesado.
Script para Google Sheets
// ==========================================
// CONFIGURACIÓN DE CREDENCIALES
// ==========================================
const CLIENT_EMAIL = "TU_CLIENT_EMAIL_AQUI";
const PRIVATE_KEY = "TU_PRIVATE_KEY_AQUI";
/**
* Función principal para enviar URLs seleccionadas
*/
function enviarURLsAIndexingAPI() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const lastRow = sheet.getLastRow();
if (lastRow < 2) {
SpreadsheetApp.getUi().alert("No hay URLs en la columna A.");
return;
}
// Obtener el token de acceso OAuth2
const token = getAccessToken();
// Recorrer la lista de URLs a partir de la fila 2
for (let i = 2; i <= lastRow; i++) {
let url = sheet.getRange(i, 1).getValue().toString().trim();
let estado = sheet.getRange(i, 2).getValue();
if (url !== "" && estado !== "Enviado") {
let response = publicarURL(url, token);
if (response.code === 200) {
sheet.getRange(i, 2).setValue("Enviado");
sheet.getRange(i, 3).setValue(new Date().toLocaleString());
} else {
sheet.getRange(i, 2).setValue("Error: " + response.message);
}
}
}
}
/**
* Genera el JWT y solicita el Bearer Token de Google
*/
function getAccessToken() {
const header = { alg: "RS256", typ: "JWT" };
const now = Math.floor(Date.now() / 1000);
const claimSet = {
iss: CLIENT_EMAIL,
scope: "https://www.googleapis.com/auth/indexing",
aud: "https://oauth2.googleapis.com/token",
exp: now + 3600,
iat: now
};
const toSign = Utilities.base64EncodeWebSafe(JSON.stringify(header)) + "." +
Utilities.base64EncodeWebSafe(JSON.stringify(claimSet));
const signature = Utilities.computeRsaSha256Signature(toSign, PRIVATE_KEY);
const jwt = toSign + "." + Utilities.base64EncodeWebSafe(signature);
const options = {
method: "post",
payload: {
grant_type: "urn:ietf:params:oauth:grant-type:jwt-bearer",
assertion: jwt
},
muteHttpExceptions: true
};
const response = UrlFetchApp.fetch("https://oauth2.googleapis.com/token", options);
const json = JSON.parse(response.getContentText());
return json.access_token;
}
/**
* Envía la solicitud POST a la Indexing API
*/
function publicarURL(urlIndexar, token) {
const endpoint = "https://indexing.googleapis.com/v3/urlNotifications:publish";
const payload = {
url: urlIndexar,
type: "URL_UPDATED" // O "URL_DELETED" si quieres desindexar
};
const options = {
method: "post",
contentType: "application/json",
headers: {
Authorization: "Bearer " + token
},
payload: JSON.stringify(payload),
muteHttpExceptions: true
};
const response = UrlFetchApp.fetch(endpoint, options);
const code = response.getResponseCode();
const text = response.getContentText();
if (code === 200) {
return { code: 200, message: "OK" };
} else {
return { code: code, message: text };
}
}
Paso 4 (Alternativa): Envío con Plugin Rank Math en WordPress
Si tienes WordPress y quieres una solución rápida para URLs puntuales, el plugin Instant Indexing for Google de Rank Math es una opción válida.
- Instala el plugin desde el repositorio de WordPress
- Ve a los ajustes del plugin → Google API Settings y sube o pega el contenido de tu archivo JSON
- Guarda los cambios
- En la pestaña Console Editor pega las URLs que quieres enviar (hasta 200 por lote) y haz clic en Send to API
La principal limitación frente a Google Sheets es que tienes menos visibilidad sobre el estado de cada envío y menos flexibilidad para gestionar listas grandes.
Límites de la API y cuándo usarla
La Google Indexing API no es una solución para el día a día — es una herramienta para situaciones donde la velocidad de indexación importa.
| Situación | ¿Usar la API? |
|---|---|
| Migración web con cambio de URLs | ✅ Sí, prioritario |
| Publicación de contenido urgente | ✅ Sí |
| Limpieza masiva de URLs con 301 | ✅ Sí |
| Publicación rutinaria de posts | ❌ No es necesario |
| Web nueva sin autoridad | ⚠️ Úsala, pero el efecto será menor |
Recuerda que el límite por defecto son 200 peticiones diarias por proyecto. Si necesitas más, puedes solicitarle a Google una ampliación de cuota desde la consola de GCP.
Conclusión
La Google Indexing API es una de las herramientas más potentes que tienes disponibles para controlar la indexación de tu web. Configurarla lleva algo de tiempo la primera vez, pero una vez lista, puedes indexar cientos de URLs en minutos en lugar de esperar semanas.
¿Tienes dudas sobre algún paso? Déjamelo en los comentarios y te respondo.