Skip to main content

🎯 Semrush - Competitor Analysis

Overview​

Discover and analyze competitors in both organic search and paid advertising, including shared keywords and traffic overlap.

Organic Competitors​

Get Organic Competitors​

GET /competitor/organic/:domain​

Purpose: Find domains competing for similar organic keywords

Request:

GET /v1/integrations/semrush/competitor/organic/example.com?new=false
Authorization: Bearer {jwt_token}

Semrush API:

GET https://api.semrush.com/?type=domain_organic_organic&key={API_KEY}&database={COUNTRY}&domain={DOMAIN}&display_limit=10&display_sort=cr_desc

API Parameters:

  • type: domain_organic_organic
  • display_limit: 10 (top competitors)
  • display_sort: cr_desc (by common keywords descending)

CSV Response Columns:

Domain;Competitor Domain;Common Keywords;Organic Keywords (Competitor);SE Keywords (Competitor);Organic Traffic (Competitor);Organic Cost (Competitor);Adwords Keywords (Competitor);Adwords Traffic (Competitor);Adwords Cost (Competitor);Competition Level

JSON Response:

{
"success": true,
"message": "SUCCESS",
"data": {
"data": [
{
"Domain": "example.com",
"Competitor Domain": "competitor1.com",
"Common Keywords": "2845",
"Organic Keywords (Competitor)": "15420",
"SE Keywords (Competitor)": "18230",
"Organic Traffic (Competitor)": "125000",
"Organic Cost (Competitor)": "285000",
"Adwords Keywords (Competitor)": "450",
"Adwords Traffic (Competitor)": "8500",
"Adwords Cost (Competitor)": "12000",
"Competition Level": "0.72"
},
{
"Domain": "example.com",
"Competitor Domain": "competitor2.com",
"Common Keywords": "1923",
"Organic Keywords (Competitor)": "9800",
"SE Keywords (Competitor)": "11230",
"Organic Traffic (Competitor)": "75000",
"Organic Cost (Competitor)": "165000",
"Competition Level": "0.58"
}
],
"createdAt": "2025-10-10T08:00:00Z",
"lastUpdate": "2025-10-10T08:00:00Z",
"nextUpdate": "2025-10-17T08:00:00Z",
"daysSinceUpdate": 0,
"daysUntilUpdate": 7,
"isStale": false
}
}

Caching:

  • Cache Type: domain_organic_organic
  • TTL: 7 days

Get Paid Competitors​

GET /competitor/paid/:domain​

Purpose: Find domains competing in paid search (Google Ads)

Request:

GET /v1/integrations/semrush/competitor/paid/example.com?new=false
Authorization: Bearer {jwt_token}

Semrush API:

GET https://api.semrush.com/?type=domain_adwords_adwords&key={API_KEY}&database={COUNTRY}&domain={DOMAIN}&display_limit=10&display_sort=cr_desc

API Parameters:

  • type: domain_adwords_adwords
  • display_sort: cr_desc (by common keywords)

JSON Response:

{
"success": true,
"message": "SUCCESS",
"data": {
"data": [
{
"Domain": "example.com",
"Competitor Domain": "competitor1.com",
"Common Keywords": "185",
"Adwords Keywords (Competitor)": "1250",
"Adwords Traffic (Competitor)": "25000",
"Adwords Cost (Competitor)": "45000",
"Organic Keywords (Competitor)": "8500",
"Organic Traffic (Competitor)": "62000",
"Organic Cost (Competitor)": "135000",
"Competition Level": "0.65"
}
],
"createdAt": "2025-10-10T08:00:00Z",
"lastUpdate": "2025-10-10T08:00:00Z",
"nextUpdate": "2025-10-17T08:00:00Z",
"daysSinceUpdate": 0,
"daysUntilUpdate": 7,
"isStale": false
}
}

Caching:

  • Cache Type: domain_adwords_adwords
  • TTL: 7 days

Competitor Metrics​

Key Fields​

FieldDescriptionUse Case
Competitor DomainCompeting websiteIdentify rivals
Common KeywordsShared keyword countOverlap analysis
Organic KeywordsTotal organic keywordsSEO strength
Organic TrafficEst. organic visits/monthTraffic potential
Organic CostPPC value of organic trafficSEO value
Adwords KeywordsPaid keyword countPPC activity
Adwords TrafficEst. paid visits/monthPPC traffic
Adwords CostEst. monthly ad spendBudget insights
Competition LevelOverlap intensity (0-1)Priority ranking

Use Cases​

1. Competitive Landscape Analysis​

Identify top competitors:

// Sort by competition level
const topCompetitors = competitors
.sort((a, b) => parseFloat(b['Competition Level']) - parseFloat(a['Competition Level']))
.slice(0, 5);

2. Keyword Gap Analysis​

Find shared keywords to target:

# Get your organic keywords
GET /keyword/organic/yourclient.com

# Get competitor's keywords
GET /competitor/organic/yourclient.com

# Analyze common keywords count

3. Budget Benchmarking​

Compare ad spend:

const avgAdSpend =
competitors.reduce((sum, c) => sum + parseFloat(c['Adwords Cost (Competitor)'] || 0), 0) /
competitors.length;

console.log(`Average competitor ad spend: $${avgAdSpend}/month`);

4. Traffic Comparison​

Benchmark organic traffic:

competitors.forEach(c => {
const traffic = parseInt(c['Organic Traffic (Competitor)']);
const keywords = parseInt(c['Organic Keywords (Competitor)']);
const trafficPerKeyword = (traffic / keywords).toFixed(2);

console.log(`${c['Competitor Domain']}: ${trafficPerKeyword} visits/keyword`);
});

5. SEO vs PPC Strategy​

Analyze competitor strategy mix:

competitors.forEach(c => {
const organicValue = parseFloat(c['Organic Cost (Competitor)']);
const paidSpend = parseFloat(c['Adwords Cost (Competitor)']);
const ratio = ((organicValue / (organicValue + paidSpend)) * 100).toFixed(1);

console.log(`${c['Competitor Domain']}: ${ratio}% organic, ${100 - ratio}% paid`);
});

Competition Level Interpretation​

ScoreMeaningAction
0.8 - 1.0Very high overlapPrimary competitor - monitor closely
0.6 - 0.8High overlapKey competitor - track regularly
0.4 - 0.6Moderate overlapSecondary competitor - periodic checks
0.2 - 0.4Low overlapTangential competitor
0.0 - 0.2Minimal overlapDifferent market segment
💬

Documentation Assistant

Ask me anything about the docs

Hi! I'm your documentation assistant. Ask me anything about the docs!

I can help you with:
- Code examples
- Configuration details
- Troubleshooting
- Best practices

Try asking: How do I configure the API?
09:31 AM