Skip to main content
POST
/
api
/
v1
/
keywords
/
difficulty
Batch Keyword Difficulty
curl --request POST \
  --url https://api.example.com/api/v1/keywords/difficulty \
  --header 'Content-Type: application/json' \
  --data '
{
  "keywords": [
    "<string>"
  ],
  "country": "<string>"
}
'
{
  "data": [
    {
      "keyword": "<string>",
      "country": "<string>",
      "popularity": 123,
      "difficulty": 123,
      "appsCount": 123,
      "trafficScore": 123
    }
  ]
}
Analyze keyword difficulty for multiple keywords at once. Results are automatically sorted by opportunity score (best opportunities first). Duplicate keywords are deduplicated before processing. Credits: 10 per keyword that returns results.

Request Body

keywords
string[]
required
Array of keywords to analyze. Min: 1, Max: 10. Each keyword must be 1–255 characters.
country
string
default:"US"
ISO 3166-1 alpha-2 country code (case-insensitive). Applied to all keywords in the batch.See Supported Countries for the full list.

Response

data
array
Array of keyword results, sorted by opportunity (best first). Only keywords with measurable data are included.
Unlike the single keyword endpoint, the batch response does not include topApps for each keyword. Use the single keyword endpoint if you need top-ranking apps for a specific keyword.

Example

Request

curl -X POST "https://appkittie.com/api/v1/keywords/difficulty" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "keywords": ["meditation", "sleep tracker", "mindfulness", "breathing exercises", "yoga"],
    "country": "US"
  }'

Response

{
  "data": [
    {
      "keyword": "breathing exercises",
      "country": "US",
      "popularity": 45,
      "difficulty": 32,
      "appsCount": 87,
      "trafficScore": 68
    },
    {
      "keyword": "sleep tracker",
      "country": "US",
      "popularity": 55,
      "difficulty": 48,
      "appsCount": 156,
      "trafficScore": 58
    },
    {
      "keyword": "mindfulness",
      "country": "US",
      "popularity": 50,
      "difficulty": 62,
      "appsCount": 198,
      "trafficScore": 44
    },
    {
      "keyword": "meditation",
      "country": "US",
      "popularity": 62,
      "difficulty": 85,
      "appsCount": 245,
      "trafficScore": 38
    },
    {
      "keyword": "yoga",
      "country": "US",
      "popularity": 58,
      "difficulty": 78,
      "appsCount": 312,
      "trafficScore": 35
    }
  ]
}

Billing Details

  • Credits are charged only for keywords that return data (where popularity is not null)
  • Duplicate keywords in the array are deduplicated — ["yoga", "Yoga", "YOGA"] counts as 1 keyword
  • If you submit 10 keywords and 7 return data, you’re charged 7 × 10 = 70 credits
  • If your balance is insufficient for the full batch, the request returns 402 before processing

Validation Errors

{
  "error": "Invalid parameters",
  "details": {
    "fieldErrors": {
      "keywords": ["At least one keyword is required"]
    },
    "formErrors": []
  }
}
ConditionError
Empty keywords arrayAt least one keyword is required
More than 10 keywordsMaximum 10 keywords per request
Invalid country codeInvalid country code
Missing/invalid JSON bodyInvalid JSON body