SEO Keyword Ideas and Difficulty
Keyword ideas for a seed keyword, each with Google search volume, CPC, competition, keyword difficulty and search intent; up to 100 ideas in one $0.04 call (Google Ads data). Use when you need related keywords to target. volume = avg monthly searches, cpc in USD, competition 0-1, difficulty 0-100. No ideas returns empty results (still charged). Bad input is free; upstream errors are not charged.
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-ideas- MIME type
- application/json
- First seen
- 2026-10-16T01:50:24.663Z
- Last seen
- Tags
- keyword-ideas, keyword-research, seo, search-volume, 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
- Reachable
- Latest latency
- 230 ms
- Average latency
- 671 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": {
"keyword": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "Seed keyword to expand (at most 80 characters). Whitespace and control characters are normalised to single spaces and the seed to lower case; only a seed of 1 to 10 words and at most 80 characters can be expanded, so a seed that is then empty or longer is a free 400."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "Maximum ideas to return. Defaults to 20."
},
"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 idea's monthly search volumes (monthly[])."
}
},
"required": [
"keyword"
]
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"additionalProperties": false
}Output schema
{
"type": "object",
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object"
}
},
"required": [
"type"
]
}