{
  "url": "https://telipot.com/catalog/tasks/semrush.seo.keywords.difficulty",
  "id": "semrush.seo.keywords.difficulty",
  "name": "Keyword difficulty index of up to 100 keywords by country",
  "provider": {
    "slug": "semrush",
    "name": "Semrush"
  },
  "capability": "seo.keywords.difficulty",
  "platform": "seo",
  "kind": "data",
  "tier": "core",
  "identity": "key",
  "identityLabel": "Your plan",
  "price": {
    "native": {
      "text": "50 API units per result",
      "figure": "50 API units",
      "per": "result",
      "currency": "API units"
    },
    "confidence": "documented",
    "source": "docs",
    "sourceUrl": "https://developer.semrush.com/api/v3/seo/keyword-reports/#keyword-difficulty",
    "checked": "2026-10-05",
    "note": "50 API units per line returned, one line per keyword. Semrush does not charge a request that returns no data. Semrush publishes no USD price per API unit.",
    "type": "per_result",
    "state": "native",
    "label": "Semrush API units",
    "detail": "50 API units / result · docs"
  },
  "providers": 1,
  "retention": "standard",
  "runsOn": "byoc",
  "live": true,
  "summary": "This report provides keyword difficulty, an index that helps to estimate how difficult it would be to seize competitors’ positions in organic search within Google’s top 10 with a queried search term.",
  "method": "GET",
  "path": "/",
  "host": "https://api.semrush.com",
  "docsUrl": "https://developer.semrush.com/api/v3/seo/keyword-reports/#keyword-difficulty",
  "auth": {
    "scheme": "api_key",
    "label": "api_key · in query as key",
    "short": "api_key · ?key"
  },
  "scope": "any_account",
  "principal": "organization",
  "requiredScopes": [],
  "verification": {
    "state": "none",
    "label": "Not verified yet",
    "detail": "Not checked yet. We test with a real request before we mark it."
  },
  "input": [
    {
      "name": "type",
      "location": "queryParams",
      "type": "string",
      "required": true,
      "constraints": [
        "const \"phrase_kdi\""
      ],
      "note": "Fixed. Selects the Keyword Difficulty report."
    },
    {
      "name": "phrase",
      "location": "queryParams",
      "type": "string",
      "required": true,
      "constraints": [],
      "note": "From 1 to 100 keywords separated by semicolons."
    },
    {
      "name": "database",
      "location": "queryParams",
      "type": "string",
      "required": true,
      "constraints": [],
      "note": "Two-letter regional database code, such as us, uk, ca, de or fr. Keyword reports accept the plain two-letter codes only, not the mobile- and -ext variants. The full list is under Databases in the SEO API overview."
    },
    {
      "name": "export_columns",
      "location": "queryParams",
      "type": "string",
      "required": false,
      "constraints": [
        "default \"Ph,Kd\""
      ],
      "note": "Comma-separated column codes, in the order wanted. Ph Keyword, Kd Keyword Difficulty Index (0 to 100, higher is harder)."
    }
  ],
  "sampleInput": {
    "type": "phrase_kdi",
    "phrase": "seo",
    "database": "us",
    "export_columns": "Ph,Kd"
  },
  "inputSchema": {
    "type": "object",
    "properties": {
      "type": {
        "type": "string",
        "description": "Fixed. Selects the Keyword Difficulty report.",
        "const": "phrase_kdi"
      },
      "phrase": {
        "type": "string",
        "description": "From 1 to 100 keywords separated by semicolons.",
        "examples": [
          "seo;ebay"
        ]
      },
      "database": {
        "type": "string",
        "description": "Two-letter regional database code, such as us, uk, ca, de or fr. Keyword reports accept the plain two-letter codes only, not the mobile- and -ext variants. The full list is under Databases in the SEO API overview.",
        "examples": [
          "us"
        ]
      },
      "export_columns": {
        "type": "string",
        "description": "Comma-separated column codes, in the order wanted. Ph Keyword, Kd Keyword Difficulty Index (0 to 100, higher is harder).",
        "default": "Ph,Kd"
      }
    },
    "required": [
      "type",
      "phrase",
      "database"
    ],
    "additionalProperties": false
  },
  "output": [
    {
      "name": "output",
      "type": "string",
      "description": "CSV text: a header line of column names, then one line per keyword, columns separated by semicolons, in the order of export_columns. A body that starts with ERROR is a failure, for example ERROR 50 :: NOTHING FOUND."
    }
  ],
  "outputSchema": {
    "type": "string",
    "pattern": "^(?!\\s*ERROR)",
    "description": "CSV text: a header line of column names, then one line per keyword, columns separated by semicolons, in the order of export_columns. A body that starts with ERROR is a failure, for example ERROR 50 :: NOTHING FOUND."
  },
  "commands": {
    "mode": "run",
    "cli": "telipot run semrush.seo.keywords.difficulty \\\n  --input-json '{\"type\":\"phrase_kdi\",\"phrase\":\"seo\",\"database\":\"us\",\"export_columns\":\"Ph,Kd\"}'",
    "http": "curl https://api.telipot.com/v1/tasks/semrush.seo.keywords.difficulty/run \\\n  -H \"Authorization: Bearer $TELIPOT_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"type\":\"phrase_kdi\",\"phrase\":\"seo\",\"database\":\"us\",\"export_columns\":\"Ph,Kd\"}'",
    "quote": "telipot run semrush.seo.keywords.difficulty \\\n  --input-json '{\"type\":\"phrase_kdi\",\"phrase\":\"seo\",\"database\":\"us\",\"export_columns\":\"Ph,Kd\"}' \\\n  --quote"
  },
  "siblings": []
}
