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"
- )
- (
- 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
- :
- (
- 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"]