Keyword research and competitive analysis through your AI. Ask for keywords, analyze SERPs, check what competitors rank for—all powered by DataForSEO. Requires a Pro API key.
Find long-tail keywords with search volume, difficulty, and CPC. Uses relaxed filters by default to return more results.
analyze_serp to see what content actually ranks.| Parameter | Type | Default | Description |
|---|---|---|---|
topic | string | required | Seed topic or keyword |
minVolume | number | 10 | Minimum monthly search volume |
maxVolume | number | 10000 | Maximum monthly search volume |
maxDifficulty | number | 60 | Maximum keyword difficulty (0-100) |
limit | number | 20 | Max keywords to return (1-50) |
includeRelated | boolean | true | Include "searches related to" keywords |
research_keywords({
topic: 'nuxt meta tags',
maxDifficulty: 30,
limit: 10
})
Returns:
{
"topic": "nuxt meta tags",
"keywords": [
{
"keyword": "nuxt 4 meta tags",
"volume": 320,
"difficulty": 24,
"intent": "informational",
"cpc": 0.45
},
{
"keyword": "useseoMeta nuxt",
"volume": 210,
"difficulty": 18,
"intent": "informational",
"cpc": 0.32
}
],
"totalFound": 156,
"filters": {
"minVolume": 10,
"maxVolume": 10000,
"maxDifficulty": 30
}
}
| Difficulty | Meaning | Strategy |
|---|---|---|
| 0-20 | Easy | New sites can rank with quality content |
| 21-40 | Medium | Needs solid content + some authority |
| 41-60 | Hard | Requires established domain + links |
| 61-100 | Very hard | Only high-authority sites compete |
Analyze SERP competition for a keyword. Returns top results with domain rank and SERP features present.
| Parameter | Type | Default | Description |
|---|---|---|---|
keyword | string | required | Keyword to analyze |
depth | number | 10 | Number of results (1-20) |
analyze_serp({
keyword: 'nuxt schema.org',
depth: 10
})
Returns:
{
"keyword": "nuxt schema.org",
"results": [
{
"position": 1,
"url": "https://nuxtseo.com/docs/schema-org/getting-started",
"title": "Getting Started - Schema.org",
"domain": "nuxtseo.com",
"domainRank": 45
},
{
"position": 2,
"url": "https://nuxt.com/modules/schema-org",
"title": "Schema.org Module",
"domain": "nuxt.com",
"domainRank": 78
}
],
"serpFeatures": ["featured_snippet", "people_also_ask"],
"hasAiOverview": false,
"hasFeaturedSnippet": true,
"hasLocalPack": false,
"hasPeopleAlsoAsk": true
}
domainRank may be null for newer or smaller domains that lack authority data in DataForSEO's database.| Feature | What It Means |
|---|---|
ai_overview | Google AI Overview appears—harder to get clicks |
featured_snippet | Snippet opportunity—structure content for it |
people_also_ask | FAQ opportunity—answer related questions |
local_pack | Local results—need LocalBusiness schema |
video | Video results—consider video content |
images | Image pack—optimize image SEO |
Check what keywords a domain ranks for. Useful for competitor analysis and finding content gaps.
| Parameter | Type | Default | Description |
|---|---|---|---|
domain | string | required | Domain to check (without https://) |
limit | number | 50 | Max keywords to return (1-100) |
minPosition | number | 1 | Minimum ranking position |
maxPosition | number | 20 | Maximum ranking position |
check_rankings({
domain: 'competitor.com',
maxPosition: 10,
limit: 30
})
Returns:
{
"domain": "competitor.com",
"keywords": [
{
"keyword": "vue seo guide",
"position": 3,
"volume": 480,
"traffic": 156,
"url": "https://competitor.com/blog/vue-seo"
},
{
"keyword": "nuxt meta description",
"position": 7,
"volume": 320,
"traffic": 42,
"url": "https://competitor.com/blog/nuxt-meta"
}
],
"positionRange": { "min": 1, "max": 10 }
}
Compare your rankings to competitors:
check_rankings on your domaincheck_rankings on 2-3 competitorsGet URLs from a verified site's sitemap. Useful for content audits and analysis.
| Parameter | Type | Default | Description |
|---|---|---|---|
siteUrl | string | required | Site URL (must be verified in your Pro account) |
limit | number | 15 | Max URLs to return (1-50) |
get_sitemap_urls({
siteUrl: 'https://mysite.com',
limit: 10
})
Returns:
{
"siteId": "site_abc123",
"siteName": "My Site",
"urls": [
"https://mysite.com/blog/detailed-guide",
"https://mysite.com/blog/another-post",
"https://mysite.com/docs/getting-started"
],
"total": 156
}
URLs are sorted by path depth (deeper = more likely to be content pages). Skips sitemap indexes, API routes, and internal routes.
The site must be verified in your Pro account. Add sites in the Pro dashboard before using this tool.
| Tool | Cache Duration | Data Source |
|---|---|---|
research_keywords | 24 hours | DataForSEO keyword database |
analyze_serp | 12 hours | Live SERP results |
check_rankings | 24 hours | DataForSEO ranking database |
get_sitemap_urls | 1 hour | Live sitemap fetch |
Results are cached to reduce API costs and improve response time.
If research_keywords returns no keywords:
If you specify strict filters (e.g., minVolume: 100, maxVolume: 1000, maxDifficulty: 30) and no keywords match, the tool returns an empty array with a helpful message:
{
"topic": "seo tools",
"keywords": [],
"totalFound": 45,
"filters": { "minVolume": 100, "maxVolume": 1000, "maxDifficulty": 30 },
"message": "No keywords matched filters (volume: 100-1000, difficulty: <30).",
"tip": "Found 45 keywords but none matched. Try broader filters: minVolume: 10, maxVolume: 50000, maxDifficulty: 70"
}
The totalFound field shows how many keywords were found before filtering, so you know whether to broaden your filters or try a different topic.
Some keywords may have null values for CPC or difficulty:
This is a DataForSEO data limitation, not a tool issue.
The domainRank field in analyze_serp results depends on DataForSEO having authority data for that domain. Newer or smaller sites may not have scores.
Page Analysis
MCP tools for AI-powered SEO analysis. Scan Vue files for issues, generate schema.org code, create OG image templates—through any MCP client.
Content Prompts
Pre-built MCP prompts for SEO content creation. Generate article outlines, write full articles, and improve page SEO—through any MCP client.