Skip to content
Eden Engine

Keyword Search Volume, CPC & Difficulty

omnial/keyword-metrics

Given a keyword and a two-letter country code, returns average monthly search volume, estimated cost-per-click, a keyword difficulty score, competitive density, the count of ranking results, search intent tags, a monthly search-volume trend, and the SERP features seen for that keyword in that country. A niche or very low-volume keyword can come back with the volume/CPC/difficulty fields absent entirely rather than zero.

activeper callv2

Price

Up to $0.00546 per call; you pay what the call used

You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $0.50.

Data source

Semrush

Data from Semrush.

Use it

Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.

Connect once and your AI can find and run this tool, and any other it needs.

agent
// 1. search: find the tool
omnial_search({ query: "what you need" })

// 2. inspect: price and input schema
omnial_inspect({ tool: "omnial/keyword-metrics" })

// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "omnial/keyword-metrics" })

// 4. run: price the exact call first, then run it
omnial_execute({ tool: "omnial/keyword-metrics", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "omnial/keyword-metrics", input: { /* ... */ } })

// 5. settle: the call is charged when it finishes, nothing to do

Not connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.

Pricing

Every charge this tool can incur.

ChargePrice
Per call
$0.00546
Updated
Oct 25, 2026

Input and output schemas

Input schema
input_schema.json
{
  "type": "object",
  "required": [
    "keyword",
    "country"
  ],
  "properties": {
    "month": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}$",
      "description": "Monthly snapshot in YYYY-MM format (min 2012-01, max the current month). Defaults to the current month."
    },
    "country": {
      "type": "string",
      "maxLength": 2,
      "minLength": 2,
      "description": "Two-letter ISO 3166-1 country code the metrics are returned for, e.g. 'US', 'UK', 'DE'."
    },
    "keyword": {
      "type": "string",
      "maxLength": 255,
      "minLength": 1,
      "description": "Keyword / search phrase to analyze, e.g. 'seo tools'."
    }
  },
  "additionalProperties": false
}
Output schema
output_schema.json
{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "cpc": {
          "type": "number",
          "description": "Estimated cost-per-click. Unit is unconfirmed from the vendor's own docs -- observed as the integer 779 for a highly competitive commercial keyword, consistent with hundredths of a US dollar (~$7.79) rather than whole dollars. Absent (not zero) on a niche keyword with too little data."
        },
        "trends": {
          "type": "array",
          "items": {
            "type": "number"
          },
          "description": "A monthly relative search-volume index (0-100 scale, 12 entries observed for a keyword with real volume). Empty array observed for a niche long-tail keyword with too little data."
        },
        "intents": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Search intent tags, e.g. \"INFORMATIONAL\", \"COMMERCIAL\". Empty array observed for a niche long-tail keyword with too little data to classify."
        },
        "search_volume": {
          "type": "integer",
          "description": "Average monthly search volume for the keyword in the given country. Absent (not zero) when the keyword has too little data, as observed on a niche long-tail keyword."
        },
        "serp_features": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "SERP feature tags present for the keyword, e.g. \"PEOPLE_ALSO_ASK\", \"VIDEO_CAROUSEL\", \"AI_OVERVIEW\". Empty array observed for a niche long-tail keyword."
        },
        "number_of_results": {
          "type": "integer",
          "description": "Count of ranking results for the keyword, observed at 122. Absent (not zero) on a niche keyword with too little data."
        },
        "keyword_difficulty": {
          "type": "integer",
          "description": "0-100 scale, observed at 95 for a highly competitive keyword. Absent (not zero) on a niche keyword with too little data."
        },
        "competitive_density": {
          "type": "number",
          "description": "Advertiser competition density, observed at 3 for a highly competitive keyword. Absent (not zero) on a niche keyword with too little data."
        }
      },
      "description": "On a very low-volume/niche keyword (e.g. a long-tail DE keyword), search_volume, cpc, keyword_difficulty, competitive_density, and number_of_results are ABSENT from this object entirely rather than present as 0 -- only intents/trends/serp_features are guaranteed present, and may themselves be empty arrays.",
      "additionalProperties": true
    },
    "type": {
      "type": "string",
      "description": "Typically the literal string \"keyword_metrics\"."
    }
  },
  "description": "The keyword-metrics record.",
  "additionalProperties": true
}