API integrations and in-house automation.
A practical look at how we use the Google Ads API, Meta Marketing API and Google Tag Manager API to operate accounts at scale — and the internal tooling we’ve built around them.
Why we work this way
At a certain point the user interface stops being the right tool. Once an agency runs more than a handful of accounts, manual work in the Google Ads UI becomes the bottleneck on quality, not on speed: bulk operations are clumsy, audits are tedious, and small errors compound. We invested early in a Google Ads API toolchain so that the boring, repetitive work happens reliably and the senior team spends its time on strategy, creative and analysis.
What we use the Google Ads API for
Our integration is a programmatic extension of how a senior media buyer would manage an account — with fewer mistakes and a more disciplined cadence. The main use cases:
- Account audits. A new client engagement begins with a full structural audit: campaigns, ad groups, keywords, negative lists, conversion actions, ad assets, landing pages, geo and language targeting, schedule, and historical performance. Our audit script pulls all of this in a single API session and produces a written diagnostic in under ten minutes — the same audit that previously took a senior buyer a full day in the UI.
- Campaign deployment. When we launch a new client we describe the desired campaign architecture in a JSON config (campaign-level settings, ad groups, keyword pool, RSAs, negatives, shared sets) and our deployment tool creates everything idempotently against the live account. Re-running the tool is safe; nothing is duplicated. This pattern lets us launch a 16-ad-group brand-search campaign across four EU geographies in an afternoon.
- Negative keyword sweeps. A weekly job pulls the prior seven days of search terms across all client accounts, classifies each query, and surfaces a recommended negatives list to the buyer for sign-off. The sign-off itself is one keystroke; applying the approved negatives back to the right ad group / shared set is automatic.
- Conversion-tracking integrity. Daily checks that conversion actions are firing correctly, that primary-for-goal flags haven’t drifted, and that every active ad group has at least one conversion firing within the last 14 days. Catches broken tracking before it becomes a billing problem.
- Bid strategy and budget management. Quarterly we review every campaign’s bidding strategy against accumulated conversion data and decide which campaigns are ready to move from Maximise Conversions to Target CPA, which Target CPA campaigns are ready to tighten the target, and which need to be paused or restructured. The recommendation is generated automatically; the decision is made by a senior buyer.
- Reporting. Weekly performance reports for clients are pulled directly via the API into our reporting layer — no spreadsheet copy-paste, no version-of-truth ambiguity.
The technical stack
The toolchain is intentionally simple. Python 3 with the official google-ads SDK (currently v21 of the API). Configurations are JSON files in a Git repository, one per client account; this gives us version history, code review on changes, and disaster-recovery built in. Authentication is OAuth 2 via a Google Cloud project that we own; refresh tokens are stored in a dedicated secrets manager. All API mutations are logged to an append-only file with operation type, customer ID, resource name and result. We do not use third-party automation platforms (Optmyzr, Skai, Marin) — not because they are bad products but because we prefer to own the abstractions our team works with.
What we don’t use the API for
Where the API is genuinely the wrong tool, we don’t use it. Creative review, ad copy direction, narrative strategy, audience hypothesis development, and the actual judgement calls about which campaigns deserve more spend — these stay human. The API removes friction from the mechanical work; it does not pretend to do the work that requires taste and context.
Other APIs in the stack
- Meta Marketing API — bulk campaign creation, creative rotation and post-engagement reporting.
- Google Tag Manager API — programmatic deployment of conversion tags, server-side container configuration, version management.
- GA4 Data API — pulling event-level data into our reporting layer.
- BigQuery — warehouse for cross-channel performance data, MMM input, and cohort analysis.
Compliance and access
We operate the Google Ads API under standard developer terms. Each client engagement begins with the client granting our manager account access to their advertiser account; we never request password access or shared logins. Our developer token is tied to the Achillion Services Google Cloud project; usage logs are retained per the API Terms of Service. Data we pull from client accounts stays inside our infrastructure and is deleted at the end of an engagement.
Want this kind of operational discipline on your account?
Send us access to your existing Google Ads account and we’ll return a written audit within five business days — including a candid assessment of what the API can and can’t fix.
Request the audit