Usar la API Indexing

Introducción

Con la API Indexing, puedes solicitar a Google que actualice o retire páginas del índice de Google. En las solicitudes debes indicar la ubicación de las páginas en cuestión. También puedes consultar el estado de las notificaciones que has enviado a Google. De momento, esta API solo permite rastrear páginas que incluyan datos estructurados de ofertas de empleo o de transmisiones en directo.

Al enviar una solicitud a la API Indexing, incluye la ubicación de una página web para indicar a Google que puede rastrearla o retirarla de su índice.

En los siguientes ejemplos se muestra lo que puedes hacer con la API Indexing:

Actualizar URLs

POST https://indexing.googleapis.com/v3/urlNotifications:publish
{
  "url": "https://careers.google.com/jobs/google/technical-writer",
  "type": "URL_UPDATED"
}
Retirar URLs

POST https://indexing.googleapis.com/v3/urlNotifications:publish
{
  "url": "https://careers.google.com/jobs/google/technical-writer",
  "type": "URL_DELETED"
}
Consultar el estado de notificaciones

GET https://indexing.googleapis.com/v3/urlNotifications/metadata

Parámetros

En la siguiente tabla se muestran los campos que hay que incluir en todos los métodos para actualizar o retirar URLs:

Campos
url

Obligatorio

La ubicación completa del elemento que quieres actualizar o retirar.

type

Obligatorio

El tipo de notificación que has enviado.

Directrices

Cuando envíes solicitudes para actualizar o retirar URLs, asegúrate de seguir estas directrices.

  • En todas las llamadas a https://indexing.googleapis.com/v3/UrlNotifications:publish, el valor del encabezado Content-Type debe ser "application/json".
  • Puedes enviar solo una URL en el cuerpo de una solicitud de actualización, o hasta 100 solicitudes a la vez, tal como se describe más abajo, en el apartado Enviar solicitudes de indexación en lote.
  • En los ejemplos, el cuerpo de la solicitud es el valor de la variable content que se usa en los ejemplos de token de acceso.

Actualizar URLs

Para informar a Google de que puede rastrear una URL nueva o de que se ha actualizado el contenido de una URL que ya está rastreada, sigue estos pasos:

  1. Envía una solicitud POST al siguiente punto de conexión:
    POST https://indexing.googleapis.com/v3/urlNotifications:publish
  2. En el cuerpo de la solicitud, indica dónde se encuentra la página con esta sintaxis:
    {
      "url": "content_location",
      "type": "URL_UPDATED"
    }
  3. Si la llamada a la API Indexing se realiza correctamente, Google responde con un código de estado HTTP 200. Si recibes una respuesta HTTP 200, es posible que Google intente volver a rastrear la URL pronto. En el cuerpo de la respuesta se incluye un objeto UrlNotificationMetadata cuyos campos se corresponden con los que se devuelven en una solicitud de estado de notificación.
  4. Si no recibes una respuesta HTTP 200, consulta los errores específicos de la API Indexing.
  5. Si el contenido de la página cambia, envía otra notificación de actualización; de este modo, Google volverá a rastrear la página.
  6. Quizá necesites más cuota que la predeterminada. Consulta cómo saber cuál es tu cuota y cómo ampliarla.

Retirar URLs

Si eliminas una página de tus servidores, comunícaselo a Google para que la retire del índice y no intente rastrear la URL de nuevo. Antes de solicitar la retirada de una página, debes quitarla de tu servidor y configurar la URL para que devuelva un código de estado 404 o 410.

Para solicitar que se retire una página de nuestro índice, sigue estos pasos:

  1. Envía una solicitud POST al siguiente punto de conexión:
    POST https://indexing.googleapis.com/v3/urlNotifications:publish
  2. En el cuerpo de la solicitud, indica la URL que quieres retirar con esta sintaxis:
    {
      "url": "content_location",
      "type": "URL_DELETED"
    }

    Por ejemplo:

    {
      "url": "https://careers.google.com/jobs/google/technical-writer",
      "type": "URL_DELETED"
    }
  3. Si la llamada a la API Indexing se realiza correctamente, Google responde con un código de estado HTTP 200. Si recibes una respuesta HTTP 200, es posible que Google retire la URL del índice. En el cuerpo de la respuesta se incluye un objeto UrlNotificationMetadata cuyos campos se corresponden con los que se devuelven en una solicitud de estado de notificación.
  4. Si no recibes una respuesta HTTP 200, consulta los errores específicos de la API Indexing.
  5. Quizá necesites más cuota que la predeterminada. Consulta cómo saber cuál es tu cuota y cómo ampliarla.

Consultar el estado de notificaciones

Con la API Indexing, puedes consultar cuándo fue la última vez que Google recibió cada tipo de notificación sobre URL concretas. Ten en cuenta que la solicitud GET no indica cuándo se indexa o se retira una URL, sino que solo muestra si una solicitud se ha enviado correctamente.

Para consultar el estado de una notificación, sigue estos pasos:

  1. Envía una solicitud GET al punto de conexión que se indica a continuación. Las URL que especifiques deben estar codificadas en URL. Por ejemplo, debes sustituir los dos puntos (:) por %3A y las barras (/) por %2F.
    GET https://indexing.googleapis.com/v3/urlNotifications/metadata?url=url-encoded_url

    Por ejemplo:

    GET https://indexing.googleapis.com/v3/urlNotifications/metadata?url=https%3A%2F%2Fcareers.google.com%2Fjobs%2Fgoogle%2Ftechnical-writer
    
  2. La API Indexing responde con un mensaje HTTP 200 que incluye una carga útil con datos sobre la notificación. En el ejemplo siguiente, se muestra el cuerpo de una respuesta que incluye datos sobre una notificación de actualización y otra de retirada:
    {
      url: “http://foo.com“
      latest_update {
        type: “URL_UPDATED”
        notify_time: “2017-07-31T19:30:54.524457662Z”
      }
      latest_remove {
        type: “URL_DELETED”
        notify_time: “2017-08-31T19:30:54.524457662Z”
      }
    }
    
  3. Si no recibes una respuesta HTTP 200, consulta los errores específicos de la API Indexing.
  4. Quizá necesites más cuota que la predeterminada. Consulta cómo saber cuál es tu cuota y cómo ampliarla.

Enviar solicitudes de indexación en lote

Para reducir la cantidad de conexiones HTTP que debe hacer tu cliente, puedes incluir hasta 100 llamadas a la API Indexing en una sola solicitud HTTP. Puedes hacerlo con una solicitud de varias partes llamada solicitud en lote.

Al enviar una solicitud en lote a la API Indexing, utiliza el siguiente punto de conexión:

https://indexing.googleapis.com/batch

En el cuerpo de las solicitudes en lote hay varias partes, y cada una de ellas es una solicitud HTTP completa que incluye un verbo, una URL, encabezados y el cuerpo. Cada parte puede tener un tamaño de hasta 1 MB.

Para que sea más fácil enviar solicitudes en lote, las bibliotecas de cliente de las API de Google admiten funciones de procesamiento por lotes. Para obtener más información al respecto, consulta las páginas específicas de cada lenguaje de programación:

Si utilizas los ejemplos que se incluyen en las páginas anteriores, es posible que tengas que actualizar el código para que refleje los requisitos de implementación que se describen en el apartado Obtener un token de acceso.

A continuación se muestra el cuerpo de un mensaje de solicitud en lote de ejemplo donde se incluyen una notificación de actualización y otra de retirada:

POST /batch HTTP/1.1
Host: indexing.googleapis.com
Content-Length: content_length
Content-Type: multipart/mixed; boundary="===============7330845974216740156=="
Authorization: Bearer oauth2_token

--===============7330845974216740156==
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-ID: <b29c5de2-0db4-490b-b421-6a51b598bd22+2>

POST /v3/urlNotifications:publish [1]
Content-Type: application/json
accept: application/json
content-length: 58

{ "url": "http://example.com/jobs/42", "type": "URL_UPDATED" }
--===============7330845974216740156==
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-ID: <b29c5de2-0db4-490b-b421-6a51b598bd22+1>

POST /v3/urlNotifications:publish [2]
Content-Type: application/json
accept: application/json
content-length: 75

{ "url": "http://example.com/widgets/1", "type": "URL_UPDATED" }
--===============7330845974216740156==
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-ID: <b29c5de2-0db4-490b-b421-6a51b598bd22+3>

POST /v3/urlNotifications:publish [3]
Content-Type: application/json
accept: application/json
content-length: 58

{ "url": "http://example.com/jobs/43", "type": "URL_DELETED" }
--===============7330845974216740156==

Para obtener más información, consulta cómo enviar solicitudes en lote.