Keyword merging can be an extremely powerful tool in the hands of any SEO veteran. The idea is to take multiple lists of words and combining them together to produce matches that are highly focused on the search niche.
Assume that you have the following lists:
List A
containing the words: "best", "biggest", and "fastest".List B
containing the words: "seo", "keywords", and "research".List C
containing the words: "software", "platform" and "api".By combining these 3 lists you can generate the following keywords: "best seo software", "best seo platform", "best seo api", ... , "fastest keywords platform", etc.
1 token/credit per keyword
in the final output list
> POST https://api.jsonrepo.com/v1/seo/keyword_merge
Field | Description |
---|---|
X-API-Key | Required Your API Key |
Field | Type | Description |
---|---|---|
list_a[] | String[] | Optional An array of word stringsMaximum of 5 keywords in the array |
list_b[] | String[] | Optional An array of word stringsMaximum of 5 keywords in the array |
list_c[] | String[] | Optional An array of word stringsMaximum of 5 keywords in the array |
5x5x5 keywords
in total.A successful request will result in a populated payload
field with the expected output including Google search data for the keywords with cpc
denominated in USD
and the region
is always set to global
.
// Combine the list of keywords from the previous example
curl -X POST https://api.jsonrepo.com/v1/seo/keyword_merge \
-H "X-API-Key: {YOUR_API_KEY_HERE}" \
--data-urlencode "list_a[]=best" \
--data-urlencode "list_b[]=seo" \
--data-urlencode "list_b[]=keywords" \
--data-urlencode "list_c[]=software" \
--data-urlencode "list_c[]=api"
// Server Response
{
"http_code": 200,
"http_message": "Ok",
"timestamp": 1732446978,
"message": "Successful execution.",
"payload": {
"keywords": {
"input": {
"list_a": [
"best"
],
"list_b": [
"seo",
"keywords"
],
"list_c": [
"software",
"api"
],
"keyword_count": 4
},
"output": [
{
"id": 3046,
"keyword": "best seo software",
"volume": 2400,
"competition": 8,
"cpc": 1.43,
"trend": [
{
"year": 2023,
"month": "November",
"value": 2900
},
// 12 months data
...
{
"year": 2024,
"month": "October",
"value": 1900
}
],
"last_updated": "24 November 2024",
"region": "global",
"length": 17,
"difficulty": 2,
"volume_score": 2,
"ad_score": 2,
"origin": "cache"
},
{
"id": 197,
"keyword": "best keywords api",
"volume": 0,
"competition": 0,
"cpc": 0,
"trend": [],
"last_updated": "03 December 2024",
"region": "global",
"length": 17,
"difficulty": 1,
"volume_score": 1,
"ad_score": 1,
"origin": "remote"
},
{
"id": 200,
"keyword": "best keywords software",
"volume": 320,
"competition": 2,
"cpc": 2.03,
"trend": [...],
"last_updated": "03 December 2024",
"region": "global",
"length": 22,
"difficulty": 1,
"volume_score": 1,
"ad_score": 1,
"origin": "remote"
},
{
"id": 234,
"keyword": "best seo api",
"volume": 90,
"competition": 13,
"cpc": 1.8,
"trend": [...],
"last_updated": "03 December 2024",
"region": "global",
"length": 12,
"difficulty": 1,
"volume_score": 1,
"ad_score": 1,
"origin": "remote"
}
]
}
}
}
A failed request will result in an error output as detailed in Error Rules. If the endpoint validation fails due to missing, badly formatted or invalid parameters, the endpoint will return HTTP code 400
along with a message
detailing the error.
// Request with all 3 lists empty
{
"http_code": 400,
"http_message": "Bad Request",
"timestamp": 1731217238,
"message": "No words provided in any of the lists.",
"payload": []
}