{
  "openapi": "3.0.1",
  "info": {
    "title": "AI Visibility Monitor: ChatGPT, Perplexity, Claude, Gemini",
    "description": "Track whether ChatGPT, Perplexity, Claude, Gemini, Grok, Llama and Mistral recommend your brand. No API keys needed: answers with live web search, cited sources, rank, competitors, sentiment, share of voice. $0.01/answer + AI usage at cost.",
    "version": "1.0",
    "x-build-id": "Y2Q0wil2t0gsbtzqo"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/donrulezz~ai-answer-engine-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-donrulezz-ai-answer-engine-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/donrulezz~ai-answer-engine-monitor/runs": {
      "post": {
        "operationId": "runs-sync-donrulezz-ai-answer-engine-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/donrulezz~ai-answer-engine-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-donrulezz-ai-answer-engine-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": [
          "brand"
        ],
        "properties": {
          "prompts": {
            "title": "Questions your buyers ask AI",
            "type": "array",
            "description": "One question per line, the way a buyer would type it into ChatGPT or Perplexity, e.g. 'best project management tool for a 10-person agency'. Leave empty and fill in Category to have them written for you. Tip: on Apify's free plan, AI usage through Apify's OpenRouter actor costs 10x (roughly $0.10-0.20 per web-search answer), so start with 2-3 questions.",
            "items": {
              "type": "string"
            }
          },
          "category": {
            "title": "Or: your category (questions written for you)",
            "type": "string",
            "description": "e.g. 'project management software for small agencies'. Used only when Questions is empty: typical buyer questions are generated for free (they never name your brand)."
          },
          "promptCount": {
            "title": "How many questions to generate",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Only with Category.",
            "default": 10
          },
          "brand": {
            "title": "Your brand",
            "type": "string",
            "description": "Name, optionally followed by '| domain | aliases', e.g. 'ClickUp | clickup.com | Click Up'. The domain is used to check whether your site is cited."
          },
          "competitors": {
            "title": "Competitors",
            "type": "array",
            "description": "Same format as the brand, one per line: 'Asana | asana.com'.",
            "items": {
              "type": "string"
            }
          },
          "engines": {
            "title": "AI engines",
            "type": "array",
            "description": "Works out of the box: ChatGPT (OpenAI models with web search), Perplexity (Sonar, web search), Claude, Gemini, Grok, Llama (Meta AI) and Mistral (with web search) run through Apify's own OpenRouter actor, which bills the AI usage to your Apify account at OpenRouter's price (about $0.01 per answer on paid plans; Apify charges 10x on its free plan). Or add your own API keys below. DeepSeek = model knowledge only, no live web.",
            "items": {
              "type": "string",
              "enum": [
                "openai",
                "perplexity",
                "anthropic",
                "gemini",
                "grok",
                "llama",
                "mistral",
                "deepseek"
              ],
              "enumTitles": [
                "ChatGPT (OpenAI, web search)",
                "Perplexity (Sonar, web search)",
                "Claude (Anthropic, web search)",
                "Gemini (Google, web search)",
                "Grok (xAI, web search)",
                "Llama / Meta AI (web search)",
                "Mistral / Le Chat (web search)",
                "DeepSeek (model knowledge, no web)"
              ]
            },
            "default": [
              "perplexity"
            ]
          },
          "repeats": {
            "title": "Ask each question this many times",
            "minimum": 1,
            "maximum": 3,
            "type": "integer",
            "description": "AI answers vary; 2-3 repeats show how stable your visibility is.",
            "default": 1
          },
          "country": {
            "title": "Country (two letters)",
            "type": "string",
            "description": "Optional. Approximate searcher location for engines that support it (OpenAI, Claude), e.g. US, GB, DE."
          },
          "sentiment": {
            "title": "Rate sentiment toward your brand",
            "type": "boolean",
            "description": "positive / neutral / negative / mixed with a one-line reason, for answers that mention you. Free.",
            "default": true
          },
          "compareWithPreviousRun": {
            "title": "Compare with the previous run",
            "type": "boolean",
            "description": "Keeps the last summary per brand in a key-value store named 'ai-visibility-history' in your account, so scheduled runs show the change: visibility and citation points, rank change, questions newly won or lost.",
            "default": true
          },
          "checkCrawlerAccess": {
            "title": "Check AI crawler access to your site",
            "type": "boolean",
            "description": "Free: reads your domain's robots.txt and reports which AI crawlers and answer fetchers (OAI-SearchBot, GPTBot, ClaudeBot, PerplexityBot, Google-Extended...) are blocked, and whether /llms.txt exists.",
            "default": true
          },
          "openaiApiKey": {
            "title": "Your OpenAI API key (optional)",
            "type": "string",
            "description": "Optional. With your own key you pay the provider directly and no OpenRouter usage is billed."
          },
          "perplexityApiKey": {
            "title": "Your Perplexity API key (optional)",
            "type": "string",
            "description": "Optional. With your own key you pay the provider directly and no OpenRouter usage is billed."
          },
          "anthropicApiKey": {
            "title": "Your Anthropic API key (optional)",
            "type": "string",
            "description": "Optional. With your own key you pay the provider directly and no OpenRouter usage is billed."
          },
          "geminiApiKey": {
            "title": "Your Gemini API key (optional)",
            "type": "string",
            "description": "Optional. With your own key you pay the provider directly and no OpenRouter usage is billed."
          },
          "maxConcurrency": {
            "title": "Questions in parallel",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many questions are sent at the same time.",
            "default": 5
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}