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.
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
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.
// 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 doNot 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.
| Charge | Price |
|---|---|
Per call | $0.00546 |
- Updated
- Oct 25, 2026
Input and output schemas
Input schema
{
"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
{
"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
}