{
  "openapi": "3.0.1",
  "info": {
    "title": "AI Search Visibility Tracker — ChatGPT, Gemini & More",
    "description": "Check if ChatGPT, Gemini, Claude & Perplexity mention your brand: position, sentiment, cited sources, competitors & share of voice. No API keys.",
    "version": "1.0",
    "x-build-id": "7giREs8eTeUSnZopt"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/cheapapi~ai-search-visibility-tracker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-cheapapi-ai-search-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/cheapapi~ai-search-visibility-tracker/runs": {
      "post": {
        "operationId": "runs-sync-cheapapi-ai-search-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/cheapapi~ai-search-visibility-tracker/run-sync": {
      "post": {
        "operationId": "run-sync-cheapapi-ai-search-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": {
          "brandName": {
            "title": "Brand name",
            "type": "string",
            "description": "Required for the brand visibility check (the default mode): the brand you want to track, exactly as people write it (e.g. \"HubSpot\"). Matching is case-insensitive and ignores legal suffixes like \"Inc\". The mentions lookup uses it when no targets are given; AI keyword volume does not need it."
          },
          "brandDomain": {
            "title": "Website domain",
            "type": "string",
            "description": "Your website (e.g. \"hubspot.com\"). Used to detect when AI answers cite your site as a source."
          },
          "competitors": {
            "title": "Competitors (optional)",
            "type": "array",
            "description": "Competitor brands to compare against for share of voice. Write a name (\"Salesforce\"), a domain (\"salesforce.com\") or both (\"Salesforce | salesforce.com\"). Up to 20.",
            "items": {
              "type": "string"
            }
          },
          "prompts": {
            "title": "Prompts (questions people ask AI)",
            "type": "array",
            "description": "Questions your customers ask AI assistants, max 500 characters each. Every prompt is sent to every selected AI engine. Leave empty and fill \"Topic\" below to have 5–10 natural questions generated for you.",
            "items": {
              "type": "string"
            }
          },
          "mode": {
            "title": "What to run",
            "enum": [
              "visibility",
              "mentions",
              "keywordVolume"
            ],
            "type": "string",
            "description": "Brand visibility check asks the AI engines live. Mentions database lookup searches a large index of real ChatGPT and Google AI Overview answers already collected. AI keyword volume returns AI search demand for your keywords.",
            "default": "visibility"
          },
          "topic": {
            "title": "Topic (generate prompts for me)",
            "type": "string",
            "description": "Used only when \"Prompts\" is empty. Write what you sell as a short noun phrase, e.g. \"CRM software\", \"running shoes\", \"dentist in Austin\". We turn it into natural buyer questions (\"What is the best CRM software?\", \"Is HubSpot a good choice for CRM software?\", …) using templates — no extra charge."
          },
          "promptCount": {
            "title": "Number of generated prompts",
            "minimum": 5,
            "maximum": 10,
            "type": "integer",
            "description": "How many questions to generate from the topic (5–10). With 8 or more, questions that name your brand are added after the neutral ones.",
            "default": 8
          },
          "brandAliases": {
            "title": "Other names of your brand",
            "type": "array",
            "description": "Extra spellings or product names that count as a mention of your brand (e.g. \"HubSpot CRM\", \"Hubspot Sales Hub\").",
            "items": {
              "type": "string"
            }
          },
          "engines": {
            "title": "AI engines",
            "type": "array",
            "description": "Which AI assistants to ask. Default: ChatGPT, Gemini and Perplexity. Every prompt is asked once per engine.",
            "items": {
              "type": "string",
              "enum": [
                "chatgpt",
                "gemini",
                "claude",
                "perplexity"
              ],
              "enumTitles": [
                "ChatGPT",
                "Gemini",
                "Claude",
                "Perplexity"
              ]
            },
            "default": [
              "chatgpt",
              "gemini",
              "perplexity"
            ]
          },
          "chatgptModel": {
            "title": "ChatGPT model",
            "enum": [
              "gpt-4.1-mini",
              "gpt-4o-mini",
              "gpt-5-mini",
              "gpt-5-nano",
              "gpt-4.1",
              "gpt-4o",
              "gpt-5",
              "gpt-5.1",
              "gpt-5.2",
              "o4-mini"
            ],
            "type": "string",
            "description": "Model used when ChatGPT is selected.",
            "default": "gpt-4.1-mini"
          },
          "geminiModel": {
            "title": "Gemini model",
            "enum": [
              "gemini-2.5-flash",
              "gemini-2.5-flash-lite",
              "gemini-3-flash-preview",
              "gemini-2.5-pro",
              "gemini-3.1-pro-preview"
            ],
            "type": "string",
            "description": "Model used when Gemini is selected.",
            "default": "gemini-2.5-flash"
          },
          "claudeModel": {
            "title": "Claude model",
            "enum": [
              "claude-haiku-4-5",
              "claude-sonnet-4-5",
              "claude-sonnet-4-6",
              "claude-opus-4-5",
              "claude-opus-4-6"
            ],
            "type": "string",
            "description": "Model used when Claude is selected.",
            "default": "claude-haiku-4-5"
          },
          "perplexityModel": {
            "title": "Perplexity model",
            "enum": [
              "sonar",
              "sonar-pro",
              "sonar-reasoning-pro"
            ],
            "type": "string",
            "description": "Model used when Perplexity is selected. Perplexity always searches the web and cites sources.",
            "default": "sonar"
          },
          "webSearch": {
            "title": "Live web search for ChatGPT, Gemini & Claude",
            "type": "boolean",
            "description": "Off: the AI answers from its own knowledge (how it \"remembers\" your brand). On: the AI may browse the web first and cite sources, like ChatGPT Search. Costs an extra web-search event per answer. Perplexity always searches.",
            "default": false
          },
          "forceWebSearch": {
            "title": "Always search the web",
            "type": "boolean",
            "description": "With live web search on, make the AI search every time instead of deciding by itself.",
            "default": false
          },
          "webSearchCountry": {
            "title": "Search from country",
            "type": "string",
            "description": "Country the web search should act from, as a two-letter code or English name, for example US, GB, DE, FR, TR or \"Germany\". Applies to live web search (ChatGPT, Claude) and Perplexity; Gemini ignores it. Leave empty to search without a location."
          },
          "webSearchCity": {
            "title": "Search from city",
            "type": "string",
            "description": "Optional city for local results, for example \"Austin\", \"London\" or \"Berlin\". Applies to live web search on ChatGPT and Claude; Perplexity and Gemini ignore it."
          },
          "maxAnswerTokens": {
            "title": "Max answer length (tokens)",
            "minimum": 256,
            "maximum": 4096,
            "type": "integer",
            "description": "Upper limit for the length of each AI answer (1,024 tokens ≈ 750 words, enough for a full recommendation list). Each started block of 1,024 tokens counts as one answer event, so 2,048 = 2 events per answer. Reasoning models always use at least 1,024. An answer that comes back empty because a reasoning model spent the whole limit on thinking is still charged (the AI provider bills it), so do not set this too low.",
            "default": 1024
          },
          "temperature": {
            "title": "Temperature",
            "minimum": 0,
            "maximum": 2,
            "type": "number",
            "description": "Optional, 0–2 (e.g. 0.3). Lower = more predictable answers, higher = more varied. Leave empty for the engine default (recommended, closest to what real users see). Ignored by reasoning models (GPT-5.x, o4-mini, Sonar Reasoning Pro)."
          },
          "topP": {
            "title": "Top-p",
            "minimum": 0,
            "maximum": 1,
            "type": "number",
            "description": "Optional, 0–1 (e.g. 0.9). Alternative way to control answer variety. Leave empty for the engine default. Ignored by reasoning models."
          },
          "systemMessage": {
            "title": "System message",
            "type": "string",
            "description": "Optional instruction that sets the AI's role (max 500 characters), e.g. \"You are a helpful assistant for a small business owner in Germany.\" Leave empty to get answers like a normal user would. Using a system message or conversation history counts as one more answer event per answer (the AI provider bills the extra text)."
          },
          "conversationHistory": {
            "title": "Conversation history",
            "type": "array",
            "description": "Optional earlier messages to simulate a follow-up question, max 10. Format: [{\"role\": \"user\", \"message\": \"I run a 5-person agency.\"}, {\"role\": \"assistant\", \"message\": \"Great, how can I help?\"}]. Each message max 500 characters. Adds one answer event per answer (shared with the system message)."
          },
          "includeFullAnswer": {
            "title": "Include full answer text",
            "type": "boolean",
            "description": "Save the complete AI answer in each row. Turn off for smaller datasets (the mention excerpt is always included).",
            "default": true
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many answers are requested at the same time.",
            "default": 6
          },
          "mentionsTargets": {
            "title": "Targets to look up",
            "type": "array",
            "description": "Domains (\"hubspot.com\") or brand/keyword names (\"HubSpot\"). Leave empty to use your website domain (or brand name) from the top of the form. Each target costs one mentions-lookup event ($0.13), also when no stored answer mentions it.",
            "items": {
              "type": "string"
            }
          },
          "mentionsIncludeCompetitors": {
            "title": "Also look up competitors",
            "type": "boolean",
            "description": "Run a separate lookup for every competitor listed above (one mentions-lookup event each, also when nothing is found).",
            "default": false
          },
          "mentionsPlatform": {
            "title": "AI platform",
            "enum": [
              "all",
              "chatgpt",
              "googleAiOverview"
            ],
            "type": "string",
            "description": "Which AI platform's stored answers to search.",
            "default": "all"
          },
          "mentionsDomainScope": {
            "title": "Where a domain must appear",
            "type": "array",
            "description": "For domain targets only.",
            "items": {
              "type": "string",
              "enum": [
                "any",
                "citedSources",
                "searchResults"
              ],
              "enumTitles": [
                "Anywhere",
                "In cited sources",
                "In the web results the AI looked at"
              ]
            },
            "default": [
              "any"
            ]
          },
          "mentionsKeywordScope": {
            "title": "Where a name/keyword must appear",
            "type": "array",
            "description": "For name/keyword targets only.",
            "items": {
              "type": "string",
              "enum": [
                "any",
                "question",
                "answer",
                "brandsInAnswer",
                "followUpSearches"
              ],
              "enumTitles": [
                "Anywhere",
                "In the question",
                "In the answer",
                "In brands named in the answer",
                "In the AI's follow-up searches"
              ]
            },
            "default": [
              "any"
            ]
          },
          "mentionsMatchType": {
            "title": "Keyword matching",
            "enum": [
              "word",
              "partial"
            ],
            "type": "string",
            "description": "For name/keyword targets: match whole words only, or also inside longer words.",
            "default": "word"
          },
          "mentionsIncludeSubdomains": {
            "title": "Include subdomains",
            "type": "boolean",
            "description": "For domain targets: also count blog.example.com etc.",
            "default": true
          },
          "mentionsMinAiSearchVolume": {
            "title": "Minimum AI search volume",
            "minimum": 0,
            "type": "integer",
            "description": "Only return questions asked at least this often per month (estimated)."
          },
          "mentionsOnlyWebSearchBased": {
            "title": "Only answers based on web search",
            "type": "boolean",
            "description": "Only return answers where the AI searched the web.",
            "default": false
          },
          "mentionsSeenSince": {
            "title": "Only answers seen since",
            "type": "string",
            "description": "Only return answers that were last seen on or after this date (YYYY-MM-DD)."
          },
          "mentionsSort": {
            "title": "Sort by",
            "enum": [
              "volumeDesc",
              "volumeAsc",
              "newest",
              "oldest"
            ],
            "type": "string",
            "description": "Order of the returned answers.",
            "default": "volumeDesc"
          },
          "mentionsMaxResults": {
            "title": "Max answers per target",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "How many stored AI answers to return per target.",
            "default": 100
          },
          "mentionsFilters": {
            "title": "Extra filters (experts)",
            "type": "array",
            "description": "Optional raw filter conditions (experts), e.g. [[\"model_name\", \"like\", \"%gpt-5%\"]] or [[\"ai_search_volume\", \">\", 1000], \"and\", [\"platform\", \"=\", \"chat_gpt\"]]. Filterable fields: ai_search_volume, is_web_search_based, platform, model_name, first_response_at, last_response_at. Up to 8 conditions; operators =, <>, <, >, <=, >=, in, like."
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Used when \"What to run\" = AI keyword volume. Up to 10,000 keywords; returns estimated monthly AI search volume and a 12-month trend for each. Each request of up to 1,000 keywords costs one keyword-batch event, also when none of them has data.",
            "items": {
              "type": "string"
            }
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Country for the mentions lookup and AI keyword volume, as a two-letter code or English name, for example US, GB, DE, FR or TR. Stored ChatGPT answers exist for US only; Google AI Overview answers cover many countries.",
            "default": "US"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Language for the mentions lookup and AI keyword volume, as an ISO code, for example en, de, fr or tr.",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}