Semrush Domain Metrics
Last updated November 12, 2026
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.
Features
- One row per domain with Authority Score, visits, organic and paid traffic, and backlinks.
- Up to 12 months of history, plus top countries, competitors, and keywords.
- Reads public pages, with no login or Semrush account.
- Semrush publishes a page for some domains only, and the README states the tested rate.
- Pay per event: Domain row at $0.01.
Input
domainsarrayoptionalDomains 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_domainsstringoptionalText 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_usdstringoptionalOptional. The run stops before a charge that would pass this amount. Summary rows are always returned.
Output schema
{
"row_type": "string",
"input": "string",
"domain": "string",
"source_url": "string",
"data_date": "string",
"page_updated": "string",
"main_country": "string",
"categories": "array",
"global_rank": "integer",
"country_rank": "integer",
"category_rank": "integer",
"category_rank_name": "string",
"authority_score": "integer",
"backlinks": "integer",
"referring_domains": "integer",
"google_penalty_risk": "string",
"visits": "integer",
"visits_change": "number",
"pages_per_visit": "number",
"time_on_site_seconds": "integer",
"bounce_rate": "number",
"organic_traffic": "integer",
"organic_traffic_change": "number",
"paid_traffic": "integer",
"paid_traffic_change": "number",
"desktop_visits": "integer",
"mobile_visits": "integer",
"visits_history": "array",
"search_traffic_history": "array",
"backlinks_history": "array",
"top_countries": "array",
"top_competitors": "array",
"top_keywords": "array",
"domains_requested": "integer",
"domains_found": "integer",
"domains_no_page": "integer",
"row_status": "string",
"error_reason": "string",
"billable_events_json": "string",
"scraped_at": "string"
}Pricing
| Event | Free plan price |
|---|---|
| Domain row | $0.01 |
| No page row | $0.003 |
| Actor Start | $0.002 |
Pay per event on the Apify platform. Paid Apify plans pay less per event. No subscription, no seat license.
On the Apify free plan the actor stops at $1.50 of charges a month, about 150 domains. Any paid Apify plan removes the cap.
Limits
- 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 no-page-row price.
- 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.