{
  "openapi": "3.0.1",
  "info": {
    "title": "Google AI Overview Tracker | Citations, Brands & Changes",
    "description": "Track which sources, domains and brands Google AI Overviews cite for your queries. Each query is searched several times to measure citation rates instead of trusting one snapshot, with full answers, organic rank and changes since your last run.",
    "version": "0.1",
    "x-build-id": "fSzaA7ePCqCj5BwRA"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/alexmorain~google-ai-overview-tracker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-alexmorain-google-ai-overview-tracker",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/alexmorain~google-ai-overview-tracker/runs": {
      "post": {
        "operationId": "runs-sync-alexmorain-google-ai-overview-tracker",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/alexmorain~google-ai-overview-tracker/run-sync": {
      "post": {
        "operationId": "run-sync-alexmorain-google-ai-overview-tracker",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "queries"
        ],
        "properties": {
          "queries": {
            "title": "Search queries",
            "type": "array",
            "description": "What people type in Google, one query per line: <code>best crm for small business</code>, <code>how does a heat pump work</code>. Up to 1,000 per run. Duplicates are removed.",
            "items": {
              "type": "string"
            }
          },
          "countryCode": {
            "title": "Country",
            "type": "string",
            "description": "Google country as a two-letter code: <code>us</code>, <code>gb</code>, <code>de</code>, <code>fr</code>, <code>in</code>... AI Overviews are not shown in every country.",
            "default": "us"
          },
          "languageCode": {
            "title": "Language",
            "type": "string",
            "description": "Google interface language: <code>en</code>, <code>de</code>, <code>fr</code>, <code>es</code>, <code>pt-br</code>... Match it to the language of your queries.",
            "default": "en"
          },
          "capturesPerQuery": {
            "title": "Captures per query",
            "enum": [
              "1",
              "3",
              "5"
            ],
            "type": "string",
            "description": "How many times each query is searched. Google cites different sources almost every time: in our tests two searches a few minutes apart shared under a quarter of their cited URLs on 4 commercial queries out of 5. With 3 or 5 captures, every source, domain and brand gets a rate (0.67 = cited in 2 captures out of 3) instead of a yes or no.<br><br>Each capture is a real Google search, so the price per query grows with it. If some captures fail after retries, the query is charged at the lower level it reached.",
            "default": "3"
          },
          "trackDomains": {
            "title": "Domains to track",
            "type": "array",
            "description": "Your website and your competitors, one per line: <code>hubspot.com</code>. A full URL works too, only the domain is kept, and subdomains count (<code>blog.hubspot.com</code> counts for <code>hubspot.com</code>). Each query gets a citation rate per domain and its best organic position on the same page.",
            "items": {
              "type": "string"
            }
          },
          "trackBrands": {
            "title": "Brands to track",
            "type": "array",
            "description": "Brand or product names to look for in the AI Overview text, one per line: <code>HubSpot</code>, <code>monday.com</code>. Whole-word match, case ignored. Each query gets a mention rate per brand.",
            "items": {
              "type": "string"
            }
          },
          "compareWithPreviousRun": {
            "title": "Compare with previous run",
            "type": "boolean",
            "description": "Keep the results of this run and compare the next one with it. Each query then gets a <code>changes</code> object: domains gained (now cited in at least half the captures, never before), domains lost, and the old and new rates of your tracked domains and brands. The first run saves the baseline. Use it with a schedule for weekly monitoring.",
            "default": false
          },
          "historyKey": {
            "title": "History name",
            "type": "string",
            "description": "Name of the saved history used by <b>Compare with previous run</b>. Leave empty to share one history across your runs (queries are kept apart by country and language). Give each client or project its own name to keep them separate."
          },
          "includeAnswerText": {
            "title": "Include the answer text",
            "type": "boolean",
            "description": "Add the AI Overview text (the longest of the captures) to each result.",
            "default": true
          },
          "includeSources": {
            "title": "Include the source list",
            "type": "boolean",
            "description": "Add every cited source with its title, URL when Google shows it, snippet and citation rate. Turn it off to keep only the per-domain summary.",
            "default": true
          },
          "includeOrganicResults": {
            "title": "Include organic results",
            "type": "boolean",
            "description": "Add the organic results of the first capture (position, domain, title). The organic position of tracked domains is always computed, this only adds the full list.",
            "default": false
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Optional. A URL that receives a short JSON summary when the run ends (Slack, Discord, Make, Zapier, n8n). It is never written to the log or the results."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}