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 request
If the analyze
flag is set to true
, the pricing changes to 1 token/credit per keyword
.
> 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 20 keywords in the array |
list_b[] | String[] | Optional An array of word stringsMaximum of 20 keywords in the array |
list_c[] | String[] | Optional An array of word stringsMaximum of 20 keywords in the array |
analyze | Boolean | Optional Include Google search dataDefault: false |
WARNING - Restrictions:
At least one list has to be provided. Maximum of
20
keywords per list.If the number of combined rows generated exceeds
1000
, the endpoint will fail.If
analyze
is set totrue
the maximum total rows cannot exceed400
.If you fill all 3 lists with 20 items each, the end result will be
20x20x20 = 8000
which we are not able to process at this time. Please adhere to the limit restrictions.
A successful request will result in a populated payload
field with the expected output. If analyze
is set to true
the endpoint will also return 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" \
--data-urlencode "analyze=true"
// Server Response
{
"http_code": 200,
"http_message": "Ok",
"timestamp": 1731741193,
"message": "Successful execution.",
"payload": {
"keywords": {
"input": {
"list_a": [
"best"
],
"list_b": [
"seo",
"keywords"
],
"list_c": [
"software",
"api"
]
},
"output": [
{
"origin": "cache",
"keyword": "best seo software",
"region": "global",
"length": 17,
"difficulty": 2,
"volume": 2400,
"competition": 13,
"cpc": 1.85
},
{
"origin": "cache",
"keyword": "best seo api",
"region": "global",
"length": 12,
"difficulty": 2,
"volume": 90,
"competition": 9,
"cpc": 2.92
},
{
"origin": "cache",
"keyword": "best keywords software",
"region": "global",
"length": 22,
"difficulty": 1,
"volume": 260,
"competition": 3,
"cpc": 1.42
},
{
"origin": "cache",
"keyword": "best keywords api",
"region": "global",
"length": 17,
"difficulty": 1,
"volume": 0,
"competition": 0,
"cpc": 0
}
]
}
}
}
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": []
}