{
  "openapi": "3.0.1",
  "info": {
    "title": "Keyword Gap Analysis: Competitor Keywords You Don't Rank For",
    "description": "Compare your domain with up to 5 competitors and get the keywords they rank for on Google and you don't, with search volume, CPC, keyword difficulty, intent and each competitor's position and URL. Also finds keywords where they outrank you. No API key needed.",
    "version": "1.0",
    "x-build-id": "kY3orFpewvXCGRhGu"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/vncntlabs~keyword-gap-finder/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-vncntlabs-keyword-gap-finder",
        "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/vncntlabs~keyword-gap-finder/runs": {
      "post": {
        "operationId": "runs-sync-vncntlabs-keyword-gap-finder",
        "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/vncntlabs~keyword-gap-finder/run-sync": {
      "post": {
        "operationId": "run-sync-vncntlabs-keyword-gap-finder",
        "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": [
          "yourDomain",
          "competitors"
        ],
        "properties": {
          "yourDomain": {
            "title": "Your domain",
            "type": "string",
            "description": "Your own site, like <code>example.com</code>. A full URL works too; the whole domain is used."
          },
          "competitors": {
            "title": "Competitor domains",
            "type": "array",
            "description": "1 to 5 competitor domains. You pay $0.02 per competitor compared, plus $0.001 per keyword row. A competitor with no matching keywords isn't charged.",
            "items": {
              "type": "string"
            }
          },
          "mode": {
            "title": "What to find",
            "enum": [
              "missing",
              "behind",
              "shared"
            ],
            "type": "string",
            "description": "Missing is the classic keyword gap. Behind shows where you already rank but a competitor beats you, which is usually the quickest win.",
            "default": "missing"
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "2-letter country code for Google rankings and search volume, for example US, GB, CA, AU, DE.",
            "default": "US"
          },
          "language": {
            "title": "Language (optional)",
            "type": "string",
            "description": "Language code such as en, de or es. Leave empty for the country's main language (English where available)."
          },
          "maxKeywords": {
            "title": "Max keyword rows",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Total keyword rows for the run, after merging all competitors. This is also your cost cap: 100 rows = $0.10.",
            "default": 100
          },
          "maxCompetitorPosition": {
            "title": "Competitor ranks in the top",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Only keywords where the competitor ranks at this position or better. 10 = page one only, 100 = everything.",
            "default": 20
          },
          "minSearchVolume": {
            "title": "Min monthly search volume",
            "minimum": 0,
            "type": "integer",
            "description": "Skip keywords searched fewer times a month than this.",
            "default": 10
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "volume",
              "traffic",
              "difficulty"
            ],
            "type": "string",
            "description": "Which keywords come first. It also decides which ones are kept when there are more than Max keyword rows.",
            "default": "volume"
          },
          "excludeBrandedKeywords": {
            "title": "Skip branded keywords",
            "type": "boolean",
            "description": "Drop keywords that contain your brand or the competitor's brand (taken from the domain name), like 'printify login'.",
            "default": true
          },
          "excludeKeywordsContaining": {
            "title": "Skip keywords containing",
            "type": "array",
            "description": "Up to 5 words or phrases. Any keyword containing one of them is dropped, for example other brands or 'free'.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}