REST API Dokumentation

Greifen Sie programmatisch über die REST-API auf Ihre AI-Sichtbarkeitsdaten zu. Verwenden Sie sie mit jedem Tool, das HTTP-Anfragen unterstützt.

TL;DR

Generieren Sie einen persönlichen API-Schlüssel in Ihren Kontoeinstellungen. Verwenden Sie dann Standard-HTTP-GET-Anfragen mit Ihrem API-Schlüssel, um Sichtbarkeitswerte, Erwähnungen und Sentimentdaten von ChatGPT, Gemini, Perplexity und Claude abzurufen. Funktioniert mit Excel, Google Sheets, Power BI, Tableau, Python und jedem anderen HTTP-Client.

Basis-URL

Alle API-Endpunkte sind unter folgender Basis-URL verfügbar:

https://your-domain.com/api/v1/looker/

Ersetzen Sie your-domain.com durch die tatsächliche Domain Ihrer AI Visibility Tool-Instanz.

Authentifizierung

Alle API-Anfragen erfordern eine Authentifizierung über einen persönlichen API-Schlüssel. Sie können API-Schlüssel in Ihren Kontoeinstellungen unter "API-Schlüssel" erstellen.

So authentifizieren Sie sich

Fügen Sie Ihren API-Schlüssel in jede Anfrage ein, indem Sie eine dieser Methoden verwenden:

Option 1: Authorization-Header (Empfohlen)
curl -H "Authorization: Bearer avt_your_key_here" \
  https://your-domain.com/api/v1/looker/data
Option 2: Query-Parameter
curl "https://your-domain.com/api/v1/looker/data?api_key=avt_your_key_here"
Ihr API-Schlüssel beginnt mit avt_ gefolgt von 48 Zeichen. Halten Sie Ihren API-Schlüssel geheim — er bietet vollen Lesezugriff auf Ihre Sichtbarkeitsdaten.

API-Schlüssel-Verwaltung

  • Schlüssel erstellen: Kontomenü → API-Schlüssel → API-Schlüssel erstellen
  • Maximal 3 aktive Schlüssel gleichzeitig
  • Schlüssel werden nur einmal bei der Erstellung angezeigt — bewahren Sie sie sicher auf
  • Löschen Sie unbenutzte Schlüssel jederzeit auf der API-Schlüssel-Seite

Rate Limits

Limit Wert
Anfragen pro Minute 100 pro API-Schlüssel
Maximale Datensätze pro Anfrage 10,000

Wenn das Rate Limit überschritten wird, gibt die API HTTP 429 zurück. Warten Sie 60 Sekunden, bevor Sie es erneut versuchen.

Endpunkte

GET /api/v1/looker/schema

Gibt das Datenschema mit Feldnamen, Typen und semantischen Informationen zurück. Nützlich, um die Datenstruktur vor der Abfrage zu verstehen.

Parameter: Keine

Beispielanfrage:

curl -H "Authorization: Bearer avt_your_key_here" \
  https://your-domain.com/api/v1/looker/schema

Beispielantwort:

{
  "schema": [
    {
      "name": "date",
      "label": "Date",
      "dataType": "STRING",
      "semantics": {
        "conceptType": "DIMENSION",
        "semanticType": "YEAR_MONTH_DAY"
      }
    },
    {
      "name": "visibility_score",
      "label": "Visibility Score",
      "dataType": "NUMBER",
      "semantics": {
        "conceptType": "METRIC"
      }
    }
  ]
}
GET /api/v1/looker/data

Gibt Ihre AI-Sichtbarkeits-Analyseergebnisse zurück. Unterstützt Filterung nach Datum, Themenfeld und AI-System. Enthält Paginierung für große Datensätze.

Query-Parameter:

Parameter Geben Sie Erforderlich Beschreibung
date_from String Nein Startdatum-Filter (JJJJ-MM-TT)
date_to String Nein Enddatum-Filter (JJJJ-MM-TT)
selection_id Integer Nein Filtern nach Themenfeld-ID (IDs vom /selections-Endpunkt abrufen)
ai_system String Nein Filtern nach AI-System: chatgpt, gemini, perplexity oder claude
limit Integer Nein Anzahl der zurückzugebenden Datensätze (Standard: 1000, Max: 10000)
offset Integer Nein Anzahl der zu überspringenden Datensätze für Paginierung (Standard: 0)

Beispielanfrage:

curl -H "Authorization: Bearer avt_your_key_here" \
  "https://your-domain.com/api/v1/looker/data?date_from=2025-01-01&date_to=2025-01-31&ai_system=chatgpt&limit=500"

Beispielantwort:

{
  "data": [
    {
      "date": "20250115",
      "topic_area": "Brand Monitoring",
      "prompt": "What is the best project management tool?",
      "category": "Product Comparison",
      "funnel_stage": "Consideration",
      "ai_system": "chatgpt",
      "brand": "Asana",
      "visibility_score": 75,
      "mention_count": 3,
      "position_score": 85,
      "sentiment_score": 0.8,
      "web_search_used": false
    }
  ],
  "pagination": {
    "total": 1250,
    "limit": 500,
    "offset": 0,
    "has_more": true
  }
}
Tipp: Verwenden Sie die Paginierungsfelder, um durch große Datensätze zu iterieren. Erhöhen Sie den Offset um den Limit-Wert, um die nächste Seite abzurufen.
GET /api/v1/looker/selections

Gibt eine Liste Ihrer Themenfelder (Auswahlen) mit ihren IDs zurück. Verwenden Sie diese IDs, um Daten im /data-Endpunkt zu filtern.

Parameter: Keine

Beispielanfrage:

curl -H "Authorization: Bearer avt_your_key_here" \
  https://your-domain.com/api/v1/looker/selections

Beispielantwort:

{
  "selections": [
    {
      "id": 42,
      "name": "Brand Monitoring",
      "description": "Track brand mentions across AI platforms",
      "prompt_count": 25,
      "is_active": true,
      "created_at": "2025-01-10T14:30:00"
    }
  ]
}

Datenfeld-Referenz

Jeder Datensatz in der /data-Antwort enthält folgende Felder:

Dimensionen

Feld Geben Sie Beschreibung
date String Analysedatum im Format JJJJMMTT
topic_area String Name des überwachten Themenfelds (Auswahl)
prompt String Der an das AI-System gesendete Prompt-Text
category String Dem Prompt zugewiesene Kategorie
funnel_stage String Marketing-Funnel-Stufe (z.B. Bekanntheit, Überlegung, Entscheidung)
ai_system String Die abgefragte AI-Plattform (chatgpt, gemini, perplexity, claude)
brand String Die Marke, die auf Erwähnungen verfolgt wird

Metriken

Feld Geben Sie Bereich Beschreibung
visibility_score Zahl 0–100 Gesamter Sichtbarkeitswert der Marke in der AI-Antwort
mention_count Zahl 0+ Anzahl der Erwähnungen der Marke in der AI-Antwort
position_score Zahl 0–100 Positionsranking-Wert — höhere Werte bedeuten frühere Erwähnungen
sentiment_score Zahl -1 bis +1 Sentimentwert von -1 (negativ) bis +1 (positiv)
web_search_used Boolean true/false Ob das AI-System eine Websuche zur Generierung der Antwort verwendet hat

Antwortformat

Alle Antworten werden als JSON mit UTF-8-Kodierung zurückgegeben. Der HTTP-Content-Type-Header ist gesetzt auf application/json.

HTTP-Statuscodes

Statuscode Bedeutung
200 OK Anfrage erfolgreich
401 Unauthorized API-Schlüssel fehlt, ungültig oder deaktiviert
429 Too Many Requests Rate Limit überschritten — 60 Sekunden warten

Fehlerbehandlung

Fehlerantworten enthalten immer einen JSON-Body mit einer Fehlermeldung:

{
  "error": "API key required. Use Authorization: Bearer <key> header or ?api_key=<key> query parameter."
}
Häufige Fehler und Lösungen
Fehler Ursache Lösung
API key required Kein API-Schlüssel in der Anfrage Authorization-Header oder api_key-Parameter hinzufügen
Invalid or inactive API key Schlüssel ist falsch, gelöscht oder deaktiviert Überprüfen Sie den Schlüssel auf Ihrer API-Schlüssel-Seite; erstellen Sie bei Bedarf einen neuen
Rate limit exceeded Mehr als 100 Anfragen in 60 Sekunden 60 Sekunden warten, dann erneut versuchen; Ergebnisse ggf. zwischenspeichern

Codebeispiele

Python
import requests

API_KEY = "avt_your_key_here"
BASE_URL = "https://your-domain.com/api/v1/looker"

headers = {"Authorization": f"Bearer {API_KEY}"}

# Alle Themenfelder abrufen
selections = requests.get(f"{BASE_URL}/selections", headers=headers).json()
print(selections)

# Sichtbarkeitsdaten für Januar 2025 abrufen
params = {
    "date_from": "2025-01-01",
    "date_to": "2025-01-31",
    "limit": 1000
}
data = requests.get(f"{BASE_URL}/data", headers=headers, params=params).json()
print(f"Total records: {data['pagination']['total']}")

# Durch alle Ergebnisse paginieren
all_records = []
offset = 0
while True:
    params["offset"] = offset
    response = requests.get(f"{BASE_URL}/data", headers=headers, params=params).json()
    all_records.extend(response["data"])
    if not response["pagination"]["has_more"]:
        break
    offset += params["limit"]

print(f"Fetched {len(all_records)} records total")
JavaScript (Node.js / Browser)
const API_KEY = "avt_your_key_here";
const BASE_URL = "https://your-domain.com/api/v1/looker";

const headers = { "Authorization": `Bearer ${API_KEY}` };

// Sichtbarkeitsdaten abrufen
const response = await fetch(`${BASE_URL}/data?date_from=2025-01-01&limit=500`, { headers });
const result = await response.json();
console.log(`Total: ${result.pagination.total} records`);
cURL
# Schema abrufen
curl -H "Authorization: Bearer avt_your_key_here" \
  https://your-domain.com/api/v1/looker/schema

# Daten mit Filtern abrufen
curl -H "Authorization: Bearer avt_your_key_here" \
  "https://your-domain.com/api/v1/looker/data?date_from=2025-01-01&ai_system=chatgpt&limit=100"

# Themenfelder abrufen
curl -H "Authorization: Bearer avt_your_key_here" \
  https://your-domain.com/api/v1/looker/selections
Google Sheets (Apps Script)
function getVisibilityData() {
  const API_KEY = "avt_your_key_here";
  const url = "https://your-domain.com/api/v1/looker/data?limit=500";

  const options = {
    headers: { "Authorization": "Bearer " + API_KEY },
    muteHttpExceptions: true
  };

  const response = UrlFetchApp.fetch(url, options);
  const json = JSON.parse(response.getContentText());

  // Daten in das aktive Tabellenblatt schreiben
  const sheet = SpreadsheetApp.getActiveSheet();
  const headers = Object.keys(json.data[0]);
  sheet.getRange(1, 1, 1, headers.length).setValues([headers]);

  const rows = json.data.map(row => headers.map(h => row[h]));
  sheet.getRange(2, 1, rows.length, headers.length).setValues(rows);
}

FAQ

Die REST-API ist in allen Plänen verfügbar, einschließlich des kostenlosen Plans. Jeder Benutzer kann einen API-Schlüssel generieren und über die API auf seine Daten zugreifen.

Nein. Jeder API-Schlüssel ist mit Ihrem persönlichen Konto verknüpft. Die API gibt nur Daten aus Ihren eigenen Themenfeldern und Analysen zurück. Es gibt keine Möglichkeit, auf die Daten anderer Benutzer zuzugreifen.

Die API gibt immer die neuesten verfügbaren Daten zurück. Neue Ergebnisse erscheinen, sobald eine Analyse im AI Visibility Tool abgeschlossen ist. Es gibt keine Verzögerung oder Zwischenspeicherung auf API-Seite.

Jedes Tool, das HTTP-Anfragen senden kann, funktioniert mit der API. Gängige Beispiele: Python, JavaScript, Excel (Power Query), Google Sheets (Apps Script), Power BI, Tableau, Looker Studio, Postman, cURL und benutzerdefinierte Anwendungen.

API-Schlüssel werden nur einmal bei der Erstellung angezeigt. Wenn Sie Ihren Schlüssel verloren haben, gehen Sie zu Konto → API-Schlüssel, löschen Sie den alten Schlüssel und erstellen Sie einen neuen. Aktualisieren Sie den Schlüssel in all Ihren Integrationen.

Verwenden Sie die Parameter limit und offset. Beginnen Sie mit offset=0 und erhöhen Sie den Offset um den Limit-Wert für jede weitere Anfrage. Prüfen Sie das Feld has_more im Paginierungsobjekt, um zu wissen, wann Sie alle Datensätze abgerufen haben.