{
  "openapi": "3.0.1",
  "info": {
    "title": "AI Brand Visibility Tracker - ChatGPT & Google AI Overviews",
    "description": "Track how ChatGPT and Google AI Overviews mention your brand. Real answers read from a real browser, not an LLM API: mention, position, share of voice vs competitors, sentiment, cited sources with real URLs and a brand report. Pay only for answers.",
    "version": "0.1",
    "x-build-id": "RG6xOdrHqdN6DDBMq"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/oswaldocarabano~ai-brand-visibility-tracker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-oswaldocarabano-ai-brand-visibility-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/oswaldocarabano~ai-brand-visibility-tracker/runs": {
      "post": {
        "operationId": "runs-sync-oswaldocarabano-ai-brand-visibility-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/oswaldocarabano~ai-brand-visibility-tracker/run-sync": {
      "post": {
        "operationId": "run-sync-oswaldocarabano-ai-brand-visibility-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",
        "properties": {
          "brand": {
            "title": "Your brand",
            "type": "string",
            "description": "The brand to track, as people write it (e.g. \"HubSpot\"). Matched as a whole word, case-insensitive.",
            "default": "HubSpot"
          },
          "prompts": {
            "title": "Prompts",
            "type": "array",
            "description": "Questions or searches your customers type, one per line (up to 200). Each prompt is checked on every selected engine and country.",
            "default": [
              "best crm for small business"
            ],
            "items": {
              "type": "string"
            }
          },
          "competitors": {
            "title": "Competitors",
            "type": "array",
            "description": "Competitor brands, one per line (up to 30). Optional aliases after a vertical bar: \"Salesforce | Sales Cloud, SFDC\". Used for share of voice and competitor mentions.",
            "default": [
              "Salesforce",
              "Zoho",
              "Pipedrive"
            ],
            "items": {
              "type": "string"
            }
          },
          "engines": {
            "title": "AI engines (ChatGPT is beta)",
            "type": "array",
            "description": "Google AI Overview (default): the AI summary on the Google results page, with its cited sources resolved to real URLs; fast and reliable. ChatGPT (beta): the public ChatGPT answer without login, with its web search, cited links and recognized brands. From Apify's servers ChatGPT currently accepts only some browser sessions: on 14 Oct 2026, 158 of 488 attempts were accepted (32%) in 50 test runs, so a ChatGPT check can take several minutes and runs limited to 5 minutes got a ChatGPT answer in 8 of 10. A check without an answer is never charged.",
            "items": {
              "type": "string",
              "enum": [
                "chatgpt",
                "google-aio"
              ],
              "enumTitles": [
                "ChatGPT (beta)",
                "Google AI Overview"
              ]
            },
            "default": [
              "google-aio"
            ]
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Countries to check. Sets Google's country and language and the browser locale and time zone. ChatGPT answers follow the language of the prompt.",
            "items": {
              "type": "string",
              "enum": [
                "us",
                "gb",
                "mx",
                "es",
                "de"
              ],
              "enumTitles": [
                "United States",
                "United Kingdom",
                "Mexico",
                "Spain",
                "Germany"
              ]
            },
            "default": [
              "us"
            ]
          },
          "language": {
            "title": "Language",
            "enum": [
              "auto",
              "en",
              "es",
              "de"
            ],
            "type": "string",
            "description": "Interface language. \"auto\" uses the main language of each country (en for US/UK, es for Mexico/Spain, de for Germany).",
            "default": "auto"
          },
          "brandAliases": {
            "title": "Brand aliases",
            "type": "array",
            "description": "Other names of your brand that count as a mention (e.g. product names), one per line.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "brandDomains": {
            "title": "Brand websites",
            "type": "array",
            "description": "Your own domains (e.g. \"hubspot.com\"), one per line. A cited source on these domains counts as your brand cited as a source. If empty, domains that match the brand name are used.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "runsPerPrompt": {
            "title": "Repetitions per prompt",
            "minimum": 1,
            "maximum": 3,
            "type": "integer",
            "description": "Ask each prompt this many times (1-3). AI answers vary: in our tests the same ChatGPT prompt gave the same brand-mention verdict 93% of the time but different cited domains, so 2-3 repetitions give steadier citation data. Each repetition is a separate charged check.",
            "default": 1
          },
          "includeReport": {
            "title": "Brand report",
            "type": "boolean",
            "description": "Build a brand report for the run (mention rate, average position, share of voice per engine, most cited domains, prompts where you are missing, and changes since your previous run). Saved as BRAND_REPORT in the run's key-value store; charged once per run when at least one answer was read.",
            "default": true
          },
          "maxChecks": {
            "title": "Maximum checks",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Upper limit of checks (prompt × engine × country × repetition) in this run. Protects your budget when you paste long prompt lists.",
            "default": 100
          },
          "maxConcurrency": {
            "title": "Parallel browsers",
            "minimum": 1,
            "maximum": 4,
            "type": "integer",
            "description": "How many real browsers run at the same time. 2 fits the default 2 GB of memory (measured peak about 1.1 GB in 50 test runs, 14 Oct 2026); use 3-4 only with 4 GB. More browsers finish long lists sooner at the same price per check.",
            "default": 2
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}