---
name: claude-seo-dataforseo
description: Pull live SEO data through the DataForSEO MCP server, including SERPs, keyword metrics, backlinks, on-page audits, competitor domains, business listings, and LLM mention tracking. Use when the user says "dataforseo", "live SERP", "keyword volume", "backlink data", "competitor data", or "AI visibility check". Not for Google first-party data like Search Console, CrUX, or GA4 (use claude-seo-google) or maps-platform analysis (use claude-seo-maps).
license: MIT
metadata:
  author: TechTide AI (Alex Cinovoj)
  provenance: rewritten from patterns in AgriciDaniel/claude-seo (MIT)
  category: SEO & AEO
---

# DataForSEO Live Data

Every DataForSEO call costs money. Check tool availability first, pick the cheapest endpoint that answers the question, and never re-fetch data you already have in the session.

## Prerequisites

Confirm the DataForSEO MCP server is connected: check that `serp_organic_live_advanced` or another DataForSEO tool is callable. If not, tell the user the MCP server is not connected and stop. Do not simulate results.

## Cost discipline

- Prefer bulk endpoints over repeated single calls.
- Default to location_code 2840 (US) and language_code en unless the user says otherwise.
- Reuse results already fetched this session.
- Before any expensive run (full backlink crawls, keyword lists over 100 terms, `site:` or `filetype:` image queries which bill at 5x, geo-grids), state the approximate call count and ask the user to confirm.
- After a multi-call analysis, report how many API calls were made.

## Task routing

| Task | Lead tools |
|---|---|
| Google/Bing/Yahoo SERP | `serp_organic_live_advanced` (engine via `se` param) |
| Google Images SERP | `serp_google_images_live_advanced` |
| YouTube search / video analysis | `serp_youtube_organic_live_advanced`, video info/comments/subtitles tools |
| Keyword ideas | `dataforseo_labs_google_keyword_ideas`, `_keyword_suggestions`, `_related_keywords` |
| Volume, difficulty, intent, trends | `kw_data_google_ads_search_volume`, `dataforseo_labs_bulk_keyword_difficulty`, `dataforseo_labs_search_intent`, `kw_data_google_trends_explore` |
| Backlink profile | `backlinks_summary` first, detail tools only if needed |
| Competitors, ranked keywords, traffic | `dataforseo_labs_google_competitors_domain`, `_ranked_keywords`, `_bulk_traffic_estimation` |
| Domain overlap | `dataforseo_labs_google_domain_intersection`, `backlinks_domain_intersection` |
| On-page and Lighthouse | `on_page_instant_pages`, `on_page_content_parsing`, `on_page_lighthouse` |
| Tech stack, WHOIS | `domain_analytics_technologies_domain_technologies`, `domain_analytics_whois_overview` |
| Content quality and trends | `content_analysis_search`, `_summary`, `_phrase_trends` |
| Business listings | `business_data_business_listings_search` |
| ChatGPT citation check | `ai_optimization_chat_gpt_scraper` |
| LLM mention tracking | `ai_opt_llm_ment_search`, `_top_domains`, `_top_pages`, `_agg_metrics` |

Read references/tool-map.md for parameters, defaults, output fields, and the utility tools (location lookups, bulk operations, historical data).

## Workflow

1. Confirm the MCP server is connected.
2. Restate the question as one or more concrete data pulls, pick tools from the routing table.
3. Estimate call count. Over 10 calls or any 5x-billed query: get user confirmation first.
4. Run the pulls. On empty results, report "no data found" and suggest broader query or corrected location/language codes. Never fill gaps with guesses.
5. Present findings: tables for comparisons, issues ranked Critical > High > Medium > Low, scores as XX/100, and label the data source "DataForSEO (live)".

## Feeding sibling skills

Other claude-seo skills upgrade from estimates to live data when this server is available: claude-seo-content-brief (volume, difficulty, intent), claude-seo-page (live SERP position, backlink summary), claude-seo-geo (ChatGPT scraper, LLM mentions), claude-seo-plan (competitor domains, traffic estimation), claude-seo-local and claude-seo-maps (business listings).

## Verification

After each pull, check the response status and result count before analyzing. Expect a success status and at least one result item. If the status is an auth error, report bad credentials in the MCP config. If rate-limited, wait and retry once, then report the limit.

## Good vs bad

**Good:** User asks for difficulty on 40 keywords. One `dataforseo_labs_bulk_keyword_difficulty` call with the full array.
**Bad:** 40 separate single-keyword calls. Same data, 40x the cost and latency.

## Footguns

- **`site:`/`filetype:` operators on image SERPs bill at 5x.** Warn and confirm before running filtered image queries.
- **Empty result treated as zero presence.** An empty response can mean wrong location_code, not absence. Verify codes with the location lookup tools before concluding.
- **Cross-session caching claims.** Results are not cached between sessions. Only skip re-fetching within the current session.
- **Backlink deep-dives by default.** `backlinks_summary` answers most questions. Only pull full backlink lists when the user needs link-level detail.

## Completion checklist

- [ ] MCP availability confirmed before any promise of live data
- [ ] Cheapest sufficient endpoints used, bulk where possible
- [ ] User confirmed anything expensive up front
- [ ] Empty or error responses reported honestly, no invented numbers
- [ ] Output labeled "DataForSEO (live)" with call count

Any box unchecked: not done. Fix or say so.
