Features Pricing FAQ API Docs Blog
Signup / Login
Select Page

AI Keyword Extractor API

Description

If you're just starting with SEO, finding an initial set of keywords to target can be a really difficult first step. There are unlimited number of options and paths for you to take. Our AI Extractor endpoint will help you get started by suggesting keywords based on your website's content.

We use a variety of AI models to best approximate what the URL you provide is linguistically about by examining its structure, content and meta tags.

IMPORTANT: This endpoint cannot currently parse websites that load content dynamically with JavaScript or is gated behind scraping prevention tools like Cloudflare. We're currently working on implementing a solution and we'll release it once it's ready.

Endpoint Cost

1 token/credit per unique keyword - Unique keywords are keywords that are not in our local cache.

Minimum cost per execution is capped at 1 token/credit per request

Endpoint

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

Headers

Field Description
X-API-Key Required Your API Key

Parameters

Field Type Description
url String Required Accepts: properly formatted fully qualified URL. Example: https://jsonrepo.com/blog
limit Integer Optional The number of maximum recommendations to be generated by our AI
Default: 10
Range: 1 <= limit <= 20

Understanding Endpoint Cost:

Say you want to get 10 keyword recommendations for a particular URL. Simply fire a request to our servers and the AI will then do its best to satisfy your requirements.

However, Because AI output is non-deterministic, the endpoint may return a couple of duplicate keywords if you run the same request twice. 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 is:

(1 * 10) - number of cached keywords

While this may seem complicated, in reality, it is far cheaper than most other alternatives out there as it maintains creative output without burdening you with high running costs.

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 10 seconds.

Example

// Generate `3` keywords for the domain `https://snowball.club`

curl -X POST https://api.jsonrepo.com/v1/seo/ai_keyword_extractor \
-H "X-API-Key: {YOUR_API_KEY_HERE}" \
--data-urlencode "url=https://snowball.club/" \
--data-urlencode "limit=3"
// Server Response

{
    "http_code": 200,
    "http_message": "Ok",
    "timestamp": 1732454539,
    "message": "Successful execution.",
    "payload": {
        "keywords": {
            "input": {
                "url": "https://snowball.club",
                "limit": 3
            },
            "output": [
                {
                    "id": 3054,
                    "keyword": "increase twitter followers",
                    "volume": 3600,
                    "competition": 43,
                    "cpc": 0.13,
                    "trend": [
                        {
                            "year": 2023,
                            "month": "November",
                            "value": 2900
                        },

                        // 12 months data
                        ...

                        {
                            "year": 2024,
                            "month": "October",
                            "value": 2900
                        }
                    ],
                    "last_updated": "24 November 2024",
                    "region": "global",
                    "length": 26,
                    "difficulty": 2,
                    "volume_score": 2,
                    "ad_score": 3,
                    "origin": "cache"
                },
                {
                    "id": 3052,
                    "keyword": "twitter content creation",
                    "volume": 20,
                    "competition": 7,
                    "cpc": 0,
                    "trend": [...],
                    "last_updated": "24 November 2024",
                    "region": "global",
                    "length": 24,
                    "difficulty": 1,
                    "volume_score": 1,
                    "ad_score": 2,
                    "origin": "cache"
                },
                {
                    "id": 3053,
                    "keyword": "monetize twitter audience",
                    "volume": 0,
                    "competition": 0,
                    "cpc": 0,
                    "trend": [],
                    "last_updated": "24 November 2024",
                    "region": "global",
                    "length": 25,
                    "difficulty": 1,
                    "volume_score": 1,
                    "ad_score": 1,
                    "origin": "cache"
                }
            ]
        }
    }
}

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.

// Request without `url` parameter

{
    "http_code": 400,
    "http_message": "Bad Request",
    "timestamp": 1730173006,
    "message": "'url' must be provided with proper formatting. Ex: https://jsonrepo.com/xyz",
    "payload": []
}
// Request made for a website that's has anti-ai bot protection

{
    "http_code": 400,
    "http_message": "Bad Request",
    "timestamp": 1730172327,
    "message": "'url' provided returned an empty response.",
    "payload": []
}