Semrush Domain Metrics

live$0.01/domainSignal Detection

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

domainsarrayoptional

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_domainsstringoptional

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_usdstringoptional

Optional. The run stops before a charge that would pass this amount. Summary rows are always returned.

Output schema

json
{
  "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

$0.01per domain
EventFree 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.

Available on