# Google bulk keyword difficulty

This endpoint will provide you with the Keyword Difficulty metric for a maximum of 1,000 keywords in one API request. Needs keywords. Served by DataForSEO.

This endpoint will provide you with the Keyword Difficulty metric for a maximum of 1,000 keywords in one API request. Keyword Difficulty stands for the relative difficulty of ranking in the first top-10 organic results for the related keyword. Keyword Difficulty in DataForSEO API responses indicates the chance of getting in top-10 organic results for a keyword on a logarithmic scale from 0 to 100.

- Tool ID: `dataforseo/dataforseo-labs-google-bulk-keyword-difficulty`
- Name in the catalog: Seo Labs Google Bulk Keyword Difficulty
- Provider: [DataForSEO](/providers/dataforseo.md)
- Capability: [Keyword research](/tools/seo/keyword-research.md)
- Price: usage based, the maximum is shown before a run
- Authentication: an authorised Agentik workspace is required for execution, including zero-price tools.

## Pricing contract

Billed at the cost the provider reports for the call, never above $100. Your agent sees the maximum before running.


```json
{
  "model": "reported",
  "costPath": "cost",
  "maxUsdDefault": 0.012,
  "maxUsdCap": 100,
  "multipliers": [
    {
      "addUsdPer": {
        "field": "keywords",
        "usd": 0.00012,
        "default": 100,
        "max": 1000
      }
    }
  ],
  "requireCost": true
}
```

Pricing source: [https://docs.dataforseo.com/v3/appendix/user_data/](https://docs.dataforseo.com/v3/appendix/user_data/). Account tariff dataforseo_labs/bulk_keyword_difficulty/live; bounds applied to inputs; actual cost from provider response..

Price verification date: 2026-10-10.

## Complete input schema


```json
{
  "type": "object",
  "properties": {
    "keywords": {
      "type": "array",
      "description": "target keywords required field UTF-8 encoding maximum number of keywords you can specify in this array: 1000 the keywords will be converted to lowercase formatlearn more about rules and limitations of keyword and keywords fields in DataForS",
      "items": {
        "type": "string",
        "maxLength": 80,
        "minLength": 1
      },
      "maxItems": 100,
      "minItems": 1
    },
    "location_name": {
      "type": "string",
      "description": "full name of the location required field if don't specify location_code you can receive the list of available locations with their location_name by making a separate request to the https://api.dataforseo.com/v3/dataforseo_labs/locations_and",
      "maxLength": 2000,
      "minLength": 1
    },
    "location_code": {
      "type": "integer",
      "description": "location code required field if don't specify location_name you can receive the list of available locations with their location_code by making a separate request to the https://api.dataforseo.com/v3/dataforseo_labs/locations_and_languages e"
    },
    "language_name": {
      "type": "string",
      "description": "full name of the language required field if don't specify language_code you can receive the list of available languages with their language_name by making a separate request to the https://api.dataforseo.com/v3/dataforseo_labs/locations_and",
      "maxLength": 2000,
      "minLength": 1
    },
    "language_code": {
      "type": "string",
      "description": "language code required field if don't specify language_name you can receive the list of available languages with their language_code by making a separate request to the https://api.dataforseo.com/v3/dataforseo_labs/locations_and_languages e",
      "maxLength": 10,
      "minLength": 1
    },
    "tag": {
      "type": "string",
      "description": "user-defined task identifier optional field the character limit is 255 you can use this parameter to identify the task and match it with the result you will find the specified tag value in the data object of the response",
      "maxLength": 255
    }
  },
  "required": [
    "keywords"
  ],
  "additionalProperties": false,
  "allOf": [
    {
      "anyOf": [
        {
          "required": [
            "location_code"
          ]
        },
        {
          "required": [
            "location_name"
          ]
        }
      ]
    },
    {
      "anyOf": [
        {
          "required": [
            "language_code"
          ]
        },
        {
          "required": [
            "language_name"
          ]
        }
      ]
    }
  ]
}
```

## Published example

This is the provider tool’s published example. Replace example values with the user’s requested inputs, respecting the schema; do not execute an example merely to test a connection.


```json
{
  "tool_id": "dataforseo/dataforseo-labs-google-bulk-keyword-difficulty",
  "input": {
    "location_code": 2250,
    "language_code": "fr",
    "keywords": [
      "logiciel crm",
      "agent ia"
    ]
  }
}
```

## Execute and retrieve

Inspect again before execution, explain the price and obtain the required authority. Use MCP run_tool or POST /v1/run with this tool ID, valid input and an idempotency key. Save the returned run ID and follow the actual state. If Agentik answers that the tool is temporarily unavailable, do not retry it blindly; use discovery to propose an alternative.

A partial or uncertain result can still have consumed provider resources. Consult [billing](/docs/billing.md), [idempotency](/docs/idempotency.md) and [asynchronous results](/docs/async.md).

[Provider documentation](https://docs.dataforseo.com/v3/dataforseo_labs/google/bulk_keyword_difficulty/live/)

[REST inspection](https://api.agentik.cc/v1/tools/dataforseo/dataforseo-labs-google-bulk-keyword-difficulty) · [OpenAPI](/openapi.json) · [Connection guide](/connect.md)

---

[HTML page](/providers/dataforseo/dataforseo-labs-google-bulk-keyword-difficulty) · [Agent index](/llms.txt)
