Search y SearchStream

Video: Reporting

La API de Google Ads tiene un mecanismo unificado de recuperación de atributos y generación de informes de métricas que te permite crear consultas con el lenguaje de consultas de Google Ads. Esto permite realizar consultas complejas que pueden devolver grandes cantidades de datos sobre cuentas individuales de Google Ads.

Puedes crear consultas con los métodos Search o SearchStream. Ambos métodos admiten las mismas consultas y devuelven resultados equivalentes. El método Search devuelve datos en páginas de tamaño fijo de 10,000 filas, lo que te permite iterar un conjunto de resultados con paginación. Esto podría ser ventajoso en condiciones de red poco confiables o de bajo ancho de banda, por ejemplo, para segmentar un conjunto de resultados grande en respuestas más pequeñas que se pueden volver a recuperar si se pierde la conexión. Por otro lado, el método SearchStream transmite todo el conjunto de resultados en una sola respuesta, lo que puede ser más eficiente para la recuperación de datos masivos.

Tanto Search como SearchStream usan la misma URL base:

    https://googleads.googleapis.com/v21/customers/CUSTOMER_ID/googleAds
POST /v21/customers/CUSTOMER_ID/googleAds:search HTTP/1.1
Host: googleads.googleapis.com
Content-Type: application/json
Authorization: Bearer ACCESS_TOKEN
developer-token: DEVELOPER_TOKEN

{
"query": "SELECT ad_group_criterion.keyword.text, ad_group_criterion.status FROM ad_group_criterion WHERE ad_group_criterion.type = 'KEYWORD' AND ad_group_criterion.status = 'ENABLED'"
}

Si hay más de 10,000 filas en los resultados, se devuelve un nextPageToken en la respuesta:

{
  "results": [
    // ...
    // ...
    // ...
  ],
  "nextPageToken": "CPii5aS87vfFTBAKGJvk36qpLiIWUW5SZk8xa1JPaXJVdXdIR05JUUpxZyoCVjMwADjUBkD___________8B",
  "fieldMask": "adGroupCriterion.keyword.text,adGroupCriterion.status"
}

Si repites la misma búsqueda con un pageToken agregado con los valores de la solicitud anterior, se recuperará la siguiente página de resultados:

POST /v21/customers/CUSTOMER_ID/googleAds:search HTTP/1.1
Host: googleads.googleapis.com
Content-Type: application/json
Authorization: Bearer ACCESS_TOKEN
developer-token: DEVELOPER_TOKEN

{
"query": "SELECT ad_group_criterion.keyword.text, ad_group_criterion.status FROM ad_group_criterion WHERE ad_group_criterion.type = 'KEYWORD' AND ad_group_criterion.status = 'ENABLED'",
"pageToken": "CPii5aS87vfFTBAKGJvk36qpLiIWUW5SZk8xa1JPaXJVdXdIR05JUUpxZyoCVjMwADjUBkD___________8B"
}

Para usar el método SearchStream, que devuelve todos los resultados en una sola respuesta transmitida, cambia el método de servicio en la URL a searchStream (pageToken no es obligatorio para SearchStream):

POST /v21/customers/CUSTOMER_ID/googleAds:searchStream HTTP/1.1
Host: googleads.googleapis.com
Content-Type: application/json
Authorization: Bearer ACCESS_TOKEN
developer-token: DEVELOPER_TOKEN

{
    "query": "SELECT ad_group_criterion.keyword.text, ad_group_criterion.status FROM ad_group_criterion WHERE ad_group_criterion.type = 'KEYWORD' AND ad_group_criterion.status = 'ENABLED'"
}