{
  "openapi": "3.0.1",
  "info": {
    "title": "Keyword Search Volume Scraper — Google Ads Keyword Planner, CPC",
    "description": "Google Ads monthly search volume, CPC and competition for your keyword list — real Keyword Planner figures, nothing modelled; a keyword with no data is never charged. From $2.00 per 1,000 keyword results; one $0.19 fresh-lookup fee per run that buys new data (cached runs pay none).",
    "version": "1.0",
    "x-build-id": "6d85duwF0VvAbr1KM"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/steadyfetch~keyword-search-volume-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-steadyfetch-keyword-search-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/steadyfetch~keyword-search-volume-scraper/runs": {
      "post": {
        "operationId": "runs-sync-steadyfetch-keyword-search-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/steadyfetch~keyword-search-volume-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-steadyfetch-keyword-search-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",
        "properties": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "The keywords to look up, e.g. [\"project management software\", \"crm for startups\"] — any length, and one run delivers up to maxItems rows (1,000 by default, up to 100,000) within maxRunSeconds (900 by default, 30 minutes at most); a keyword with no Google data is never charged, so send the whole list. Keywords a run does not reach are not charged and are listed in resumeCursor; one your account got in the last 30 days comes back uncharged but counts toward maxItems. Leave it empty in the console and the run is a two-keyword sample, charged like any run. Settings you do change scope that sample: it runs in your market, on your network, under your limits, and one uncharged row names them.",
            "default": [
              "_demo"
            ],
            "items": {
              "type": "string"
            }
          },
          "keywordsText": {
            "title": "Keyword list (paste)",
            "type": "string",
            "description": "Paste a whole list here instead — one keyword per line, or comma-separated. Merged with the list above; duplicates are charged once."
          },
          "mode": {
            "title": "What to return",
            "type": "string",
            "description": "Metrics only: volume and CPC for the keywords you supplied. Ideas: expand each keyword into new keyword suggestions with the same metrics. Both: do both.",
            "default": "metrics-only"
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Pick a country, or type a code or its name in English or its own language — US, USA, GB, United Kingdom, Deutschland, a locale tag like en-GB, the first country in a list like \"Dubai, United Arab Emirates\", and the Google Ads country location code (2840) all work. One country per run: search volume is published per market, so there is no worldwide, EU or region-wide figure. A value we cannot place — a typo, a city or region code, a market the source has no data for, a whole-region ask or a pasted block — is refused before any lookup, uncharged, each row naming the values that work; no market is guessed for you.",
            "default": "US"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Pick a language, or type a code, a tag or its name in English or in its own language — en, eng, en-US, English, \"English (US)\" and Español all work.",
            "default": "en"
          },
          "network": {
            "title": "Network",
            "type": "string",
            "description": "Google search only, or Google plus its search partners (partner volumes are higher).",
            "default": "google"
          },
          "maxIdeasPerSeed": {
            "title": "Max keyword ideas per keyword",
            "minimum": 1,
            "type": "integer",
            "description": "Only used in the ideas modes. Your keywords are expanded together in one lookup, so this is the run's idea ceiling divided by the keywords expanded: three keywords at 200 is up to 600 ideas for the run. The ceiling is filled from the top of one list sorted by search volume, so a keyword with few suggestions does not strand its share. Up to 2,000; ask for more and the run continues at 2,000, with one uncharged row saying so.",
            "default": 200
          },
          "maxIdeaSeeds": {
            "title": "Max keywords to expand",
            "minimum": 1,
            "type": "integer",
            "description": "Only used in the ideas modes. Caps how many of your keywords are expanded in one run; the rest are reported back uncharged. They are expanded together in a single lookup, so expanding twenty costs the same as expanding one, and twenty is the most one lookup takes. Ask for more and the run continues at 20, with one uncharged row saying so.",
            "default": 5
          },
          "maxItems": {
            "title": "Max keyword rows for the whole run",
            "minimum": 1,
            "type": "integer",
            "description": "Hard cap on charged rows across the whole run — up to 100,000. Ask for more and the run continues at 100,000, with one uncharged row saying so.",
            "default": 1000
          },
          "maxRunSeconds": {
            "title": "Max run seconds",
            "type": "integer",
            "description": "The run stops cleanly before this many seconds and reports what is left, instead of being killed by a timeout. Anything from 30 seconds to an hour is accepted, but a run never works past 30 minutes, this actor's own ceiling, so a value above 1800 ends the run at 30 minutes; ask outside that range and the run continues at the nearest end of it, with one uncharged row saying so.",
            "default": 900
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}