{
  "openapi": "3.0.1",
  "info": {
    "title": "AI Search Visibility Tracker: ChatGPT, Perplexity, Claude, Grok",
    "description": "GEO and AEO tracker: see whether ChatGPT, Perplexity, Claude and Grok mention and cite your brand for the prompts your customers ask. AI share of voice vs competitors, brand rank, LLM citations, and change over time. Official APIs with your own key; demo without one.",
    "version": "0.1",
    "x-build-id": "14hcSnBOYV00LMdbg"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/stellalytics~ai-search-visibility-tracker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-stellalytics-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/stellalytics~ai-search-visibility-tracker/runs": {
      "post": {
        "operationId": "runs-sync-stellalytics-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/stellalytics~ai-search-visibility-tracker/run-sync": {
      "post": {
        "operationId": "run-sync-stellalytics-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",
        "required": [
          "brand",
          "prompts"
        ],
        "properties": {
          "brand": {
            "title": "Your brand",
            "type": "string",
            "description": "The brand name to look for in AI answers."
          },
          "brandAliases": {
            "title": "Other spellings of your brand",
            "type": "array",
            "description": "Alternative names that also count as a mention, such as a product name or domain.",
            "items": {
              "type": "string"
            }
          },
          "brandDomain": {
            "title": "Your website domain",
            "type": "string",
            "description": "Used to detect when the AI cites your site as a source, for example trello.com. Subdomains count."
          },
          "competitors": {
            "title": "Competitors",
            "type": "array",
            "description": "Competitor names to compare against. Use plain names, or objects like {\"name\": \"Asana\", \"domain\": \"asana.com\", \"aliases\": [\"Asana app\"]}."
          },
          "prompts": {
            "title": "Prompts",
            "type": "array",
            "description": "Questions your customers might ask an AI assistant. Each prompt is sent to every selected engine.",
            "items": {
              "type": "string"
            }
          },
          "engines": {
            "title": "Engines",
            "type": "array",
            "description": "Which AI engines to check. An engine is used only if you add its API key below.",
            "items": {
              "type": "string",
              "enum": [
                "openai",
                "perplexity",
                "anthropic",
                "xai"
              ],
              "enumTitles": [
                "ChatGPT (OpenAI API with web search)",
                "Perplexity (Sonar API)",
                "Claude (Anthropic API with web search)",
                "Grok (xAI API with web search)"
              ]
            },
            "default": [
              "openai",
              "perplexity",
              "anthropic",
              "xai"
            ]
          },
          "openaiApiKey": {
            "title": "OpenAI API key",
            "type": "string",
            "description": "Your own OpenAI API key. Requests are billed to your OpenAI account. Stored encrypted by Apify."
          },
          "perplexityApiKey": {
            "title": "Perplexity API key",
            "type": "string",
            "description": "Your own Perplexity API key. Requests are billed to your Perplexity account. Stored encrypted by Apify."
          },
          "anthropicApiKey": {
            "title": "Anthropic API key",
            "type": "string",
            "description": "Your own Anthropic API key for Claude. Requests are billed to your Anthropic account. Stored encrypted by Apify."
          },
          "xaiApiKey": {
            "title": "xAI API key",
            "type": "string",
            "description": "Your own xAI API key for Grok. Requests are billed to your xAI account. Stored encrypted by Apify."
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Two-letter country code to localize web search, for example US, CA or FR. Leave empty for no location."
          },
          "runsPerPrompt": {
            "title": "Runs per prompt",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "AI answers vary. Ask each prompt several times to measure how often your brand appears (1 to 10).",
            "default": 1
          },
          "openaiModel": {
            "title": "OpenAI model",
            "type": "string",
            "description": "Any OpenAI model that supports the web search tool in the Responses API.",
            "default": "gpt-4.1-mini"
          },
          "perplexityModel": {
            "title": "Perplexity model",
            "type": "string",
            "description": "Perplexity Sonar model, for example sonar or sonar-pro.",
            "default": "sonar"
          },
          "anthropicModel": {
            "title": "Claude model",
            "type": "string",
            "description": "Claude model to use with web search. The default, claude-sonnet-5-5, costs half as much per token as claude-opus-5-5; claude-haiku-5-5 costs the least. The search fee is the same for every model.",
            "default": "claude-sonnet-5-5"
          },
          "xaiModel": {
            "title": "Grok model",
            "type": "string",
            "description": "Any Grok model that supports xAI's web search tool, for example grok-4.3 or grok-4.7.",
            "default": "grok-4.3"
          },
          "includeAnswerText": {
            "title": "Include full answer text",
            "type": "boolean",
            "description": "Save the full AI answer and all sources with each result.",
            "default": true
          },
          "trackHistory": {
            "title": "Compare with previous runs",
            "type": "boolean",
            "description": "Save each run's summary and show the change since the last run with the same brand, country and engines. Best with a daily or weekly schedule.",
            "default": true
          },
          "historyName": {
            "title": "History name",
            "type": "string",
            "description": "Optional name for the history, to keep separate trackers for the same brand (for example different prompt sets)."
          },
          "maxConcurrency": {
            "title": "Max parallel requests",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Lower this if your API account has low rate limits.",
            "default": 3
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}