Semrush Website Traffic Scraper avatar

Semrush Website Traffic Scraper

Pricing

from $2.00 / 1,000 dataset items

Go to Apify Store
Semrush Website Traffic Scraper

Semrush Website Traffic Scraper

Get Semrush website analytics in bulk without a Semrush login. Export country and category rank, organic and paid search traffic, desktop/mobile visit split, plus 6 months of backlink and referring-domain history for any domain, or auto-discover trending sites by category. Pay only for results.

Pricing

from $2.00 / 1,000 dataset items

Rating

0.0

(0)

Developer

axly

axly

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Pull Semrush website analytics in bulk — country and category rank, organic and paid search traffic, desktop/mobile split, and 6 months of backlink and referring-domain history — for any list of domains. No Semrush account, no login, no CAPTCHA, no proxy required.

Point it at a list of domains, or let it discover trending websites from Semrush's own rankings across 111 industry categories and export the winners automatically.

Who it's for

  • SEO agencies & consultants — qualify inbound leads and build competitive pitch decks with real rank, traffic and backlink numbers instead of screenshots.
  • Growth & marketing teams — track the traffic trajectory of your competitors month over month.
  • Investors & analysts — size a market or diligence a company from traffic trend data.
  • Lead generation — score thousands of prospect domains by traffic and authority, then filter to the ones worth contacting.
  • Data teams & researchers — build a longitudinal traffic dataset by scheduling monthly runs.

What makes it different

Most Semrush actors need a paid Semrush login (and often a pool of accounts plus residential proxies) to work — which is exactly why they break. This actor reads only Semrush's public, server-rendered website overview pages, so there is nothing to log into and nothing to get banned. That includes the full backlink and referring-domain history, which the public pages expose as monthly series.

Metrics that Semrush genuinely keeps behind its paywall (keyword lists, competitor sets, site audit, traffic-by-country, traffic journey) are returned as null rather than guessed or faked.

Output fields

Each row is one domain, flattened and ready for a spreadsheet or database.

Identity & categorization

FieldTypeDescription
domainstringRoot domain analyzed, e.g. stripe.com.
urlstringSemrush overview page the data came from.
brand_namestring | nullBrand name Semrush associates with the domain.
countrystring | nullISO code of the domain's primary country.
categoriesarraySemrush industry category names.
category_slugsarrayURL slugs of the category names.
faviconstring | nullFavicon image URL.
data_datestring | nullDate the metrics refer to (Semrush lags ~1 month).
date_modifiedstring | nullDate Semrush last refreshed the page.

Rankings

FieldTypeDescription
global_rankinteger | nullGlobal traffic rank (often null on the public page).
global_rank_trendstring | nullup, flat or down.
country_rankinteger | nullTraffic rank within the domain's country.
country_rank_countrystring | nullCountry the rank applies to.
country_rank_trendstring | nullup, flat or down.
category_rankinteger | nullRank within the primary industry category.
category_rank_categorystring | nullCategory the rank applies to.
category_rank_trendstring | nullup, flat or down.

Search traffic

FieldTypeDescription
search_traffic_datestring | nullDate of the search-traffic figures.
organic_trafficnumber | nullEstimated monthly organic search visits.
organic_traffic_change_percentnumber | nullMonth-over-month change in organic traffic (%).
paid_trafficnumber | nullEstimated monthly paid search visits.
paid_traffic_change_percentnumber | nullMonth-over-month change in paid traffic (%).
total_search_trafficnumber | nullOrganic plus paid search visits.

Visits & device split

FieldTypeDescription
traffic_datestring | nullDate of the visits/device figures.
visitsnumber | nullEstimated total monthly visits.
visits_change_percentnumber | nullMonth-over-month change in visits (%).
desktop_visitsnumber | nullMonthly visits from desktop.
mobile_visitsnumber | nullMonthly visits from mobile.
desktop_share_percentnumber | nullDesktop share of visits (%).
mobile_share_percentnumber | nullMobile share of visits (%).
FieldTypeDescription
backlinksnumber | nullTotal backlinks in the most recent month.
backlinks_previous_monthnumber | nullTotal backlinks in the prior month.
backlinks_change_percentnumber | nullMonth-over-month change in backlinks (%).
referring_domainsnumber | nullUnique referring domains in the most recent month.
referring_domains_previous_monthnumber | nullUnique referring domains in the prior month.
referring_domains_change_percentnumber | nullMonth-over-month change in referring domains (%).
google_penalty_riskstring | nullSemrush's Google penalty risk label, e.g. Low.

History arrays (set includeHistory to true)

FieldTypeDescription
search_traffic_historyarrayMonthly organic/paid/total search traffic, most recent first.
traffic_by_device_historyarrayMonthly visits split into desktop and mobile, most recent first.
visits_historyarrayMonthly total visits, most recent first.
backlinks_historyarrayMonthly backlink counts, most recent first.
referring_domains_historyarrayMonthly referring-domain counts, most recent first.
FieldTypeDescription
trending_rankinteger | nullPosition in the Semrush trending ranking.
trending_countrystring | nullCountry of the trending ranking.
trending_categorystring | nullCategory slug of the trending ranking.
trending_total_trafficstring | nullTraffic as displayed in the trending table, e.g. 24.54B.
trending_desktop_share_percentnumber | nullDesktop share shown in the trending table.
trending_mobile_share_percentnumber | nullMobile share shown in the trending table.
trending_mom_percentnumber | nullMonth-over-month traffic change from the trending table.
trending_yoy_percentnumber | nullYear-over-year traffic change from the trending table.
trending_top_sourcestring | nullLargest traffic source, e.g. Direct.

Run metadata

FieldTypeDescription
source_modestringDiscovery mode that produced the row (domains or trending).
foundbooleanfalse when Semrush had no overview data for the domain.
scraped_atstringUTC timestamp when the row was scraped (ISO-8601).

Use cases

Rank a lead list by traffic before you call anyone. Feed 5,000 prospect domains in domains mode, sort the dataset by visits and backlinks, and route only the top slice to sales.

Build a competitor traffic tracker. Schedule a monthly run over your competitor set and append to the same dataset — visits_change_percent, organic_traffic_change_percent and backlinks_change_percent give you the deltas without any extra maths.

Find category winners you've never heard of. Turn on allCategories for a country and get the top 20 trending sites in each of 111 categories, enriched with full overview metrics.

Diligence a target company. backlinks_history and visits_history show whether growth is real and sustained or a one-month spike.

Spot link-building momentum. referring_domains_change_percent reveals who is actively acquiring links right now — useful for both competitive intel and outreach targeting.

Input parameters

ParameterTypeDefaultDescription
modestringdomainsdomains analyzes the list you provide; trending discovers domains from Semrush's trending rankings.
domainsarrayDomains or URLs to analyze, e.g. stripe.com or https://www.nytimes.com/section/world. URLs are normalized to the root domain automatically.
countrystringusCountry code for the trending ranking, e.g. us, gb, de, in.
categorystringallTrending category slug, e.g. finance, travel-and-tourism, mass-media. An unknown slug fails fast and lists the valid options.
allCategoriesbooleanfalseSweep every trending category for the chosen country (111 categories × 20 rows).
includeHistorybooleantrueInclude the 6-month history arrays. Turn off for a compact, flat CSV.
maxItemsinteger100Stop after this many rows.
minRequestIntervalnumber0.5Politeness delay in seconds before each domain lookup.
proxyConfigurationobjectdisabledOptional. Not required — the public pages are not proxy-gated.

Example input — domain list

{
"mode": "domains",
"domains": ["stripe.com", "shopify.com", "https://www.nytimes.com/section/world"],
"includeHistory": true,
"maxItems": 100
}
{
"mode": "trending",
"country": "us",
"category": "finance",
"includeHistory": false,
"maxItems": 20
}

Example output row (truncated)

{
"domain": "stripe.com",
"url": "https://www.semrush.com/website/stripe.com/overview/",
"country": "US",
"categories": ["Computer Software and Development", "Finance"],
"data_date": "2026-08-15",
"country_rank": 161,
"country_rank_country": "United States",
"country_rank_trend": "down",
"category_rank": 6,
"category_rank_category": "Finance",
"organic_traffic": 5667468,
"organic_traffic_change_percent": 2.48,
"paid_traffic": 439916,
"visits": 203227314,
"visits_change_percent": 12.94,
"desktop_share_percent": 51.25,
"mobile_share_percent": 48.75,
"backlinks": 151822916,
"backlinks_previous_month": 167449561,
"backlinks_change_percent": -9.33,
"referring_domains": 664614,
"referring_domains_change_percent": 4.86,
"google_penalty_risk": "Low",
"backlinks_history": [
{ "date": "2026-07-01", "backlinks": 151822916 },
{ "date": "2026-06-01", "backlinks": 167449561 }
],
"found": true,
"scraped_at": "2026-09-17T02:12:00Z"
}

Scheduling & webhooks

Semrush refreshes these pages roughly monthly, so a monthly schedule is the natural cadence for trend tracking. In the Apify Console open Schedules → Create new, pick this actor, and save your input.

Add a webhook (Actor → Integrations) on ACTOR.RUN.SUCCEEDED to push each finished dataset straight into Google Sheets, Slack, Zapier, Make, or your own endpoint. Runs resume from a checkpoint if they are aborted and resurrected, so long sweeps pick up where they stopped instead of starting over.

Using it from an AI assistant (MCP)

This actor works as a tool for LLM agents through the Apify MCP server, so an assistant can pull live traffic data mid-conversation:

{
"mcpServers": {
"apify": {
"command": "npx",
"args": ["-y", "@apify/actors-mcp-server"],
"env": { "APIFY_TOKEN": "<YOUR_APIFY_TOKEN>" }
}
}
}

Then ask things like "Compare the organic traffic and backlink growth of stripe.com and adyen.com over the last six months."

You can also call it from code with the Apify API or the JS/Python clients — every run's output is a standard dataset available as JSON, CSV, Excel or XML.

FAQ

Do I need a Semrush subscription or login? No. The actor only reads Semrush's public website overview and trending pages. There is no account, API key, or cookie to supply.

Do I need proxies? No. The pages are not proxy-gated. A proxyConfiguration input exists if you want to route traffic through Apify Proxy anyway, but leaving it off is fine and cheaper.

Why are authority_score, keywords, or competitor lists missing? Those are genuinely paywalled by Semrush and are not present in the public page data. This actor returns null for what it cannot see rather than inventing values. Backlinks and referring domains are available, including their monthly history.

How fresh is the data? Semrush's public overview data lags real time by roughly one month. Every row carries data_date and date_modified so you always know the vintage.

How accurate is it? The numbers are exactly what Semrush publishes — this actor does no estimation of its own. Semrush's figures are themselves modelled estimates, so treat them as directional, as you would in the Semrush UI.

What happens with a domain Semrush doesn't track? The run continues. In domains mode the domain is skipped and logged; in trending mode the row is still emitted with found: false so you keep the ranking context.

Can it handle thousands of domains? Yes. Raise maxItems, and the run checkpoints its progress so an aborted-and-resurrected run continues rather than restarting.

Is scraping this legal? The actor reads only publicly accessible pages — no login is bypassed and no paywalled content is unlocked. You are responsible for using the output in line with Semrush's terms and the laws that apply to you.

Something broke — how do I get help? Open an issue on the actor's Issues tab with your input JSON and the run ID.