{
  "openapi": "3.0.1",
  "info": {
    "title": "AI Visibility Tracker: GEO/AEO Brand Monitor with Trends",
    "description": "Track how often ChatGPT, Google AI Overviews, Perplexity and Gemini mention your brand — with confidence intervals on every number and a tested month-over-month comparison, so you only act on changes that are real.",
    "version": "1.0",
    "x-build-id": "ZD36HebezvlMRN4gl"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/reminiscent_folder~ai-visibility-trend-tracker/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-reminiscent_folder-ai-visibility-trend-tracker",
        "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/reminiscent_folder~ai-visibility-trend-tracker/runs": {
      "post": {
        "operationId": "runs-sync-reminiscent_folder-ai-visibility-trend-tracker",
        "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/reminiscent_folder~ai-visibility-trend-tracker/run-sync": {
      "post": {
        "operationId": "run-sync-reminiscent_folder-ai-visibility-trend-tracker",
        "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": "Brand to track",
            "type": "string",
            "description": "The brand name to look for in AI answers. Matching is accent- and case-insensitive and respects word boundaries, so \"Apple\" will not match inside \"Applesauce\"."
          },
          "brandAliases": {
            "title": "Brand aliases",
            "type": "array",
            "description": "Other ways the brand is written — legal name, former name, common misspellings, accented and unaccented forms. Any of these counts as a mention.",
            "items": {
              "type": "string"
            }
          },
          "prompts": {
            "title": "Prompts to test",
            "type": "array",
            "description": "The questions your buyers actually ask an AI assistant. Write them as a customer would, not as a keyword. Good: \"best project management tool for a small design agency\". Weak: \"project management\".",
            "items": {
              "type": "string"
            }
          },
          "competitors": {
            "title": "Competitors",
            "type": "array",
            "description": "Named competitors. Used for share of voice and to show who appears when you do not.",
            "items": {
              "type": "string"
            }
          },
          "ownedDomains": {
            "title": "Your domains",
            "type": "array",
            "description": "Domains you control. Used to measure how often an answer cites you as a source rather than merely naming you — the two are different outcomes.",
            "items": {
              "type": "string"
            }
          },
          "engines": {
            "title": "Engines",
            "type": "array",
            "description": "Which AI answer engines to query. Google AI Overview needs no API key and costs about $0.003 per query downstream. Google AI Mode and ChatGPT search also need no key but cost $0.20 per query on the Apify FREE plan (far less on paid plans), so they are off by default. The remaining engines use official provider APIs and need your own key, billed by that provider.",
            "items": {
              "type": "string",
              "enum": [
                "google_ai_overview",
                "google_ai_mode",
                "chatgpt_search",
                "perplexity",
                "gemini",
                "claude",
                "openai"
              ],
              "enumTitles": [
                "Google AI Overview",
                "Google AI Mode",
                "ChatGPT (search)",
                "Perplexity (needs key)",
                "Gemini (needs key)",
                "Claude (needs key)",
                "OpenAI (needs key)"
              ]
            }
          },
          "samplesPerPrompt": {
            "title": "Samples per prompt",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many times to ask each prompt on each engine. AI answers vary run to run, so a single sample cannot separate a real change from noise. 3 is the minimum for a usable confidence interval; 5 narrows it further. Each sample round is one upstream Actor run, and this multiplies cost.",
            "default": 3
          },
          "projectId": {
            "title": "Project ID",
            "type": "string",
            "description": "Groups runs together over time. Keep it the same across runs and each report will compare against the previous one. Defaults to a slug of the brand name."
          },
          "compareWithPrevious": {
            "title": "Compare with previous run",
            "type": "boolean",
            "description": "Run a two-proportion significance test against the last run for this project and report only movements outside the noise band.",
            "default": true
          },
          "generateHtmlReport": {
            "title": "Generate client-ready HTML report",
            "type": "boolean",
            "description": "Saves a self-contained, printable report to the key-value store under the key REPORT.",
            "default": true
          },
          "includeAnswerText": {
            "title": "Include full answer text",
            "type": "boolean",
            "description": "Store the complete answer for every sample. Useful for auditing a number back to the raw text it came from; makes the dataset considerably larger.",
            "default": false
          },
          "confidenceLevel": {
            "title": "Confidence level",
            "minimum": 0.5,
            "maximum": 0.999,
            "type": "number",
            "description": "Confidence level for the intervals. 0.95 is standard.",
            "default": 0.95
          },
          "testMode": {
            "title": "Test mode (free, no network)",
            "type": "boolean",
            "description": "Generate deterministic synthetic answers so you can see the exact output schema and report layout without spending anything. Nothing is charged, no engine is contacted, and no downstream Actor is run.",
            "default": false
          },
          "perplexityApiKey": {
            "title": "Perplexity API key",
            "type": "string",
            "description": "Optional. Enables the Perplexity engine via the official Sonar API. Billed by Perplexity to you, not by this Actor."
          },
          "geminiApiKey": {
            "title": "Google Gemini API key",
            "type": "string",
            "description": "Optional. Enables Gemini with Google Search grounding."
          },
          "anthropicApiKey": {
            "title": "Anthropic API key",
            "type": "string",
            "description": "Optional. Enables Claude with the web_search tool."
          },
          "openaiApiKey": {
            "title": "OpenAI API key",
            "type": "string",
            "description": "Optional. Enables OpenAI with the web_search tool."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}