{
  "openapi": "3.0.1",
  "info": {
    "title": "AI Visibility Monitor — ChatGPT, Gemini, Perplexity, DeepSeek",
    "description": "Track how often your brand appears in AI answers from ChatGPT, Gemini, Perplexity and DeepSeek. Measure visibility score, prominence, Share of Voice vs competitors, and cited sources. Built for GEO and AI search optimization.",
    "version": "0.0",
    "x-build-id": "ypzBB3etymVGBUDbx"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/elder_contrabasson~ai-visibility-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-elder_contrabasson-ai-visibility-monitor",
        "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/elder_contrabasson~ai-visibility-monitor/runs": {
      "post": {
        "operationId": "runs-sync-elder_contrabasson-ai-visibility-monitor",
        "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/elder_contrabasson~ai-visibility-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-elder_contrabasson-ai-visibility-monitor",
        "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": [
          "brandName"
        ],
        "properties": {
          "brandName": {
            "title": "Brand name",
            "type": "string",
            "description": "Your brand, product or company name to track (e.g. Notion, HubSpot). This is the primary name searched for in AI answers."
          },
          "brandAliases": {
            "title": "Brand aliases (optional)",
            "type": "array",
            "description": "Other names the brand is known by - abbreviations, alternate spellings, the domain. The actor counts a mention if ANY alias appears.",
            "items": {
              "type": "string"
            }
          },
          "competitors": {
            "title": "Competitors (optional)",
            "type": "array",
            "description": "Competitor brand names to track alongside yours. The actor reports how often each competitor appears in the same answers - your Share of Voice.",
            "items": {
              "type": "string"
            }
          },
          "category": {
            "title": "Product category",
            "type": "string",
            "description": "Your product category, used to auto-generate realistic search prompts (e.g. note-taking app, CRM software). Ignored if you supply your own customPrompts."
          },
          "promptSource": {
            "title": "Prompt source",
            "enum": [
              "default",
              "custom"
            ],
            "type": "string",
            "description": "How to choose the questions asked to AI platforms. \"default\" uses auto-generated prompts based on category (controlled by maxPrompts). \"custom\" uses only the prompts you provide in customPrompts.",
            "default": "default"
          },
          "country": {
            "title": "Country (optional)",
            "type": "string",
            "description": "ISO 3166-1 alpha-2 country code (US, DE, FR, JP, RU, BR, ...). When set, default prompts include \"in <Country>\" and the effective language defaults to the country default unless overridden. Ignored when promptSource is \"custom\". Examples: US, DE, JP, BR."
          },
          "language": {
            "title": "Language (optional)",
            "type": "string",
            "description": "ISO 639-1 language code for default prompts (en, de, fr, es, it, ru, pt, ja are built in; pl, tr, sv, no, da, fi, zh, ko, id, vi, th, he, ar, uk, cs, el, hu, ro, nl translate on the fly via LLM with caching). Leave empty to auto-pick from country. Ignored when promptSource is \"custom\". Examples: en, de, tr, zh."
          },
          "customPrompts": {
            "title": "Custom prompts (optional)",
            "type": "array",
            "description": "Your own questions to ask the AI platforms. Used ONLY when promptSource is set to \"custom\". When promptSource is \"default\", this field is ignored.",
            "items": {
              "type": "string"
            }
          },
          "platforms": {
            "title": "AI platforms to query",
            "type": "array",
            "description": "Which AI platforms to check. chatgpt, gemini and perplexity answer WITH live web search (true AI search visibility). deepseek answers from model memory only - it shows whether the brand is well-known enough to be in training data.",
            "items": {
              "type": "string",
              "enum": [
                "chatgpt",
                "gemini",
                "perplexity",
                "deepseek"
              ],
              "enumTitles": [
                "ChatGPT (web search)",
                "Gemini (web search)",
                "Perplexity (web search)",
                "DeepSeek (memory only)"
              ]
            },
            "default": [
              "chatgpt",
              "gemini",
              "perplexity",
              "deepseek"
            ]
          },
          "maxPrompts": {
            "title": "Number of prompts",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "How many prompts to run per platform (auto-generated + custom combined). Each prompt x platform x repeat = one paid check. Default 3 keeps Apify Store automated test within 5 minutes; raise to 5-10 for richer measurement.",
            "default": 3
          },
          "repeatsPerPrompt": {
            "title": "Repeats per prompt (frequency measurement)",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many times to ask each prompt. AI answers vary between runs. Leave at 1 for a quick single snapshot. Increase to 3-5 to MEASURE FREQUENCY: with 3 repeats you see whether your brand appears in 1/3, 2/3 or 3/3 answers. Higher values cost proportionally more.",
            "default": 1
          },
          "enableFanOut": {
            "title": "Enable fan-out (sub-prompts)",
            "type": "boolean",
            "description": "When enabled, an LLM generates additional \"People Also Ask\"-style follow-up questions for each main prompt (in the same language). Multiplies the number of checks: with default 3 main prompts and 3 sub-prompts each, you get 12 prompts per platform instead of 3. Each sub-prompt is billed as a separate check. Disabled by default to keep prompt sets predictable and runs fast.",
            "default": false
          },
          "subPromptsPerPrompt": {
            "title": "Sub-prompts per main prompt",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many follow-up questions to generate per main prompt when fan-out is enabled. Default: 3. Range: 1-5.",
            "default": 3
          },
          "responseDetail": {
            "title": "Response detail level",
            "enum": [
              "summary",
              "full"
            ],
            "type": "string",
            "description": "summary stores a short excerpt around each brand mention. full stores the first 1200 characters of every AI answer.",
            "default": "summary"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}