google-ads-api-quickstart
Guides developers through Google Ads API quickstart: credential setup, choosing from 6 client libraries/REST, configuring environments, and running a "retrieve campaigns" script. Troubleshoots common setup errors: USER_PERMISSION_DENIED, login_customer_id issues, and DEVELOPER_TOKEN_NOT_APPROVED.
Install / Use
npx skills add google/skills --skill google-ads-api-quickstartInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
MarketingSupported Platforms
Our assessment of google-ads-api-quickstart
google-ads-api-quickstart scores 95/100 on our quality scale, 23rd of 175 Marketing skills we index (top 14%).
Its SKILL.md is 17 KB long, well organised into 32 sections with 1 code example: a thorough specification that gives an agent plenty to work with.
With 20,340 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated 2 days ago, so google-ads-api-quickstart is actively maintained.
- It is released under the Apache-2.0 license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
Safety scan
No issues foundOur scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands.
Automated pattern scan on 2026-09-26. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.
google-ads-api-quickstart compared with similar skills
All 4 of these similar skills score higher than google-ads-api-quickstart; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| google-ads-api-quickstart (this skill)by google | 95 | 20.3k | 2d ago | SKILL.md |
| Agent-Reachby Panniantong | 100 | 85.4k | 10d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 73.8k | today | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 83.7k | today | MCP Server |
| LocalAIby mudler | 100 | 49.3k | today | MCP Server |
Frequently asked questions
- How do I install google-ads-api-quickstart?
- Run
npx skills add google/skills --skill google-ads-api-quickstart. The install tabs above show the steps for each supported agent. - Which AI agents does google-ads-api-quickstart work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is google-ads-api-quickstart safe to use?
- Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. It is Apache-2.0-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is google-ads-api-quickstart still maintained?
- The repository was last updated 2 days ago, so google-ads-api-quickstart is actively maintained.
Skill content
View source on GitHubname: google-ads-api-quickstart description: | Guides developers through Google Ads API quickstart: credential setup, choosing from 6 client libraries/REST, configuring environments, and running a "retrieve campaigns" script. Troubleshoots common setup errors: USER_PERMISSION_DENIED, login_customer_id issues, and DEVELOPER_TOKEN_NOT_APPROVED.
Use this skill when:
- The user asks how to get started with the Google Ads API.
- The user needs to set up Google Ads credentials or developer tokens.
- The user wants to write a quickstart/example script for Google Ads.
- The user encounters errors like USER_PERMISSION_DENIED or DEVELOPER_TOKEN_NOT_APPROVED. compatibility: "Outbound HTTPS connectivity required to access the Google Ads API and documentation. Note: If network access is restricted, the agent will fall back to using the last-known stable versions cached within the skill resources." metadata: author: google-ads-api-team version: "1.0.0" category: GoogleAds
Google Ads API Quickstart
This skill guides you from absolute zero to running your first successful request to retrieve campaigns.
Supported Tracks
You can choose to use this skill with:
- Official Client Libraries: Python, Java, .NET, PHP, Ruby, or Perl.
- Direct REST: Raw HTTP REST requests.
Crucial Requirement: Dynamic Version Resolution & Runtime Resolution
[!IMPORTANT] To ensure the integration is secure, stable, and up-to-date, you must resolve all API and runtime versions dynamically. Do not rely on hardcoded defaults.
Strict Constraints:
- DO NOT Hardcode: Never use hardcoded Google Ads API versions (e.g.,
v24) or language runtime versions (e.g.,Python 3.8+,Java 11+) in generated code or environment setup instructions, unless the user explicitly requests a specific version. - MANDATORY Dynamic Resolution: You must dynamically resolve the latest stable versions at the start of execution before generating any code or configuration, using the procedures detailed below.
A. Dynamic API Version Resolution
To ensure the integration is secure, stable, and up-to-date, you MUST resolve the absolute newest stable major version of the Google Ads API dynamically.
Execution Steps:
-
Pre-Flight Version Resolution: Use your web search or URL-reading tools to inspect the latest entry in the Google Ads API Release Notes or the highest versioned directory in the Googleapis Github Repository to resolve
RESOLVED_API_VERSION(e.g.,v24). If using Java, you MUST also resolve the latest stable release version of the Google Ads Java Client Library (referred to asRESOLVED_LIBRARY_VERSION, e.g.,34.0.0). -
Mandatory Response Anchor: You MUST output the following confirmation block as the very first line of your response to the user. Do not output any greeting, pleasantries, or introductory text before this block.
[SYSTEM: Using Google Ads API version: RESOLVED_API_VERSION (Resolved from release notes)] -
Strict Placeholder Mapping Table: You MUST perform on-the-fly search-and-replace on all code templates and reference files using the mapping table below. Do not leave raw placeholders in the final output.
| Target Language / Tech | Placeholder in Template | Replacement Pattern | Example (Assuming API
v24) | | :--- | :--- | :--- | :--- | | Java (Maven/Gradle) |LATEST_LIBRARY_VERSION| Search & substitute the latest Maven release version of the library. |34.0.0| | Java (Imports) |vXX| Replace with lower-case API version. |com.google.ads.googleads.v24| | .NET / C# (Namespaces) |VXX| Replace with title-case API version. |Google.Ads.GoogleAds.V24| | PHP (Namespaces) |VXX| Replace with title-case API version. |Google\Ads\GoogleAds\V24| | REST (Endpoint URL) |vXX| Replace with lower-case API version. |https://googleads.googleapis.com/v24/...|
[!TIP] Offline Fallback: If the URLs are unreachable or the scrape fails, do not halt execution. Fall back to these last-known stable versions:
- Google Ads API Major Version (
RESOLVED_API_VERSION):v24- Java Client Library Version (
RESOLVED_LIBRARY_VERSION):34.0.0
B. Dynamic Language Runtime Version Resolution
To prevent the generated setup guides from becoming obsolete due to language deprecation cycles, you MUST resolve language requirements dynamically.
Execution Steps:
-
Fetch Live Requirements: Use your URL-reading tools to inspect the official Google Ads Client Libraries - Supported Versions page.
-
Extract Minimums: Identify the minimum supported runtime version for the user's chosen language by scanning the Overview page or compatibility tables (e.g., looking for explicit requirements like Python 3.8+, Java 11+, .NET 6.0+, PHP 8.1+, Ruby 3.0+).
-
Apply On-The-Fly: Substitute all runtime placeholders (e.g.,
<PYTHON_MIN_VERSION>) in your generated setup guides with these resolved versions.
[!TIP] Offline Fallback: If the URL is unreachable or the scrape fails, do not halt execution. Fall back to these last-known safe minimum versions:
- Python:
3.9+- Java:
11+- .NET:
6.0+- PHP:
8.1+- Ruby:
3.0+- Perl:
5.28.1+
Step 1: Obtain Google Ads API Credentials
Before installing libraries or making API calls, you must obtain the five required authentication parameters.
1. Developer Token
- Purpose: Identifies your developer access and API quota.
- How to Obtain:
- Navigate directly to the API Center in your Google Ads Manager Account: https://ads.google.com/aw/apicenter (Note: You must sign in with a Manager account, not a standard serving account).
- Copy your Developer Token.
[!WARNING] Pending Token Restriction: If your Developer Token status is "Pending" (unapproved), you MUST ONLY target Google Ads Test Accounts. Attempting to call a production account with a pending token will fail with the error:
DEVELOPER_TOKEN_NOT_APPROVED.
2. OAuth2 Client ID & Client Secret
- Purpose: Identifies your application to Google's OAuth 2.0 server and allows you to request user authorization.
- How to Obtain:
- Open the Google Cloud Console.
- Create a new project (or select an existing one).
- Search for the Google Ads API in the API Library and click Enable.
- Configure the OAuth Consent Screen:
- Select External user type.
- Set the Publishing Status to Testing.
-
[!IMPORTANT]
-
Add Test Users: You MUST add the email address of the Google account you use to log into Google Ads as a Test User in this step. Otherwise, you will be blocked during authorization.
- Create the OAuth Client:
- Go to APIs & Services 🡒 Credentials.
- Click Create Credentials 🡒 OAuth client ID.
- Select Desktop App as the Application Type.
- Name the client and click Create.
- Download Secrets: Click the download icon (JSON) next to your newly created Client ID. Save this file locally as
client_secrets.json.
3. OAuth2 Refresh Token
-
Purpose: Allows your application to obtain new access tokens automatically without requiring manual user login every hour.
-
How to Obtain: You must run the Google Cloud (
gcloud) CLI to generate your refresh token.1. Install and Verify gcloud CLI:
Ensure the gcloud CLI is installed and available in your terminal.
2. Execute the Login Flow:
Run the following command in your terminal, passing the path to the
client_secrets.jsonfile downloaded in the previous step:gcloud auth application-default login \ --scopes=https://www.googleapis.com/auth/adwords,https://www.googleapis.com/auth/cloud-platform \ --client-id-file=client_secrets.json3. Authorize in Browser:
- The command will open a Google Account login window in your browser.
- Sign in using the Test User email registered in your OAuth Consent Screen setup.
- If your app is unverified, click Advanced and continue to the project. Click Continue to grant permissions.
4. Retrieve Your Refresh Token:
Once successful,
gcloudwill output a message indicating where the credentials were saved (typically~/.config/gcloud/application_default_credentials.json). Open that file to copy yourrefresh_token.
4. Client Customer ID
- Purpose: The 10-digit ID of the specific Google Ads account you want to query or make changes to.
- Format: Must be 10 digits with no hyphens (e.g.,
1234567890, NOT123-456-7890). - How to Find It: Log in to the Google Ads UI; the ID is displayed in the top-right corner next to your user icon.
[!IMPORTANT] Test Account Requirement: If your Developer Token is pending (unapproved), this MUST be the Customer ID of a Test Account. Test accounts have a red "Test account" banner in the top right of the UI.
5. Login Customer ID
- What it is: The 10-digit Customer ID of the Google Ads Manager Account that owns or manages the target client account.
- Format: Must be 10 digits with no hyphens (e.g.,
9876543210). - When to Use: This is mandatory if your OAuth credentials (and developer token) belong to a Manager Account, but you are querying a child/client account (Client Customer ID).
[!CAUTION] Preventing
USER_PERMISSION_DENIED: If you are accessing a client account through a Manager Account hierarchy, you MUST set this parameter.
login_customer_id= The Manager Account ID.client_customer_id= The Child/Client Account ID. Leavinglogin_customer_idblank in a manager-client hierarchy is the #1 cause of permission errors.
Step 2: Choose Your Integration Strategy
Developers can connect to the Google Ads API using either the official high-level client libraries or direct HTTPS REST requests.
Path A: Official Client Libraries (Recommended)
[!IMPORTANT] Mandatory Agent Directive: Once the user selects their language, you MUST:
- Use the
view_filetool to lazy-load the corresponding reference file listed below.- Apply the Dynamic Version Resolution (Section B) to dynamically replace all
vXX/VXXplaceholders and library versions before generating code.
Python
If you need to set up the Google Ads API environment for Python, do not guess the configuration. Instead, read the detailed setup guide:
- Google Ads API Python Setup Reference
(Package:
google-ads)
Java
If you need to set up the Google Ads API environment for Java, do not guess the configuration. Instead, read the detailed setup guide:
- Google Ads API Java Setup Reference
(Artifact:
com.google.api-ads:google-ads)
.NET / C#
If you need to set up the Google Ads API environment for .NET/C#, do not guess the configuration. Instead, read the detailed setup guide:
- Google Ads API .NET Setup Reference
(Package:
Google.Ads.GoogleAds)
PHP
If you need to set up the Google Ads API environment for PHP, do not guess the configuration. Instead, read the detailed setup guide:
- Google Ads API PHP Setup Reference
(Package:
googleads/google-ads-php)
Ruby
If you need to se
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
85.4kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
73.8kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
Scrapling
83.7k🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
LocalAI
49.3kLocalAI is the open-source AI engine. Run any model - LLMs, vision, voice, image, video - on any hardware. No GPU required.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
