Ahrefs SEO Scraper: Domain Rating, Traffic & AI Visibility avatar

Ahrefs SEO Scraper: Domain Rating, Traffic & AI Visibility

Pricing

from $0.86 / 1,000 website with ahrefstop data

Go to Apify Store
Ahrefs SEO Scraper: Domain Rating, Traffic & AI Visibility

Ahrefs SEO Scraper: Domain Rating, Traffic & AI Visibility

Ahrefs website data without an account: Domain Rating, organic traffic, traffic value, keywords, top countries, competitors and monthly history since 2015, plus top websites by country and category and AI visibility leaderboards. Export to JSON, CSV or Excel.

Pricing

from $0.86 / 1,000 website with ahrefstop data

Rating

0.0

(0)

Developer

Nice Dev

Nice Dev

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

13 hours ago

Last modified

Share

📈 What is Ahrefs SEO Scraper?

Ahrefs SEO Scraper extracts Ahrefs website data from AhrefsTop and Ahrefs: Domain Rating, organic search traffic, traffic value, organic keywords, top countries, top keywords, competitors and the monthly traffic history since 2015, for any list of domains. It also gives the top websites ranking of 170 countries and 25 categories, the AI visibility leaderboards (the brands ChatGPT, Gemini, Perplexity, Copilot, Grok or Google AI Overviews mention most, and the websites they cite most), and the full list of the about 200,000 websites AhrefsTop tracks. It works as an Ahrefs API alternative with no Ahrefs account, no API key and no subscription: run it on a schedule, call it from your code, or plug it into Make, Zapier or n8n.

Type a few domains (zapier.com), pick a country for its top websites, or tick AI leaderboards, click Start, and download the rows in JSON, CSV or Excel. It is fast: 1,000 top websites in under a minute, a full website page with its history in about 2 seconds. A domain AhrefsTop does not track comes back marked as not found, and is not billed.

📋 What data can you extract from Ahrefs?

One row per website, per ranking entry or per AI leaderboard entry, 58 fields:

CategoryWhat you get
🌐 Websitedomain, name and tagline, description, category — zapier.com, Computers & Electronics
🏅 AuthorityAhrefs Domain Rating (0-100) and referring domains (linking websites) with their monthly change — 91, 87,196
🚦 Organic trafficexact monthly organic search visits (not "3.6M"), change, last month, a year ago — 3,631,009
💵 Traffic valuewhat that traffic would cost in search ads per month, and its change — 5,253,565
🔑 Keywordsnumber of organic keywords, the 5 top keywords with search volume, traffic, Google position and changes — chatgpt, position 16
🌍 Countriesthe 5 countries that bring most traffic, exact visits and share — US, 34.3 %
🏆 Ranksworldwide rank, rank in the main country, rank in the category, with their change — Poland 50, category rank 95
🥊 Competitorscompeting websites with traffic and pages, the 5 websites ranked next to it; with the option, 10 competitors with Domain Rating, traffic value and ranks
📅 Historyorganic traffic and traffic value per month since June 2015, referring domains per month since April 2015 — 137 months for zapier.com
📊 Top websites rankingscountry, category, list (ranking or trending), rank and rank change, rounded traffic — youtube.com, rank 1
🤖 AI visibilityplatform, month, board (brands or cited websites), rank, name, link, number of AI answers — Walmart, 107,952
🕷️ Crawl status (option)whether AhrefsBot may crawl the website, per host and port, and when Ahrefs last checked

Every field, with an example, is listed in the Output section below.

A website row carries the full website data. A row of a top websites ranking carries what the ranking shows (rank, category, rounded traffic); tick Full website data for each top website to get the full data for each of them too.

✅ Why use Ahrefs SEO Scraper?

  • 📈 The widest website data: exact traffic, traffic value, Domain Rating, 5 countries, 5 keywords, competitors, similarly ranked websites and the monthly history since 2015, in one row per website.
  • 🌍 Every website AhrefsTop tracks: list the about 200,000 domains, keep only one ending (.fr, .de…), a Domain Rating range, a traffic floor or some categories — for link prospecting or market maps.
  • 🏆 Top websites by country and category: 170 countries plus worldwide, 25 categories, the ranking and the month's biggest climbers and fallers.
  • 🤖 AI visibility leaderboards: who ChatGPT, Gemini, Perplexity, Copilot, Grok, Claude, Google AI Overviews and Google AI Mode mention and cite most, for each of the last 12 months.
  • 🔑 No Ahrefs account, no API key: nothing to sign up for, no monthly plan to keep.
  • 🆓 Pay only for data: a domain AhrefsTop does not track is returned free, so you can paste a long list without checking it first.
  • 🔔 Monitoring built in: tick Only new rows, schedule the Actor, and each run returns (and charges) only the rows it never delivered before.
  • 🔌 API, scheduling, monitoring, integrations (Make, Zapier, n8n, Google Sheets…), proxy rotation and JSON/CSV/Excel export via the Apify platform.

🚀 How to scrape Ahrefs

  1. Create a free Apify account.
  2. Open Ahrefs SEO Scraper and type your Domains, one per line (e.g. zapier.com).
  3. Or pick a Top websites: country and categories, tick Every website AhrefsTop tracks, choose AI leaderboards: platforms — or paste AhrefsTop pages into AhrefsTop / Ahrefs URLs. All of them can run together.
  4. Set Max rows (1000 by default, 0 = no limit) — and Max rows per list when you read several rankings — then click Start.
  5. Download the dataset in JSON, CSV, Excel or via API.

💰 How much does it cost to scrape Ahrefs?

This Actor uses pay per event pricing: you pay for each row delivered, by kind, plus a small fee per run start. Platform usage (compute, proxy) is included in the price. The current price of each event is shown in the Pricing tab.

EventWhen it is charged
websitea website row with data: a domain you asked for, a website of the tracked list, or a ranking row read in full with Full website data (one event, never two)
top-websitea row of a top websites ranking
ai-leaderboard-rowone entry (brand or cited website) of an AI leaderboard
competitor-detailspaid option, off by default: each competitor delivered with its own metrics (up to 10 per website)
crawl-statuspaid option, off by default: each website delivered with its AhrefsBot crawl status

Free rows: a domain AhrefsTop does not track (found: false), and an AI leaderboard row of a platform Ahrefs does not publish on its own, or whose check could not be made (platformPublished not true) — they repeat the combined board. The monthly history is free too. Rows skipped by Only new rows are not charged, and Domain endings and Exclude domains containing remove domains before any page is read, at no cost.

The Domain Rating, traffic and category filters need the figure first: a row they drop costs a small filter fee instead of the row's price (filter-check for a ranking row, detail-filter-check when the website page had to be read) — filtering never costs more than taking everything.

⚙️ Input

A list of domains:

{
"domains": ["zapier.com", "semrush.com", "otodom.pl"]
}

Top websites of France, all websites and finance, ranking and trending lists, 50 rows per list:

{
"location": "france",
"topWebsitesCategories": ["all", "finance"],
"topWebsitesMode": "both",
"maxItemsPerQuery": 50
}

Every French website AhrefsTop tracks with a Domain Rating of 50 or more:

{
"allTrackedDomains": true,
"domainSuffixes": [".fr"],
"minDomainRating": 50,
"maxItems": 500
}

AI visibility leaderboards of ChatGPT and Perplexity for the last 3 months:

{
"aiPlatforms": ["chatgpt", "perplexity"],
"aiMonths": 3,
"aiLeaderboard": "both"
}

Or with pages pasted from your browser, and only the newcomers of a ranking at each run:

{
"startUrls": [
{ "url": "https://ahrefstop.com/websites/zapier.com" },
{ "url": "https://ahrefstop.com/websites/united-states/finance" }
],
"onlyNew": true,
"stateKey": "us-finance"
}
FieldNotes
domainsDomains, one per line: zapier.com, www.zapier.com or a full URL (https://zapier.com/apps). A domain AhrefsTop does not track comes back as found: false, free. Up to 10,000 domains.
startUrlsAhrefsTop pages: a website page (https://ahrefstop.com/websites/zapier.com, also its /competitors page) or a ranking page (https://ahrefstop.com/websites/united-states/finance, https://ahrefstop.com/websites/3). Max 1,000 URLs.
allTrackedDomainsRead the full list of websites AhrefsTop tracks (about 200,000) and deliver one website row each, up to Max rows.
domainSuffixesKeep only domains ending with one of these: .fr, .co.uk, .de. Applied before any page is read, to every domain of the run.
location, locationsCountry of the top websites ranking (worldwide, united-states, france…); locations adds more. worldwide lists up to 1,000 websites, a country or a category up to 100.
topWebsitesCategoriesCategories of the ranking: all (every website) or e.g. finance, news, shopping. Every country is crossed with every category and every list, one search each (max 500 searches per run).
topWebsitesModeranking (most organic traffic), trending (the 10 biggest climbers and 10 biggest fallers of the month: a country's categories all show the country's list, so it is read once per country; each worldwide category has its own) or both.
enrichTopWebsitesAlso read the full website page of each website of the rankings: delivered and billed as a website row that keeps its rank.
aiPlatformsAI leaderboards to read: all, chatgpt, gemini, perplexity, copilot, grok, claude, google-ai-overviews, google-ai-mode (US data). A platform Ahrefs does not publish on its own comes back with platformPublished: false (or null when that could not be checked), free.
aiMonthsHow many months back from the latest one: 1 to 12.
aiLeaderboardbrands (names AI assistants mention), sources (websites they cite) or both.
maxItems, maxItemsPerQueryRows for the whole run (1000 by default, 0 = no limit); rows taken from each ranking, trending list, AI platform (all its months and boards together) and from the tracked list (0 = the whole list).
includeHistory, includeCompetitorDetails, includeCrawlStatusMonthly history arrays (free, on by default); competitor details (paid option, one more page per website); AhrefsBot crawl status (paid option, one more request per website).
excludeKeywordsSkip any domain whose name contains one of these words (case ignored), e.g. casino. Applied before any page is read.
minDomainRating, maxDomainRatingDomain Rating range, e.g. at least 50. Top website rows without full website data have no Domain Rating and are kept.
minOrganicTrafficKeep only websites with at least this many monthly organic visits, e.g. 10,000.
onlyCategoriesKeep only websites of these AhrefsTop categories, e.g. finance.
onlyNew, stateKey, resetStateMonitoring: only the rows never delivered under this memory key (e.g. us-finance); resetState forgets the memory.
AdvancedproxyConfiguration (Apify proxy by default, included in the price; the residential proxy is not available), maxConcurrency, maxRequestsPerMinute, minRequestIntervalMs, maxRequestRetries, debugLog.

📦 Output

A real website row (zapier.com, both paid options off), with the long arrays shortened to their first entries:

{
"type": "website",
"id": "zapier.com",
"url": "https://ahrefstop.com/websites/zapier.com",
"scrapedAt": "2026-10-16T05:23:19.844Z",
"found": true,
"error": null,
"inputDomain": "zapier.com",
"domain": "zapier.com",
"dataMonth": "2026-10-01",
"title": "Zapier: Automate your work",
"description": "Zapier is an online automation platform that connects hundreds of web applications to automate repetitive tasks and workflows. It enables the creation of automated sequences called Zaps, where triggers in one app initiate actions in others, facilitating data movement and process automation across services such as email, messaging, project management, and cloud storage.",
"category": "Computers & Electronics",
"categorySlug": "computers-and-electronics",
"globalRank": null,
"globalRankLabel": ">1000",
"globalRankChange": null,
"countryRank": null,
"countryRankChange": null,
"countryRankCountry": null,
"categoryRank": 95,
"categoryRankChange": 18,
"organicTraffic": 3631009,
"organicTrafficChange": 285411,
"organicTrafficPrevious": 3345598,
"organicTrafficYearAgo": 4241549,
"trafficValue": 5253565,
"trafficValueChange": -178298,
"organicKeywords": 819400,
"domainRating": 91,
"linkingWebsites": 87196,
"linkingWebsitesChange": 980,
"topCountry": "US",
"topCountryShare": 0.343,
"topCountries": [
{
"countryCode": "US",
"country": "United States",
"isoNumeric": "840",
"organicTraffic": 1248760,
"organicTrafficPrevious": 1337676,
"organicTrafficChange": -88916,
"share": 0.343
}
],
"topKeywordsCountry": "US",
"topKeyword": "chatgpt",
"topKeywords": [
{
"keyword": "chatgpt",
"volume": 18900000,
"volumeChange": -240000,
"traffic": 121800,
"trafficChange": 121700,
"position": 16,
"positionChange": 31
}
],
"competitors": [{ "domain": "wordstream.com", "organicTraffic": 608000, "organicTrafficChange": -57500, "pages": 1100 }],
"similarlyRanked": [
{ "domain": "youtube.com", "organicTraffic": 3500000000, "organicTrafficChange": 1700000000, "rank": 1, "rankChange": 2 }
],
"historyMonths": 137,
"trafficHistory": [
{ "month": "2015-06-01", "organicTraffic": 65229, "trafficValue": 183323 },
{ "month": "2026-10-01", "organicTraffic": 3631009, "trafficValue": 5253565 }
],
"linkingWebsitesHistory": [
{ "month": "2015-04-01", "linkingWebsites": 3813 },
{ "month": "2026-09-01", "linkingWebsites": 87196 }
],
"competitorDetails": [],
"crawlStatus": [],
"crawlAllowed": null,
"rankingCountry": null,
"rankingCountrySlug": null,
"rankingCategorySlug": null,
"rankingList": null,
"rank": null,
"rankChange": null,
"trendDirection": null,
"platform": null,
"platformPublished": null,
"leaderboard": null,
"label": null,
"citedUrl": null,
"value": null
}

A row of a ranking (type = topWebsite) fills the website, rank and ranking columns; an AI leaderboard row (type = aiLeaderboard) fills the platform, board, rank, label, link and value columns. Columns that do not apply to a row are null (or an empty array).

You can download the dataset in various formats such as JSON, HTML, CSV or Excel.

All 58 fields

FieldsWhat you get
type, id, url, scrapedAtwebsite, topWebsite or aiLeaderboard; the row's id (zapier.com, united-states/all/ranking/youtube.com); the page it was read from; ISO timestamp
found, error, inputDomainWebsite: false when AhrefsTop does not track the domain (row free, metrics null) and why; what you typed
domain, dataMonth, title, description, category, categorySlugzapier.com, 2026-10-01 (month of the data), Zapier: Automate your work, AhrefsTop's description, Computers & Electronics, computers-and-electronics
globalRank, globalRankLabel, globalRankChangeRanks: worldwide rank by organic traffic (null outside the top 1,000, then >1000), places won or lost
countryRank, countryRankChange, countryRankCountryrank in the main country: 50, -4, Poland for otodom.pl
categoryRank, categoryRankChangerank in its category worldwide: 95, 18
organicTraffic, organicTrafficChange, organicTrafficPrevious, organicTrafficYearAgoOrganic traffic: 3631009 exact (rounded as shown on ranking rows), change, previous month, a year ago
trafficValue, trafficValueChangeTraffic value per month in search ads: 5253565, -178298
organicKeywordskeywords the website ranks for, as rounded by AhrefsTop: 819400
domainRating, linkingWebsites, linkingWebsitesChangeAuthority: Domain Rating 91, referring domains 87196, change 980
topCountry, topCountryShare, topCountriesCountries: US, 0.343; the 5 countries with exact visits, previous month, change and share
topKeywordsCountry, topKeyword, topKeywordsKeywords: US, chatgpt; 5 keywords with volume, traffic, position and their changes
competitors, similarlyRankedCompetitors: websites ranking for the same keywords (traffic, change, pages); the 5 websites ranked next to it
historyMonths, trafficHistory, linkingWebsitesHistoryHistory: 137 months; traffic and traffic value per month since June 2015; referring domains per month since April 2015
competitorDetailsCompetitor details option: 10 competitors with description, Domain Rating, traffic, traffic value, pages and ranks
crawlStatus, crawlAllowedAhrefsBot crawl status option: per host and port, allowed or not, Ahrefs' explanation and last check; true when allowed on the main host over HTTPS
rankingCountry, rankingCountrySlug, rankingCategorySlug, rankingListTop websites rankings: Worldwide, worldwide, all, ranking or trending
rank, rankChange, trendDirectionposition in the ranking or the AI board, places won or lost, up or down in a trending list
platform, platformPublished, leaderboardAI visibility: chatgpt; false when the platform is not published on its own, null when unknown (both free); brands or sources
label, citedUrl, valueWalmart or wikipedia.org; link of a cited website; number of AI answers in the month: 107952

💡 Tips

How to get more results

Tick Every website AhrefsTop tracks and set maxItems to 0 to get every tracked website (about 200,000). The worldwide ranking goes to 1,000 websites; a country or a category ranking to 100, and some have fewer (a country's finance ranking can hold only a few websites). Add more countries in locations and more categories to read many rankings in one run.

How to reduce costs

The price is per row, so the levers are maxItems, maxItemsPerQuery, domainSuffixes and excludeKeywords (free: applied before any page is read), the Domain Rating, traffic and category filters (a dropped row costs only the filter fee, lower than a row) and onlyNew for recurring runs (you never pay twice for the same row). The two paid options stay off unless you need them. Turning includeHistory off makes rows lighter but does not change the price.

Several rankings in one run

Fill locations, topWebsitesCategories and topWebsitesMode: the Actor reads one ranking per country × category × list (3 countries × 4 categories × 2 lists = 24 rankings, up to 500 per run). The single location field still works and is added to the list. Set maxItemsPerQuery to give every ranking its own cap: without it the first rankings can use up the whole maxItems budget. You can also paste several ranking pages into startUrls.

Tick Every website AhrefsTop tracks, set Domain endings to .de, a Domain Rating range (minDomainRating 30, maxDomainRating 70 to skip the giants) and a traffic floor: you get the matching German websites with their traffic, Domain Rating, top keywords and competitors.

Monitoring: only the new rows

Tick Only new rows (onlyNew) and schedule the Actor. The first run returns everything; each later run skips the rows already delivered: they are not saved, not charged, and with Full website data their website page is not read again. On a ranking, a later run returns the newcomers to the ranking — or, with Max rows per list or Max rows below the size of the list, the next websites down the list. The memory lives in a named key-value store of your account (ahrefs-seo-scraper-seen, up to 150,000 rows per key) and is only updated with rows that really reached the dataset, so a failed run never hides anything. Give each schedule its own stateKey (two schedules sharing a key would hide each other's rows), and tick resetState once to start over.

🔌 Integrations and API

Call the Actor via the Apify API, the JavaScript or Python clients, or connect it with integrations and webhooks (Make, Zapier, n8n, Google Sheets, Slack, Airtable…). The dataset can be fetched as JSON or CSV from any tool.

🤖 Use with AI agents (MCP)

AI agents (Claude, ChatGPT, Cursor…) can find and run this Actor through the Apify MCP server, billed to their Apify account like any run. It returns one row per website, per top websites ranking entry or per AI leaderboard entry. Actor id: nice_dev/ahrefs-seo-scraper; MCP server with this Actor only: https://mcp.apify.com/?tools=fetch-actor-details,nice_dev/ahrefs-seo-scraper.

Smallest input, for a cheap first call:

{
"domains": ["zapier.com"],
"maxItems": 10
}

Key output fields: domain, domainRating, organicTraffic, trafficValue, organicKeywords, topCountries, topKeywords and trafficHistory.

Cost: pay per event — one website, top-website or ai-leaderboard-row event per row plus a small fee per run start, domains not tracked free; see the pricing section above. Cap each call with maxItems and, through the API, with the run option maxTotalChargeUsd.

❓ FAQ

The Actor only reads what AhrefsTop and Ahrefs show publicly to any anonymous visitor. It logs in to nothing and uses no Ahrefs account or API key. The data describes websites (traffic, links, rankings), not people; if a domain or a description names a person, that is personal data protected by GDPR: do not store it without a legitimate reason. You are responsible for using the data in compliance with Ahrefs' Terms of Use and applicable law. This Actor is not affiliated with Ahrefs.

Does it need a login or a proxy?

No login, no account, no API key. The proxy is included in the price: leave the default setting (the residential proxy is not available). A request the site turns away is retried at once on a new proxy session, up to 10 times on top of the retries (without a proxy, after a pause of 5 seconds, doubled at each retry up to 150 seconds).

Why are some figures rounded?

Website rows carry the exact figures (3631009 visits, not "3.6M"). A row of a ranking carries the figures as the ranking prints them (3500000000 for "3.5B"); tick Full website data for each top website for the exact ones. The number of organic keywords, the competitor figures and the keyword volumes are always rounded as AhrefsTop shows them.

Is the data safe to open in Excel or to show on a web page?

Names, taglines and descriptions are copied as AhrefsTop writes them. A text can begin with -, +, = or @: Excel and Google Sheets may read such a cell of a CSV file as a formula or as a number. The Actor leaves the text as it is, so that the JSON and the API give the real value: when you open a CSV, import these columns as text. On a web page, escape every field like any text written by a stranger.

Known limitations

  • Only the about 200,000 websites AhrefsTop tracks have data. Any other domain comes back with found: false and every metric empty — free.
  • A few small websites have an AhrefsTop page with links only: they come back with found: true, their referring domains and history, and no traffic or Domain Rating, and count as a website row.
  • AI leaderboards are US data, 10 entries per board, for the last 12 months Ahrefs publishes.
  • Keyword research, backlink lists and search results pages are not part of this Actor.
  • onlyNew remembers rows, not their content: a website whose traffic changed is not returned again under the same key.
  • onlyNew keeps 150,000 rows per memory key: for Every website AhrefsTop tracks (about 193,600), split the list with domainSuffixes, one stateKey each, or the oldest rows come back (the run warns you).
  • A found: false row (free) is not remembered by onlyNew: the domain is looked up again on each run, and its row is delivered once AhrefsTop tracks it.
  • Two runs sharing the same stateKey at the same time may both return the same new row.

A run that reaches its timeout stops itself about 45 seconds before it: no new page is asked, what it read is saved and, with onlyNew, remembered, and the run ends Succeeded with "Stopped before the run's timeout". Resurrect it to go on from there, or give the next run a longer timeout (Run options).

A run the platform stops without warning (out of memory)

  • Resurrect it: it goes on from where it stood at most a minute before the stop. What it had read since is read again, and the rows already saved are skipped: none is delivered or charged twice, and maxItems still counts them.
  • With onlyNew, the memory is saved after each write (at most once every 2 seconds): resurrect the stopped run and the rows it had saved meanwhile join the memory; leave it stopped for good, and the next run may return the rows of its last 2 seconds once more.

Something doesn't work?

The last line of the log counts the rows saved, the pages read and the requests that failed after every retry. Those requests are listed, with the reason, in the FAILED_REQUESTS record of the run's key-value store. A run that saved nothing and had failed requests fails, and its last message gives the cause.

If AhrefsTop changes its pages, you are told instead of paying for blank rows. If the first 20 rows read all lack their domain, month, traffic or rank — or, on a website page, its Domain Rating, referring domains, countries, keywords, competitors or history — the run saves nothing more, stops and fails, and its last message names the missing field: at most those first rows are charged. A website that a Domain Rating or traffic filter drops because its page has no such figure counts among those 20. A run of fewer rows (a scheduled onlyNew run that finds a few new ones, a small Max rows) is checked at its end, from 5 rows: its rows are already saved, and the run fails with the missing field instead of ending green.

🛟 Support

Open an issue in the Issues tab with a link to your run: the run log and the FAILED_REQUESTS record of the key-value store show exactly which URLs failed and why.