SpyFu · Schema
SpyFu Kombat API Schemas
JSON Schema definitions for SpyFu Kombat API API responses
SEOPPCCompetitive IntelligenceKeyword ResearchAd HistoryBacklinksDomain AnalyticsSERP
JSON Schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "SpyFu Kombat API Schemas",
"description": "JSON Schema definitions for SpyFu Kombat API API responses",
"definitions": {
"KombatApi_GetCompetingPpcKeywords_GET": {
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Get Competing PPC Keywords",
"description": "Response wrapper containing competitive keyword analysis data showing keywords where multiple domains compete in the same search channel with pagination metadata.",
"type": "object",
"properties": {
"resultCount": {
"description": "Number of results returned",
"type": "integer",
"format": "int32",
"examples": [
100
],
"readOnly": true
},
"totalMatchingResults": {
"description": "Total number of competitive keywords available that match the query criteria, including results not included in the current page.",
"type": "integer",
"format": "int64",
"examples": [
50000
],
"readOnly": true
},
"results": {
"description": "Array of competitive keywords with detailed metrics showing overlap between multiple domains in either SEO or PPC search channels.",
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"keyword": {
"description": "The keyword that shows competitive overlap between multiple domains in the same search channel.",
"type": [
"string",
"null"
],
"examples": [
"running shoes"
]
},
"searchVolume": {
"description": "Estimated monthly search volume for this keyword based on Google search data across the selected country/region, blended from multiple sources for accuracy.",
"type": [
"integer",
"null"
],
"format": "int64",
"examples": [
266000
]
},
"liveSearchVolume": {
"description": "Adjusted search volume based on recent trends and real-time data, providing a more current estimate than historical averages.",
"type": [
"integer",
"null"
],
"format": "int64",
"examples": [
82000
]
},
"rankingDifficulty": {
"description": "SEO difficulty score (0-100) indicating how challenging it would be to rank organically for this keyword, with 100 being most difficult.",
"type": [
"integer",
"null"
],
"format": "int32",
"examples": [
98
]
},
"totalMonthlyClicks": {
"description": "Total estimated monthly clicks (both organic and paid) generated from search results for this keyword.",
"type": [
"integer",
"null"
],
"format": "int64",
"examples": [
219000
]
},
"percentMobileSearches": {
"description": "Percentage of searches for this keyword that originate from mobile devices (0.0-1.0).",
"type": [
"number",
"null"
],
"format": "double",
"examples": [
0.52
]
},
"percentDesktopSearches": {
"description": "Percentage of searches for this keyword that originate from desktop devices (0.0-1.0).",
"type": [
"number",
"null"
],
"format": "double",
"examples": [
0.48
]
},
"percentSearchesNotClicked": {
"description": "Percentage of searches where users leave the SERP without clicking any result, often due to sufficient information in featured snippets or direct answers (0.0-1.0).",
"type": [
"number",
"null"
],
"format": "double",
"examples": [
0.18
]
},
"percentPaidClicks": {
"description": "Percentage of total SERP clicks that go to paid ad results (0.0-1.0).",
"type": [
"number",
"null"
],
"format": "double",
"examples": [
0.52
]
},
"percentOrganicClicks": {
"description": "Percentage of total SERP clicks that go to organic search results (0.0-1.0).",
"type": [
"number",
"null"
],
"format": "double",
"examples": [
0.48
]
},
"broadCostPerClick": {
"description": "Average cost-per-click for broad match keyword targeting, representing what advertisers typically pay when their ads are triggered by related keywords.",
"type": [
"number",
"null"
],
"format": "double",
"examples": [
0.73
]
},
"phraseCostPerClick": {
"description": "Average cost-per-click for phrase match keyword targeting, where ads show for searches that include the keyword phrase in the same order.",
"type": [
"number",
"null"
],
"format": "double",
"examples": [
0.67
]
},
"exactCostPerClick": {
"description": "Average cost-per-click for exact match keyword targeting, the most precise and typically highest-performing match type.",
"type": [
"number",
"null"
],
"format": "double",
"examples": [
0.65
]
},
"broadMonthlyClicks": {
"description": "Estimated monthly paid clicks for broad match targeting of this keyword.",
"type": [
"number",
"null"
],
"format": "float",
"examples": [
57019.8
]
},
"phraseMonthlyClicks": {
"description": "Estimated monthly paid clicks for phrase match targeting of this keyword.",
"type": [
"number",
"null"
],
"format": "float",
"examples": [
38000
]
},
"exactMonthlyClicks": {
"description": "Estimated monthly paid clicks for exact match targeting of this keyword.",
"type": [
"number",
"null"
],
"format": "float",
"examples": [
29094.6
]
},
"broadMonthlyCost": {
"description": "Estimated monthly advertising spend for broad match targeting of this keyword.",
"type": [
"number",
"null"
],
"format": "double",
"examples": [
41604.9
]
},
"phraseMonthlyCost": {
"description": "Estimated monthly advertising spend for phrase match targeting of this keyword.",
"type": [
"number",
"null"
],
"format": "double",
"examples": [
25542
]
},
"exactMonthlyCost": {
"description": "Estimated monthly advertising spend for exact match targeting of this keyword.",
"type": [
"number",
"null"
],
"format": "double",
"examples": [
19041.6
]
},
"paidCompetitors": {
"description": "Total number of unique advertisers observed purchasing ads for this keyword over the last 14 months, indicating competitive intensity.",
"type": [
"integer",
"null"
],
"format": "int32",
"examples": [
15
]
},
"distinctCompetitors": {
"description": "List of domain names that have purchased ads for this keyword over the last 14 months.",
"type": [
"array",
"null"
],
"items": {
"type": "string"
},
"examples": [
[
"example.com",
"competitor1.com",
"competitor2.com"
]
]
},
"rankingHomepages": {
"description": "Number of domain homepages (root URLs) ranking within the first 100 organic search results for this keyword.",
"type": [
"integer",
"null"
],
"format": "int32",
"examples": [
8
]
},
"serpFeaturesCsv": {
"description": "Comma-separated list of SERP features present for this keyword (e.g., Images, Videos, Maps, Shopping), indicating competition for organic real estate.",
"type": [
"string",
"null"
],
"examples": [
"Images,Maps"
]
},
"serpFirstResult": {
"description": "Domain name of the top-ranking organic result for this keyword, useful for identifying category leaders.",
"type": [
"string",
"null"
],
"examples": [
"example.com"
]
},
"isQuestion": {
"description": "Indicates whether this keyword is phrased as a question (who, what, when, where, why, how).",
"type": "boolean",
"examples": [
false
]
},
"isNotSafeForWork": {
"description": "Indicates whether this keyword is flagged as containing adult or inappropriate content.",
"type": "boolean",
"examples": [
false
]
}
},
"additionalProperties": false,
"description": "Represents a competitive keyword with comprehensive metrics including search volume, competition analysis, cost data, and SERP characteristics for competitive intelligence analysis."
},
"readOnly": true
}
},
"additionalProperties": false
},
"KombatApi_GetCompetingSeoKeywords_GET": {
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Get Competing SEO Keywords",
"description": "Response wrapper containing competitive keyword analysis data showing keywords where multiple domains compete in the same search channel with pagination metadata.",
"type": "object",
"properties": {
"resultCount": {
"description": "Number of results returned",
"type": "integer",
"format": "int32",
"examples": [
100
],
"readOnly": true
},
"totalMatchingResults": {
"description": "Total number of competitive keywords available that match the query criteria, including results not included in the current page.",
"type": "integer",
"format": "int64",
"examples": [
50000
],
"readOnly": true
},
"results": {
"description": "Array of competitive keywords with detailed metrics showing overlap between multiple domains in either SEO or PPC search channels.",
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"keyword": {
"description": "The keyword that shows competitive overlap between multiple domains in the same search channel.",
"type": [
"string",
"null"
],
"examples": [
"running shoes"
]
},
"searchVolume": {
"description": "Estimated monthly search volume for this keyword based on Google search data across the selected country/region, blended from multiple sources for accuracy.",
"type": [
"integer",
"null"
],
"format": "int64",
"examples": [
266000
]
},
"liveSearchVolume": {
"description": "Adjusted search volume based on recent trends and real-time data, providing a more current estimate than historical averages.",
"type": [
"integer",
"null"
],
"format": "int64",
"examples": [
82000
]
},
"rankingDifficulty": {
"description": "SEO difficulty score (0-100) indicating how challenging it would be to rank organically for this keyword, with 100 being most difficult.",
"type": [
"integer",
"null"
],
"format": "int32",
"examples": [
98
]
},
"totalMonthlyClicks": {
"description": "Total estimated monthly clicks (both organic and paid) generated from search results for this keyword.",
"type": [
"integer",
"null"
],
"format": "int64",
"examples": [
219000
]
},
"percentMobileSearches": {
"description": "Percentage of searches for this keyword that originate from mobile devices (0.0-1.0).",
"type": [
"number",
"null"
],
"format": "double",
"examples": [
0.52
]
},
"percentDesktopSearches": {
"description": "Percentage of searches for this keyword that originate from desktop devices (0.0-1.0).",
"type": [
"number",
"null"
],
"format": "double",
"examples": [
0.48
]
},
"percentSearchesNotClicked": {
"description": "Percentage of searches where users leave the SERP without clicking any result, often due to sufficient information in featured snippets or direct answers (0.0-1.0).",
"type": [
"number",
"null"
],
"format": "double",
"examples": [
0.18
]
},
"percentPaidClicks": {
"description": "Percentage of total SERP clicks that go to paid ad results (0.0-1.0).",
"type": [
"number",
"null"
],
"format": "double",
"examples": [
0.52
]
},
"percentOrganicClicks": {
"description": "Percentage of total SERP clicks that go to organic search results (0.0-1.0).",
"type": [
"number",
"null"
],
"format": "double",
"examples": [
0.48
]
},
"broadCostPerClick": {
"description": "Average cost-per-click for broad match keyword targeting, representing what advertisers typically pay when their ads are triggered by related keywords.",
"type": [
"number",
"null"
],
"format": "double",
"examples": [
0.73
]
},
"phraseCostPerClick": {
"description": "Average cost-per-click for phrase match keyword targeting, where ads show for searches that include the keyword phrase in the same order.",
"type": [
"number",
"null"
],
"format": "double",
"examples": [
0.67
]
},
"exactCostPerClick": {
"description": "Average cost-per-click for exact match keyword targeting, the most precise and typically highest-performing match type.",
"type": [
"number",
"null"
],
"format": "double",
"examples": [
0.65
]
},
"broadMonthlyClicks": {
"description": "Estimated monthly paid clicks for broad match targeting of this keyword.",
"type": [
"number",
"null"
],
"format": "float",
"examples": [
57019.8
]
},
"phraseMonthlyClicks": {
"description": "Estimated monthly paid clicks for phrase match targeting of this keyword.",
"type": [
"number",
"null"
],
"format": "float",
"examples": [
38000
]
},
"exactMonthlyClicks": {
"description": "Estimated monthly paid clicks for exact match targeting of this keyword.",
"type": [
"number",
"null"
],
"format": "float",
"examples": [
29094.6
]
},
"broadMonthlyCost": {
"description": "Estimated monthly advertising spend for broad match targeting of this keyword.",
"type": [
"number",
"null"
],
"format": "double",
"examples": [
41604.9
]
},
"phraseMonthlyCost": {
"description": "Estimated monthly advertising spend for phrase match targeting of this keyword.",
"type": [
"number",
"null"
],
"format": "double",
"examples": [
25542
]
},
"exactMonthlyCost": {
"description": "Estimated monthly advertising spend for exact match targeting of this keyword.",
"type": [
"number",
"null"
],
"format": "double",
"examples": [
19041.6
]
},
"paidCompetitors": {
"description": "Total number of unique advertisers observed purchasing ads for this keyword over the last 14 months, indicating competitive intensity.",
"type": [
"integer",
"null"
],
"format": "int32",
"examples": [
15
]
},
"distinctCompetitors": {
"description": "List of domain names that have purchased ads for this keyword over the last 14 months.",
"type": [
"array",
"null"
],
"items": {
"type": "string"
},
"examples": [
[
"example.com",
"competitor1.com",
"competitor2.com"
]
]
},
"rankingHomepages": {
"description": "Number of domain homepages (root URLs) ranking within the first 100 organic search results for this keyword.",
"type": [
"integer",
"null"
],
"format": "int32",
"examples": [
8
]
},
"serpFeaturesCsv": {
"description": "Comma-separated list of SERP features present for this keyword (e.g., Images, Videos, Maps, Shopping), indicating competition for organic real estate.",
"type": [
"string",
"null"
],
"examples": [
"Images,Maps"
]
},
"serpFirstResult": {
"description": "Domain name of the top-ranking organic result for this keyword, useful for identifying category leaders.",
"type": [
"string",
"null"
],
"examples": [
"example.com"
]
},
"isQuestion": {
"description": "Indicates whether this keyword is phrased as a question (who, what, when, where, why, how).",
"type": "boolean",
"examples": [
false
]
},
"isNotSafeForWork": {
"description": "Indicates whether this keyword is flagged as containing adult or inappropriate content.",
"type": "boolean",
"examples": [
false
]
}
},
"additionalProperties": false,
"description": "Represents a competitive keyword with comprehensive metrics including search volume, competition analysis, cost data, and SERP characteristics for competitive intelligence analysis."
},
"readOnly": true
}
},
"additionalProperties": false
}
}
}