Api Endpoint

SEO Keyword Overview and Volume

Search volume, CPC, competition, keyword difficulty and search intent for up to 100 keywords in one $0.04 call (Google Ads data). Use when you already have a keyword list to prioritise. volume = avg monthly searches, cpc in USD, competition 0-1, difficulty 0-100. Keywords without data are left out of results and listed in missing (still charged). Bad input is free; upstream errors are not charged.

Open interactive test console

Offering

Provider
keywords.duoleads.com
Method
POST
Offering type
Api Endpoint
Transport type
http
Category
Business And Commerce
Delivery
Not provided
Pricing model
Not provided
x402 version
2

Endpoint context

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

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
Reachable
Latest latency
56 ms
Average latency
177 ms
HTTP status
405
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": [
        "POST"
      ]
    },
    "bodyType": {
      "type": "string",
      "enum": [
        "json",
        "form-data",
        "text"
      ]
    },
    "body": {
      "type": "object",
      "properties": {
        "keywords": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80
          },
          "minItems": 1,
          "maxItems": 100,
          "description": "Keywords to look up (1-100; 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, and a request with no keyword left to look up is a free 400 (the one exception to openverbs schema compatibility)."
        },
        "locationCode": {
          "type": "integer",
          "description": "Google Ads location code (geo target ID). Defaults to 2840 (United States); an unsupported code falls back to 2840 (United States, market.fallback)."
        },
        "languageCode": {
          "type": "string",
          "description": "Language code (2-letter). Defaults to en. An unsupported location falls back to 2840 (United States) with en (or the requested language if the United States offers it); a supported location with a language it does not offer uses that location's default language (en if offered). Either way market.fallback is true and market.warnings says what was used."
        },
        "country": {
          "type": "string",
          "description": "Optional ISO 3166-1 alpha-2 code or country name, used when locationCode is absent (uk = gb)."
        },
        "includeMonthly": {
          "type": "boolean",
          "description": "Add each keyword's monthly search volumes (monthly[])."
        }
      },
      "required": [
        "keywords"
      ]
    }
  },
  "required": [
    "type",
    "method",
    "bodyType",
    "body"
  ],
  "additionalProperties": false
}

Output schema

{
  "type": "object",
  "properties": {
    "type": {
      "type": "string"
    },
    "example": {
      "type": "object"
    }
  },
  "required": [
    "type"
  ]
}