{
  "openapi": "3.0.1",
  "info": {
    "title": "LLM Visibility Monitor: AI Search Brand Audit",
    "description": "Audit how your brand appears across ChatGPT-style answers, Claude, Gemini, Perplexity, Grok, and Google AI Overviews. Track mentions, citations, share of voice, sentiment, and competitor gaps for SEO and GEO reporting.",
    "version": "0.1",
    "x-build-id": "7x2GHdvIHljbQT3PM"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/constructive_calm~llm-visibility-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-constructive_calm-llm-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/constructive_calm~llm-visibility-monitor/runs": {
      "post": {
        "operationId": "runs-sync-constructive_calm-llm-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/constructive_calm~llm-visibility-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-constructive_calm-llm-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": "The brand, product, company, or entity to audit in AI-generated answers."
          },
          "websiteUrl": {
            "title": "Website URL",
            "type": "string",
            "description": "The owned domain used to detect whether AI answers cite your website."
          },
          "marketCategory": {
            "title": "Market category",
            "type": "string",
            "description": "Category used for auto-generated SEO/GEO prompts."
          },
          "competitors": {
            "title": "Competitors",
            "type": "array",
            "description": "Competitor brand names or URLs. URLs are normalized into brand names, domains, and aliases for share-of-voice and position tracking.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "brandAliases": {
            "title": "Brand aliases",
            "type": "array",
            "description": "Alternative spellings, product names, or abbreviations that should count as brand mentions.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "prompts": {
            "title": "Custom prompts",
            "type": "array",
            "description": "Questions to test. Leave empty to generate a prompt set. More prompts directly increase cost because each prompt is tested across every selected platform.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "runPreset": {
            "title": "Run preset (major cost driver)",
            "enum": [
              "quick",
              "agency",
              "deep",
              "custom"
            ],
            "type": "string",
            "description": "Controls prompt count, platform mix, and sample count. Estimated bundled live cost before BYOK: Quick about $3.76 without Google AIO or $6.26 with Google AIO; Agency about $13.51 without Google AIO or $18.51 with Google AIO; Deep about $117.76 without Google AIO or $130.26 with Google AIO.",
            "default": "agency"
          },
          "platforms": {
            "title": "AI answer surfaces",
            "type": "array",
            "description": "Choose model/search surfaces. Google AI Overview is also controlled by the experimental toggle below.",
            "items": {
              "type": "string",
              "enum": [
                "openai-mini",
                "openai-gpt",
                "claude-haiku",
                "claude-sonnet",
                "gemini-flash",
                "gemini-pro",
                "grok",
                "perplexity-sonar",
                "perplexity-sonar-pro",
                "google-aio"
              ],
              "enumTitles": [
                "OpenAI GPT Mini Latest",
                "OpenAI GPT Latest",
                "Claude Haiku Latest",
                "Claude Sonnet Latest",
                "Gemini Flash Latest",
                "Gemini Pro Latest",
                "Grok 4.3",
                "Perplexity Sonar",
                "Perplexity Sonar Pro Search",
                "Google AI Overview (experimental)"
              ]
            },
            "default": []
          },
          "samplesPerPrompt": {
            "title": "Samples per prompt (cost multiplier)",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Optional override. Leave empty to use the selected preset: Quick uses 1, Agency uses 2, Deep uses 3. Each extra sample repeats every non-Google platform and increases cost. Google AIO is capped to one sample per prompt."
          },
          "maxPrompts": {
            "title": "Max prompts (cost multiplier)",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Optional override. Leave empty to use the selected preset: Quick uses 5, Agency uses 10, Deep uses 25. Each extra prompt runs across every selected platform and increases cost."
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Two-letter country code for location-biased search where supported.",
            "default": "US"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Language code for Google SERP capture and reporting context.",
            "default": "en"
          },
          "enableGoogleAio": {
            "title": "Enable Google AI Overview capture (+$0.50 per prompt)",
            "type": "boolean",
            "description": "Experimental and expensive. Adds one Google AI Overview/SERP attempt per prompt at $0.50 each. Agency preset adds about $5.00. It may return not present depending on query, country, and device state.",
            "default": false
          },
          "maxChargeUsd": {
            "title": "Maximum Actor charge (USD)",
            "minimum": 0,
            "type": "number",
            "description": "Live-run safety cap. The Actor stops before paid calls if the estimated pay-per-event charge is above this amount. Lower this for tests, for example $5 for a quick smoke run.",
            "default": 25
          },
          "includeRawAnswers": {
            "title": "Include raw answers",
            "type": "boolean",
            "description": "Include full raw AI answer text in dataset rows. Off by default to keep exports compact.",
            "default": false
          },
          "openRouterApiKey": {
            "title": "OpenRouter API key (optional BYOK)",
            "type": "string",
            "description": "Optional bring-your-own-key mode. Leave empty to use the Actor owner's bundled OPENROUTER_API_KEY secret."
          },
          "dryRun": {
            "title": "Dry run fixtures",
            "type": "boolean",
            "description": "Use deterministic fixture answers without external API calls. Useful for testing schemas and reports.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}