Skip to guide

Five Google Ads CLI tools compared: reporting and writes

Compare five real Google Ads command-line projects, their reporting and mutation boundaries, and how a CLI differs from an SDK or MCP server.

Sources reviewed October 23, 2026. Documentation review, not a live account test or product endorsement.

A Google Ads CLI is a program with terminal commands. An SDK is a library used by code; an MCP server exposes tools to an assistant. Running an MCP server from a terminal does not make it a campaign-management CLI.

The projects below all document command-line entry points. This is a source-based comparison, not a benchmark, security audit or proof they work with today’s API on your account. All five are independent projects, not an official Google CLI.

Five concrete projects

Project and primary sourceCLI surfaceDocumented useImportant boundary
GetYourGuide gaql-cligaql, gaql-toolsInteractive GAQL or one-shot queries; CSV, JSON, JSONL and protobuf outputReporting-focused; README says a default LIMIT 100 is added unless overridden
icoolqin/google-ads-cligadsGAQL reporting, campaign operations and generic mutations through Google’s Python clientDocuments local plan by default, API validation via --validate-only, and mutation via --execute
Bin-Huang/google-ads-open-cligoogle-ads-open-cliJSON account/campaign reporting, hierarchy navigation and custom queriesCheck its credential/API compatibility; do not infer write support from the general “Google Ads CLI” name
hcassar93/google-ads-cligoogle-ads-cliNode.js CLI for campaign/ad-group inspection and Keyword Planner requestsDistinct from the icoolqin project despite the repository-name overlap; check executable and package identity
danielfrg/adsctladsctl plus a gaql promptGAQL queries, account configuration and resource-management commandsArchived April 1, 2024; historical/reference option, not our recommendation for a new production workflow

The table reflects maintainer documentation, not a feature test. Do not install a similarly named package without checking that the repository, publisher and executable match.

1. gaql-cli: start with repeatable reporting

GetYourGuide documents a query REPL, format selection and file output. Its account-helper command discovers clients under a manager account. It is a sensible candidate to evaluate when you already know GAQL and want a report file rather than conversational tool discovery.

Example from the documented command form, using a placeholder customer:

Terminal window
gaql -f jsonl 1-000-000-000 'SELECT campaign.id FROM campaign LIMIT 10'

Do not mistake the default row limit for a complete export. Verify pagination and row counts for your reporting job. Source: gaql-cli usage.

2. gads: inspect the write lifecycle

The icoolqin project separates building a local request, validating it with Google and executing it. Its README also describes campaign status/budget operations and App Campaign creation. These are write capabilities, not evidence that an agent should execute them autonomously.

If evaluating it, first inspect a local plan; then review validation output and only authorize execution after checking the target account and values. A validation result is not a promise of campaign performance. Source: gads write modes.

3. google-ads-open-cli: JSON for agent-readable reports

Bin-Huang’s project documents JSON output, account hierarchy commands and GAQL queries. It also provides agent skills, but a skill is instructions for using the CLI, not a separate SDK or an MCP transport.

Its setup README contains developer-token and authentication guidance that should be reconciled with your installed API version and Google’s current MCP-specific guide. Do not copy assumptions between implementations. Source: project setup and commands.

4. hcassar93 CLI: inspect campaigns and keyword ideas

This Node.js project documents setup, auth, account and campaign listing, and Keyword Planner commands. Evaluate it for that narrower job instead of assuming it supports full campaign creation.

Before relying on generated keyword ideas, record location and language filters. Review where credentials are stored and use the project-specific setup instructions rather than those for another CLI with the same repository name. Source: maintainer README.

5. adsctl: useful history, explicit maintenance risk

The archived project documents both a GAQL prompt and resource-management commands. Its existence belongs in a comparison, but archive status matters more than a long feature list when selecting a new integration.

It also uses a gaql executable name: isolate environments so it does not shadow GetYourGuide’s tool. Treat its examples as historical; verify API compatibility before any experiment. Source: adsctl repository and archive notice.

Choose by job, then prove compatibility

Our evaluation sequence is: inspect the source and release history, pin a reviewed version, configure a least-privilege identity, run a small read-only query, compare UI totals, and record the API version and output schema. None of these projects has been live-tested for this article.

For write-capable tools, require a proposed diff, account confirmation, validation where supported and an audit trail. A shell prompt is not inherently safer than MCP.

Want conversational reporting instead? Read the Google Ads MCP setup and read-only limits. For Facebook and LinkedIn options, use the Ads MCP comparison. AICMOHQ’s CLI guide describes a different marketing workflow; it is not a claim that AICMOHQ supplies these Google Ads executables.