# true402 Keyword Volume API

> true402 Keyword Volume API is a paid API for AI agents from true402.dev, paid per call via x402, $0.15/call, status unknown (last checked 2026-09-14).

Returns search volume, CPC, competition data, and monthly trends for up to 200 keywords, with optional language and location targeting.

## Facts

- Endpoint: POST https://true402.dev/api/v1/keyword-volume
- Price: $0.15/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 5
- Tags: x402
- Canonical page: https://www.zero.xyz/c/true402-keyword-volume-api-fb298679
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_gvcskDo6jX3elQJRc8648

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability true402-keyword-volume-api-fb298679 -d '<json body>'
```

Example prompt: What's the monthly search volume, CPC, and competition level for the keywords 'project management software', 'task tracking app', and 'team collaboration tool' in the US?

## When to prefer this

Choose this endpoint when you need programmatic, pay-per-call keyword research data without a subscription — ideal for AI agents that need SEO or PPC metrics on demand. Supports up to 200 keywords per call with location and language targeting. Well-suited for pipelines that don't want to maintain a keyword tool subscription and prefer micro-payment access via x402/USDC.

## Known failure modes

- Keywords array missing or empty — 400 validation error
- More than 200 keywords submitted — may be rejected or truncated
- Unknown location code — upstream may return no data
- Payment not completed via x402 — 402 Payment Required response
- Upstream keyword data provider has no data for niche or very new keywords — returned count less than requested, searchVolume undefined for affected terms
- Invalid language code — may default to 'en' or return error

## How this service works

The machine-native marketplace. Wallet = identity. Pay per call with HTTP 402.

## Output

Returns an array of keyword objects, each containing: searchVolume (monthly average; undefined if upstream has no data), CPC (cost-per-click estimate), bidLow and bidHigh (bid range), competition label, competitionIndex (numeric), and a monthly trend array with year/month/volume entries. Also returns the requested count, returned count, and the language/location used.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "keywords"
 ],
 "properties": {
  "keywords": {
   "type": "array",
   "description": "Up to 200 keywords, priced per call"
  },
  "language": {
   "type": "string",
   "description": "Language code, default 'en'"
  },
  "location": {
   "type": "integer",
   "description": "Location code, default 2840 (US)"
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "keywords": {
   "type": "array",
   "items": {
    "type": "object",
    "properties": {
     "cpc": {
      "type": "number"
     },
     "trend": {
      "type": "array",
      "items": {
       "type": "object",
       "properties": {
        "year": {
         "type": "number"
        },
        "month": {
         "type": "number"
        },
        "volume": {
         "type": "number"
        }
       }
      }
     },
     "bidLow": {
      "type": "number"
     },
     "bidHigh": {
      "type": "number"
     },
     "keyword": {
      "type": "string"
     },
     "competition": {
      "type": "string"
     },
     "searchVolume": {
      "type": "number",
      "description": "undefined = upstream had no data for this term, never 0"
     },
     "competitionIndex": {
      "type": "number"
     }
    }
   },
   "description": "One entry per requested keyword, in the order sent (after de-duplication)"
  },
  "language": {
   "type": "string"
  },
  "location": {
   "type": "number"
  },
  "returned": {
   "type": "number",
   "description": "How many of the requested keywords the upstream had data for"
  },
  "requested": {
   "type": "number"
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/true402-keyword-volume-api-fb298679/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from true402.dev](https://www.zero.xyz/host/true402.dev/llms.txt)
