The Google Ads CLI Google never shipped.
Do your Google Ads busywork from the terminal. Pause keywords, cut wasted spend, check budgets in seconds instead of an afternoon of clicking. You review every change before it goes live.
Node ≥ 20 · no telemetry · it only reads until you ask it to change something
$ adops gads keywords list --adgroup 778 ID KEYWORD STATUS BID COST CONV 778~1123 cheap crm software ENABLED $2.10 $318 0 778~1147 free crm tool ENABLED $1.80 $205 0 778~1090 crm for agencies ENABLED $3.40 $88 6 3 keywords · the first two spent $523 and sold nothing
Editing your account shouldn't cost you an afternoon.
Google Ads Editor is a desktop app you click through by hand. adops makes the same edits in one command you can read first, script, and put on a schedule.
how it works
List, stage, review, apply.
Looking things up is free. Changes never fire straight at Google. adops shows you what it'll do first, so nothing happens by surprise.
List
$ adops gads keywords list
See what's costing you money: bids, spend, and conversions, all in one list.
Stage
$ adops gads keywords pause …
Nothing changes yet. adops writes down what it's about to do and shows you.
Review
$ adops plan show 8f3a
Check the plan. Google runs a dry run to confirm it's valid before anything's real.
Apply
$ adops apply 8f3a
Say go. It makes the change and logs exactly what it did.
a monday, in two commands
The busywork, handled.
Two things you'd otherwise do by hand every week: finding wasted spend, and catching problems before your client does.
$ adops gads terms --min-cost 50 --conv 0 TERM COST CONV free ads course $412.90 0 ads jobs remote $268.13 0 …12 more that spent, none that sold $ !! --json | adops gads negatives plan - plan-8f3a: add 14 negatives → campaign 456 $ adops apply 8f3a applied 14 · receipt r-2210
# runs every morning at 7am $ adops watch --notify $SLACK ALERT [spend_spike] google: yesterday $350 vs $100 avg (3.5x) → posted to Slack quiet days say nothing. loud ones reach you first.
what it does
18 commands today, all focused on Google Ads.
Everything reads out as a table you can pipe, save, or drop into a spreadsheet. Everything that changes something waits for your okay.
Pause or turn on campaigns, keywords, and ads in bulk
Add keywords and change bids from the command line
Find wasted spend and block it with negatives
Check budgets and pacing across your campaigns
See spend in one table across Google and Meta, if you use both
Catch broken landing pages like 404s, redirects, or missing tags
Export your account to files you can keep in git
Run any report with raw GAQL, no setup
get started
Connected in about five minutes.
Install, connect your accounts once, and run a quick read to check it works. Here's the whole thing.
# 1 · install (Node 20 or newer) $ npm i -g adops # 2 · connect Google (opens your browser) $ adops auth google # 3 · optional: add Meta to see its spend # in your reports (system user token) $ adops auth meta # 4 · say which accounts, in a small config file: # ~/.config/adops/config.toml [profiles.acme] google_customer_id = "123-456-7890" meta_ad_account = "act_1234567890" # 5 · you're in. start with a quick read $ adops accounts $ adops spend
One thing to do early
Google requires a developer token to use its API. It's a short application inside your Google Ads account, under Tools then API Center, and approval can take a few days. Apply on day one. Until it clears, everything runs against a Google test account.
The full walkthrough lives in the README.
try it
Point it at a test account and poke around.
Nothing changes until you say so, and looking around costs nothing. See if it saves you a Monday.
v0.1 · 58 tests passing · not tested against the live APIs yet, and we'll say so plainly when it is.