{
  "openapi": "3.0.1",
  "info": {
    "title": "Competitor Keyword Gap: Missing & Ranked Keywords",
    "description": "Find the keywords your competitors rank for on Google and you don't, keywords you share, every keyword a domain ranks for, and your real search competitors. Volume, CPC, difficulty, intent, positions and URLs. Licensed data, no Semrush or Ahrefs login.",
    "version": "0.1",
    "x-build-id": "HKOrUc4dIyV94xPsh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/steady-scrape~competitor-keywords-gap/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-steady-scrape-competitor-keywords-gap",
        "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/steady-scrape~competitor-keywords-gap/runs": {
      "post": {
        "operationId": "runs-sync-steady-scrape-competitor-keywords-gap",
        "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/steady-scrape~competitor-keywords-gap/run-sync": {
      "post": {
        "operationId": "run-sync-steady-scrape-competitor-keywords-gap",
        "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",
        "properties": {
          "yourDomain": {
            "title": "Your domain",
            "type": "string",
            "description": "The site you want keyword ideas for, like example.com. Needed for gap, shared and competitors modes."
          },
          "competitors": {
            "title": "Competitor domains",
            "type": "array",
            "description": "Up to 10 competitor domains. Leave empty to find them automatically (see 'Find competitors automatically'). In 'ranked' mode these are the domains to list keywords for.",
            "items": {
              "type": "string"
            }
          },
          "mode": {
            "title": "Mode",
            "enum": [
              "gap",
              "shared",
              "ranked",
              "competitors"
            ],
            "type": "string",
            "description": "What to return. Keyword gap lists keywords where at least one competitor ranks and your domain is not in Google's top 100.",
            "default": "gap"
          },
          "location": {
            "title": "Country",
            "type": "string",
            "description": "Country name or 2-letter code, like United States, UK, DE.",
            "default": "United States"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Language name or code, like English, es, German.",
            "default": "English"
          },
          "maxRowsPerDomain": {
            "title": "Max keywords per domain",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Upper limit of keywords fetched per competitor (or per domain in ranked mode), biggest search volume first. In gap mode results from all competitors are merged, so the output can be smaller.",
            "default": 1000
          },
          "maxPosition": {
            "title": "Competitor ranks within top",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Only keywords where the competitor ranks at or above this Google position. Default 20 (100 in ranked mode)."
          },
          "minSearchVolume": {
            "title": "Minimum monthly searches",
            "minimum": 0,
            "type": "integer",
            "description": "Skip keywords with fewer monthly Google searches.",
            "default": 10
          },
          "minCompetitors": {
            "title": "Ranked by at least N competitors (gap mode)",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Set to 2 or more to keep only keywords several competitors rank for: the strongest gaps.",
            "default": 1
          },
          "maxKeywordDifficulty": {
            "title": "Max keyword difficulty",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Only keywords at or below this difficulty (0-100). Leave empty for all."
          },
          "excludeNavigational": {
            "title": "Skip navigational keywords",
            "type": "boolean",
            "description": "Drop keywords where people look for a specific site or brand (like other companies' brand names). Recommended for keyword gap.",
            "default": false
          },
          "keywordContains": {
            "title": "Keyword contains",
            "type": "string",
            "description": "Only keywords containing this word or phrase, like 'backlink'."
          },
          "autoCompetitors": {
            "title": "Find competitors automatically",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "When the competitor list is empty, use this many top organic competitors of your domain. Set 0 to turn off.",
            "default": 3
          },
          "maxCompetitorsToFind": {
            "title": "Competitors to list (competitors mode)",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many competitors to return in 'Find my search competitors' mode.",
            "default": 20
          },
          "includeOtherLanguages": {
            "title": "Include keywords in other languages",
            "type": "boolean",
            "description": "Keep keywords that are not in the chosen language.",
            "default": false
          },
          "compareWithPreviousRun": {
            "title": "Compare with my previous run",
            "type": "boolean",
            "description": "Mark each row new, up, down or same against your last run with the same settings, and list keywords that disappeared. Schedule the Actor weekly to track changes.",
            "default": true
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}