Select Page

AI Keyword Finder API

Description

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.

Endpoint Cost

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).

Endpoint

> POST https://api.jsonrepo.com/v1/seo/ai_keyword_finder

Headers

Field Description
X-API-Key Required Your API Key

Parameters

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 data
Default: false
limit Integer Optional The number of maximum recommendations to be generated by our AI
Default: 10
Range: 1 <= limit <= 20

How This Endpoint Works

This endpoint has 4 different mode options it can operate under:

  1. start: Look for keywords that starts with your input.
    For this mode, the input cannot exceed 3 words total.
  2. end: Look for keywords that ends with your input.
    For this mode, the input cannot exceed 3 words total.
  3. flex: Look for keywords adjacent to your input.
    For this mode, the input cannot exceed 3 words total.
  4. deep: Look for keywords that are inspired by input.
    For this mode, the input size must be between 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.

Mode Limitations:

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.

Understanding Endpoint Cost:

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.

Example:

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.

Response

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.

Example 1: No Analyze

Request Example
// 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": ""
                }
            ]
        }
    }
}

Example 2: Analyze

Request Example
// 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
                }
            ]
        }
    }
}

Errors

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.

Error Response
// 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": []
}