Google Ads API: Einführung für Entwickler und Agenturen
Die Google Ads API ist die leistungsstärkste Schnittstelle für programmatischen Zugriff auf Google Ads. Während die Weboberfläche und Scripts für die meisten Nutzer ausreichen, eröffnet die API neue Möglichkeiten für große Agenturen, Tool-Entwickler und Unternehmen mit komplexen Automatisierungsanforderungen. In diesem Guide erklären wir, was die API ist, wie Sie Zugang erhalten und welche Use Cases sie besonders wertvoll machen.
Was ist die Google Ads API?
Die Google Ads API ist eine REST-basierte Programmierschnittstelle, die vollständigen Zugriff auf Google Ads Funktionalität bietet. Sie ermöglicht das Erstellen, Lesen, Aktualisieren und Löschen von Kampagnen, Keywords, Anzeigen und allen anderen Entitäten programmatisch.
Definition und Funktionsumfang
Was ist eine API? Eine Application Programming Interface ermöglicht Software-zu-Software-Kommunikation. Statt manueller Aktionen in der Weboberfläche sendet Ihre Anwendung HTTP-Anfragen an Googles Server, die strukturierte Daten zurückgeben oder Änderungen vornehmen.
Funktionsumfang der Google Ads API:
- Vollständiges Kampagnen-Management: Erstellen, bearbeiten, pausieren, löschen
- Reporting und Analytics: Abrufen von Performance-Daten mit flexiblen Queries
- Bidding und Budget-Management: Programmatische Gebotsanpassungen
- Audience Management: Erstellen und verwalten von Zielgruppen
- Asset-Management: Upload und Verwaltung von Bildern, Videos und anderen Assets
- Bulk-Operationen: Massive Änderungen an tausenden Entitäten gleichzeitig
- Echtzeit-Zugriff: Keine Wartezeiten wie bei manchen Reporting-Tools
API-Versionen: Google veröffentlicht regelmäßig neue API-Versionen mit erweiterten Features. 2026 ist Version 16 aktuell, mit Backwards-Kompatibilität für einige ältere Versionen.
API vs. Scripts vs. Editor
Google bietet mehrere Wege zum programmatischen Zugriff. Wann nutzen Sie welchen?
Google Ads API:
- Beste für: Custom-Tool-Entwicklung, große Agenturen, komplexe Integrationen
- Vorteile: Vollständiger Funktionsumfang, keine Laufzeit-Limits, externe Hosting-Möglichkeit
- Nachteile: Komplexer Setup, Developer Token erforderlich, steile Lernkurve
- Use Case: Eigenes Bid-Management-Tool, Cross-Platform-Dashboard, White-Label-Lösung
- Beste für: Automatisierung in einzelnen Konten, kleine bis mittlere Agenturen
- Vorteile: Einfacher Start, läuft auf Google-Servern, integriert in Google Ads UI
- Nachteile: 30-Minuten-Laufzeit-Limit, JavaScript-only, weniger Funktionen als API
- Use Case: Tägliche Reports, Budget-Monitoring, einfache Optimierungen
- Beste für: Bulk-Bearbeitung durch Menschen, Offline-Arbeit
- Vorteile: Keine Programmierung, Desktop-App, mächtige Bulk-Funktionen
- Nachteile: Keine Automatisierung, manuelle Nutzung erforderlich
- Use Case: Große Account-Umstrukturierungen, Kampagnen-Duplikation
Entscheidungshilfe: Für die meisten Automatisierungs-Bedürfnisse starten Sie mit Scripts. Wenn Sie an deren Grenzen stoßen (Laufzeit, Funktionalität) oder ein kommerzielles Tool entwickeln, wechseln Sie zur API.
API-Zugang beantragen
Der Zugang zur Google Ads API erfordert einen Bewerbungsprozess. Google kontrolliert den Zugang, um Missbrauch zu verhindern.
Voraussetzungen
Bevor Sie Zugang beantragen, stellen Sie sicher:
- Google Ads Konto: Sie benötigen ein aktives Google Ads Konto (kann auch Test-Konto sein)
- Developer-Skills: Grundkenntnisse in mindestens einer Programmiersprache (Python, Java, PHP, etc.)
- Use Case: Klare Vorstellung, wofür Sie die API nutzen möchten
- Compliance-Verständnis: Kenntnisse der API Terms & Conditions
Developer Token beantragen
Der Developer Token ist Ihr Zugangsschlüssel zur API:
- Melden Sie sich bei Google Ads an (bevorzugt in einem Manager-Konto/MCC, wenn Sie eines haben)
- Klicken Sie auf "Tools und Einstellungen" → "Setup" → "API Center"
- Klicken Sie auf "Developer Token beantragen"
- Füllen Sie das Antragsformular aus:
- Firmenname und Website
- Beschreibung Ihres Use Cases: Seien Sie spezifisch. "Automatisierung" ist zu vague. "Custom Reporting Dashboard für 50 Agentur-Kunden" ist besser.
- Erwartetes Request-Volumen: Schätzen Sie realistisch
- Stimmen Sie den Terms zu und senden Sie die Anfrage
Bearbeitungszeit: Google prüft Anträge üblicherweise innerhalb von 1-5 Werktagen. In manchen Fällen kann es länger dauern oder Google fragt nach zusätzlichen Informationen.
OAuth 2.0 einrichten
Zusätzlich zum Developer Token benötigen Sie OAuth 2.0 Credentials für die Authentifizierung:
-
Besuchen Sie die Google Cloud Console
-
Erstellen Sie ein neues Projekt (oder wählen Sie ein bestehendes)
-
Aktivieren Sie die "Google Ads API" für Ihr Projekt:
- "APIs & Services" → "Library" → Suchen Sie "Google Ads API" → "Enable"
-
Erstellen Sie OAuth 2.0 Credentials:
- "APIs & Services" → "Credentials" → "Create Credentials" → "OAuth client ID"
- Application type: "Desktop app" (für lokale Entwicklung) oder "Web application" (für hosted Apps)
- Notieren Sie Client ID und Client Secret
-
Autorisieren Sie Ihre Anwendung:
- Nutzen Sie Google's OAuth 2.0 Flow, um ein Refresh Token zu erhalten
- Die Client Libraries bieten Helper-Functions für diesen Prozess
Sicherheit: Behandeln Sie Client Secret und Refresh Token wie Passwörter. Speichern Sie sie sicher und committen Sie sie nie in öffentliche Repositories.
Zugangslevels (Basic vs. Standard)
Google vergibt Developer Tokens in zwei Levels:
Basic Access (Test-Level):
- Automatisch vergeben während der Prüfung
- Funktioniert nur mit Test-Konten und dem Konto, das den Token beantragt hat
- Limitierte API-Anfragen (wenige tausend pro Tag)
- Keine Produktions-Nutzung möglich
- Zweck: Entwicklung und Testing
Standard Access (Production-Level):
- Vergeben nach erfolgreicher Prüfung durch Google
- Funktioniert mit allen Google Ads Konten, zu denen Sie Zugriff haben
- Höhere Rate Limits (Millionen Anfragen pro Tag möglich)
- Für Live-Produktions-Nutzung
- Voraussetzung: Nachweisbare legitime Use Cases, Compliance mit Policies
Upgrade-Prozess: Nach initialer Entwicklung mit Basic Access bewerben Sie sich für Standard Access. Google prüft Ihre Anwendung und Use Cases. Dieser Prozess kann mehrere Wochen dauern und erfordert detaillierte Dokumentation Ihrer Implementierung.
Erste Schritte mit der API
Nachdem Sie Zugang haben, beginnen Sie mit der Implementierung. Google bietet Client Libraries für alle gängigen Programmiersprachen.
Client Libraries installieren
Google pflegt offizielle Libraries für:
Python (empfohlen für Einsteiger):
pip install google-ads
Java:
# Maven Dependency
<dependency>
<groupId>com.google.api-ads</groupId>
<artifactId>google-ads</artifactId>
<version>LATEST_VERSION</version>
</dependency>
PHP:
composer require googleads/google-ads-php
Ruby:
gem install google-ads-googleads
.NET:
Install-Package Google.Ads.GoogleAds
Empfehlung: Python ist die beliebteste Wahl für Google Ads API-Entwicklung. Die Library ist gut dokumentiert, die Community groß, und Python eignet sich hervorragend für Daten-Verarbeitung.
Authentifizierung
Bevor Sie API-Calls machen können, konfigurieren Sie die Authentifizierung. Erstellen Sie eine google-ads.yaml Konfigurationsdatei:
# Google Ads API Configuration
developer_token: INSERT_DEVELOPER_TOKEN_HERE
client_id: INSERT_OAUTH2_CLIENT_ID_HERE
client_secret: INSERT_OAUTH2_CLIENT_SECRET_HERE
refresh_token: INSERT_REFRESH_TOKEN_HERE
login_customer_id: INSERT_LOGIN_CUSTOMER_ID_HERE
Parameter-Erklärung:
developer_token: Ihr Developer Token aus dem API Centerclient_idundclient_secret: OAuth Credentials aus Google Cloud Consolerefresh_token: OAuth Refresh Token (erhalten durch einmaligen Authorization Flow)login_customer_id: Die Customer ID des Manager-Kontos, falls Sie eines nutzen (optional)
Die Client Libraries lesen diese Datei automatisch.
Erste Abfrage durchführen
Ein einfaches Python-Beispiel zum Abrufen von Kampagnen:
from google.ads.googleads.client import GoogleAdsClient
# Client initialisieren (liest google-ads.yaml)
client = GoogleAdsClient.load_from_storage("google-ads.yaml")
# Customer ID des Kontos, das Sie abfragen möchten
customer_id = "1234567890" # Ohne Bindestriche
# Google Ads Service abrufen
ga_service = client.get_service("GoogleAdsService")
# Query für Kampagnen
query = """
SELECT
campaign.id,
campaign.name,
campaign.status,
metrics.impressions,
metrics.clicks,
metrics.cost_micros
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
ORDER BY metrics.impressions DESC
LIMIT 10
"""
# Query ausführen
response = ga_service.search(customer_id=customer_id, query=query)
# Ergebnisse ausgeben
print("Top 10 Kampagnen nach Impressions:")
for row in response:
campaign = row.campaign
metrics = row.metrics
cost_eur = metrics.cost_micros / 1_000_000 # Micros zu EUR
print(f"Kampagne: {campaign.name}")
print(f" Status: {campaign.status.name}")
print(f" Impressions: {metrics.impressions}")
print(f" Clicks: {metrics.clicks}")
print(f" Cost: {cost_eur:.2f} EUR")
print()
Was passiert hier?
- Client wird initialisiert mit Credentials
- GoogleAdsService wird geladen (der Haupt-Service für Queries)
- Eine GAQL-Query (Google Ads Query Language) definiert, welche Daten abgerufen werden
- Query wird ausgeführt
- Ergebnisse werden iteriert und ausgegeben
Erfolgskriterium: Wenn dieses Script ohne Fehler läuft und Ihre Kampagnendaten zeigt, funktioniert Ihr API-Setup korrekt.
API Use Cases
Die API glänzt bei spezifischen Anwendungsfällen, die mit Standard-Tools schwierig oder unmöglich sind.
Kampagnen-Management automatisieren
Szenario: Sie verwalten hunderte Kampagnen mit ähnlichen Strukturen und möchten sie synchron halten.
Lösung mit API:
- Template-basierte Kampagnenerstellung
- Bulk-Updates über alle Kampagnen (z.B. neue negative Keywords in 500 Kampagnen)
- Regelbasierte Anpassungen basierend auf externen Daten (Lagerbestände, Produktpreise)
Beispiel: Ein E-Commerce-Unternehmen mit 1.000 Produkten erstellt automatisch eine Shopping-Kampagne für jedes Produkt, passt Budgets basierend auf Lagerverfügbarkeit an und pausiert Kampagnen für ausverkaufte Artikel – alles in Echtzeit über die API.
Custom Reporting Dashboards
Szenario: Ihre Stakeholder brauchen spezifische Reports, die Google Ads nicht nativ bietet.
Lösung mit API:
- Abrufen von Daten aus Google Ads und anderen Quellen
- Kombination mit CRM-, ERP- oder Warehouse-Daten
- Visualisierung in Custom-Dashboards (React, Vue, etc.)
- Echtzeit-Updates
Beispiel: Ein Dashboard zeigt Google Ads Performance kombiniert mit Offline-Verkaufsdaten aus Ihrem POS-System, um echten ROAS inkl. Offline-Conversions zu berechnen.
Bidding Tools entwickeln
Szenario: Sie möchten Custom Bidding-Strategien implementieren, die komplexer sind als Googles Smart Bidding.
Lösung mit API:
- Abrufen von Keyword- oder Placement-Performance
- Eigene Algorithmen für Gebotsberechnung
- Automatische Gebotsanpassungen via API
- Integration externer Faktoren (Wetter, Events, Inventar)
Beispiel: Ein Reiseunternehmen passt Gebote für Hotels basierend auf aktueller Auslastung an – bei niedriger Auslastung werden Gebote erhöht, um Zimmer zu füllen.
Cross-Platform Datenintegration
Szenario: Sie nutzen mehrere Werbeplattformen und möchten einheitliches Reporting.
Lösung mit API:
- Daten von Google Ads, Facebook, LinkedIn, etc. über deren APIs abrufen
- Normalisierung und Kombination in einer Datenbank
- Einheitliche Metriken und Vergleiche über Plattformen hinweg
Beispiel: Ein Agency-Dashboard zeigt aggregierte Performance über Google Ads, Facebook Ads und LinkedIn Ads für alle Kunden in einer einheitlichen Oberfläche.
Bulk-Operationen
Szenario: Sie müssen tausende Änderungen schnell durchführen.
Lösung mit API:
- Batch-Requests für effiziente Bulk-Operations
- Parallelisierung für maximale Geschwindigkeit
- Fehlerbehandlung und Retry-Logik
Beispiel: Ein Rebranding erfordert das Ändern von URLs in 10.000 Anzeigen. Via API mit Batch-Requests dauert dies Minuten statt Tage.
Python-Beispiel: Kampagnen abrufen
Ein erweitertes Beispiel mit Fehlerbehandlung und Formatierung:
from google.ads.googleads.client import GoogleAdsClient
from google.ads.googleads.errors import GoogleAdsException
import sys
def get_campaigns(client, customer_id):
"""Ruft Kampagnen-Performance für die letzten 30 Tage ab."""
ga_service = client.get_service("GoogleAdsService")
query = """
SELECT
campaign.id,
campaign.name,
campaign.status,
campaign.advertising_channel_type,
campaign_budget.amount_micros,
metrics.impressions,
metrics.clicks,
metrics.ctr,
metrics.cost_micros,
metrics.conversions,
metrics.cost_per_conversion
FROM campaign
WHERE segments.date DURING LAST_30_DAYS
AND campaign.status != 'REMOVED'
ORDER BY metrics.impressions DESC
LIMIT 50
"""
try:
response = ga_service.search_stream(customer_id=customer_id, query=query)
print(f"{'Kampagne':<40} {'Typ':<15} {'Budget (EUR)':<15} {'Impressions':<12} {'Klicks':<10} {'CTR':<8} {'Kosten (EUR)':<12} {'Conv.':<8}")
print("-" * 140)
for batch in response:
for row in batch.results:
campaign = row.campaign
metrics = row.metrics
budget = row.campaign_budget
# Konvertierungen
budget_eur = budget.amount_micros / 1_000_000 if budget.amount_micros else 0
cost_eur = metrics.cost_micros / 1_000_000
ctr_percent = metrics.ctr * 100 if metrics.ctr else 0
print(f"{campaign.name:<40} "
f"{campaign.advertising_channel_type.name:<15} "
f"{budget_eur:<15.2f} "
f"{metrics.impressions:<12} "
f"{metrics.clicks:<10} "
f"{ctr_percent:<8.2f} "
f"{cost_eur:<12.2f} "
f"{metrics.conversions:<8.1f}")
except GoogleAdsException as ex:
print(f"API-Fehler aufgetreten:")
print(f" Request ID: {ex.request_id}")
for error in ex.failure.errors:
print(f" Error: {error.error_code.name}")
print(f" Message: {error.message}")
sys.exit(1)
if __name__ == "__main__":
# Client initialisieren
client = GoogleAdsClient.load_from_storage("google-ads.yaml")
# Customer ID (ohne Bindestriche)
customer_id = "1234567890"
get_campaigns(client, customer_id)
Erklärung:
search_streamwird verwendet stattsearchfür bessere Performance bei vielen Resultaten- Umfassende Fehlerbehandlung für API-Errors
- Formatierte Tabellen-Ausgabe für Lesbarkeit
- Conversion von Micros (API-Standard) zu EUR
API-Limits und Best Practices
Die API hat Limits, um Missbrauch zu verhindern und Stabilität zu gewährleisten.
Rate Limits verstehen
Rate Limits:
- Basic Access: ~15.000 Requests pro Tag
- Standard Access: Höhere Limits, variabel je nach Nutzung
- Per-Request-Objekt-Limits: Max. 10.000 Operationen pro Batch-Request
Limit-Überschreitung: Bei Überschreitung erhalten Sie HTTP 429 (Too Many Requests) Errors. Ihre Anwendung sollte diese abfangen und mit Exponential Backoff retries implementieren.
Tipp: Nutzen Sie search_stream statt search für große Datenmengen – dies ist effizienter und count nicht gegen Paging-Limits.
Batch Requests nutzen
Batch Requests sind essentiell für Effizienz:
Single Requests (ineffizient):
# 1000 Keywords einzeln pausieren = 1000 API Calls
for keyword in keywords:
keyword.pause()
Batch Requests (effizient):
# 1000 Keywords in batches pausieren = ~10 API Calls
operations = []
for keyword in keywords:
operation = client.get_type("KeywordOperation")
operation.update = keyword
operation.update_mask = client.get_type("FieldMask")(paths=["status"])
operations.append(operation)
# Batch request mit bis zu 10.000 operations
service.mutate_keywords(customer_id=customer_id, operations=operations)
Vorteile: Dramatisch reduzierte API-Calls, schnellere Ausführung, effizientere Quota-Nutzung.
Fehlerbehandlung
Robuste Fehlerbehandlung ist kritisch:
from google.api_core.exceptions import RetryError
from google.ads.googleads.errors import GoogleAdsException
import time
def api_call_with_retry(func, max_retries=3):
"""Wrapper für API-Calls mit Retry-Logik."""
for attempt in range(max_retries):
try:
return func()
except GoogleAdsException as ex:
# Bestimmte Fehler sollten nicht retried werden
if ex.failure.errors[0].error_code.authentication_error:
raise # Auth-Fehler sind permanent
if attempt < max_retries - 1:
wait_time = 2 ** attempt # Exponential backoff
print(f"Retry in {wait_time} Sekunden...")
time.sleep(wait_time)
else:
raise
# Nutzung
result = api_call_with_retry(lambda: get_campaigns(client, customer_id))
Best Practices:
- Implementieren Sie Exponential Backoff für transiente Fehler
- Loggen Sie alle API-Errors mit Request IDs für Debugging
- Unterscheiden Sie permanente (Auth, Permission) und transiente (Rate Limit, Server) Fehler
API vs. Alternativen
Wann sollten Sie die API nutzen und wann reichen Alternativen?
Wann API?
Nutzen Sie die API wenn:
- Sie ein kommerzielles Tool oder SaaS-Produkt entwickeln
- Sie sehr große Konten verwalten (tausende Kampagnen)
- Sie komplexe Custom-Logik benötigen
- Sie Cross-Platform-Integrationen bauen
- Scripts' 30-Minuten-Limit zu restriktiv ist
- Sie Echtzeit-Daten und -Updates benötigen
Wann Scripts?
Nutzen Sie Scripts wenn:
- Sie Automatisierung für wenige Konten brauchen
- Ihr Use Case in 30 Minuten ausführbar ist
- Sie keine externe Hosting-Infrastruktur verwalten möchten
- Sie schnell starten möchten ohne aufwändigen Setup
- JavaScript für Ihre Zwecke ausreichend ist
Wann Third-Party Tools?
Nutzen Sie Third-Party Tools (wie Optmyzr, Adalysis) wenn:
- Ihr Use Case von existierenden Tools gut abgedeckt wird
- Sie keine Entwickler-Ressourcen haben
- Sie schnell starten möchten ohne eigene Entwicklung
- Support und Updates wichtig sind
Entscheidungsmatrix:
| Kriterium | API | Scripts | Third-Party | |-----------|-----|---------|-------------| | Setup-Aufwand | Hoch | Niedrig | Sehr niedrig | | Flexibilität | Maximal | Mittel | Begrenzt | | Kosten | Dev-Zeit | Keine | Abo-Gebühren | | Wartung | Sie | Google | Anbieter | | Laufzeit-Limits | Keine | 30 Min | Tool-abhängig |
Häufige Fragen
Ist die Google Ads API kostenlos? Ja, die Nutzung der API selbst ist kostenlos. Sie zahlen nur für Ihre Google Ads Werbung. Allerdings entstehen Kosten für Entwicklung, Hosting Ihrer Anwendung und eventuell Cloud-Infrastruktur.
Wie lange dauert es, API-Zugang zu bekommen? Basic Access (Test-Token) wird üblicherweise innerhalb von 1-5 Werktagen gewährt. Standard Access (Production-Token) kann mehrere Wochen bis Monate dauern, je nach Use Case und Vollständigkeit Ihrer Bewerbung.
Kann ich die API ohne Programmierkenntnisse nutzen? Nein. Die API erfordert Programmierung in einer unterstützten Sprache. Wenn Sie keine Entwickler-Skills haben, sind Google Ads Scripts (einfacher) oder Third-Party Tools (keine Programmierung) bessere Optionen.
Welche Programmiersprache ist am besten? Python ist die beliebteste Wahl für Google Ads API-Entwicklung: Gute Dokumentation, große Community, ideal für Datenverarbeitung. Java ist gut für Enterprise-Umgebungen. PHP für WordPress/Website-Integrationen. Wählen Sie die Sprache, mit der Ihr Team vertraut ist.
Was passiert, wenn mein Standard Access abgelehnt wird? Sie können weiter Basic Access nutzen (limitiert auf Test-Konten). Google gibt üblicherweise Feedback, warum die Ablehnung erfolgte. Beheben Sie die genannten Probleme und bewerben Sie sich erneut. Hartnäckigkeit und klare Use-Case-Dokumentation helfen.
Fazit
Die Google Ads API ist das mächtigste Tool für programmatischen Zugriff auf Google Ads – aber auch das komplexeste. Der Aufwand für Setup und Entwicklung lohnt sich für spezifische Use Cases: Tool-Entwicklung, große Agenturen, komplexe Automatisierungen und Cross-Platform-Integrationen.
Für die meisten alltäglichen Automatisierungsaufgaben sind Google Ads Scripts ausreichend und deutlich einfacher. Wenn Sie jedoch an deren Grenzen stoßen oder ein kommerzielles Produkt entwickeln, bietet die API unbegrenzte Möglichkeiten.
Der Einstieg ist steil, aber Google's Client Libraries und umfangreiche Dokumentation erleichtern den Start. Beginnen Sie mit einfachen Queries, lernen Sie GAQL (Google Ads Query Language) und erweitern Sie Ihre Implementierung schrittweise. Die Investition in API-Know-how zahlt sich durch Automatisierungsmöglichkeiten aus, die mit Standard-Google Ads Tools unmöglich wären. Für Bulk-Operationen ohne Programmierung empfehlen wir alternativ den Google Ads Editor.