Finding SEO keywords is a tedious and time consuming problem that many marketers and product owners have to constantly engage with. Our AI Keyword Finder endpoint helps you do just that in an automated manner.
We use a variety of different AI models and provide you with a set of mode
options that you can employ as you see fit.
1 token/credit per request
If the analyze
flag is set to true
, the pricing change to 1 token/credit per keyword
found if it is not cached in our database (see details below).
> POST https://api.jsonrepo.com/v1/seo/ai_keyword_finder
Field | Description |
---|---|
X-API-Key | Required Your API Key |
Field | Type | Description |
---|---|---|
mode | String | Required Accepts: start , end , flex , deep |
input | String | Required Format: English alphanumerical string.Size: depends on mode (see below) |
analyze | Boolean | Optional Get Google search dataDefault: false |
limit | Integer | Optional The number of maximum recommendations to be generated by our AIDefault: 10 Range: 1 <= limit <= 20 |
This endpoint has 4 different mode
options it can operate under:
start
: Look for keywords that starts with your input
.end
: Look for keywords that ends with your input
.flex
: Look for keywords adjacent to your input
.deep
: Look for keywords that are inspired by input
.20
and 100
characters long.start
and end
are basically wildcard modes, flex
is adjacency search, and deep
is to be used to find inspirational seed phrases if you have no starting point.
Due to the nature of how AI recommendations work, it is important to remember that there is a finite number of viable keywords that start
with your given seed phrase. Therefore that mode will never be as "creative" as the other options.
When keyword suggestions are returned to you, they are given without Google's search volume, cpc or competition data. The cost for the recommendations without the search data is 1 token/credit per request
.
In order to get Google search information, you need to set analyze
to true
. This will change the pricing to 1 token/credit per keyword
IF we don't have the keyword in our cache.
Say you want to get 12
recommendations for keywords that starts with some seed phrase, you simply fire a request to our servers with mode
set to start
and add the phrase into input
. This will return a JSON array with 12 keywords and you'll be charged 1 token/credit
in total.
If you want to also get the Google search data by setting analyze
to true
, the result from this endpoint will be piped into our Keyword Checker endpoint and you will be charged 1 token/credit per keyword
.
However, Because AI output is non-deterministic, the endpoint may return a couple duplicate keywords between requests. In order for you to not get charged for those duplicates, we deduct from the total cost any keywords that exist in our cache. That way your maximum cost with analyze = true
is:
(1 * 12) - number of cached keywords
While this may seem complicated, in reality, it is far cheaper than most other alternatives out there and it enables you to do research before requesting data for entries you might not like.
A successful request will result in a populated payload
field with the expected output.
Response Time:
AI output is bound by the efficiency of the model and the prompt enabling it. The bigger your
limit
is, the longer the request will take to process. Please be patient as processing the information could sometimes take between 1 and 5 seconds.
// Generate `3` keywords that start with `italian restaurant`
curl -X POST https://api.jsonrepo.com/v1/seo/ai_keyword_finder \
-H "X-API-Key: {YOUR_API_KEY_HERE}" \
--data-urlencode "input=italian restaurant" \
--data-urlencode "mode=start"
--data-urlencode "limit=3"
// Server Response
{
"http_code": 200,
"http_message": "Ok",
"timestamp": 1731741654,
"message": "Successful execution.",
"payload": {
"keywords": {
"input": {
"mode": "start",
"text": "italian restaurant"
},
"output": [
{
"origin": "generator",
"keyword": "italian restaurant near me",
"region": "global",
"length": 26,
"difficulty": "",
"volume": "",
"competition": "",
"cpc": ""
},
{
"origin": "generator",
"keyword": "italian restaurant menu",
"region": "global",
"length": 23,
"difficulty": "",
"volume": "",
"competition": "",
"cpc": ""
},
{
"origin": "generator",
"keyword": "italian restaurant delivery",
"region": "global",
"length": 27,
"difficulty": "",
"volume": "",
"competition": "",
"cpc": ""
}
]
}
}
}
// Generate `3` adjacent keywords to `italian restaurant`
// Also grab Google search data
curl -X POST https://api.jsonrepo.com/v1/seo/ai_keyword_finder \
-H "X-API-Key: {YOUR_API_KEY_HERE}" \
--data-urlencode "input=italian restaurant" \
--data-urlencode "mode=flex"
--data-urlencode "limit=3"
--data-urlencode "analyze=true"
// Server Response
{
"http_code": 200,
"http_message": "Ok",
"timestamp": 1731741772,
"message": "Successful execution.",
"payload": {
"keywords": {
"input": {
"mode": "flex",
"text": "italian restaurant"
},
"output": [
{
"origin": "cache",
"keyword": "italian cuisine",
"region": "global",
"length": 15,
"difficulty": 2,
"volume": 40500,
"competition": 2,
"cpc": 0.05
},
{
"origin": "cache",
"keyword": "italian dining",
"region": "global",
"length": 14,
"difficulty": 1,
"volume": 720,
"competition": 1,
"cpc": 0
},
{
"origin": "cache",
"keyword": "italian food 2024",
"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 without `mode` field
{
"http_code": 400,
"http_message": "Bad Request",
"timestamp": 1729819581,
"message": "'mode' parameter must be provided with one of the following values: start, end, flex or deep.",
"payload": []
}