{
  "openapi": "3.0.1",
  "info": {
    "title": "Bulk Keyword Search Volume & CPC Checker",
    "description": "Bulk keyword search volume, CPC, competition, top of page bid, 12-month trend for up to 10,000 keywords per run in any country. No Google Ads account needed. Seasonal keywords flagged by peak month. Keyword ideas and search intent included. Keywords without data are free. Not affiliated with Google.",
    "version": "0.1",
    "x-build-id": "QcuqBQYx1YwYzhXQE"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/datapulsehq~keyword-search-volume/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-datapulsehq-keyword-search-volume",
        "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/datapulsehq~keyword-search-volume/runs": {
      "post": {
        "operationId": "runs-sync-datapulsehq-keyword-search-volume",
        "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/datapulsehq~keyword-search-volume/run-sync": {
      "post": {
        "operationId": "run-sync-datapulsehq-keyword-search-volume",
        "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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "searchVolume",
              "keywordIdeas"
            ],
            "type": "string",
            "description": "<b>Search volume</b>: metrics for the exact keywords you list (up to 10,000 per run).<br><b>Keyword ideas</b>: related keywords (with the same metrics) generated from up to 100 seed keywords.",
            "default": "searchVolume"
          },
          "keywords": {
            "title": "Keywords",
            "minItems": 1,
            "type": "array",
            "description": "One keyword per line. In 'Keyword ideas' mode these are the seed keywords (max 100, sent in groups of 20). Keywords are trimmed, lower-cased and de-duplicated. Keywords with characters Google Ads does not accept, or longer than 80 characters or 10 words, are skipped, not charged, and listed in the run summary under invalidKeywords. Users on the Apify free plan get the first 20 valid keywords per run. If the field is left out, the Actor runs a small example: 5 running shoe keywords, or in 'Keyword ideas' mode the seed 'running shoes' with up to 20 ideas.",
            "items": {
              "type": "string"
            }
          },
          "stripInvalidCharacters": {
            "title": "Remove invalid characters instead of skipping",
            "type": "boolean",
            "description": "Off: a keyword with a character Google Ads does not accept (for example ! @ % * ? or an emoji) is skipped and listed as invalid. On: the character is removed and the rest of the keyword is looked up.",
            "default": false
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "Country name (e.g. 'United States'), two-letter code ('us') or Google Ads location code (2840). A region or city can be given by its full Google Ads location name, e.g. 'New York,New York,United States'. Enter 'Worldwide' for one combined figure across all locations. Leave the field out for the United States; an empty value is rejected.",
            "default": "United States"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Language code (e.g. 'en') or name ('English').",
            "default": "en"
          },
          "maxResults": {
            "title": "Max keyword ideas",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Keyword ideas mode only: maximum number of ideas (rows with data) to return and charge. Users on the Apify free plan get at most 20 per run.",
            "default": 1000
          },
          "sortBy": {
            "title": "Sort keyword ideas by",
            "enum": [
              "relevance",
              "search_volume",
              "competition_index",
              "low_top_of_page_bid",
              "high_top_of_page_bid"
            ],
            "type": "string",
            "description": "Keyword ideas mode only. Order in which ideas are returned (and therefore which ones are kept when 'Max keyword ideas' cuts the list).",
            "default": "relevance"
          },
          "searchPartners": {
            "title": "Include Google search partners",
            "type": "boolean",
            "description": "Include search volume from Google search-partner sites.",
            "default": false
          },
          "useCache": {
            "title": "Use 30-day cache",
            "type": "boolean",
            "description": "Reuse results fetched in the last 30 days for the same keyword + location + language. Faster; cached rows are delivered and charged like fresh rows (Google refreshes this data only once a month).",
            "default": true
          },
          "cacheTtlDays": {
            "title": "Cache max age (days)",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Maximum age of cached results to reuse.",
            "default": 30
          },
          "includeNoDataRows": {
            "title": "Output keywords without data",
            "type": "boolean",
            "description": "Also output (free of charge) a row for keywords Google returned no volume for. They are always listed in the run summary.",
            "default": false
          },
          "pushSummaryToDataset": {
            "title": "Add summary row to dataset",
            "type": "boolean",
            "description": "Append the run summary as the last dataset item (type = 'summary'). Off by default to keep the dataset a clean table; the summary is always saved in the key-value store as SUMMARY.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}