Send a GoogleAdsService.Search request with your GAQL query; do not include a page_size parameter, as it is removed in API v17+ and will cause an error if set.
Inspect the response's next_page_token field; if it is non-empty, there are more results beyond the current page of up to 10,000 rows.
To fetch the next page, resend the identical GAQL query with the page_token field set to the next_page_token value from the previous response.
Continue until next_page_token is absent or empty, which signals the final page.
Note that paginated requests (those including a valid page_token) are not counted against the user's daily operation quota.
For very large result sets, consider using SearchStream instead, which returns results as a server-side stream and avoids managing pagination tokens.
Known gotchas
Setting page_size in API v17 or later returns an error stating 'Setting the page size is not supported'; remove any page_size field from search requests when using v17+.
Each Search call (except paginated follow-ups) consumes daily quota; for reports with millions of rows, SearchStream is more quota-efficient as it streams the full result set in one logical operation.
The page_token is only valid for a limited time and is tied to the original query; do not alter the GAQL query between paginated requests or the token will be rejected.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp