Pull real SEO metrics for any domain using Apify scrapers for Semrush and Ahrefs data. Gets domain authority, organic traffic estimates, keyword rankings, backlink profiles, top performing pages, and auto-discovers competitors from keyword overlap. No Semrush/Ahrefs subscription needed — uses Apify actors that scrape public pages.
62
73%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
Fix and improve this skill with Tessl
tessl review fix ./skills/seo/capabilities/seo-domain-analyzer/SKILL.mdPull real SEO performance data for any domain — no Semrush or Ahrefs subscription needed. Uses Apify actors that scrape Semrush/Ahrefs public pages to get authority scores, traffic estimates, keyword rankings, backlink profiles, and competitor discovery.
# Basic domain analysis
python3 scripts/analyze_domain.py --domain "example.com"
# With competitor comparison
python3 scripts/analyze_domain.py \
--domain "example.com" \
--competitors "competitor1.com,competitor2.com,competitor3.com"
# Check specific keywords
python3 scripts/analyze_domain.py \
--domain "example.com" \
--keywords "cloud cost optimization,reduce aws bill,finops tools"
# Save output
python3 scripts/analyze_domain.py \
--domain "example.com" --output seo-profile.json| Parameter | Required | Default | Description |
|---|---|---|---|
| domain | Yes | — | Domain to analyze (e.g., "example.com") |
| competitors | No | auto-discovered | Comma-separated competitor domains |
| keywords | No | auto-inferred | Specific keywords to check rankings for |
| output | No | stdout | Path to save JSON output |
| skip-backlinks | No | false | Skip Ahrefs backlink analysis (saves ~$0.10) |
| Data Source | Apify Actor | Est. Cost |
|---|---|---|
| Domain overview (Semrush) | devnaz/semrush-scraper | ~$0.10/domain |
| Backlink profile (Ahrefs) | radeance/ahrefs-scraper | ~$0.10/domain |
| Keyword rank checks | apify/google-search-scraper | ~$0.002/keyword |
| Typical full run | ~$0.50-1.00 | |
| With 3 competitors | ~$1.50-3.00 |
Use Apify actor devnaz/semrush-scraper to get:
# Actor: devnaz/semrush-scraper
# Input: domain URL
{
"urls": ["https://example.com"]
}Extracted metrics:
Use Apify actor radeance/ahrefs-scraper to get:
# Actor: radeance/ahrefs-scraper
# Input: domain for backlink analysis
{
"urls": ["https://example.com"],
"mode": "domain-overview"
}Extracted metrics:
For specific keywords (user-provided or auto-inferred from Phase 1), verify actual rankings using Google search:
# Actor: apify/google-search-scraper
# Input: keyword queries
{
"queries": "cloud cost optimization",
"maxPagesPerQuery": 1,
"resultsPerPage": 10,
"countryCode": "us",
"languageCode": "en"
}For each keyword:
Keyword sources (in priority order):
site:[domain] to see page titles)From the Semrush data, extract the highest-traffic pages:
If Semrush doesn't provide per-page data, supplement with:
site:[domain] and note which pages appear first (proxy for importance)site:[domain] blog for top blog contentCompetitors are identified from multiple sources:
For each competitor, run a lighter version of Phase 1 (domain overview only):
{
"domain": "example.com",
"analysis_date": "2026-02-25",
"domain_metrics": {
"semrush_authority_score": 45,
"ahrefs_domain_rating": 52,
"organic_monthly_traffic": 28500,
"organic_keywords": 1240,
"backlinks": 8930,
"referring_domains": 412,
"traffic_trend": "increasing"
},
"top_pages": [
{
"url": "https://example.com/blog/reduce-aws-costs",
"estimated_traffic": 3200,
"top_keyword": "reduce aws costs",
"ranking_keywords": 45
}
],
"keyword_rankings": [
{
"keyword": "cloud cost optimization",
"position": 4,
"url": "https://example.com/blog/cloud-cost-optimization-guide",
"serp_competitors": ["vantage.sh", "antimetal.com", "finout.io"]
}
],
"backlink_profile": {
"domain_rating": 52,
"total_backlinks": 8930,
"referring_domains": 412,
"dofollow_ratio": 0.78,
"top_referring_domains": ["techcrunch.com", "producthunt.com", ...],
"anchor_text_distribution": {
"branded": 0.45,
"keyword": 0.22,
"generic": 0.18,
"url": 0.15
}
},
"competitors": [
{
"domain": "competitor1.com",
"authority_score": 62,
"organic_traffic": 45000,
"organic_keywords": 2100,
"keyword_overlap": 340
}
]
}# SEO Domain Profile: example.com
**Date:** 2026-02-25
## Domain Metrics
| Metric | Value |
|--------|-------|
| Semrush Authority Score | 45/100 |
| Ahrefs Domain Rating | 52/100 |
| Monthly Organic Traffic | ~28,500 |
| Organic Keywords | 1,240 |
| Backlinks | 8,930 |
| Referring Domains | 412 |
| Traffic Trend | Increasing |
## Top Performing Pages
| # | URL | Est. Traffic | Top Keyword |
|---|-----|-------------|-------------|
| 1 | /blog/reduce-aws-costs | 3,200 | reduce aws costs |
| ... |
## Keyword Rankings
| Keyword | Position | URL | SERP Competitors |
|---------|----------|-----|-----------------|
| cloud cost optimization | #4 | /blog/cloud-cost... | vantage.sh, antimetal.com |
| ... |
## Backlink Profile
- Domain Rating: 52/100
- Referring Domains: 412
- Dofollow Ratio: 78%
- Top linking sites: TechCrunch, Product Hunt, ...
## Competitor Comparison
| Domain | Authority | Traffic | Keywords | Overlap |
|--------|-----------|---------|----------|---------|
| example.com | 45 | 28.5K | 1,240 | — |
| competitor1.com | 62 | 45K | 2,100 | 340 |
| ... |seo-traffic-analyzer skill which uses web search probes.If APIFY_API_TOKEN is not set or Apify actors fail, the script falls back to:
seo-traffic-analyzer skill)site:[domain] for indexed page countThis gives less precise data but still produces a useful report.
requests libraryAPIFY_API_TOKEN env var (for Apify mode; falls back to free probes without it)8866b2a
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.