Semrush Domain Metrics
Pricing
from $8.50 / 1,000 domain rows
Semrush Domain Metrics
Give domains and get Semrush's public metrics as one row each: Authority Score, visits, organic and paid traffic, backlinks, rank, competitors, and keywords. Semrush publishes these pages for some domains only. No login or Semrush account.
Pricing
from $8.50 / 1,000 domain rows
Rating
0.0
(0)
Developer
Mamba Labs
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
3 hours ago
Last modified
Categories
Features
Share
Give domains such as stripe.com and get one row per domain from Semrush's public website pages: Authority Score, visits, organic and paid traffic, backlinks, referring domains, rank, categories, up to 12 months of history, top countries, competitors, and keywords. You pay per domain, with no Semrush account.
Features
- The metrics Semrush shows the public, as flat rows. Authority Score, monthly visits, pages per visit, time on site, bounce rate, organic and paid traffic, backlinks, referring domains, global, country, and category rank, and penalty risk.
- History and context. Up to 12 months of visits, search traffic, and backlinks, plus up to 10 top countries, competitors, and keywords, each as an array.
- The source on every row.
source_urlis the public page the row came from, anddata_dateis the date Semrush gives for the data. - A plain answer when there is no page. A domain with no Semrush page returns
row_statusno_results, and a refused read returns a freeblockedrow, so a gap never reads as zero. - Clay ready. The number input is text, and a URL works as well as a bare domain.
How the data is read
The actor reads semrush.com/website/<domain>/overview/, the page any logged out visitor gets, through the Apify proxy default pool. No login, no Semrush account, no API key, no browser, and no other developer's actor. It reads one domain every 20 seconds, because Semrush's robots.txt sets Crawl-delay: 20. The pace is fixed. It stops after 3 refused reads in a row and does not rotate past a refusal.
Input
| Field | Type | Default | What it does |
|---|---|---|---|
domains | array | Domains or URLs to look up, such as stripe.com. Semrush publishes a page for some domains only: in a test of 30, 15 had one. | |
max_domains | string | 100 | Text number from 1 to 1000. Default 100. Reads run 20 seconds apart, so 100 domains take about 33 minutes. Set the run timeout to fit. |
max_charge_usd | string | Optional. The run stops before a charge that would pass this amount. Summary rows are always returned. |
Output
| Field | Type | What it holds |
|---|---|---|
row_type | string | One of: domain, run_summary. run_summary is the one free row written when the input is refused. |
input | string | The value you gave. |
domain | string | The domain read. |
source_url | string | The public Semrush page this row came from. |
data_date | string | The date Semrush gives for this data. |
page_updated | string | When Semrush last updated the page. |
main_country | string | The country Semrush ranks the domain in. |
categories | array | Semrush categories. |
global_rank | integer | Semrush global rank. |
country_rank | integer | Semrush rank in the main country. |
category_rank | integer | Semrush rank in its category. |
category_rank_name | string | The category of that rank. |
authority_score | integer | Semrush Authority Score, 0 to 100. |
backlinks | integer | Semrush backlink count. |
referring_domains | integer | Semrush referring domain count. |
google_penalty_risk | string | Semrush penalty risk label. |
visits | integer | Semrush estimate of monthly visits. |
visits_change | number | Change from the month before, as a fraction. |
pages_per_visit | number | Semrush estimate. |
time_on_site_seconds | integer | Semrush estimate, in seconds. |
bounce_rate | number | Semrush estimate, as a fraction. |
organic_traffic | integer | Semrush estimate of organic search traffic. |
organic_traffic_change | number | Change, as a fraction. |
paid_traffic | integer | Semrush estimate of paid search traffic. |
paid_traffic_change | number | Change, as a fraction. |
desktop_visits | integer | Semrush estimate for the latest month. |
mobile_visits | integer | Semrush estimate for the latest month. |
visits_history | array | Months of visits, newest first. |
search_traffic_history | array | Months of organic and paid traffic. |
backlinks_history | array | Months of backlink counts. |
top_countries | array | Up to 10 countries by visits. |
top_competitors | array | Up to 10 competitors the page lists. |
top_keywords | array | Up to 10 keywords the page lists. |
domains_requested | integer | Summary row only. |
domains_found | integer | Summary row only. |
domains_no_page | integer | Summary row only. |
row_status | string | ok, or why this row carries no data: no_results, no_change, partial, blocked, or error. |
error_reason | string | Why the row is not ok. A refused input reads input_invalid: followed by what to fix. |
billable_events_json | string | What this row was billed as, for example {"domain-row":1}. {} means free. |
scraped_at | string | When the row was written, UTC. |
Pricing
Pay per event. Summary rows and a refused input are free.
| Event | Free plan | Bronze | Silver | Gold |
|---|---|---|---|---|
domain-row, one domain with metrics | $0.01 | $0.0095 | $0.009 | $0.0085 |
no-page-row, one domain with no Semrush page | $0.003 | $0.00285 | $0.0027 | $0.00255 |
apify-actor-start, once per run (one per GB of memory; the default 256 MB is one) | $0.002 | $0.002 | $0.002 | $0.002 |
Per 1,000 rows of domain-row: $10.00 on the free plan, $8.50 on Gold.
Free plan cap: 1.50 USD of evaluation a month, about 150 rows. Any paid Apify plan removes the cap, and it resets on the 1st. The run stops before a charge that passes your maximum charge per run in Apify or your max_charge_usd input.
Mamba Labs pays the platform costs of your run, Apify proxy traffic included.
Usage examples
Clay. Number and on or off inputs are text fields, which is what Clay sends. A list input takes a JSON list, so put the column inside a one item list.
Lookup.
{ "domains": ["stripe.com", "https://www.hubspot.com/pricing"], "max_domains": "2" }
MCP. The Mamba Labs MCP server @mambalabsdev/mcp-semrush-domain-metrics exposes this actor to Claude and other MCP clients.
Error handling
| Case | What you get |
|---|---|
| Missing or unreadable input | One free row, row_type run_summary, error_reason starting input_invalid: with what to fix. The run ends successfully and charges nothing but the run start |
| Semrush has no public page for the domain | One no_results row, charged at the lower no-page-row price, because the paced read was done |
| Semrush refuses a read | One free blocked row. After 3 in a row the run stops, and the summary row says why |
| The value is not a domain, or a read fails after one retry | One free error row |
| The maximum charge is reached | The run stops, and the free summary row says so |
| The run is close to its timeout | The actor stops starting new work 90 seconds before the timeout and delivers what it has |
Limitations
- Semrush publishes these pages for some domains only. In a test on 2026-11-06, 15 of 29 well known software domains had a page, and zapier.com, apify.com, and supabase.com did not, on repeat reads and on another exit. Smaller sites are less likely to have one. A domain with no page is charged the lower
no-page-rowprice, 0.003 USD (changed on 2026-11-08 from 0.003 USD to 0.001 USD, then to 0.0025 USD, and on 2026-11-09 back to 0.003 USD, the floor on its measured cost of 0.00041 USD a read). - This is not the Semrush API or a Semrush subscription. It returns what the public page shows. Keyword lists, backlink lists, and other reports behind an account are not returned, and rivals that claim them may read more.
- It does not read Ahrefs. Ahrefs' free checker pages hold no per domain data without a browser and a check, and its robots.txt disallows those addresses.
- It is slow by design. 3 domains a minute, so 100 domains take about 33 minutes. Set the run timeout to fit. An MCP call that times out at 30 minutes covers about 85 domains.
- Every number is a Semrush estimate, dated by
data_date, not measured traffic. A hidden section reads null, never zero. - Terms. Semrush's Terms of Service bar scraping and bar using its outputs to train AI models. These are public pages with no login, and other Store actors read them. Read the terms before you use the data.
- Not seen live. No read was refused in testing, so the blocked path and the restart path have only fixture tests.
Mamba Labs actor suite
Built by Mamba Labs.