Documentation Index
Fetch the complete documentation index at: https://mintlify.com/TheCraigHewitt/seomachine/llms.txt
Use this file to discover all available pages before exploring further.
Overview
The DataForSEO class provides integration with DataForSEO API to fetch SERP data, check rankings, analyze competitors, and perform keyword research.
Installation
from data_sources.modules.dataforseo import DataForSEO
Authentication
The module uses basic authentication with API credentials.
Environment Variables
DATAFORSEO_LOGIN=your-login
DATAFORSEO_PASSWORD=your-password
DATAFORSEO_BASE_URL=https://api.dataforseo.com
Getting API Credentials
- Sign up at DataForSEO
- Generate API credentials from your dashboard
- Set credentials in your environment
Initialization
dfs = DataForSEO(
login="your-login", # Optional, defaults to env var
password="your-password" # Optional, defaults to env var
)
API login. Defaults to DATAFORSEO_LOGIN environment variable.
API password. Defaults to DATAFORSEO_PASSWORD environment variable.
Methods
get_rankings
Get ranking positions for specific keywords.
rankings = dfs.get_rankings(
domain="castos.com",
keywords=["podcast hosting", "podcast analytics"],
location_code=2840, # USA
language_code="en"
)
Your domain (e.g., “castos.com”)
List of keywords to check
DataForSEO location code (2840 = USA)
Ranking position (None if not ranking)
Whether domain is ranking
get_serp_data
Get complete SERP data for a keyword.
serp = dfs.get_serp_data(
keyword="podcast monetization",
location_code=2840,
limit=100
)
Number of results to return
List of organic search results
SERP features present (featured_snippet, people_also_ask, etc.)
analyze_competitor
Analyze competitor rankings vs yours.
comparison = dfs.analyze_competitor(
competitor_domain="anchor.fm",
keywords=["podcast hosting", "podcast analytics"],
your_domain="castos.com"
)
List of keyword comparisons
get_keyword_ideas
Get related keyword ideas.
ideas = dfs.get_keyword_ideas(
seed_keyword="podcast hosting",
location_code=2840,
limit=100
)
Number of ideas to return
Average position in SERPs
get_questions
Get question-based queries related to keyword.
questions = dfs.get_questions(
keyword="podcast monetization",
location_code=2840,
limit=50
)
Number of questions to return
get_domain_metrics
Get domain overview metrics.
metrics = dfs.get_domain_metrics(
domain="castos.com"
)
Number of organic keywords ranking
Estimated monthly organic traffic
check_ranking_history
Get ranking history for a keyword (requires historical data setup).
history = dfs.check_ranking_history(
domain="castos.com",
keyword="podcast hosting",
months_back=3
)
List of historical rankings
Example Usage
from dotenv import load_dotenv
from data_sources.modules.dataforseo import DataForSEO
load_dotenv('data_sources/config/.env')
dfs = DataForSEO()
# Check rankings
rankings = dfs.get_rankings(
domain="castos.com",
keywords=["podcast hosting", "podcast analytics", "private podcast"]
)
for rank in rankings:
print(f"\nKeyword: {rank['keyword']}")
print(f"Position: {rank['position'] or 'Not ranking'}")
if rank['search_volume']:
print(f"Search Volume: {rank['search_volume']:,}")
# Get SERP data
serp = dfs.get_serp_data("podcast monetization")
print(f"\nSearch Volume: {serp['search_volume']:,}")
print(f"SERP Features: {', '.join(serp['features'])}")
print(f"\nTop 10 Results:")
for result in serp['organic_results'][:10]:
print(f"{result['position']}. {result['domain']}")
print(f" {result['url']}")
# Related questions
questions = dfs.get_questions("podcast monetization")
for q in questions[:10]:
print(f"- {q['question']}")
if q['search_volume']:
print(f" Volume: {q['search_volume']:,}")
Source Code Reference
Location: data_sources/modules/dataforseo.py:14
The module uses DataForSEO’s REST API with basic authentication. All requests are made via POST to the appropriate endpoints.