{
  "openapi": "3.0.1",
  "info": {
    "title": "Keyword Search Volume & Keyword Planner API: CPC, Difficulty",
    "description": "Bulk keyword search volume, Google's own figures with Bing beside them: searches, CPC, competition, bids and history in 95 countries, plus difficulty, intent, Keyword Planner ideas and every keyword a competitor's domain ranks for. No Google Ads account, no Semrush or Ahrefs subscription.",
    "version": "0.1",
    "x-build-id": "pwMojbM4hni6gD6fz"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/zaiq~keyword-research/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-zaiq-keyword-research",
        "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/zaiq~keyword-research/runs": {
      "post": {
        "operationId": "runs-sync-zaiq-keyword-research",
        "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/zaiq~keyword-research/run-sync": {
      "post": {
        "operationId": "run-sync-zaiq-keyword-research",
        "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": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Keywords to measure (metrics), or seed keywords to grow ideas from. One per line. Symbols such as ? , ! are removed before the lookup. Not needed for competitor keywords.",
            "items": {
              "type": "string"
            }
          },
          "domains": {
            "title": "Domains (competitor keywords)",
            "type": "array",
            "description": "For the competitor keywords mode: the domains whose Google rankings you want, such as example.com, or the full address of one page. Up to 20 a run.",
            "items": {
              "type": "string"
            }
          },
          "mode": {
            "title": "What to get",
            "enum": [
              "overview",
              "ideas",
              "related",
              "competitors"
            ],
            "type": "string",
            "description": "Overview measures your keywords; ideas finds longer keywords that contain each seed; related finds what Google lists as related searches; competitor keywords lists what a domain ranks for, with its position, page and estimated traffic. Ideas and related are ranked by volume, competitor keywords by the traffic each one brings.",
            "default": "overview"
          },
          "source": {
            "title": "Data source",
            "enum": [
              "keyword-database",
              "keyword-planner"
            ],
            "type": "string",
            "description": "Both return Google's volume, CPC, competition and bids; the figures matched in our checks. For metrics use the database: it is cheaper and adds keyword difficulty, search intent and up to 8 years of history. Use Keyword Planner for ideas: Google's suggestions go beyond your seed's own words. One request takes up to 1,000 keywords or 20 seeds. Needs a paid Apify plan.",
            "default": "keyword-database"
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Two-letter country code (95 countries), e.g. US, GB, ZA, DE, AU.",
            "default": "US"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Optional language code (en, de, es...); empty = the country's main language."
          },
          "maxIdeas": {
            "title": "Ideas per seed",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "For the ideas mode: how many keyword ideas per seed, highest volume first.",
            "default": 100
          },
          "historyMonths": {
            "title": "Months of history (Keyword Planner)",
            "minimum": 12,
            "maximum": 48,
            "type": "integer",
            "description": "Keyword Planner only: how many months of monthly searches to return, up to 48. Same price.",
            "default": 12
          },
          "maxDomainKeywords": {
            "title": "Keywords per domain (competitor keywords)",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "For the competitor keywords mode: how many keywords per domain, the ones bringing the most traffic first. Each 1,000 is one lookup.",
            "default": 500
          },
          "minVolume": {
            "title": "Minimum monthly searches",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. For ideas, related and competitor keywords: leave out keywords with fewer searches. You pay only for the rows you get."
          },
          "maxDifficulty": {
            "title": "Maximum keyword difficulty",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Optional. For ideas, related and competitor keywords from the keyword database: leave out keywords harder than this (0-100)."
          },
          "maxPosition": {
            "title": "Worst Google position",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Optional. For competitor keywords: only keywords where the domain ranks this high or better, for example 10 for the first page."
          },
          "includeBing": {
            "title": "Add Bing beside Google",
            "type": "boolean",
            "description": "For metrics: adds Bing's volume, CPC, competition and history to each row, $0.12 a request of up to 1,000 keywords. Microsoft sells this data for the US, UK, Canada, Australia, Germany and France, in English, French and German. Not charged where it returns nothing. Needs a paid Apify plan.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}