{
  "openapi": "3.0.1",
  "info": {
    "title": "AI Search Visibility Tracker — ChatGPT, Perplexity, Gemini",
    "description": "See which sources Google AI Overview, ChatGPT, Perplexity and Gemini cite in your category, and where competitors appear and you do not. The default engine needs no API key and has no daily cap (English). Other languages run on your own Gemini key. Stability scoring, week-over-week diff.",
    "version": "0.2",
    "x-build-id": "bRCZ5GFYsMdzRVYy2"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/highbrow_fame~ai-search-visibility-tracker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-highbrow_fame-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/highbrow_fame~ai-search-visibility-tracker/runs": {
      "post": {
        "operationId": "runs-sync-highbrow_fame-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/highbrow_fame~ai-search-visibility-tracker/run-sync": {
      "post": {
        "operationId": "run-sync-highbrow_fame-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": [
          "queries",
          "brandDomains",
          "engines"
        ],
        "properties": {
          "queries": {
            "title": "Queries to track",
            "minItems": 1,
            "maxItems": 200,
            "type": "array",
            "description": "List of search queries / prompts you want to monitor. Examples: 'best CRM for small business', 'top dental clinics in Budapest', 'fastest electric SUV 2026'. Each query is run on every selected engine.",
            "items": {
              "type": "string"
            }
          },
          "brandDomains": {
            "title": "Your brand domain(s)",
            "minItems": 1,
            "type": "array",
            "description": "Domains you own and want to track. The actor reports whether each engine cites these domains for each query. Use bare hostnames, e.g. 'example.com' (no https://, no www.).",
            "items": {
              "type": "string"
            }
          },
          "competitorDomains": {
            "title": "Competitor domain(s)",
            "type": "array",
            "description": "Optional. Domains of your competitors. The actor reports head-to-head citation share for each query.",
            "items": {
              "type": "string"
            }
          },
          "engines": {
            "title": "Engines to query",
            "uniqueItems": true,
            "type": "array",
            "description": "Which AI engines to query. The default, Google AI Overview, needs no API key at all — start at $0 with nothing to set up (English queries only). The others require your own API key (BYOK).",
            "items": {
              "type": "string",
              "enum": [
                "google-aio",
                "gemini",
                "openai",
                "perplexity",
                "anthropic"
              ],
              "enumTitles": [
                "Google AI Overview (no API key needed)",
                "Google Gemini (free tier available)",
                "OpenAI / ChatGPT (BYOK)",
                "Perplexity Sonar (BYOK)",
                "Anthropic Claude (BYOK)"
              ]
            },
            "default": [
              "google-aio"
            ]
          },
          "geminiApiKey": {
            "title": "Gemini API key (free tier OK)",
            "type": "string",
            "description": "Optional — English runs need no key at all. Get a free key at https://aistudio.google.com/apikey. Google's free tier is 20 requests/day per model (measured 2026-08-02), so it suits a handful of prompts rather than a portfolio. Used for the Gemini engine and as the default citation parser."
          },
          "openaiApiKey": {
            "title": "OpenAI API key",
            "type": "string",
            "description": "Optional. Get one at https://platform.openai.com/api-keys. Used for ChatGPT engine via the gpt-4o-mini-search-preview model. ~$0.025 per query."
          },
          "perplexityApiKey": {
            "title": "Perplexity API key",
            "type": "string",
            "description": "Optional. Get one at https://www.perplexity.ai/settings/api. Used for Perplexity engine via the 'sonar' model. ~$0.005-0.015 per query."
          },
          "anthropicApiKey": {
            "title": "Anthropic API key",
            "type": "string",
            "description": "Optional. Get one at https://console.anthropic.com/. Used for Claude engine with the web_search tool. ~$0.01 per search + tokens."
          },
          "geminiModel": {
            "title": "Gemini model override",
            "type": "string",
            "description": "Optional. Default: gemini-2.5-flash (free tier). Try gemini-2.5-flash-lite for higher daily quota, or gemini-2.5-pro / gemini-3-flash-preview if you have billing enabled."
          },
          "openaiModel": {
            "title": "OpenAI model override",
            "type": "string",
            "description": "Optional. Default: gpt-4o-mini-search-preview."
          },
          "perplexityModel": {
            "title": "Perplexity model override",
            "type": "string",
            "description": "Optional. Default: sonar. Try sonar-pro for richer citations."
          },
          "anthropicModel": {
            "title": "Anthropic model override",
            "type": "string",
            "description": "Optional. Default: claude-haiku-4-5-20251001."
          },
          "language": {
            "title": "Query language",
            "enum": [
              "en",
              "de",
              "fr",
              "es",
              "it",
              "pt",
              "nl",
              "hu",
              "pl",
              "cs",
              "sk",
              "ro",
              "bg",
              "hr",
              "tr",
              "ja",
              "ko",
              "zh",
              "ru",
              "uk",
              "sv",
              "no",
              "da",
              "fi"
            ],
            "type": "string",
            "description": "Language hint for the engines. Influences the language of answers and which sources get cited. Multilingual coverage is our differentiator vs Otterly/Profound/Semrush which are mostly US-English-only.",
            "default": "en"
          },
          "samplesPerQuery": {
            "title": "Samples per query (stability score)",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many times each query is run on each engine. AI answers are non-deterministic — running 3 samples gives a stability score showing how consistently a source is cited. 1 = single shot (cheapest), 3 = recommended, 5 = high-confidence.",
            "default": 1
          },
          "previousRunDatasetId": {
            "title": "Delta mode — diff vs a previous run",
            "type": "string",
            "description": "Optional. Provide a dataset ID from a previous run. The actor will compute citation gains/losses week-over-week and surface the diff. Perfect for daily/weekly scheduled tracking."
          },
          "maxConcurrency": {
            "title": "Max concurrent requests",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many engine requests to run in parallel. Lower if you hit rate limits on the free Gemini tier (10 req/min on Gemini 2.5 Flash free).",
            "default": 4
          },
          "serpCountry": {
            "title": "SERP country (Google AI Overview only)",
            "type": "string",
            "description": "Two-letter country code Google should answer as, e.g. us, de, hu. Only affects the Google AI Overview engine. AI Overviews differ by country as much as by language, so set this to the market you actually sell in.",
            "default": "us"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}