{
  "openapi": "3.0.1",
  "info": {
    "title": "AI Brand Visibility Tracker: LLM Mentions & Share of Voice",
    "description": "Track your AI search visibility (GEO/AEO): do AI models name your brand when buyers ask? Mention rate, rank, competitors and share of voice per model, with change since the last run. Asks the API models behind ChatGPT, Claude, Gemini and Perplexity (not the apps); $15 per 1,000 checks plus tokens.",
    "version": "0.1",
    "x-build-id": "zxDcNAqEOHT4sKQEb"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/humble-echidna~ai-visibility/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-humble-echidna-ai-visibility",
        "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/humble-echidna~ai-visibility/runs": {
      "post": {
        "operationId": "runs-sync-humble-echidna-ai-visibility",
        "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/humble-echidna~ai-visibility/run-sync": {
      "post": {
        "operationId": "run-sync-humble-echidna-ai-visibility",
        "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",
          "prompts"
        ],
        "properties": {
          "brand": {
            "title": "Your brand",
            "type": "string",
            "description": "The company, product or website to track, e.g. `Trello`. Brands, not people: don't track private individuals. Add other names after a | to count them too, e.g. `Monday.com | monday`; each is matched as a whole word, case-insensitive. A domain among them (trello.com) also marks links to that site as brandCited.",
            "default": "Trello"
          },
          "competitors": {
            "title": "Competitors",
            "type": "array",
            "description": "Competing brands to count in the same answers, one per line, e.g. `Asana`, `Monday.com | monday`. Up to 20. They get their own mention rate, rank and share of voice in the summary row. Every other brand the answers name is listed too (brandsNamed), tracked or not.",
            "default": [
              "Asana",
              "Monday.com"
            ],
            "items": {
              "type": "string"
            }
          },
          "prompts": {
            "title": "Questions to ask (prompts)",
            "type": "array",
            "description": "The questions your buyers ask an AI assistant, one per line, written without your brand, e.g. `What are the best project management tools for a small team?`. Up to 100, each at most 2,000 characters. Each is sent as is to every model, samples times.",
            "default": [
              "What are the best project management tools for a small team?"
            ],
            "items": {
              "type": "string"
            }
          },
          "models": {
            "title": "Models (OpenRouter ids)",
            "type": "array",
            "description": "The AI models to ask, as OpenRouter model ids, one per line; up to 5. Default `openai/gpt-4.1-mini`. Others, e.g. `anthropic/claude-haiku-4.5`, `google/gemini-2.5-flash-lite`, or `perplexity/sonar` (searches the web itself and cites sources). These are API answers, not the ChatGPT or Gemini apps. Tokens are billed to your Apify account by Apify's OpenRouter actor.",
            "default": [
              "openai/gpt-4.1-mini"
            ],
            "items": {
              "type": "string"
            }
          },
          "samples": {
            "title": "Samples per question",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many times to ask each model each question, from 1 to 5. Default 1. Answers vary between asks, so 3 or more gives a steadier mention rate; the summary row shows each sample round's rate and the spread between them. Each sample is one check.",
            "default": 1
          },
          "onlyChanges": {
            "title": "Only checks that changed since the last run",
            "type": "boolean",
            "description": "Default false. When true, a check (same question, model and sample) is left out of the dataset when your brand's mention, its rank and the competitors named are all the same as in the last run with this brand and these questions. The summary row always covers every check, and every valid check is charged.",
            "default": false
          },
          "maxChecks": {
            "title": "Max checks per run",
            "minimum": 1,
            "maximum": 2500,
            "type": "integer",
            "description": "Stop after this many valid checks (one question asked once of one model), e.g. 20. From 1 to 2500; leave empty (the default) for questions x models x samples. Checks that fail don't count. The run also stops cleanly at the maximum cost per run you set in the run options, whichever comes first."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}