Contract
{
"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
}{
"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 (see the DE fixture), 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": "The literal string \"keyword_metrics\" on both real fixtures observed."
}
},
"description": "The keyword-metrics record, as returned at routing.responseResultPath ($.output).",
"additionalProperties": true
}Pricing
Every real charge, itemised. A model that quietly omits one is a slow financial leak, so nothing here is rolled up, and a charge that only applies to some inputs says so rather than being added in.
Prices in this catalog are the provider's own list price, not your bill: Omnial MCP charges provider cost plus a platform markup on top, so what you are charged is higher than the figure shown. For the exact amount a specific call will cost, run omnial_execute with dry_run: true; that number includes the markup and is what we hold while the call runs. It is a quote, not a cap on the charge.
| Charge | Rate |
|---|---|
Per call Flat, regardless of what comes back | $0.00546 |
- Cost basis
- Not recorded
This tool's catalog entry does not record how its final bill is determined, so we will not tell you whether its cost is fixed before the call or reported by the provider afterwards. Either way what is held is a quote rather than a cap: you are charged what the call actually costs, bounded at 2x the quote.
- Updated
- Sep 8, 2026
