{
  "openapi": "3.0.1",
  "info": {
    "title": "Keyword Difficulty Checker — Bulk Keyword Difficulty Scores",
    "description": "Keyword difficulty for your whole list — a 0–100 score per keyword with Google Ads search volume, CPC, competition and search intent on the same row; a keyword with no score is never charged. From $2.00 per 1,000 keyword results; one $0.19 fresh-lookup fee per run that buys new data.",
    "version": "1.0",
    "x-build-id": "kB9HddbldlByZlAcF"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/steadyfetch~keyword-difficulty-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-steadyfetch-keyword-difficulty-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-difficulty-scraper/runs": {
      "post": {
        "operationId": "runs-sync-steadyfetch-keyword-difficulty-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-difficulty-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-steadyfetch-keyword-difficulty-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 check keyword difficulty for, 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 score 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, 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 keyword list here instead — one keyword per line, or comma-separated, e.g. \"crm for startups, project management software\". Merged with the list above; duplicates are charged once."
          },
          "country": {
            "title": "Country",
            "type": "string",
            "description": "Country the keyword difficulty is measured in — pick one, 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 location code (2840) all work. 94 markets are carried, one per run, so there is no worldwide, EU or region-wide score. 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": "Language of the searches as a code, a tag or the English name, e.g. \"en\", \"en-US\" or \"German\" — leave it empty to use the country's main language (English for the US, German for Germany). Each market is reported in its own languages only (Canada in English and French, Switzerland in German, French and Italian); a language the country is not reported in is refused, uncharged, and the row names the ones that work."
          },
          "maxItems": {
            "title": "Max keyword rows for the whole run",
            "minimum": 1,
            "type": "integer",
            "description": "Max keyword rows for the whole run, a whole number up to 100,000, e.g. 500 — a hard cap on charged rows. 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": "Max run seconds, a whole number of seconds, e.g. 900 — 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. The run's own Timeout (Run options, or timeout on an API call) is a separate limit: when it ends the run first, the status line says to raise that Timeout instead.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}