Contract
{
"type": "object",
"required": [
"domain",
"display_date"
],
"properties": {
"domain": {
"type": "string",
"minLength": 1,
"description": "Root domain to analyze, e.g. 'apple.com' (no scheme)."
},
"database": {
"type": "string",
"default": "us",
"minLength": 2,
"description": "Regional Semrush database (Google region), e.g. 'us', 'uk', 'de', 'fr'. Mobile ('mobile-us') and extended ('us-ext') variants are also accepted. Defaults to 'us'. Full list: https://developer.semrush.com/api/v3/seo/overview/ (Databases). Tip: run /domain_ranks first to see every database a domain has data in."
},
"display_date": {
"type": "string",
"pattern": "^\\d{6}15$",
"description": "Historical month to report on, in Semrush's YYYYMM15 format (e.g. '20260415' for April 2026). REQUIRED — this endpoint bills the historical rate; use the non-history endpoint for live data."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"type",
"database",
"rows"
],
"properties": {
"rows": {
"type": "array",
"items": {
"type": "object",
"required": [
"domain",
"semrushRank",
"organicKeywords",
"organicTraffic",
"organicCost",
"adwordsKeywords",
"adwordsTraffic",
"adwordsCost"
],
"properties": {
"domain": {
"type": "string",
"description": "The requested root domain, e.g. 'apple.com'."
},
"adwordsCost": {
"type": "string",
"description": "Semrush's estimated paid search spend for the domain, as a numeric string."
},
"organicCost": {
"type": "string",
"description": "Semrush's estimated cost-equivalent of the domain's organic traffic (what that traffic would cost via paid search), as a numeric string -- a cost estimate, not a phone number, despite its digit count."
},
"semrushRank": {
"type": "string",
"description": "The domain's Semrush Rank for that month, as a numeric string (e.g. '17'), not a number."
},
"adwordsTraffic": {
"type": "string",
"description": "Semrush's estimated paid search traffic for the domain, as a numeric string."
},
"organicTraffic": {
"type": "string",
"description": "Semrush's estimated organic search traffic for the domain that month, as a numeric string -- a traffic-volume estimate, not a phone number, despite its digit count."
},
"adwordsKeywords": {
"type": "string",
"description": "Count of paid (AdWords) keywords the domain bid on, as a numeric string."
},
"organicKeywords": {
"type": "string",
"description": "Count of organic keywords the domain ranked for, as a numeric string."
}
},
"additionalProperties": true
},
"description": "One entry per real fixture observed (always length 1 for a single domain lookup)."
},
"type": {
"type": "string",
"description": "Observed as the literal string 'domain_rank' on both real fixtures."
},
"database": {
"type": "string",
"description": "Echoes the requested regional database, e.g. 'us', 'de'."
}
},
"description": "The domain rank 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.01365 |
- 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 23, 2026
