Google Ads API connected to AI tools for marketers in 2026

Most guides to the Google Ads API still tell you to apply for a developer token in the API Center. That stopped working on 9 September 2026. Google moved access to your Google Cloud project, and the token no longer decides anything.

I use the API every day across more than 100 accounts in 4 manager accounts, and I don’t write the code myself. Here’s the new way in, what each access level lets you do, what counts against your daily limit, and what I actually pull once I’m connected.

Two rows comparing the old route to Google Ads API access, through a manager account, the API Center form, a developer token and a review, with the new route through a Google Cloud project, enabling the API, applying for Explorer and making the first call

What changed on 9 September 2026

Until September, getting in looked like this. You opened a manager account, filled in the API Center form, got a 22-character developer token and waited for a review. That token sat in the header of every request and set your access level.

Google’s developer token page now says tokens are sunset. Your access level belongs to the Google Cloud project that owns your OAuth client or your service account. You can still send a token, but the API servers ignore it, and Google says a future major version will start rejecting requests that include one.

Before 9 Sep 2026From 9 Sep 2026
Where you applyAPI Center, inside a manager accountGoogle Ads API Overview page in Google Cloud Console
What holds your access levelThe developer tokenThe Google Cloud project
Manager accountRequired to applyOnly needed to manage several accounts
Token in each requestRequiredOptional, and ignored
Who gets Google’s API noticesThe API Center contact emailThe project’s owners and editors
New applications in the API CenterReviewedNot processed

Two things catch people out. The error message changed: in version 25, a project with only Test access that calls a live account gets CLOUD_PROJECT_NOT_APPROVED_FOR_PRODUCTION. Older versions return ACTION_NOT_PERMITTED, which is the one most forum threads still describe. And if you had a Basic application waiting in the API Center, Google closed it, so you apply again from Cloud Console.

When I pulled Keyword Planner on 30 September 2026, 1,300 people a month worldwide were still searching for “google ads developer token”. Most of the videos they land on walk through a screen Google has switched off. PPC Land’s write-up of the change covers the detail if you want more.

Already had a developer token?

Your code keeps working. Google copied each token’s access level to every Cloud project that made API calls with it in the 90 days before 9 September. Open the Google Ads API Overview page for your project and check the level matches. A token that was approved but never used didn’t transfer, so that project starts again at Test.

How to get Google Ads API access now: 6 steps

You no longer need a manager account, a form or a wait for a human reviewer to get started. Here’s the whole route, taken from Google’s access levels guide and the new first call guide .

  1. Create a Google Cloud project, or pick one you own. Check its billing first. Google lists a known issue where projects on the Free Trial, or with suspended or disabled billing, get rejected for Explorer and Basic. Upgrading to a paid account, removing billing or using another project all fix it.
  2. Enable the Google Ads API in that project. This gives you Test access straight away. Test only works on test accounts, which don’t serve real ads.
  3. Apply for Explorer access. Go to the Google Ads API Overview page in Cloud Console, expand “Upgrade access level” and press “Apply for access”. You need the Owner, Editor, Quota Administrator or Service Usage Admin role on the project. Google may approve it automatically.
  4. Create a service account and download its JSON key. This is the simplest login for your own accounts. It skips the OAuth consent screen, and the passkey rule I cover further down doesn’t touch it.
  5. Add the service account to Google Ads. In the account, go to Admin, then Access and security, and add the service account’s email address as a user. Email-only access doesn’t work for it, and Admin can only be given once the account has already been added.
  6. Make your first call. The client libraries now run without a token. The Python library dropped its token check in version 32.0.0, and the current release is 33.0.0.

The config file for the Python library is two lines if you’re connecting straight to one account:

google-ads.yaml for a service account
# Path to the JSON key you downloaded in step 4
json_key_file_path: /path/to/service-account-key.json
use_proto_plus: True

# Only if you reach the account through a manager account.
# Use the manager's 10-digit ID with no dashes.
# login_customer_id: 1234567890

Then this pulls last week’s spend by campaign. Swap in your own 10-digit customer ID:

First call in Python: spend by campaign, last 7 days
from google.ads.googleads.client import GoogleAdsClient

client = GoogleAdsClient.load_from_storage("google-ads.yaml")
ga_service = client.get_service("GoogleAdsService")

query = """
    SELECT campaign.name, metrics.clicks, metrics.cost_micros
    FROM campaign
    WHERE segments.date DURING LAST_7_DAYS
    ORDER BY metrics.cost_micros DESC
"""

for row in ga_service.search(customer_id="1234567890", query=query):
    spend = row.metrics.cost_micros / 1_000_000
    print(f"{row.campaign.name}: {row.metrics.clicks} clicks, {spend:.2f}")

You don’t need to understand Python to run this. I tell Claude Code what I want and it writes and runs the code for me. The query inside the triple quotes is GAQL, Google’s own query language, and my GAQL guide has 10 more you can paste straight in.

There are four levels. Each one is attached to your Cloud project, and you move up from the same Overview page.

LevelDaily operationsAccountsHow you get it
Test15,000Test accounts onlyAutomatic when you enable the API
Explorer2,880 on live accounts, 15,000 on test accountsTest and liveApply in Cloud Console, may be approved automatically
Basic15,000Test and liveBrand verification first, then an automated review
StandardUnlimitedTest and liveManual review, about 10 business days

Four cards showing Google Ads API access levels: Test with 15,000 operations a day on test accounts, Explorer with 2,880 on live accounts marked as the place to start, Basic with 15,000, and Standard with no cap

Explorer is where most marketers should start, but it has gaps. It blocks four groups of services: creating accounts, managing users, billing, and planning. Planning includes Keyword Planner, Audience Insights and Reach Planner. So if the reason you want the API is keyword research, you’ll need Basic.

I pulled the search volumes in this post through the Keyword Planner service on 30 September 2026, which is exactly the kind of call Explorer can’t make. “google ads api” gets 9,900 searches a month worldwide and 1,600 in the US.

Basic needs brand verification on your Cloud project first. Once that’s done, Google says Basic applications are reviewed automatically “within minutes”. Standard is the only level with a manual review, and it’s only for tools that genuinely need unlimited operations.

What counts as one operation

The number that matters is operations, and the counting is kinder than it looks. From Google’s rate sheet :

  • A report request counts as 1 operation however many rows come back.
  • Fetching the next page of that same report counts as 0.
  • Changing things counts 1 for each item you change, so pausing 40 keywords is 40.
  • A request that fails with an error still counts.
  • “Per day” is a sliding 24-hour window, so there’s no midnight reset.

Diagram of what counts against the Google Ads API daily limit: one report with any number of rows is 1, the next page is 0, each item you change is 1, an error is 1, and 2,880 a day on Explorer works out at 2 a minute around the clock

In practice, 2,880 is plenty for reporting. A weekly check on 20 accounts that runs 5 reports each is 100 operations. Where people run out is bulk changes and scripts that retry failed calls in a loop. There are a few hard ceilings too: 10,000 changes in a single request, and Keyword Planner methods allow 1 request per second per account, even on Standard.

What I actually use the Google Ads API for

Access is the boring part. This is the reason to bother. Here are the jobs I run most, with the real queries.

Comparison of working in the Google Ads interface one screen at a time with querying the Google Ads API through AI

Search term waste

This is my most-used workflow. One query pulls every search term that got clicks in the last 90 days, sorted by spend:

GAQL: search terms by spend, last 90 days
SELECT
  campaign.name,
  search_term_view.search_term,
  metrics.cost_micros,
  metrics.conversions,
  metrics.clicks
FROM search_term_view
WHERE campaign.status = 'ENABLED'
  AND segments.date DURING LAST_90_DAYS
  AND metrics.clicks >= 1
ORDER BY metrics.cost_micros DESC
LIMIT 1000

When I ran this on one account, “scrape linkedin” had spent $96.81 on 33 clicks with zero conversions. “scraper linkedin” was another $72.75, and “linkedin post date extractor” burned $65.53 on 29 clicks. Those three alone came to $235.09 of spend on searches that were never going to buy.

Search term waste found through a Google Ads API query, showing five search terms with spend and no conversions

I asked Claude to investigate wasteful keywords in plain English. It wrote the query, pulled the top 1,000 terms by spend, grouped the irrelevant ones into themes and asked whether to add them as negatives. That replaced 30 to 45 minutes of exporting, filtering in a spreadsheet and building a negative list by hand. The whole method is in my post on finding wasted spend with AI .

Quality Score, impression share and landing pages

Quality Score is buried in the interface. Through the API I pull all three parts of it for every keyword in one go: expected click-through rate, ad relevance and landing page experience. That tells me whether a keyword has a landing page problem or an ad problem, which are two very different fixes.

Impression share works the same way. Three fields tell the story:

  • search_impression_share: the share of eligible impressions you got
  • search_budget_lost_impression_share: what you lost because the budget ran out
  • search_rank_lost_impression_share: what you lost to low ad rank

The landing_page_view report shows which pages get the paid traffic. I pair that with browser automation that visits each page, screenshots it and checks the page against the ad. That caught one advertiser sending its Scotland traffic to the homepage instead of a dedicated location page. Nobody had noticed for months.

For the page itself, Postclick scans one live page and shows the conversion problems most likely to waste the paid click.

Every account at once

I start with a list of the live accounts under a manager account:

GAQL: every live account under a manager account
SELECT
  customer_client.id,
  customer_client.descriptive_name,
  customer_client.status
FROM customer_client
WHERE customer_client.status = 'ENABLED'
  AND customer_client.manager = false

Then you loop through each one pulling performance. I run this every Monday morning to decide where to spend my week, and it replaced a 45-minute ritual of logging into each account one by one.

Beyond those, I use it for RSA asset performance, device and location splits, budget pacing, auction insights and change history. Since version 23 you can also break Performance Max results down by network, which the API couldn’t do before.

Several Google Ads API use cases showing queries for search terms, quality score, impression share and landing pages

Four ways to use it, from no code to your own product

Once your project has access, you pick how to talk to it. The access steps above are the same for all four.

1. The Google Ads MCP server. Google open-sourced it in October 2025. It gives Claude, Gemini and other AI tools three read-only tools for your account: search, get_resource_metadata and list_accessible_customers. The developer token is now optional in its setup, and it’s the fastest way to start asking questions of your data, and my Google Ads MCP guide walks through the install.

2. Direct API through Claude Code. This is what I use daily. It reads and writes, so it can add the negatives it finds, and it works across several manager accounts. The Claude Code setup gets you running, and the same connection powers AI agents for Google Ads .

3. Google’s Developer Assistant. Version 4.0.0 arrived in August 2026 as a plugin for Claude Code and Antigravity. It adds commands like /validate-gaql, /troubleshoot-conversions and /get-cids, and Google built it to refuse unreviewed changes to an account. It suits developers at agencies who are building internal tools.

4. Building a tool for other advertisers. You’ll want Standard access, and you’ll need to be careful about how you connect. Pete Bowen’s piece on building custom tools with the Google Ads API is a good practitioner’s view of what that involves.

MCP serverDirect via Claude CodeDeveloper AssistantYour own product
Coding neededNone beyond installNone, AI writes itSomeA lot
Can make changesNo, read-onlyYesRefuses unreviewed changesYes
Access levelExplorer is fineExplorer, Basic for Keyword PlannerExplorer is fineStandard
Best forAsking questionsDaily account workAgency developersTools for other advertisers

The googleads google-ads-mcp repository on GitHub, Google's open-source MCP server for the Google Ads API

One rule changed on 31 August 2026 that affects routes 1 and 4. Google’s updated developer policies ban “programmatic proxies”: a hosted service, wrapper or MCP server that passes other people’s API access through its own connection. Every agency or advertiser has to connect with its own Cloud project.

Google says this doesn’t restrict your own use, or open-source tools that people download and connect with their own credentials. So running Google’s MCP server yourself is fine. Signing in to someone else’s hosted connector deserves a second look.

Six 2026 changes that break older guides

If a tutorial is more than a few months old, check it against this list before you follow it.

Timeline of six 2026 Google Ads API changes: Customer Match uploads moving to the Data Manager API on 1 April, click conversion uploads following on 15 June, passkeys for new refresh tokens on 5 August, hosted proxies banned on 31 August, developer tokens retired on 9 September and version 22 switching off on 7 October

  • 1 April: Customer Match. Projects that hadn’t uploaded Customer Match lists through the Google Ads API before now have to use the Data Manager API instead.
  • 15 June: offline conversions. New adopters of UploadClickConversions are sent to the Data Manager API as well.
  • 5 August: passkeys. Creating a new OAuth refresh token now needs a passkey on the Google account, according to Google’s announcement . A new passkey can take 7 days to become trusted, so set one up before you need it. Existing refresh tokens keep working, and service accounts aren’t affected.
  • 31 August: the proxy ban above.
  • 9 September: developer tokens retired.
  • 7 October: version 22 switches off. Anything still calling v22 stops working, per Google’s sunset reminder . The current release is v25.2.

A few habits haven’t changed. Keep keys and refresh tokens out of your code and out of Slack. Divide cost_micros by 1,000,000 before you read it as money. And read every change an AI proposes before you let it run, because I’ve seen Claude write a query with the wrong date range.

Start read-only

Get comfortable pulling reports before you let anything write to an account. A vague request with write access turned on is how mistakes happen. When you do allow changes, review the list first, every time.

Google is building this in public

Google has been unusually open about all this. It releases a new API version most months now: v25 in July, v25.1 in August and v25.2 in September. The MCP server and the Developer Assistant are both open source on GitHub. And in March 2026 it started Ads DevCast, a fortnightly video show for developers.

The launch post for DevCast put the direction plainly:

We’re seeing a world where agents, not just humans, are becoming primary consumers of our APIs.

–Google Ads Developer Blog , Introducing Ads DevCast, March 2026

Google's Ads Developer Blog post announcing the launch of Ads DevCast

That matches what I see. The agencies getting the most from the API aren’t hiring developers.

One growth marketing agency I consult for built a Claude skill that queries the API, finds what it needs in the account and writes a report in their own brand style. They use it for sales audits on prospects, weekly wasted-spend checks across clients and monthly client reports. They built it with Claude Code, without a dev team. That’s the pattern behind scaling an agency without hiring , and it’s the same setup as my AI-powered client reports .

What we’re building at PPC.io

Not everyone wants to set up a Cloud project and a service account. That’s why we’re building AI agents for Google Ads at PPC.io: audits, reporting, search term analysis and ad copy work, connected to your account through the API. You’ll also be able to teach them how you already work, for example “this is how I audit a client, pull what you need and write it in my format”.

They aren’t live yet. If you’d like to try them first, the waitlist is open. In the meantime, my free prompt collection has more than 50 prompts for audits, scripts and analysis that work with any of the routes above.

Want early access to the agents?

Join the PPC.io waitlist to hear when the Google Ads agents open.

FAQs

Is the Google Ads API free?
Google lists no charge for access or for API calls on its access level and rate sheet pages. Your limits are counted in operations, and your ad spend is billed as normal. What costs you is the time to build your own code, or a tool that does it for you. A Cloud project also works with no billing account attached, which is one of Google's own fixes for the free trial rejection issue.
Do I still need a Google Ads developer token?
No. Since 9 September 2026 the API servers ignore the token, and Google plans to reject it in a future major version. If an old token leaked, you don't need to reset it, because it no longer grants anything. If your code still complains about a missing token, update your client library. Google published versions of every library, the MCP server and the Developer Assistant that run without one.
How do I complete brand verification for Basic access?
In Google Cloud Console, open APIs and Services, then OAuth consent screen, and press Get Started. On the Audience tab set the app to External and In production. On the Branding tab fill in the fields, press Verify Branding, then Publish branding. Once it's verified, apply for Basic from the Google Ads API Overview page. Projects that already had Basic or Standard before September don't have to verify, though Google encourages it.
Can Google take my API access away?
Yes. Google can revoke access from a Cloud project that hasn't made a call in 90 days in a row, and the project drops back to Test. It's the same rule that stopped some unused developer tokens from carrying over in September. If it happens, apply again from the Overview page. Explorer and Basic reviews are now automated.
What does Standard access need?
A manual review by Google's compliance team, which Google puts at about 10 business days. They ask what your tool does and who uses it. If people outside your company use it, you'll need to give them a demo login, and the tool has to meet Google's Required Minimum Functionality rules. Pending Standard applications made in the old API Center before 9 September are still being reviewed as normal.
Which Google Ads API version should I use?
The newest one your client library supports. v25.2 came out on 23 September 2026 and v26 is due in October 2026. Each major version lasts about 12 months, and Google says you need to upgrade at most twice a year. The Python library dropped v21 and v22 in version 33.0.0.
Stewart Dunlop

Stewart

CEO

Postclick is live

Turn more ad clicks into customers.

Run the free CRO audit on the page behind your ad. Postclick finds the leaks, then gives you stronger directions to build.

Not ready to paste a URL? See a finished audit first.