Home / Tools / Bulk Keyword Difficulty Checker

Keyword research

Bulk Keyword Difficulty Checker

Check SEO keyword difficulty (KD 0-100) and search intent for thousands of keywords at once, in 90+ countries and languages. Find easy keywords to rank for. Up to 1,000 keywords per request, $5 per 1,000 keywords.

Run it on Apify API & MCP

Sample output

Real rows from the prefilled example run on Oct 19, 2026.

Full JSON of one real output row (4 rows in the example dataset)
{
  "keyword": "standing desk",
  "keyword_difficulty": 38,
  "difficulty_level": "possible",
  "search_intent": "transactional",
  "search_intent_probability": 0.4445,
  "secondary_intents": [
    "informational"
  ],
  "location": "United States",
  "language": "English",
  "found": true,
  "scraped_at": "2026-10-19T02:07:02Z"
}

Output fields

From the Actor's dataset schema. Every row has the same flat shape, so it drops straight into a spreadsheet, a database or an agent's context.

FieldTypeDescription
keywordstringKeyword (normalized, lower-case)
keyword_difficultyintegerSEO keyword difficulty, 0-100 (higher = harder to rank). null when the keyword is not in the database
difficulty_levelstringDifficulty band: very easy, easy, possible, difficult, hard or very hard
search_intentstringMain search intent: informational, navigational, commercial or transactional
search_intent_probabilitynumberConfidence of the main intent, 0-1
secondary_intentsarrayOther likely intents
locationstringCountry the data is for, e.g. "United States"
languagestringLanguage name, e.g. "English"
foundbooleanTrue when a difficulty score was found (only these rows are charged)
notestringExplanation when no score was found
scraped_atstringWhen this row was produced (ISO 8601, UTC)

Pricing

Pay per result, billed by Apify. No subscription and no minimum. Discount tiers apply automatically on paid Apify plans.

EventFree planBronzeSilverGold
Keyword difficulty main
Charged once per keyword returned with a keyword difficulty score.
$0.005$0.0045$0.0042$0.004
Search intent
Charged once per keyword returned with search intent (optional add-on).
$0.0015$0.0014$0.0013$0.0012
Keyword batch
Charged once per data request of up to 1,000 keywords (search intent is a second request).
$0.025$0.025$0.025$0.025

Examples on the Free plan: 100 keyword difficultys = $0.50, 1,000 keyword difficultys = $5, 10,000 keyword difficultys = $50. Apify's Free plan includes $5 of monthly usage credit. Prices read from the Apify API at build time (2026-10-19).

Example input

This is the prefilled input on the Store page. Keep it and click Start to see real data in seconds.

{
  "keywords": [
    "keyword research",
    "seo tools",
    "how to start a blog",
    "best running shoes for flat feet",
    "running shoes"
  ],
  "location": "United States",
  "language": "English",
  "includeSearchIntent": true
}

Use it from code, no-code or an AI agent

cURL (one request, returns rows)
curl -X POST \
  "https://api.apify.com/v2/acts/wrenfield-data~keyword-difficulty-checker/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"keywords": ["keyword research", "seo tools", "how to start a blog", "best running shoes for flat feet", "running shoes"], "location": "United States", "language": "English", "includeSearchIntent": true}'
Python
# pip install apify-client
import os
from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("wrenfield-data/keyword-difficulty-checker").call(
    run_input={
    "keywords": [
        "keyword research",
        "seo tools",
        "how to start a blog",
        "best running shoes for flat feet",
        "running shoes"
    ],
    "location": "United States",
    "language": "English",
    "includeSearchIntent": True
},
    max_total_charge_usd=1.00,  # hard cap for this run
)
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(row)
JavaScript / Node
// npm i apify-client
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('wrenfield-data/keyword-difficulty-checker').call({
  "keywords": [
    "keyword research",
    "seo tools",
    "how to start a blog",
    "best running shoes for flat feet",
    "running shoes"
  ],
  "location": "United States",
  "language": "English",
  "includeSearchIntent": true
}, { maxTotalChargeUsd: 1 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
MCP (Claude, Cursor, VS Code, any MCP client)
{
  "mcpServers": {
    "wrenfield-keyword-difficulty-checker": {
      "url": "https://mcp.apify.com?tools=wrenfield-data/keyword-difficulty-checker"
    }
  }
}

Remote MCP server hosted by Apify. Sign in with OAuth on first use, or send Authorization: Bearer <APIFY_TOKEN>. The tool appears as wrenfield-data--keyword-difficulty-checker. More client setups on the MCP page.

n8n, Make, Zapier

Use the official Apify node or app, pick Run Actor, enter wrenfield-data/keyword-difficulty-checker and paste the input JSON above. Then read the run's dataset items. Ready-made n8n workflows are on the n8n templates page.

FAQ

How much does Bulk Keyword Difficulty Checker cost?

$0.005 per keyword difficulty on the Apify Free plan ($5 per 1,000), billed per result by Apify with no subscription. Plus $0.0015 per search intent. Plus $0.025 per keyword batch. Higher Apify plans get the discounted tiers shown in the pricing table. You can cap any run with a maximum cost.

How is keyword difficulty calculated?

It's based on the strength (backlink profiles) of the pages that currently rank in Google's top 10 for the keyword, on a logarithmic 0-100 scale.

Is this the same as Google Ads "competition"?

No. Google Ads competition measures advertiser demand. Keyword difficulty measures how hard it is to rank organically.

Why is a keyword returned with found: false?

It's too rare or new to have a score yet. You aren't charged the KD fee for it.

Related tools

Keyword Search Volume

Google Keyword Planner volume, CPC, competition and 12-month trends, no Ads account.

Keyword Research Tool Launching soon

Keyword ideas with volume, KD, intent and SERP features in one row.

Competitor Keywords

Every keyword a domain ranks for, with position, volume and traffic.

Google Autocomplete Expander Launching soon

Long-tail and question keywords from Google and YouTube suggestions.

People Also Ask Scraper Launching soon

PAA question trees, related searches and AI Overview text.

Google Trends Scraper

Interest over time, by region, related queries and Trending Now.

Compare and plan

Try Bulk Keyword Difficulty Checker now

Open it on Apify, keep the prefilled example and click Start. The Apify Free plan includes $5 of monthly credit, no card needed.

Open on Apify