SEMrush API
Provides programmatic access to SEMrush's SEO database for keyword rankings, organic traffic estimates, backlink profiles, competitor keyword gaps, and SERP data across 140+ countries.
Score Breakdown
⚙ Agent Friendliness
🔒 Security
API key is passed as a URL query parameter, which risks exposure in server logs and browser history. No IP allowlisting or key rotation mechanism documented.
⚡ Reliability
Best When
An agent needs to enrich content briefs or competitive analyses with keyword volume, difficulty, and traffic estimates at scale without manual SEMrush UI interaction.
Avoid When
Query volume will exceed plan unit limits daily or the use case requires real-time SERP data fresher than SEMrush's update cycle.
Use Cases
- • Fetch keyword difficulty and search volume data to prioritize content production queues
- • Pull competitor organic keyword lists to identify content gap opportunities
- • Monitor daily rank changes for a target domain's keyword portfolio
- • Retrieve backlink profiles to audit link-building campaigns
- • Automate domain traffic and authority metrics for client SEO reporting dashboards
Not For
- • Real-time SERP scraping (data is cached and updated periodically, not live)
- • Small-budget projects — API unit costs add up quickly for high-volume queries
- • Paid advertising creative or bidding automation (use Google Ads API instead)
Interface
Authentication
Single API key passed as a query parameter (`key=`). No OAuth or token refresh needed. Keys are scoped per SEMrush account; all endpoints share one key.
Pricing
Units are the billing currency — each API request costs a variable number of units depending on endpoint and rows returned. Unit budgets reset daily.
Agent Metadata
Known Gotchas
- ⚠ Responses default to `|`-delimited plain text, not JSON — agents must request `export_format=json` explicitly on supported endpoints
- ⚠ Unit cost per request is not returned in the response; agents cannot track spend without external accounting
- ⚠ Some endpoints return `ERROR 50 :: NOTHING FOUND` as a 200 OK, requiring content inspection to detect empty results
- ⚠ Daily unit quotas reset at midnight UTC, not the account's local timezone — scheduling matters for high-volume agents
- ⚠ Database selection (`database=us` etc.) silently affects result relevance; defaulting to 'us' for non-US domains returns misleading data
Alternatives
Full Evaluation Report
Detailed scoring breakdown, competitive positioning, security analysis, and improvement recommendations for SEMrush API.
Scores are editorial opinions as of 2026-03-06.