Docs menu

Keyword researchGET$0.06

/v1/keyword-research

One seed, the whole picture: keywords and questions from autocomplete and the paid index, with volume, CPC, difficulty and intent attached.

The other three keyword calls are components — useful when an agent is deciding exactly what to pay for. This is the one to call when you want an answer. It runs public autocomplete and the paid keyword index together, merges them, prices the terms autocomplete found that the index did not, and splits the result into keywords and questions.

Each row carries `sources`: `index` means the paid keyword index knows it, `autocomplete` means people are typing it, and both is the strongest signal you can get for a term. Rows the index has never priced come back with null metrics rather than being dropped.

At $0.06 it costs less than keyword-ideas ($0.05) plus keyword-metrics ($0.03) bought separately, and it includes the autocomplete pass for free.

Parameters#

NameDescription
seedrequiredkeyword to research (1–80 chars)
countryoptional2-letter country code, default us
langoptional2-letter language code, default en
limitoptionalrows per list, 1–200 (default 100)

Request#

Plain GET. Without a payment header the response is a 402 carrying the price; an x402 client pays and retries on its own — see the quickstart.

request
GET https://citable.run/v1/keyword-research?seed=reksadana&country=id&lang=id

Response#

200 with the JSON below (trimmed) and the settlement signature in the PAYMENT-RESPONSE header. Every paid response also carries price and cluster.

200 · application/json
{
  "seed": "reksadana",
  "country": "id",
  "lang": "id",
  "keywords": [
    { "keyword": "reksadana", "volume": 74000, "cpc": 0.18, "competition": "low", "difficulty": 41, "intent": "informational", "sources": ["index", "autocomplete"], "isQuestion": false },
    { "keyword": "reksadana pasar uang", "volume": 27100, "cpc": 0.22, "competition": "low", "difficulty": 33, "intent": "informational", "sources": ["index"], "isQuestion": false },
    { "keyword": "reksadana bibit", "volume": 12100, "cpc": null, "competition": null, "difficulty": 28, "intent": "commercial", "sources": ["index", "autocomplete"], "isQuestion": false }
  ],
  "questions": [
    { "keyword": "apa itu reksadana", "volume": 8100, "cpc": 0.11, "competition": "low", "difficulty": 22, "intent": "informational", "sources": ["index", "autocomplete"], "isQuestion": true },
    { "keyword": "bagaimana cara beli reksadana", "volume": 1300, "cpc": null, "competition": null, "difficulty": null, "intent": null, "sources": ["autocomplete"], "isQuestion": true }
  ],
  "summary": { "total": 128, "withVolume": 104, "questions": 23, "totalFoundForSeed": 1840 },
  "sources": { "index": true, "autocomplete": true },
  "price": "$0.06",
  "cluster": "mainnet"
}

Errors#

Any non-200 cancels the payment — errors are free.

StatusCodeWhen
400invalid_seedseed missing or longer than 80 chars
400invalid_localecountry or lang is not a 2-letter code
502upstream_failedthe data source did not answer — nothing is charged
503not_configuredthis deployment has no credentials for the source — nothing is charged

MCP tool#

The same call from Claude, Codex or Cursor once citable-mcp is installed. Arguments mirror the parameters above.

mcp
citable_keyword_research(seed, country?, lang?, limit?)   $0.06

Source & latency#

Data sourceTypical latency
Public autocomplete (in-house) + DataForSEO Labs~4–8 s

Note

Autocomplete is best-effort: if it fails the paid half still answers, and `sources.autocomplete` says so.

Pairs with#