semrush-research
SEO and competitive intelligence via the SemRush API. Use when asked to research competitors, analyze domains, find keyword opportunities, check backlinks, or estimate traffic. Trigger phrases: "competitor analysis", "domain overview", "keyword research", "backlink check", "traffic estimate", "SEO i
By openclaudia · 446 installs
npx skills add openclaudia/openclaudia-skills --skill semrush-research
Source repository · Upstream listing
SemRush Research
Pull live SEO and competitive intelligence data from the SemRush API.
Prerequisites
Requires SEMRUSH API KEY set in .env , .env.local , or ~/.claude/.env.global .
If the key is not set, instruct the user:
You need a SemRush API key. Get one at https://www.semrush.com/api/
Then add SEMRUSH API KEY=your key to your .env file.
API Base
All requests go to https://api.semrush.com/ with the API key passed as &key={SEMRUSH API KEY} .
Responses are semicolon delimited CSV. The first line is the header row. Parse accordingly.
1. Domain Overview
Get a high level snapshot of any domain's organic and paid search performance.
Endpoint
Export Columns
Column Meaning
Dn Domain
Rk SemRush Rank
Or Organic keywords count
Ot Organic traffic estimate
Oc Organic traffic cost ($)
Ad Paid keywords count
At Paid traffic estimate
Ac Paid traffic cost ($)
Example curl
Parsing the Response
2. Keyword Overview
Get search volume, CPC, competition, and SERP features for a keyword.
Endpoint
Export Columns
Column Meaning
Ph Keyword phrase
Nq Search volume (monthly)
Cp CPC (USD)
Co Competition (0 1)
Nr Number of results
Td Trend (12 months, comma separated)
Example curl
Supported Databases
Use &database=XX where XX is: us , uk , ca , au , de , fr , es , it , br , in , jp .
3. Related Keywords
Find semantically related keywords for content planning and gap analysis.
Endpoint
Example curl
Parsing Multiple Rows
4. Keyword Difficulty
Estimate how hard it is to rank for a keyword.
Endpoint
Column Meaning
Ph Keyword
Kd Keyword difficulty (0 100)
Interpretation:
0 29: Easy achievable with quality content
30 49: Moderate needs solid content + some backlinks
50 69: Hard needs strong domain authority + backlinks
70 84: Very hard requires established authority
85 100: Extremely hard dominated by top tier domains
5. Domain Organic Keywords
See which keywords a domain ranks for organically.
Endpoint
Column Meaning
Ph Keyword
Po Position
Nq Search volume
Cp CPC
Url Ranking URL
Tr Traffic (%)
Tc Traffic cost
Example curl
6. Backlink Overview
Get a summary of a domain's backlink profile.
Endpoint
Example curl
7. Competitor Discovery
Find domains competing for the same organic keywords.
Endpoint
Column Meaning
Dn Competitor domain
Cr Competition level
Np Common keywords
Or Organic keywords
Ot Organic traffic
Oc Organic traffic cost
Ad Paid keywords
Example curl
8. Traffic Analytics (Estimates)
Estimate a domain's overall traffic sources and engagement.
Endpoint
Workflow: Full Competitive Analysis
When the user asks for a full competitive analysis, run these steps in order:
1. Domain Overview Get the target domain's metrics
2. Competitor Discovery Find top 5 10 competitors
3. Domain Overview for each competitor Compare metrics
4. Top Keywords for each domain Find keyword gaps
5. Backlink Overview for each domain Compare link profiles
Output Format
Present results as a comparison table:
Then highlight:
Keyword gaps : Keywords competitors rank for but target does not
Quick wins : Keywords where target ranks positions 5 20 (improvement opportunities)
Content gaps : Topics competitors cover but target does not
Backlink opportunities : Sites linking to competitors but not target
Rate Limits and Costs
Each API call costs API units (check your plan)
Use &display limit= to control result count (default varies by endpoint)
Cache results locally when doing multi step analysis to avoid redundant calls
Domain overview calls are cheapest; backlink and traffic analytics cost more
Error Handling
Error Meaning
ERROR 50 :: NOTHING FOUND No data for this query
ERROR 120 :: WRONG KEY Invalid API key
ERROR 130 :: LIMIT EXCEEDED API unit limit reached
Empty response Usually means no data available for the query parameters
When you get "NOTHING FOUND", try:
Different database (e.g., uk instead of us )
Root domain instead of subdomain
Broader keyword phrase