{
  "openapi": "3.0.1",
  "info": {
    "title": "AI Visibility & Competitor Source Gaps",
    "description": "Find the pages that make AI recommend your competitors. Asks Perplexity, ChatGPT and Gemini about your category, collects the sources they cite, then fetches those pages to verify which ones mention competitors but not your brand.",
    "version": "0.1",
    "x-build-id": "ZaAIJVdDbyENb7aTn"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nawfaltech~ai-visibility-competitor-source-gaps/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nawfaltech-ai-visibility-competitor-source-gaps",
        "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/nawfaltech~ai-visibility-competitor-source-gaps/runs": {
      "post": {
        "operationId": "runs-sync-nawfaltech-ai-visibility-competitor-source-gaps",
        "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/nawfaltech~ai-visibility-competitor-source-gaps/run-sync": {
      "post": {
        "operationId": "run-sync-nawfaltech-ai-visibility-competitor-source-gaps",
        "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",
          "website",
          "category",
          "country"
        ],
        "properties": {
          "brand": {
            "title": "Brand",
            "type": "string",
            "description": "Your business or brand name, exactly as customers know it. The prefilled value is a fictional demo; replace it with your own."
          },
          "website": {
            "title": "Website",
            "type": "string",
            "description": "Your website address, starting with http:// or https:// (e.g. https://yourbrand.com). Used to recognize your own pages and mentions of your domain."
          },
          "category": {
            "title": "Category",
            "type": "string",
            "description": "What you are, in a few words, e.g. \"restaurant\", \"CRM software\", \"dentist\"."
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "The country your customers are in. It is written into the questions sent to the AI engines."
          },
          "city": {
            "title": "City (optional)",
            "type": "string",
            "description": "Add a city if you serve a local market."
          },
          "competitors": {
            "title": "Competitors (optional)",
            "maxItems": 5,
            "type": "array",
            "description": "Up to 5 competitors. Write a name, a name and website like \"Acme | acme.com\", or just a website. Leave empty and the Actor will find the businesses AI recommends most.",
            "items": {
              "type": "string"
            }
          },
          "customPrompts": {
            "title": "Custom questions (optional)",
            "maxItems": 25,
            "type": "array",
            "description": "Your own questions for the AI engines, up to 25. If empty, 10 standard questions are built from your category and location.",
            "items": {
              "type": "string"
            }
          },
          "engines": {
            "title": "AI engines",
            "minItems": 1,
            "type": "array",
            "description": "Which AI engines to ask. Perplexity alone is the quick scan (it cites the most sources). Add ChatGPT and Gemini for the full analysis. Every question on every engine is a separate search billed to your account at your Apify plan's price: $0.20 per search on the Free plan, about $0.002–$0.013 on paid plans.",
            "items": {
              "type": "string",
              "enum": [
                "perplexity",
                "chatgpt",
                "gemini"
              ],
              "enumTitles": [
                "Perplexity",
                "ChatGPT (web search)",
                "Gemini"
              ]
            },
            "default": [
              "perplexity"
            ]
          },
          "samples": {
            "title": "Samples per question",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many times each question is asked per engine. AI answers vary, so more samples give steadier numbers but cost more. A run is capped at 150 AI queries in total (questions × engines × samples).",
            "default": 1
          },
          "maxPagesToVerify": {
            "title": "Pages to check",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Maximum number of cited pages to open and check. The most promising pages are checked first.",
            "default": 25
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}