{
  "openapi": "3.0.1",
  "info": {
    "title": "Keyword Search Volume, CPC, Ideas & Intent - Google + Bing",
    "description": "Keyword Metrics Pro: bulk keyword search volume, CPC, competition & 12-month trend for Google and Bing - 1,000 keywords per run, JSON/CSV. Ideas mode expands seeds; intent column flags buyer keywords. Free: 200 keywords/scan, 5 scans/day. From $0.70/1K, failed calls never charge. MCP-ready.",
    "version": "0.1",
    "x-build-id": "kufs22ZuVOPxS4cUx"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/doesaiknow~doesaiknow-keyword-metrics-apify/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-doesaiknow-doesaiknow-keyword-metrics-apify",
        "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/doesaiknow~doesaiknow-keyword-metrics-apify/runs": {
      "post": {
        "operationId": "runs-sync-doesaiknow-doesaiknow-keyword-metrics-apify",
        "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/doesaiknow~doesaiknow-keyword-metrics-apify/run-sync": {
      "post": {
        "operationId": "run-sync-doesaiknow-doesaiknow-keyword-metrics-apify",
        "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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "metrics",
              "ideas"
            ],
            "type": "string",
            "description": "METRICS (default): you provide the keyword list, the actor returns Google + Bing search volume, CPC, competition and 12-month trend for exactly those keywords. IDEAS: you provide up to 20 seed keywords and the actor discovers NEW related keywords (up to 1000) with the same columns — use it when you do not have a list yet. Leaving this field out keeps the metrics behaviour unchanged.",
            "default": "metrics"
          },
          "keywords": {
            "title": "Keywords",
            "minItems": 1,
            "maxItems": 1000,
            "type": "array",
            "description": "IN IDEAS MODE these are seed keywords: 1-20 per run (the actor fails with a clear message above 20, before anything is charged) and each one is expanded into new related keywords. IN METRICS MODE (default): up to 1000 keywords (paid Apify plans). Each is normalized (lowercase + trimmed) and deduplicated before any upstream API call (identical tasks are not refundable per upstream API ToS). FREE PLAN: limited to 200 keywords per scan, 5 live scans per day (resets midnight UTC; cached results stay available), AND returns Google data only (search volume, CPC, competition, trend) — Bing metrics require a paid Apify plan. The actor exits early with an upgrade prompt above the 200-keyword limit or daily scan limit. Paid plans: up to 1000 keywords with Google + Bing side-by-side (~$1.89-$2.70 per 1000 kw — see README pricing table).",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            }
          },
          "country": {
            "title": "Country",
            "enum": [
              "us",
              "gb",
              "ca",
              "au",
              "de",
              "fr",
              "es",
              "it",
              "pl",
              "nl",
              "br",
              "jp",
              "in",
              "mx"
            ],
            "type": "string",
            "description": "ISO-3166 alpha-2 country code (lowercase). Drives upstream API location targeting. 'us'=United States (default). Multi-country support coming in v0.2. Unknown codes silently fall back to 'us'.",
            "default": "us"
          },
          "language": {
            "title": "Language",
            "enum": [
              "en",
              "de",
              "fr",
              "es",
              "it",
              "pl",
              "nl",
              "pt",
              "ja"
            ],
            "type": "string",
            "description": "ISO-639-1 language code (lowercase). Default 'en'. Must match country reasonably (e.g. de+de, fr+fr). Unknown codes silently fall back to 'en'.",
            "default": "en"
          },
          "classifyIntent": {
            "title": "Add search intent column (experimental)",
            "type": "boolean",
            "description": "Adds six columns to every row: intent (informational / commercial / transactional / navigational / unclear), intent_confidence (0-1), intent_runner_up and intent_runner_up_probability (the strongest other class — so an \"unclear\" at 0.63 also tells you what it leaned toward), intent_note and intent_rubric_version. Free — this option adds no charge and no billing event; a run costs exactly the same with it on or off. EXPERIMENTAL, accuracy not yet published: a keyword the classifier is not confident about comes back as \"unclear\" rather than as a guess, and if classification is unavailable the row carries intent null with a machine-readable reason in intent_note. Your search volume, CPC, competition and trend data are never affected by this option and the run never fails because of it. Default false — with it off, rows carry exactly the columns they always had. With this option on, each keyword text plus the country and language you selected is sent to an external classification service to determine intent; no volume, CPC, competition or account data leaves this run for that purpose. With it off, nothing is sent.",
            "default": false
          },
          "maxIdeas": {
            "title": "Max keyword ideas (ideas mode only)",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Ideas mode only — ignored in metrics mode. How many new keyword ideas to return, 1-1000. Default 100. Ideas are discovered from Google, so Bing columns are empty in this mode (bing_status = \"ideas_mode_skipped\"); run metrics mode on the ideas you keep if you need Bing data for them. FREE PLAN: capped at 200 ideas per run — the run still succeeds and says so in its status message.",
            "default": 100
          },
          "bypassRunCache": {
            "title": "Bypass 24h run-cache",
            "type": "boolean",
            "description": "Paid plans only — on the free plan this flag is ignored and cached results are used when available. Skip the 24h KV Store run-cache and re-query upstream API live. You will be charged the full Google + Bing batch fees. Default false. Ideas mode does not use the run-cache, so this flag has no effect there.",
            "default": false
          },
          "includeBing": {
            "title": "Include Bing metrics",
            "type": "boolean",
            "description": "On by default — paid plans get Google + Bing columns in every run. Turn it off for Google only — skips the Bing fee ($0.40 per 200 keywords on the free tier, less on paid plans) and returns rows with bing_status \"user_disabled\", Google volume, CPC, competition and trend untouched. Paid plans only — on the free plan Bing is skipped anyway, so this flag changes nothing there. Default true.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}