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.