Semrush SEO integration with API key authentication. Analyze backlinks, keyword rankings, competitor domains, traffic metrics, and SEO data across organic an...
---
name: semrush-seo
description: Semrush SEO integration with API key authentication. Analyze backlinks, keyword rankings, competitor domains, traffic metrics, and SEO data across organic and paid search channels.
---
# Semrush

Access Semrush's SEO and digital marketing analytics platform to analyze backlinks, keyword rankings, competitor domains, traffic metrics, and search performance data across organic and paid search channels.
This skill uses [ClawLink](https://claw-link.dev/?utm_source=clawhub&utm_medium=referral&utm_content=semrush-seo) for hosted connection flows and credentials so you do not need to configure Semrush API access yourself.
### Setup in 3 Steps
| Step 1: Install | Step 2: Pair Account | Step 3: Connect Semrush |
|:---:|:---:|:---:|
|  |  | *App-specific connection GIF coming soon* |
| Run the install command in OpenClaw | Sign in and approve the device | Open the dashboard and connect Semrush |
## How It Works
```
┌─────────────────┐ ┌──────────────┐ ┌──────────────────┐
│ OpenClaw │────▶│ ClawLink │────▶│ Semrush API │
│ (User Chat) │ │ (Proxy) │ │ (SEO Analytics) │
│ │ │ │ │ │
└─────────────────┘ └──────────────┘ └──────────────────┘
│ │ │
│ 1. Install Plugin │ │
│ 2. Pair Device │ │
│ 3. Connect Semrush │ │
│ │ 4. API Key Proxy │
│ │ 5. Request Forward │
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ SKILL │ │ Dashboard│ │ Semrush │
│ File │ │ Auth │ │ Cloud │
└──────────┘ └──────────┘ └──────────┘
```
## Install
Install the verified ClawLink plugin from ClawHub. After the user confirms, complete the full setup so ClawLink tools are visible in the next OpenClaw chat.
```bash
openclaw plugins install clawhub:clawlink-plugin
openclaw config set tools.alsoAllow '["clawlink-plugin"]' --strict-json
openclaw gateway restart
```
Then tell the user: "OpenClaw has been restarted. Send `/new` as a standalone message to start a fresh chat, then ask for Semrush again."
## Quick Start
```bash
# Check account API units balance
clawlink_call_tool --tool "semrush_account_units_balance"
# Get keyword overview for a phrase
clawlink_call_tool --tool "semrush_keyword_overview_one_database" --params '{"phrase": "content marketing", "database": "us"}'
# Get backlinks overview for a domain
clawlink_call_tool --tool "semrush_backlinks_overview" --params '{"target": "example.com"}'
```
## Authentication
All Semrush tool calls are authenticated automatically by ClawLink using your Semrush API key stored securely in the dashboard.
**No API key is required in chat.** ClawLink injects your API key into every Semrush API request on your behalf.
### Getting Connected
1. Install the ClawLink plugin (see Install above).
2. Pair the plugin with `clawlink_begin_pairing` if it is not configured yet.
3. Open https://claw-link.dev/dashboard?add=semrush and connect Semrush with your API key.
4. Call `clawlink_list_integrations` to verify the connection is active.
## Connection Management
### List Connections
```bash
clawlink_list_integrations
```
**Response:** Returns all connected integrations. Look for `semrush` in the list.
### Verify Connection
```bash
clawlink_list_tools --integration semrush
```
**Response:** Returns the live tool catalog for Semrush.
### Reconnect
If Semrush tools are missing or the connection shows an error:
1. Direct the user to https://claw-link.dev/dashboard?add=semrush
2. After they confirm, call `clawlink_list_integrations` to verify
3. Then call `clawlink_list_tools --integration semrush`
## Security & Permissions
- Access is scoped to the Semrush account associated with the connected API key.
- **All operations are read-only** — Semrush tools do not modify any data in your Semrush account.
- API units are consumed per request — monitor `semrush_account_units_balance` before launching large batches.
- Responses are CSV-like strings (not JSON) — parse with delimiter-aware splitting before structured use.
## Tool Reference
### Account & Billing
| Tool | Description | Mode |
|------|-------------|------|
| `semrush_account_units_balance` | Fetch remaining Semrush Standard API units for the authenticated account | Read |
### Keyword Research
| Tool | Description | Mode |
|------|-------------|------|
| `semrush_batch_keyword_overview` | Fetch keyword overview reports for up to 100 keywords (volume, CPC, difficulty) | Read |
| `semrush_broad_match_keyword` | Fetch broad match keywords for a given phrase | Read |
| `semrush_keyword_difficulty` | Determine Keyword Difficulty (KD) score for a phrase (0-100) | Read |
| `semrush_keyword_overview_all_databases` | Fetch keyword overview across all Semrush regional databases | Read |
| `semrush_keyword_overview_one_database` | Fetch keyword summary for a phrase from a specific regional database | Read |
| `semrush_keywords_ads_history` | Fetch 12-month historical ad data for a keyword (domains advertising on it) | Read |
| `semrush_organic_results` | Retrieve domains and URLs from Google's top 100 organic results for a keyword | Read |
| `semrush_paid_results` | Fetch domains ranking in Google's paid search results for a keyword | Read |
| `semrush_phrase_questions` | Fetch question-format keywords semantically related to a query phrase | Read |
| `semrush_related_keywords` | Find related keywords (synonyms, variations) for a target phrase | Read |
### Backlink Analysis
| Tool | Description | Mode |
|------|-------------|------|
| `semrush_anchors` | Get CSV report of anchor texts for backlinks pointing to a target domain/URL | Read |
| `semrush_authority_score_profile` | Get Authority Score (AS) distribution for a target (referring domains per AS 0-100) | Read |
| `semrush_backlinks` | Fetch backlinks for a domain or URL as semicolon-delimited CSV | Read |
| `semrush_backlinks_overview` | Get CSV summary of backlinks including Authority Score and link type breakdowns | Read |
| `semrush_categories` | Retrieve content categories and confidence ratings for a domain | Read |
| `semrush_categories_profile` | Get content categories profile from referring domains (top 10,000) | Read |
| `semrush_historical_data` | Retrieve monthly historical backlink and referring domain time series | Read |
| `semrush_indexed_pages` | Get list of indexed pages for a target from Semrush | Read |
| `semrush_referring_domains` | Get semicolon-delimited report of domains linking to a target | Read |
| `semrush_referring_domains_by_country` | Get geographic distribution of referring domains by country | Read |
| `semrush_referring_i_ps` | Fetch IP addresses that are sources of backlinks for a target | Read |
| `semrush_tld_distribution` | Get Top-Level Domain (TLD) distribution of referring domains | Read |
### Domain & Competitor Analysis
| Tool | Description | Mode |
|------|-------------|------|
| `semrush_ads_copies` | Get unique ad copies observed for a domain in Google's paid search results | Read |
| `semrush_batch_comparison` | Compare backlink profiles across multiple targets | Read |
| `semrush_competitors` | Get CSV report of organic search competitors (shared backlinks or referring domains) | Read |
| `semrush_competitors_in_organic_search` | Get domain's organic search competitors from Semrush | Read |
| `semrush_competitors_in_paid_search` | Get list of a domain's paid search competitors from a regional database | Read |
| `semrush_domain_ad_history` | Retrieve 12-month advertising history for a domain (keywords, ad positions, copies) | Read |
| `semrush_domain_organic_pages` | Get report on domain's unique organic pages ranking in Google's top 100 | Read |
| `semrush_domain_organic_search_keywords` | Get organic search keywords for a domain from a regional database | Read |
| `semrush_domain_organic_subdomains` | Get subdomains of a domain ranking in Google's top 100 organic results | Read |
| `semrush_domain_paid_search_keywords` | Fetch keywords driving paid search traffic to a domain | Read |
| `semrush_domain_pla_search_keywords` | Retrieve Product Listing Ad (PLA) search keywords for a domain | Read |
| `semrush_domain_vs_domain` | Compare up to 5 domains to find common, unique, or gap keywords | Read |
| `semrush_pla_competitors` | Get domains competing in Google's Product Listing Ads for a domain | Read |
| `semrush_pla_copies` | Fetch PLA copies observed for a domain in Google's paid search results | Read |
## Code Examples
### Check API units before a large batch
```bash
clawlink_call_tool --tool "semrush_account_units_balance"
```
### Get keyword difficulty and overview
```bash
clawlink_call_tool --tool "semrush_keyword_difficulty" \
--params '{"phrase": "digital marketing tools", "database": "us"}'
clawlink_call_tool --tool "semrush_keyword_overview_one_database" \
--params '{"phrase": "content marketing strategy", "database": "us"}'
```
### Analyze backlinks for a competitor
```bash
clawlink_call_tool --tool "semrush_backlinks_overview" \
--params '{"target": "competitor.com"}'
clawlink_call_tool --tool "semrush_competitors" \
--params '{"target": "competitor.com"}'
```
### Get organic keywords for a domain
```bash
clawlink_call_tool --tool "semrush_domain_organic_search_keywords" \
--params '{"target": "example.com", "database": "us"}'
```
### Compare multiple domains
```bash
clawlink_call_tool --tool "semrush_domain_vs_domain" \
--params '{"domains": "site1.com,site2.com,site3.com", "database": "us"}'
```
## Discovery Workflow
1. Call `clawlink_list_integrations` to confirm Semrush is connected.
2. Call `clawlink_list_tools --integration semrush` to see the live catalog.
3. Treat the returned list as the source of truth. Do not guess or assume what tools exist.
4. If the user describes a capability but the exact tool is unclear, call `clawlink_search_tools` with a short query and integration `semrush`.
5. If no Semrush tools appear, direct the user to https://claw-link.dev/dashboard?add=semrush.
## Execution Workflow
```
┌─────────────────────────────────────────────────────────────┐
│ SEMRUSH OPERATIONS (All Read-Only) │
│ list → get → describe → call │
│ │
│ Example: Check units → Get keyword overview → Parse results │
└─────────────────────────────────────────────────────────────┘
```
1. For unfamiliar tools or ambiguous requests, call `clawlink_describe_tool` first.
2. Use the returned guidance, schema, `whenToUse`, `askBefore`, `safeDefaults`, `examples`, and `followups` to shape the call.
3. All Semrush tools are read-only — no confirmation is required for data retrieval.
4. Parse CSV-formatted responses before structured use. Use `sep=';'` and cast numeric columns before aggregation.
5. A response of `ERROR 50 :: NOTHING FOUND` is a valid zero-result — not a system error.
6. If the tool call fails, report the real error. Do not invent results or restate the failure as a missing capability unless the live catalog supports that conclusion.
## Notes
- All Semrush tools are **read-only** — no write or destructive operations exist in this skill.
- Responses are CSV-like text strings (not JSON) — parse by splitting on newlines and delimiters before extracting structured rows.
- The literal response `ERROR 50 :: NOTHING FOUND` means zero results for that domain/keyword in the selected database — treat as a valid zero-result, not an error.
- Traffic metrics (e.g., `Tr`) are modeled estimates — incompatible with first-party analytics data.
- API units are consumed per request — preflight with `semrush_account_units_balance` before launching large batches.
- `display_date` for historical data must be in `'YYYYMM15'` format (day must be '15').
- `display_limit` must surpass `display_offset` when pagination is used.
## Error Handling
| Status / Error | Meaning |
|----------------|---------|
| Tool not found | The tool name does not exist in the current catalog. Verify with `clawlink_list_tools --integration semrush`. |
| Missing connection | Semrush is not connected. Direct the user to https://claw-link.dev/dashboard?add=semrush. |
| `ERROR 50 :: NOTHING FOUND` | Zero results for the target in the selected database — treat as a valid empty response. |
| `Insufficient units` | API units exhausted — check `semrush_account_units_balance` and wait for replenishment. |
| `Invalid database` | The specified regional database is not supported. Check available databases in the tool schema. |
### Troubleshooting: Tools Not Visible
1. Check that the ClawLink plugin is installed:
```bash
openclaw plugins list
```
2. If the plugin is installed but tools are missing, tell the user to send `/new` as a standalone message to reload the catalog.
3. If a fresh chat does not help, run:
```bash
openclaw config set tools.alsoAllow '["clawlink-plugin"]' --strict-json
openclaw gateway restart
```
4. After restart, tell the user to send `/new` again and retry.
### Troubleshooting: Parsing CSV Responses
1. All Semrush responses are CSV-like strings — use delimiter splitting (semicolon `;` for most tools) to parse rows.
2. Cast numeric columns (backlinks_num, domain_ascore, etc.) before aggregation.
3. Headers match `export_columns` codes (e.g., 'Ph', 'Nq', 'Kd') — parse headers into a structured table first.
4. Use `sep=';'` when calling tools that support the `display_separate` parameter.
## Resources
- [Semrush API Documentation](https://developers.semrush.com/api/)
- [Semrush Domain Analytics](https://www.semrush.com/domain-analytics/)
- [Semrush Keyword Research](https://www.semrush.com/keyword-research/)
- [Semrush Backlink Analytics](https://www.semrush.com/backlinks/)
- [Semrush Projects](https://www.semrush.com/projects/)
- ClawLink: https://claw-link.dev/?utm_source=clawhub&utm_medium=referral&utm_content=semrush-seo
- ClawLink Docs: https://docs.claw-link.dev/openclaw
- ClawLink Verification: https://claw-link.dev/verify
## Related Skills
- [Google Search Console](https://clawhub.ai/hith3sh/google-search-console) — For search performance data from Google
- [Ahrefs SEO](https://clawhub.ai/hith3sh/ahrefs-seo) — For alternative backlink and keyword analysis
---
**Powered by [ClawLink](https://claw-link.dev/?utm_source=clawhub&utm_medium=referral&utm_content=semrush-seo)** — an integration hub for OpenClaw
don't have the plugin yet? install it then click "run inline in claude" again.
Access Semrush's SEO and digital marketing analytics platform to analyze backlinks, keyword rankings, competitor domains, traffic metrics, and search performance data across organic and paid search channels.
Use this skill to query Semrush's read-only SEO analytics API for keyword research, backlink analysis, domain comparisons, and competitor insights. Call it when you need to check keyword difficulty, find organic/paid search competitors, analyze referring domains, track keyword rankings, or compare domains head-to-head. The skill routes all requests through ClawLink, a hosted proxy that injects your stored Semrush API key so you never expose credentials in chat.
External Connection: Semrush API
semrush_account_units_balance)ClawLink Plugin (Required)
openclaw plugins install clawhub:clawlink-plugin && openclaw config set tools.alsoAllow '["clawlink-plugin"]' --strict-json && openclaw gateway restartopenclaw plugins list and clawlink_list_integrationsTool Parameters (Vary by Endpoint)
; for CSV parsing)Verify integration is connected. Call clawlink_list_integrations and confirm semrush appears in the response. If missing, direct user to https://claw-link.dev/dashboard?add=semrush to connect Semrush account.
Discover available tools. Call clawlink_list_tools --integration semrush to retrieve the live catalog of Semrush endpoints. Treat this as source of truth; do not assume tools exist if not listed.
Describe the tool if unfamiliar. If user request is ambiguous or tool name is unclear, call clawlink_describe_tool --tool <tool_name> --integration semrush. Review whenToUse, examples, askBefore, and safeDefaults fields.
Preflight API unit balance (optional but recommended). Before launching large batch operations, call clawlink_call_tool --tool "semrush_account_units_balance" to check remaining units. If low, pause and wait for replenishment.
Build and execute the tool call. Construct clawlink_call_tool with tool name and --params JSON containing all required fields. All Semrush tools are read-only, so no confirmation is required.
Parse CSV response. Semrush returns data as semicolon-delimited text. Split by newline to extract header row (line 1) and data rows (lines 2+). Map headers to values. Cast numeric columns (Nq, Kd, Backlinks, etc.) to int/float before aggregation.
Handle zero-result responses. If response is the literal string ERROR 50 :: NOTHING FOUND, treat it as a valid empty result set, not a system error. Report "no data found for [target] in [database]" to user.
Report final result to user. Synthesize parsed data into concise summary, table, or narrative. If multiple domains or keywords were queried, highlight top results or key comparisons.
If Semrush is not connected (step 1 returns no "semrush" entry): direct user to https://claw-link.dev/dashboard?add=semrush, then rerun step 1 to verify.
If tool is not in the catalog (step 2 does not list the requested tool): call clawlink_search_tools --query "<user intent>" --integration semrush to find the closest match. If nothing is returned, the capability does not exist; do not invent results.
If tool schema is unclear (step 3): ask user for clarification on required fields (phrase, target, database, etc.) before proceeding to step 5. Do not guess parameter values.
If API units are insufficient (step 4 returns low balance): pause execution, inform user of unit count, and suggest waiting or upgrading Semrush plan. Do not proceed to step 5 for batch jobs.
If tool call fails with network timeout: retry once after 2 seconds. If it fails again, report the error and suggest checking internet connectivity or ClawLink dashboard status.
If tool call fails with "Invalid database": confirm the regional database code is valid (e.g., "us", "gb", "de", "fr") by re-describing the tool in step 3. Adjust params and retry.
If response is ERROR 50 :: NOTHING FOUND (step 7): treat as valid empty result. Do not retry or escalate as a bug. Inform user that the target/keyword has no data in the selected database.
If response is CSV but headers are unrecognizable (step 6): the tool may have returned an error message disguised as CSV. Check the first cell for "ERROR" or "error" text. If found, report the full first row as the error and stop.
If ClawLink plugin is missing or broken (step 2 fails with "tool not found" or "plugin error"): ask user to run openclaw plugins list to verify plugin is installed. If missing, run install command from inputs section. If installed but broken, run the gateway restart command.
name and status fields.name, description, mode ("Read"), and schema fields.units_left;[integer].ERROR 50 :: NOTHING FOUND (valid empty response, not an error code).tool name, description, whenToUse, askBefore, examples, safeDefaults, schema (parameter definitions), followups.All responses are strings or JSON. File output is not used by this skill.
ERROR 50 :: NOTHING FOUND for zero results).openclaw plugins install clawhub:clawlink-plugin
openclaw config set tools.alsoAllow '["clawlink-plugin"]' --strict-json
openclaw gateway restart
After restart, tell the user: "OpenClaw has been restarted. Send /new as a standalone message to start a fresh chat, then ask for Semrush again."
openclaw plugins listclawlink_begin_pairingclawlink_list_integrations (look for "semrush" in the list)# check account API units balance
clawlink_call_tool --tool "semrush_account_units_balance"
# get keyword overview for a phrase
clawlink_call_tool --tool "semrush_keyword_overview_one_database" --params '{"phrase": "content marketing", "database": "us"}'
# get backlinks overview for a domain
clawlink_call_tool --tool "semrush_backlinks_overview" --params '{"target": "example.com"}'
semrush_account_units_balance before launching large batches.| tool | description |
|---|---|
semrush_account_units_balance |
fetch remaining standard API units for the authenticated account |
| tool | description |
|---|---|
semrush_batch_keyword_overview |
fetch keyword overview reports for up to 100 keywords (volume, CPC, difficulty) |
semrush_broad_match_keyword |
fetch broad match keywords for a given phrase |
semrush_keyword_difficulty |
determine Keyword Difficulty (KD) score for a phrase (0-100) |
semrush_keyword_overview_all_databases |
fetch keyword overview across all Semrush regional databases |
semrush_keyword_overview_one_database |
fetch keyword summary for a phrase from a specific regional database |
semrush_keywords_ads_history |
fetch 12-month historical ad data for a keyword (domains advertising on it) |
semrush_organic_results |
retrieve domains and URLs from Google's top 100 organic results for a keyword |
semrush_paid_results |
fetch domains ranking in Google's paid search results for a keyword |
semrush_phrase_questions |
fetch question-format keywords semantically related to a query phrase |
semrush_related_keywords |
find related keywords (synonyms, variations) for a target phrase |
| tool | description |
|---|---|
semrush_anchors |
get CSV report of anchor texts for backlinks pointing to a target domain/URL |
semrush_authority_score_profile |
get Authority Score (AS) distribution for a target (referring domains per AS 0-100) |
semrush_backlinks |
fetch backlinks for a domain or URL as semicolon-delimited CSV |
semrush_backlinks_overview |
get CSV summary of backlinks including Authority Score and link type breakdowns |
semrush_categories |
retrieve content categories and confidence ratings for a domain |
semrush_categories_profile |
get content categories profile from referring domains (top 10,000) |
semrush_historical_data |
retrieve monthly historical backlink and referring domain time series |
semrush_indexed_pages |
get list of indexed pages for a target from Semrush |
semrush_referring_domains |
get semicolon-delimited report of domains linking to a target |
semrush_referring_domains_by_country |
get geographic distribution of referring domains by country |
semrush_referring_i_ps |
fetch IP addresses that are sources of backlinks for a target |
semrush_tld_distribution |
get Top-Level Domain (TLD) distribution of referring domains |
| tool | description |
|---|---|
semrush_ads_copies |
get unique ad copies observed for a domain in Google's paid search results |
semrush_batch_comparison |
compare backlink profiles across multiple targets |
semrush_competitors |
get CSV report of organic search competitors (shared backlinks or referring domains) |
semrush_competitors_in_organic_search |
get domain's organic search competitors from Semrush |
semrush_competitors_in_paid_search |
get list of a domain's paid search competitors from a regional database |
semrush_domain_ad_history |
retrieve 12-month advertising history for a domain (keywords, ad positions, copies) |
semrush_domain_organic_pages |
get report on domain's unique organic pages ranking in Google's top 100 |
semrush_domain_organic_search_keywords |
get organic search keywords for a domain from a regional database |
semrush_domain_organic_subdomains |
get subdomains of a domain ranking in Google's top 100 organic results |
semrush_domain_paid_search_keywords |
fetch keywords driving paid search traffic to a domain |
semrush_domain_pla_search_keywords |
retrieve Product Listing Ad (PLA) search keywords for a domain |
semrush_domain_vs_domain |
compare up to 5 domains to find common, unique, or gap keywords |
semrush_pla_competitors |
get domains competing in Google's Product Listing Ads for a domain |
semrush_pla_copies |
fetch PLA copies observed for a domain in Google's paid search results |
clawlink_call_tool --tool "semrush_account_units_balance"
output: units_left;5000 (example: 5,000 units remaining)
clawlink_call_tool --tool "semrush_keyword_difficulty" \
--params '{"phrase": "digital marketing tools", "database": "us"}'
clawlink_call_tool --tool "semrush_keyword_overview_one_database" \
--params '{"phrase": "content marketing strategy", "database": "us"}'
output (CSV format):
Ph;Nq;Cp;Co;Nr;Td
digital marketing tools;2900;3.2;45;2100000;0.67
clawlink_call_tool --tool "semrush_backlinks_overview" \
--params '{"target": "competitor.com"}'
clawlink_call_tool --tool "semrush_competitors" \
--params '{"target": "competitor.com"}'
output (CSV format):
backlinks;referring_domains;authority_score
5432;1821;78
clawlink_call_tool --tool "semrush_domain_organic_search_keywords" \
--params '{"target": "example.com", "database": "us"}'
clawlink_call_tool --tool "semrush_domain_vs_domain" \
--params '{"domains": "site1.com,site2.com,site3.com", "database": "us"}'
clawlink_list_integrations to confirm Semrush is connected.clawlink_list_tools --integration semrush to see the live catalog.clawlink_search_tools --query "<intent>" --integration semrush.