DataForSEO API Skill
Universal interface to all DataForSEO APIs for comprehensive SEO data retrieval and analysis.
Credential Setup
Before first use, set up credentials:
import sys, os
sys.path.insert(0, os.path.expanduser('~/.agents/skills/dataforseo/scripts'))
from dataforseo_client import save_credentials, verify_credentials
# Get credentials from https://app.dataforseo.com/
login = "your_email@example.com" # API login (email)
password = "your_api_password" # API password (from dashboard)
# Verify and save
if verify_credentials(login, password):
save_credentials(login, password)
print("Credentials saved!")
Credentials stored at ~/.dataforseo_config.json. To update, run setup again.
Quick Start
import sys, os
sys.path.insert(0, os.path.expanduser('~/.agents/skills/dataforseo/scripts'))
from dataforseo_client import *
# Example: Get search volume
response = keywords_search_volume(
keywords=["seo tools", "keyword research"],
location_name="United States"
)
results = extract_results(response)
csv_path = to_csv(results, "keyword_volumes")
print(f"Results saved to: {csv_path}")
API Selection Guide
| User Request |
Function to Use |
| Search volume, CPC, competition |
keywords_search_volume() |
| Keyword ideas/suggestions |
labs_keyword_ideas() or labs_related_keywords() |
| Keywords a site ranks for |
labs_ranked_keywords() |
| SERP results for keyword |
serp_google_organic() |
| Local/Maps rankings |
serp_google_maps() |
| YouTube rankings |
serp_youtube() |
| Backlink profile |
backlinks_summary() |
| List of backlinks |
backlinks_list() |
| Referring domains |
backlinks_referring_domains() |
| Domain authority/rank |
backlinks_bulk_ranks() |
| Competing domains |
labs_competitors_domain() |
| Keyword gap analysis |
labs_domain_intersection() |
| Link gap analysis |
backlinks_domain_intersection() |
| Technical page audit |
onpage_instant_pages() |
| Lighthouse scores |
lighthouse_live() |
| Technology stack |
domain_technologies() |
| Brand mentions |
content_search() |
| Google Trends |
google_trends() |
Core Workflow
- Import client: Add skill path and import functions
- Call API function: Pass required parameters
- Extract results: Use
extract_results(response)
- Export to CSV: Use
to_csv(results, "filename")
import sys, os
sys.path.insert(0, os.path.expanduser('~/.agents/skills/dataforseo/scripts'))
from dataforseo_client import labs_ranked_keywords, extract_results, to_csv
response = labs_ranked_keywords(
target="competitor.com",
location_name="United States",
language_name="English",
limit=500
)
results = extract_results(response)
csv_path = to_csv(results, "ranked_keywords")
Default Parameters
Most functions use these defaults:
location_name: "United States" (override with "India", "United Kingdom", etc.)
language_name: "English"
limit: 100 (increase up to 1000 for more results)
device: "desktop" (or "mobile" for SERP)
Common Location Names
- United States, United Kingdom, India, Germany, Australia, Canada
- For city-level: "New York,New York,United States", "London,England,United Kingdom"
Output
All results export to CSV at ~/dataforseo_outputs/. Files auto-named with timestamp if not specified.
Reference Files
- API Reference:
references/api_reference.md - Complete endpoint documentation
- Use Cases:
references/use_cases.md - Ready-to-use code recipes
Error Handling
response = some_api_function(...)
if response.get("status_code") == 20000:
results = extract_results(response)
# Process results
else:
print(f"Error: {response.get('status_message')}")
Rate Limits & Costs
- 2000 requests/minute max
- Live methods cost more than Standard
- Check usage with
get_user_data()
- Response includes
cost field
Important Notes
- Async endpoints: Some APIs (merchant, app_data, business reviews) create tasks. Check task status separately.
- Limits: Increase
limit parameter for comprehensive data (default 100, max usually 1000)
- Multiple keywords: Pass as list:
keywords=["kw1", "kw2", "kw3"]
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: dataforseo3description: Complete DataForSEO API integration for SEO data and analysis. Use when the user asks for keyword research, search volume, SERP analysis, backlink audits, competitor analysis, rank tracking, domain authority, technical SEO audits, content monitoring, Google Trends, or any SEO-related data queries. Covers all DataForSEO APIs including SERP, Keywords Data, DataForSEO Labs, Backlinks, OnPage, Domain Analytics, Content Analysis, Business Data, Merchant, App Data, and AI Optimization APIs. Outputs CSV files. Use when this capability is needed.4---56# DataForSEO API Skill78Universal interface to all DataForSEO APIs for comprehensive SEO data retrieval and analysis.910## Credential Setup1112Before first use, set up credentials:1314```python15import sys, os16sys.path.insert(0, os.path.expanduser('~/.agents/skills/dataforseo/scripts'))17from dataforseo_client import save_credentials, verify_credentials1819# Get credentials from https://app.dataforseo.com/20login = "your_email@example.com" # API login (email)21password = "your_api_password" # API password (from dashboard)2223# Verify and save24if verify_credentials(login, password):25 save_credentials(login, password)26 print("Credentials saved!")27```2829Credentials stored at `~/.dataforseo_config.json`. To update, run setup again.3031## Quick Start3233```python34import sys, os35sys.path.insert(0, os.path.expanduser('~/.agents/skills/dataforseo/scripts'))36from dataforseo_client import *3738# Example: Get search volume39response = keywords_search_volume(40 keywords=["seo tools", "keyword research"],41 location_name="United States"42)43results = extract_results(response)44csv_path = to_csv(results, "keyword_volumes")45print(f"Results saved to: {csv_path}")46```4748## API Selection Guide4950| User Request | Function to Use |51|--------------|-----------------|52| Search volume, CPC, competition | `keywords_search_volume()` |53| Keyword ideas/suggestions | `labs_keyword_ideas()` or `labs_related_keywords()` |54| Keywords a site ranks for | `labs_ranked_keywords()` |55| SERP results for keyword | `serp_google_organic()` |56| Local/Maps rankings | `serp_google_maps()` |57| YouTube rankings | `serp_youtube()` |58| Backlink profile | `backlinks_summary()` |59| List of backlinks | `backlinks_list()` |60| Referring domains | `backlinks_referring_domains()` |61| Domain authority/rank | `backlinks_bulk_ranks()` |62| Competing domains | `labs_competitors_domain()` |63| Keyword gap analysis | `labs_domain_intersection()` |64| Link gap analysis | `backlinks_domain_intersection()` |65| Technical page audit | `onpage_instant_pages()` |66| Lighthouse scores | `lighthouse_live()` |67| Technology stack | `domain_technologies()` |68| Brand mentions | `content_search()` |69| Google Trends | `google_trends()` |7071## Core Workflow72731. **Import client**: Add skill path and import functions742. **Call API function**: Pass required parameters753. **Extract results**: Use `extract_results(response)`764. **Export to CSV**: Use `to_csv(results, "filename")`7778```python79import sys, os80sys.path.insert(0, os.path.expanduser('~/.agents/skills/dataforseo/scripts'))81from dataforseo_client import labs_ranked_keywords, extract_results, to_csv8283response = labs_ranked_keywords(84 target="competitor.com",85 location_name="United States",86 language_name="English",87 limit=50088)89results = extract_results(response)90csv_path = to_csv(results, "ranked_keywords")91```9293## Default Parameters9495Most functions use these defaults:96- `location_name`: "United States" (override with "India", "United Kingdom", etc.)97- `language_name`: "English"98- `limit`: 100 (increase up to 1000 for more results)99- `device`: "desktop" (or "mobile" for SERP)100101## Common Location Names102- United States, United Kingdom, India, Germany, Australia, Canada103- For city-level: "New York,New York,United States", "London,England,United Kingdom"104105## Output106107All results export to CSV at `~/dataforseo_outputs/`. Files auto-named with timestamp if not specified.108109## Reference Files110111- **API Reference**: `references/api_reference.md` - Complete endpoint documentation112- **Use Cases**: `references/use_cases.md` - Ready-to-use code recipes113114## Error Handling115116```python117response = some_api_function(...)118if response.get("status_code") == 20000:119 results = extract_results(response)120 # Process results121else:122 print(f"Error: {response.get('status_message')}")123```124125## Rate Limits & Costs126127- 2000 requests/minute max128- Live methods cost more than Standard129- Check usage with `get_user_data()`130- Response includes `cost` field131132## Important Notes1331341. **Async endpoints**: Some APIs (merchant, app_data, business reviews) create tasks. Check task status separately.1352. **Limits**: Increase `limit` parameter for comprehensive data (default 100, max usually 1000)1363. **Multiple keywords**: Pass as list: `keywords=["kw1", "kw2", "kw3"]`137138---139> Converted and distributed by [TomeVault](https://tomevault.io/claim/nikhilbhansali) — claim your Tome and manage your conversions.140<!-- tomevault:4.0:skill_md:2026-04-11 -->