{
  "openapi": "3.0.1",
  "info": {
    "title": "AI Search Visibility Tracker - AI Brand Visibility ChatGPT LLMs",
    "description": "Scan how Google AI Overviews, ChatGPT, Perplexity, Gemini and Copilot mention your brand vs competitors. Input: brand + 3-15 buyer queries. One $0.30 query = ~20 real AI checks, ground-truth validated. Output: visibility score, share of voice, citations and gaps per engine. MCP tool for AI agents.",
    "version": "0.0",
    "x-build-id": "OvC6VAL0zvka9L9EM"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/doesaiknow~ai-brand-visibility-tracker-chatgpt-perplexity-gemini/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-doesaiknow-ai-brand-visibility-tracker-chatgpt-perplexity-gemini",
        "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/doesaiknow~ai-brand-visibility-tracker-chatgpt-perplexity-gemini/runs": {
      "post": {
        "operationId": "runs-sync-doesaiknow-ai-brand-visibility-tracker-chatgpt-perplexity-gemini",
        "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/doesaiknow~ai-brand-visibility-tracker-chatgpt-perplexity-gemini/run-sync": {
      "post": {
        "operationId": "run-sync-doesaiknow-ai-brand-visibility-tracker-chatgpt-perplexity-gemini",
        "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"
        ],
        "properties": {
          "brand": {
            "title": "Brand",
            "maxLength": 100,
            "type": "string",
            "description": "The brand you want to analyze. Unicode letters supported (e.g. 'Żabka', 'Müller', 'L'Oréal')."
          },
          "brandUrl": {
            "title": "Brand website (optional)",
            "maxLength": 2048,
            "type": "string",
            "description": "Your brand's website — full URL or bare domain ('https://mercury.com' or 'mercury.com'). Set it when other companies share your brand name: answers about a same-name different company stop counting as your visibility, and citations of this domain (and subdomains) are attributed to your brand. Leave empty if your brand name is unambiguous."
          },
          "queries": {
            "title": "Queries (what people ask AI engines)",
            "minItems": 3,
            "maxItems": 15,
            "type": "array",
            "description": "3-15 buyer questions that a customer would ask an AI assistant about your product category, written in the language your customers use (e.g. 'best CRM for small business', 'HubSpot vs Salesforce'). Max 200 characters each. REQUIRED for paid tiers (pro_auditor, quick_tester, agency_scale). If you provide fewer than 3 the input is rejected before the run starts; if you omit the field entirely, a paid run fails at submit with a clear error. Each query is expanded into ~4 semantic variants and run across every selected AI engine. Total cost = number of queries × $0.30. For tier=demo (cached sample, no real scan, no charge) either omit the field or keep the prefill (it is not used).",
            "items": {
              "type": "string"
            }
          },
          "language": {
            "title": "Language / country",
            "enum": [
              "us",
              "gb",
              "ca",
              "au",
              "de",
              "fr",
              "es",
              "it",
              "pl",
              "nl",
              "se",
              "no",
              "dk",
              "fi",
              "br",
              "pt",
              "jp",
              "in",
              "mx",
              "ie",
              "at",
              "ch",
              "be",
              "cz",
              "ro",
              "ae",
              "ar",
              "bg",
              "cl",
              "co",
              "ee",
              "eg",
              "gr",
              "hr",
              "hu",
              "id",
              "il",
              "kr",
              "lt",
              "lv",
              "my",
              "ng",
              "nz",
              "pe",
              "ph",
              "pk",
              "sa",
              "sg",
              "sk",
              "th",
              "tr",
              "ua",
              "vn",
              "za"
            ],
            "type": "string",
            "description": "ISO-3166 country code (lowercase, 2 chars). Drives geo + locale routing. 'us'=English/United States (default), 'pl'=Polish/Poland, 'de'=German/Germany, 'fr'=French/France, 'es'=Spanish/Spain, 'it'=Italian/Italy, 'gb'=English/United Kingdom, 'br'=Portuguese/Brazil, 'jp'=Japanese/Japan, etc. (53 countries supported). Unknown codes silently fall back to US/English.",
            "default": "us"
          },
          "competitors": {
            "title": "Competitors (optional)",
            "maxItems": 5,
            "type": "array",
            "description": "Up to 5 tracked competitors. Leave empty to let the system pick from AI engine responses.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "category": {
            "title": "Category (optional)",
            "maxLength": 100,
            "type": "string",
            "description": "Optional product / market category (e.g. 'CRM software', 'opony do samochodu', 'projekty domów'). Backend treats it as 'general' if omitted — paid scans use your queries verbatim and don't strictly need it. Unicode letters supported."
          },
          "platforms": {
            "title": "AI engines",
            "type": "array",
            "description": "Which AI engines to query. Default 5 covers the highest-traffic engines; full set (7) adds Grok and Google AI Mode.",
            "items": {
              "type": "string",
              "enum": [
                "chatgpt",
                "perplexity",
                "gemini",
                "copilot",
                "grok",
                "ai_overview",
                "ai_mode"
              ]
            },
            "default": [
              "chatgpt",
              "perplexity",
              "gemini",
              "copilot",
              "ai_overview"
            ]
          },
          "includePerception": {
            "title": "Brand Perception report (+1 paid event)",
            "type": "boolean",
            "description": "Adds HOW AI describes your brand — attributes (e.g. 'affordable', 'unreliable'), sentiment and recommended-vs-warned-against stance per engine, for your brand AND each tracked competitor — computed from the same AI answers this scan collects (no extra engine calls). Every attribute is validated against the actual answer text, so nothing is invented. Billed as ONE `perception` event per run ($0.09–0.15 by Apify plan) on top of per-query pricing; not charged if the report can't be produced. Ignored on tier=demo.",
            "default": false
          },
          "tier": {
            "title": "Tier",
            "enum": [
              "demo",
              "quick_tester",
              "pro_auditor",
              "agency_scale"
            ],
            "type": "string",
            "description": "pro_auditor (default) = real scan, 3-15 queries, $0.30/query, query fan-out enabled. quick_tester = 3-5 queries ($0.30/query). agency_scale = bulk ($0.30/query). demo = free cached sample, available only for the showcase brands HubSpot, Salesforce, Ahrefs, Semrush, Moz and Notion; for any other brand it returns the HubSpot sample with a notice, never real data for your brand. For demo, either omit queries or keep the prefill (it is not used). To scan your own brand, use pro_auditor (default) with at least 3 queries at $0.30/query.",
            "default": "pro_auditor"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}