{
  "openapi": "3.0.1",
  "info": {
    "title": "AI Brand Visibility Tracker: ChatGPT, Perplexity, Gemini",
    "description": "See how often AI assistants mention, rank and cite your brand vs competitors. Asks your buyer questions to OpenAI GPT, Perplexity, Gemini, Claude and more via official APIs with live web search. Share of voice, top-3 rate, sources, sentiment and run-over-run change.",
    "version": "1.0",
    "x-build-id": "9ZgxaSheXajzRaOS7"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/lanternlane-data~ai-brand-visibility-tracker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-lanternlane-data-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/lanternlane-data~ai-brand-visibility-tracker/runs": {
      "post": {
        "operationId": "runs-sync-lanternlane-data-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/lanternlane-data~ai-brand-visibility-tracker/run-sync": {
      "post": {
        "operationId": "run-sync-lanternlane-data-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",
        "required": [
          "brand",
          "prompts"
        ],
        "properties": {
          "brand": {
            "title": "Your brand",
            "type": "string",
            "description": "The brand, company or product to track. Optional aliases and domain can be added with \" | \", e.g. \"Allbirds | All Birds | allbirds.com\"."
          },
          "prompts": {
            "title": "Prompts (questions buyers ask AI)",
            "type": "array",
            "description": "Questions a real customer might ask an AI assistant. Don't name your brand in them if you want to measure organic visibility. One check = one prompt x one model x one run.",
            "items": {
              "type": "string"
            }
          },
          "competitors": {
            "title": "Competitors",
            "type": "array",
            "description": "Competitor brands to benchmark against, same format as the brand field, e.g. \"Veja | veja-store.com\". Max 25.",
            "items": {
              "type": "string"
            }
          },
          "models": {
            "title": "AI models",
            "type": "array",
            "description": "Which AI assistants to ask. Each model is queried through its official API (via OpenRouter).",
            "items": {
              "type": "string",
              "enum": [
                "openai/gpt-5-mini",
                "openai/gpt-5.1",
                "perplexity/sonar",
                "perplexity/sonar-pro",
                "google/gemini-2.5-flash",
                "anthropic/claude-haiku-4.5",
                "x-ai/grok-4-fast",
                "deepseek/deepseek-chat-v3.1",
                "meta-llama/llama-3.3-70b-instruct"
              ],
              "enumTitles": [
                "OpenAI GPT-5 mini (ChatGPT family)",
                "OpenAI GPT-5.1 (ChatGPT family)",
                "Perplexity Sonar",
                "Perplexity Sonar Pro",
                "Google Gemini 2.5 Flash",
                "Anthropic Claude Haiku 4.5",
                "xAI Grok 4 Fast",
                "DeepSeek V3.1",
                "Meta Llama 3.3 70B"
              ]
            },
            "default": [
              "openai/gpt-5-mini",
              "perplexity/sonar",
              "google/gemini-2.5-flash",
              "anthropic/claude-haiku-4.5"
            ]
          },
          "customModels": {
            "title": "Extra model IDs (optional)",
            "type": "array",
            "description": "Any other OpenRouter model ID, e.g. \"mistralai/mistral-medium-3.1\". See openrouter.ai/models.",
            "items": {
              "type": "string"
            }
          },
          "webSearch": {
            "title": "Let models search the web",
            "type": "boolean",
            "description": "On = models answer with live web search (closest to what ChatGPT search, Gemini and Perplexity show users, and gives you cited sources). Off = answers from the model's training data only (cheaper). Perplexity always searches.",
            "default": true
          },
          "location": {
            "title": "Market / location (optional)",
            "type": "string",
            "description": "e.g. \"United Kingdom\" or \"Berlin, Germany\". Tells the model where the user is, for local recommendations."
          },
          "runsPerPrompt": {
            "title": "Runs per prompt",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "AI answers vary. Asking 2-3 times per model gives more stable mention rates.",
            "default": 1
          },
          "aiAnalysis": {
            "title": "Sentiment + unlisted-brand discovery",
            "type": "boolean",
            "description": "Adds a cheap second AI pass per answer: sentiment toward your brand, a one-line description of how it's portrayed, and other brands the answer recommends that you didn't list as competitors.",
            "default": true
          },
          "brandAliases": {
            "title": "Brand aliases (optional)",
            "type": "array",
            "description": "Other spellings or product names that count as a mention of your brand.",
            "items": {
              "type": "string"
            }
          },
          "brandDomains": {
            "title": "Brand domains (optional)",
            "type": "array",
            "description": "Your website domains, used to detect when an AI answer cites your site.",
            "items": {
              "type": "string"
            }
          },
          "searchResults": {
            "title": "Web results per search",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Max web results each model can use (where the search engine supports it).",
            "default": 5
          },
          "maxChecks": {
            "title": "Max checks per run",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Safety cap on prompt x model x run combinations.",
            "default": 200
          },
          "maxLlmCostUsd": {
            "title": "Max model spend per run (USD)",
            "minimum": 0,
            "type": "number",
            "description": "Stops asking new questions once the AI model usage for this run reaches this amount. 0 = no limit.",
            "default": 2
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many AI requests run at the same time.",
            "default": 4
          },
          "trackChanges": {
            "title": "Compare with previous run",
            "type": "boolean",
            "description": "Stores each run's summary and reports the change in mention, top-3 and citation rates versus the last run with the same brand, prompts and models. Ideal with a weekly schedule.",
            "default": true
          },
          "stateStoreName": {
            "title": "History store name",
            "type": "string",
            "description": "Named key-value store used for run-to-run comparison.",
            "default": "ai-brand-visibility-tracker"
          },
          "openRouterApiKey": {
            "title": "Your own OpenRouter API key (optional)",
            "type": "string",
            "description": "Leave empty to pay for model usage through your Apify account (no other account needed). If you add your own OpenRouter key, model usage is billed by OpenRouter instead. Stored encrypted."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}