Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Give example code for SEMrush API to compare my website's performance with competitors


Give example code for SEMrush API to compare my website's performance with competitors


Below is example code for using the SEMrush API to compare your website's performance with competitors. This example uses the Traffic Summary API method to get key performance metrics like visits, users, average time on site, pages per visit, and bounce rate for your domain and competitors.

python
import requests

# Your SEMrush API key
API_KEY = 'YOUR_API_KEY'

# Your domain and competitor domains to compare
domains = [
    'yourdomain.com',   # Replace with your website
    'competitor1.com',
    'competitor2.com',
    'competitor3.com',
    'competitor4.com',
    'competitor5.com'
]

# Base URL for the SEMrush Traffic Summary API
url = 'https://api.semrush.com/analytics/ta/api/v3/summary'

# Comma-separated string of target domains
targets = ','.join(domains)

# Columns to retrieve
export_columns = 'target,visits,users,time_on_site,pages_per_visit,bounce_rate'

# Optional parameters
params = {
    'key': API_KEY,
    'targets': targets,
    'export_columns': export_columns,
    # Optional: 'display_date': '2025-08-01',  # Format YYYY-MM-01 to get data for specific month
    # Optional: 'country': 'us'  # Use country code to get data for a specific country
}

# Make the GET request
response = requests.get(url, params=params)

# Check for request success
if response.status_code == 200:
    # The response text contains CSV data
    data = response.text
    print("SEMrush Traffic Summary Data:\n")
    print(data)
else:
    print(f"Error fetching data from SEMrush API. Status code: {response.status_code}")
    print(response.text)

This script performs the following steps:

- Defines your SEMrush API key and the list of your website plus competitor domains.
- Builds the API endpoint request with the domains and desired columns.
- Optionally allows specifying a month and country to narrow the analysis.
- Sends the request and prints out the CSV-formatted traffic summary data for all domains.

Further Expansion: Extracting and Comparing Data in Python

You can parse the CSV result into a structured format for further analysis or reporting. Example using pandas:

python
import pandas as pd
from io import StringIO

# Assuming response.text holds the CSV string data
csv_data = response.text

# Parse CSV into DataFrame
df = pd.read_csv(StringIO(csv_data))

# Clean or convert data types if needed
df['visits'] = pd.to_numeric(df['visits'], errors='coerce')
df['users'] = pd.to_numeric(df['users'], errors='coerce')
df['time_on_site'] = pd.to_numeric(df['time_on_site'], errors='coerce')
df['pages_per_visit'] = pd.to_numeric(df['pages_per_visit'], errors='coerce')
df['bounce_rate'] = pd.to_numeric(df['bounce_rate'], errors='coerce')

# Sort domains by visits descending to see leader
df_sorted = df.sort_values(by='visits', ascending=False)

print("Traffic Summary Data Sorted by Visits:")
print(df_sorted)

Using Other SEMrush API Endpoints to Deepen Analysis

- Domain Organic Search Overview
To compare organic search visibility, keyword rankings, and CPC data for domains.

Example request URL:


https://api.semrush.com/analytics/v1/?type=domain_organic&key=YOUR_API_KEY&domain=yourdomain.com&export_columns=Ph,Po,Nq,Cp,Ur,Tr,Tc

Where columns include information on keywords, positions, search volume, competition, URL distribution, traffic, and traffic cost.

- Competitors Discovery
To discover and compare the main organic competitors for your domain based on keyword overlap.

- Position Tracking API
For tracking keyword ranking positions over time for your site and competitors.

General Tips for SEMrush API Usage

- Use your company's or personal SEMrush API key with proper permissions and units.
- Requests consume API units; plan calls considering your subscription limits.
- Automate data gathering in scripts for periodic competitor performance monitoring.
- Combine various API endpoints for comprehensive performance and SEO analysis.
- Export data and visualize trends with tools like Excel, Power BI, or custom dashboards.
- Use Python libraries such as `requests`, `pandas`, and `matplotlib` for data handling and visualization.

This approach allows building a scalable process to monitor your website's performance against competitors regularly, making informed SEO and business decisions based on concrete traffic and engagement data from SEMrush.