{
  "openapi": "3.0.1",
  "info": {
    "title": "Search Volume: Google Keyword Planner & Keyword Volume Data",
    "description": "Google Ads search volume, CPC, competition and 12 months of searches for up to 100,000 keywords per run, per country. Close variants get their own figures. Optional difficulty and intent, keyword ideas, monthly watch, webhook. From $1.02 per 1,000 keywords.",
    "version": "0.1",
    "x-build-id": "enydXZnQKlotvVrqe"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/alexmorain~keyword-volume-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-alexmorain-keyword-volume-scraper",
        "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/alexmorain~keyword-volume-scraper/runs": {
      "post": {
        "operationId": "runs-sync-alexmorain-keyword-volume-scraper",
        "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/alexmorain~keyword-volume-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-alexmorain-keyword-volume-scraper",
        "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": [
          "keywords"
        ],
        "properties": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "One keyword per line, up to 100,000 per run (up to 200 seeds in ideas mode). Keywords are lowercased and cleaned before they are sent: symbols Google Ads refuses (<code>! ? , % @ ( ) =</code> and emojis) are removed instead of failing the batch, duplicates are removed, and a keyword over 80 characters or 10 words comes back as an <code>invalid_input</code> row, not charged.",
            "items": {
              "type": "string"
            }
          },
          "mode": {
            "title": "Mode",
            "enum": [
              "volume",
              "ideas"
            ],
            "type": "string",
            "description": "<b>Volume</b>: read the keywords you give. <b>Ideas</b>: treat them as seeds and return related keywords with their volume, CPC, difficulty and intent.",
            "default": "volume"
          },
          "country": {
            "title": "Country",
            "enum": [
              "worldwide",
              "us",
              "dz",
              "ao",
              "ar",
              "au",
              "at",
              "bh",
              "bd",
              "be",
              "bo",
              "br",
              "bg",
              "bf",
              "kh",
              "cm",
              "ca",
              "cl",
              "co",
              "cr",
              "ci",
              "hr",
              "cy",
              "cz",
              "dk",
              "ec",
              "eg",
              "sv",
              "ee",
              "fi",
              "fr",
              "de",
              "gh",
              "gr",
              "gt",
              "hu",
              "in",
              "id",
              "ie",
              "il",
              "it",
              "jp",
              "jo",
              "kz",
              "ke",
              "lv",
              "lt",
              "my",
              "mt",
              "mx",
              "md",
              "mc",
              "ma",
              "mm",
              "nl",
              "nz",
              "ni",
              "ng",
              "pk",
              "pa",
              "py",
              "pe",
              "ph",
              "pl",
              "pt",
              "ro",
              "sa",
              "sn",
              "rs",
              "sg",
              "sk",
              "si",
              "za",
              "kr",
              "es",
              "lk",
              "se",
              "ch",
              "th",
              "tn",
              "tr",
              "ua",
              "ae",
              "gb",
              "uy",
              "ve",
              "vn"
            ],
            "type": "string",
            "description": "Volumes are per country. <b>Worldwide</b> merges every country into one figure (for example 'crm software' is 450,000 worldwide and 201,000 in the United States), so pick the market you sell to. The choice is written in every row.",
            "default": "us"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Optional two-letter language code such as <code>fr</code> or <code>es</code>. Empty uses the main language of the country (<code>en</code> for the United States). Not used with Worldwide."
          },
          "includeDifficulty": {
            "title": "Add difficulty and intent",
            "type": "boolean",
            "description": "Adds the keyword difficulty (0-100) and the search intent (informational, commercial, transactional, navigational) to each volume row. Needs a country. Charged separately, see the pricing section. Ideas mode always includes both.",
            "default": false
          },
          "maxIdeasPerSeed": {
            "title": "Ideas per seed keyword",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Ideas mode only. Up to 10,000 ideas per seed, read in pages of 1,000.",
            "default": 100
          },
          "ideasMinVolume": {
            "title": "Minimum volume of an idea",
            "minimum": 0,
            "type": "integer",
            "description": "Ideas mode only. Skips ideas with a monthly search volume below this number. It filters at the source, so skipped ideas are not read and not charged.",
            "default": 0
          },
          "monitor": {
            "title": "Monitor volume changes",
            "type": "boolean",
            "description": "Keeps the last volume of every keyword (per country and language) in a named key-value store of your account and adds <code>previousVolume</code>, <code>volumeChange</code> and <code>volumeChangePercent</code> to each row. Google Ads updates once a month: schedule the run monthly.",
            "default": false
          },
          "onlyChanged": {
            "title": "Only keywords that changed",
            "type": "boolean",
            "description": "With monitoring on, returns only the keywords that are new or whose volume changed since the last run. Unchanged keywords are not returned and not charged.",
            "default": false
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Optional. The run summary is sent there by POST when the run ends (Slack, Discord, Zapier...). The URL is never written to a log."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}