Api Endpoint

SEO Keyword Search Volume, CPC

Google search volume, CPC, competition, keyword difficulty and intent for up to 20 comma-separated keywords in one $0.04 GET (Google Ads data). Use when you need monthly search volume for a few keywords in a country. volume = avg monthly searches, cpc in USD, competition 0-1, difficulty 0-100. Up to 100 keywords for the same $0.04: POST /v1/keyword-overview. Keywords without data are listed in missing (still charged). Bad input is free; upstream errors are not charged.

Open interactive test console

Offering

Provider
keywords.duoleads.com
Method
GET
Offering type
Api Endpoint
Transport type
http
Category
Web Search Research
Delivery
Not provided
Pricing model
Not provided
x402 version
2

Endpoint context

URL
https://keywords.duoleads.com/v1/search-volume
MIME type
application/json
First seen
2026-10-16T01:50:24.663Z
Last seen
Tags
search-volume, keyword-research, seo, cpc, keyword-difficulty

Payment pricing

x402 payment terms are the authoritative price for calling this endpoint.

Payment option 1
0.04 USDC
Atomic price: 40000 · Network: eip155:8453 · Asset: USDC · Scheme: exact
Raw x402 terms
[
  {
    "scheme": "exact",
    "network": "eip155:8453",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "amount": "40000",
    "payTo": "0xCD673f7e1daD254347AEab6be0DEFe8b9C6b3A39"
  }
]

Observed health

Status
Healthy
Latest latency
45 ms
Average latency
749 ms
HTTP status
402
Last checked
Reachability
100% over 14 checks

Latency is measured to the first response headers. A reachable result does not verify response accuracy or merchant identity.

Input schema

{
  "type": "object",
  "properties": {
    "type": {
      "type": "string",
      "const": "http"
    },
    "method": {
      "type": "string",
      "enum": [
        "GET"
      ]
    },
    "queryParams": {
      "type": "object",
      "properties": {
        "keywords": {
          "type": "string",
          "minLength": 1,
          "maxLength": 2000,
          "description": "1-20 keywords, comma-separated (empty segments are ignored); each at most 80 characters. Whitespace and control characters are normalised to single spaces and keywords to lower case; a keyword that is then empty, over 10 words or over 80 characters is not looked up and is listed in missing; none left to look up is a free 400."
        },
        "country": {
          "type": "string",
          "pattern": "^[A-Za-z]{2}$",
          "default": "us",
          "description": "ISO 3166-1 alpha-2 country code of a supported location (us, gb, de, ...; uk = gb). Default us."
        },
        "lang": {
          "type": "string",
          "maxLength": 16,
          "pattern": "^[A-Za-z]{2,3}([-_][A-Za-z0-9]{2,8})*$",
          "description": "Language code offered for the country (en, es, de, ...; en-US = en). Default: en when offered, else the country's main language."
        },
        "includeMonthly": {
          "type": "string",
          "enum": [
            "true",
            "false"
          ],
          "description": "true adds each keyword's monthly search volumes."
        }
      },
      "required": [
        "keywords"
      ]
    }
  },
  "required": [
    "type",
    "method"
  ],
  "additionalProperties": false
}

Output schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "method": {
          "enum": [
            "GET"
          ],
          "type": "string"
        },
        "queryParams": {
          "properties": {
            "country": {
              "default": "us",
              "description": "ISO 3166-1 alpha-2 country code of a supported location (us, gb, de, ...; uk = gb). Default us.",
              "pattern": "^[A-Za-z]{2}$",
              "type": "string"
            },
            "includeMonthly": {
              "description": "true adds each keyword's monthly search volumes.",
              "enum": [
                "true",
                "false"
              ],
              "type": "string"
            },
            "keywords": {
              "description": "1-20 keywords, comma-separated (empty segments are ignored); each at most 80 characters. Whitespace and control characters are normalised to single spaces and keywords to lower case; a keyword that is then empty, over 10 words or over 80 characters is not looked up and is listed in missing; none left to look up is a free 400.",
              "maxLength": 2000,
              "type": "string"
            },
            "lang": {
              "default": "en",
              "description": "Language code offered for the country (en, es, de, ...; en-US = en). Default: en when offered, else the country's main language.",
              "maxLength": 16,
              "type": "string"
            }
          },
          "required": [
            "keywords"
          ],
          "type": "object"
        },
        "type": {
          "const": "http",
          "type": "string"
        }
      },
      "required": [
        "type",
        "method"
      ],
      "type": "object"
    },
    "output": {
      "properties": {
        "example": {
          "type": "object"
        },
        "type": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    }
  },
  "required": [
    "input"
  ],
  "type": "object"
}