{
  "openapi": "3.0.1",
  "info": {
    "title": "AI Brand Visibility Tracker — AI Overview & Perplexity",
    "description": "Track whether ChatGPT, Google AI Overview, Perplexity, Gemini and Copilot mention your brand when buyers ask for a recommendation. Repeat checks give a real mention rate with a margin of error, plus who gets named instead, what changed since last week, and what each gap is worth.",
    "version": "0.0",
    "x-build-id": "gehWJ75ln3MrfjCds"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/aitorsm~ai-visibility-tracker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-aitorsm-ai-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/aitorsm~ai-visibility-tracker/runs": {
      "post": {
        "operationId": "runs-sync-aitorsm-ai-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/aitorsm~ai-visibility-tracker/run-sync": {
      "post": {
        "operationId": "run-sync-aitorsm-ai-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": {
          "demoMode": {
            "title": "See a free sample first",
            "type": "boolean",
            "description": "Returns a ready-made example straight away so you can see exactly what you get. Nothing is checked and nothing is charged. Switch this off to measure your own brand.",
            "default": false
          },
          "brand": {
            "title": "Your brand",
            "type": "string",
            "description": "The name you want to look for. It is matched against the brands each AI answer actually recommends — so if the answer says 'try Notion or Coda', both are recorded."
          },
          "brandDomain": {
            "title": "Your website (optional)",
            "type": "string",
            "description": "Adding this also tells you whether your own pages are being used as a source for the answer, not just whether your name is mentioned. Being cited is what sends you traffic."
          },
          "queries": {
            "title": "Questions to track",
            "type": "array",
            "description": "The questions your buyers ask an AI assistant when they are looking for what you sell. Write them the way a real person would type them. One per line. Not sure what they ask? Leave this empty and fill in the topic below instead.",
            "items": {
              "type": "string"
            }
          },
          "seedTopic": {
            "title": "…or just give a topic and we'll find the questions",
            "type": "string",
            "description": "Enter one topic and we look up what people genuinely search around it, then keep the questions with real buying intent. Saves you guessing. Anything you typed above is always kept as well."
          },
          "maxDiscoveredPrompts": {
            "title": "How many questions to find",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "Only used with a topic above. Every question is checked on every platform you select, so a bigger number means a longer, costlier run.",
            "default": 8
          },
          "samples": {
            "title": "Checks per question",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "AI assistants do not return the same answer twice, so one check is an anecdote. Repeat checks give a mention rate with a margin of error, letting you separate a real drop from normal variance. Five are included in the price — the minimum for a rate worth acting on. Beyond five, each additional check is billed.",
            "default": 5
          },
          "surfaces": {
            "title": "AI assistants to check",
            "type": "array",
            "description": "Google AI Overview and Perplexity return the most consistent answers and are on by default. ChatGPT and Copilot report brand mentions reliably, but the sources they cite change between identical queries — every row grades which of its own numbers to trust.",
            "items": {
              "type": "string",
              "enum": [
                "aiOverview",
                "perplexity",
                "chatGpt",
                "gemini",
                "copilot",
                "aiMode"
              ],
              "enumTitles": [
                "Google AI Overview",
                "Perplexity",
                "ChatGPT",
                "Google Gemini",
                "Microsoft Copilot",
                "Google AI Mode"
              ]
            },
            "default": [
              "aiOverview",
              "perplexity"
            ]
          },
          "weightByDemand": {
            "title": "Show me what each gap is worth",
            "type": "boolean",
            "description": "Adds how many people search for each topic every month and what advertisers pay per click, then estimates what the questions you are missing from are costing you. Turns a list of gaps into a case you can take to a budget meeting.",
            "default": false
          },
          "assumedCtrPercent": {
            "title": "How many searchers act on what they see (%)",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Only affects the estimated value above. 20 assumes one in five people act on seeing a brand. Lower it if you want a more cautious figure. The plain count of missed searches is always reported separately and assumes nothing.",
            "default": 20
          },
          "report": {
            "title": "Generate the summary report",
            "type": "boolean",
            "description": "Adds a run-level summary plus a shareable HTML report: overall mention rate weighted by search demand, share of voice, the questions you are absent from ranked by value, what the gap is worth monthly, and which assistants' citations are reliable.",
            "default": true
          },
          "trackChanges": {
            "title": "Compare against my last check",
            "type": "boolean",
            "description": "Reports what moved since you last ran this: mentions up or down, competitors that have just appeared, sources you gained or lost. Your history is kept on your own account and never leaves it. Schedule this weekly and you get a trend line.",
            "default": true
          },
          "competitors": {
            "title": "Competitors to watch (optional)",
            "type": "array",
            "description": "Leave empty and rivals are picked up automatically from whatever the answers actually recommend — which regularly turns up names you were not expecting.",
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Two-letter country code — answers differ by market (us, gb, es, de…).",
            "default": "us"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Two-letter language code. AI answers are richest in English, so 'en' is recommended unless you specifically need another market.",
            "default": "en"
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}