Ahrefs API Alternative
The Ahrefs API Alternative
Ahrefs bundles API access into its subscription tiers — the Lite plan at $129/month and up, with 1,000 API credits per user, no pay-as-you-go option. Searlo sells the same five Site Explorer report types per call, starting at 2 credits, with no subscription required.
{ "searchTime": 0.17, "totalResults": 85000, "page": 1, "organic": [ { "position": 1, "title": "31.10. Connection Pools and Data Sources", "link": "www.postgresql.org/docs/…", "domain": "postgresql.org", "snippet": "For an environment without an application se…" }, { "position": 2, "domain": "medium.com", … }, { "position": 3, "domain": "stackoverflow.blog", … } ], "credits": 1}Is there an Ahrefs API alternative that doesn't require a subscription?
Yes. Ahrefs requires a Lite plan or higher ($129/mo, 1,000 API credits per user) just to unlock API access — there is no pay-as-you-go tier. Searlo exposes the same five Site Explorer report types — organic keywords, top pages, competing domains, content gap, and overview — as pay-per-call REST endpoints, priced from 2 credits with no subscription and 3,000 free credits to start.
The two products are not identical underneath. Ahrefs' numbers come from a backlink and rank index it has crawled continuously for over a decade. Searlo's keyword rows come from Google Ads' own content-to-keyword association, and position/competitor data comes from live SERPs Searlo runs when you ask — cheaper and available per call, but a narrower, differently-sourced signal, not a drop-in replacement for a crawled link graph or Domain Rating.
- Ahrefs Starter ($29/mo)
- No API access at all— ahrefs.com/pricing
- Ahrefs Lite
- $129/mo — API + MCP unlocked, 1,000 credits/user— ahrefs.com/pricing
- Ahrefs Standard / Advanced
- $249/mo / $449/mo — unlimited API credits/user— ahrefs.com/pricing
- Ahrefs Enterprise
- $1,499/mo, annual commitment — uncapped— ahrefs.com/pricing
- Searlo: unverified keyword/overview/gap pull
- 2 credits flat — no plan, no seat
- Searlo: verified position, per keyword (default depth)
- 30 credits (3 credits x 10 pages)
- Searlo free tier
- 3,000 credits, no card— our pricing
Third-party figures on this page last verified against the sources linked above. Prices change; if you find one of these stale, tell us and we will correct it.
Ahrefs' Site Explorer sells five report types that map almost exactly onto this API's five endpoints: Organic Keywords, Top Pages, Competing Domains, Content Gap, and the Overview snapshot. If a team's actual need is one or more of those reports over an API — not the crawler, the dashboard, or the link-index browsing UI — the honest question is what that access costs and what data actually backs it.
Ahrefs answers the cost question with a subscription floor: API and MCP access do not exist below the Lite plan, $129/month, and even Lite caps usage at 1,000 API credits per seat. Uncapped per-seat credits require Standard ($249/mo) or Advanced ($449/mo); Enterprise ($1,499/mo) requires an annual commitment. There is no pay-as-you-go tier and no free API allotment.
Searlo answers it the other way: the same five report shapes, sold per call from a one-time credit pack, starting at 2 credits for an unverified pull. There is a real trade — see the honesty note below — but for a team that wants these five reports without buying a monthly seat, it is a direct structural alternative.
Features
No $129/mo floor
API access requires zero subscription — pay per call from a one-time credit pack, starting at 2 credits.
Content Gap, via API only
Ahrefs doesn't expose Content Gap through its API at any tier — /domain/gaps is Searlo's API-accessible equivalent, across up to 10 named rivals, unverified or SERP-verified.
Competing Domains, measured
/domain/competitors mirrors Competing Domains from real co-occurrence on verified SERPs, not a similarity score.
Organic Keywords + Top Pages
/domain/keywords and /domain/top-pages mirror Ahrefs' two flagship reports — Ads-modelled by default, SERP-verified on request.
Overview snapshot
/domain/overview mirrors the Site Explorer overview: footprint, topics, CPC, and (when verified) organic visibility.
Labeled, not blended
Every row states `google_ads_site_seed` or `serp_verified` — the provenance a crawled index doesn't need to disclose, and ours does.
Get started in one request
The same five calls that stand in for a Site Explorer session — keyword footprint, verified top pages, competitors, keyword gap against named rivals, and an overview.
# 1. Keyword footprint — cheap, no positions (2 credits flat)
curl "https://api.searlo.tech/api/v1/domain/keywords?domain=yourdomain.com&limit=50" \
-H "x-api-key: YOUR_API_KEY"
# 2. Verified top pages — always runs a live SERP per keyword checked
curl "https://api.searlo.tech/api/v1/domain/top-pages?domain=yourdomain.com&limit=20" \
-H "x-api-key: YOUR_API_KEY"
# 3. Competitors — co-occurrence across SERPs this call verifies independently
curl "https://api.searlo.tech/api/v1/domain/competitors?domain=yourdomain.com&limit=20" \
-H "x-api-key: YOUR_API_KEY"
# 4. Keyword gap — what up to 10 rivals are associated with that you are not
curl "https://api.searlo.tech/api/v1/domain/gaps?target=yourdomain.com&competitors=competitor1.com,competitor2.com&result_limit=50" \
-H "x-api-key: YOUR_API_KEY"
# 5. Overview — footprint, topics and (if verified) measured visibility
curl "https://api.searlo.tech/api/v1/domain/overview?domain=yourdomain.com" \
-H "x-api-key: YOUR_API_KEY"import requests
BASE = "https://api.searlo.tech/api/v1"
HEADERS = {"x-api-key": "YOUR_API_KEY"}
domain = "yourdomain.com"
rivals = "competitor1.com,competitor2.com"
# 1. Keyword footprint — Google Ads site-seed association, no positions.
# 2 credits flat. Add verify=True to run a live SERP on up to 10 of these
# keywords per call (adds 3 credits x depth-in-pages per keyword verified).
keywords = requests.get(f"{BASE}/domain/keywords",
params={"domain": domain, "limit": 50},
headers=HEADERS).json()["results"]
# 2. Verified top pages — no `verify` param; every call runs SERPs.
top_pages = requests.get(f"{BASE}/domain/top-pages",
params={"domain": domain, "limit": 20},
headers=HEADERS).json()["results"]
# 3. Competitors — domains co-occurring on the SERPs this call verified.
competitors = requests.get(f"{BASE}/domain/competitors",
params={"domain": domain, "limit": 20},
headers=HEADERS).json()["results"]
# 4. Keyword gap — keywords the rivals are associated with that the target
# is not. Cheap by default (Ads association on both sides); verify=True
# measures the target's live position on the gap keywords instead.
gaps = requests.get(f"{BASE}/domain/gaps",
params={"target": domain, "competitors": rivals, "result_limit": 50},
headers=HEADERS).json()["results"]
# 5. Overview — footprint, topics, and organic_visibility (None unless verified).
overview = requests.get(f"{BASE}/domain/overview",
params={"domain": domain},
headers=HEADERS).json()["result"]
print(len(keywords), "keywords,", len(top_pages), "top pages,",
len(competitors), "competitors,", len(gaps), "gap keywords")
print(overview["keyword_footprint"], "total footprint,",
overview["total_search_volume"], "monthly search volume")const BASE = "https://api.searlo.tech/api/v1";
const headers = { "x-api-key": "YOUR_API_KEY" };
const domain = "yourdomain.com";
const rivals = "competitor1.com,competitor2.com";
// 1. Keyword footprint — Ads site-seed association, no positions. 2 credits flat.
const { results: keywords } = await (await fetch(
`${BASE}/domain/keywords?domain=${domain}&limit=50`, { headers },
)).json();
// 2. Verified top pages — every call runs SERPs, no `verify` param to set.
const { results: topPages } = await (await fetch(
`${BASE}/domain/top-pages?domain=${domain}&limit=20`, { headers },
)).json();
// 3. Competitors — co-occurrence on the SERPs this call verified.
const { results: competitors } = await (await fetch(
`${BASE}/domain/competitors?domain=${domain}&limit=20`, { headers },
)).json();
// 4. Keyword gap — up to 10 competitor domains, comma-separated.
const gapParams = new URLSearchParams({ target: domain, competitors: rivals, result_limit: "50" });
const { results: gaps } = await (await fetch(
`${BASE}/domain/gaps?${gapParams}`, { headers },
)).json();
// 5. Overview — organic_visibility is null unless a verified call fed it.
const { result: overview } = await (await fetch(
`${BASE}/domain/overview?domain=${domain}`, { headers },
)).json();
console.log(keywords.length, "keywords,", topPages.length, "top pages,",
competitors.length, "competitors,", gaps.length, "gap keywords");
console.log(overview.keyword_footprint, "total footprint,",
overview.total_search_volume, "monthly search volume");Searlo vs Ahrefs
Ahrefs sells API access as an add-on to a subscription tier. Searlo sells the reports themselves, per call, from a one-time pack.
| Capability | Searlo | Ahrefs |
|---|---|---|
| Minimum to use the API at all | None — pay-per-call from a one-time credit pack | Lite plan, $129/mo (1,000 API credits/user) |
| Unverified keyword / overview pull | 2 credits flat | Deducted from the plan's monthly API-credit allotment |
| Content Gap pull | 2 credits flat | Not available via API at any tier — Content Gap is dashboard-only |
| Verified position check, per keyword (default depth) | 30 credits (3 x 10 pages) | Deducted from the same allotment |
| Uncapped API credits per seat | Always — every call is pay-per-use | Only on Advanced ($449/mo) or Enterprise ($1,499/mo, annual) |
| Free tier | 3,000 credits, no card | None published for API access |
| Underlying data source | Google Ads keyword association + live SERPs Searlo runs on request, labeled per row | Ahrefs' own continuously-crawled backlink and SERP index |
Site Explorer, mapped to five endpoints
Four of these five are reports Ahrefs itself sells through its API, each with a direct counterpart here — the mapping is not a rebrand, since the two products measure differently underneath, but the shapes line up closely enough that a workflow built around one of Ahrefs' API endpoints can be rebuilt around the matching one here without inventing a new mental model. The fifth, Content Gap, isn't one of them: Ahrefs sells it only through the Site Explorer dashboard, never through its own API at any tier, so /domain/gaps is the only per-call way to pull that report at all.
- Organic Keywords → /domain/keywords (Ads-associated by default; verify=true adds live positions on up to 10 keywords per call)
- Top Pages → /domain/top-pages (always verified — a page is grouped from measured positions, not crawled rank history)
- Organic competitors (Ahrefs' dashboard label: Competing Domains) → /domain/competitors (always verified — co-occurrence on the SERPs this call checked)
- Content Gap → /domain/gaps (not sold through Ahrefs' API at any tier — Ads-associated by default across up to 10 named rivals; verify=true measures your live position on the gap keywords)
- Site Explorer overview → /domain/overview (footprint, topics, CPC; organic_visibility only once verified)
What this is not
Ahrefs' numbers come from a link graph and rank index it has crawled continuously for well over a decade. This API does not attempt to replicate that: there is no Domain Rating, no backlink count, no historical link-growth chart, and no crawled-URL discovery here. /domain/keywords and /domain/overview return Google Ads' own keyword association for a domain; /domain/top-pages, /domain/competitors, and a verified /domain/gaps call return positions Searlo measured directly, at the moment you called, not pulled from a standing index.
If a workflow specifically needs backlink profiles, Domain Rating, or a multi-year ranking history, Ahrefs' crawled index is the only place that data lives — this is a live, per-call alternative for keyword-footprint and competitive-visibility reporting, not a claim to have rebuilt Ahrefs' link graph for less money.
Why teams move Site Explorer workflows to an API
- Agencies running audits for many clients without buying an Ahrefs seat per analyst
- Products that need one of these five reports as a feature, not a dashboard tab
- Occasional or bursty domain research that doesn't justify a $129+/mo floor
- Teams already calling Searlo for search or rank data who want domain reports on the same key
FAQ
Frequently asked questions
Does Ahrefs have a free API tier?
No. Ahrefs' Starter plan ($29/mo) has no API access at all, and the cheapest plan that includes it — Lite, $129/mo — caps usage at 1,000 API credits per seat with no free allotment and no pay-as-you-go option, per ahrefs.com/pricing (verified 2026-09-13).
What does the Ahrefs API cost?
API and MCP access require Lite ($129/mo, 1,000 credits/user) or higher. Standard ($249/mo) and Advanced ($449/mo) include unlimited credits per user; Enterprise ($1,499/mo, annual commitment) is uncapped. There is no metered, subscription-free way to call the Ahrefs API.
Is there a pay-as-you-go alternative to the Ahrefs API?
Yes. Searlo sells the same five Site Explorer report types — organic keywords, top pages, competing domains, content gap, and overview — as REST endpoints priced per call: 2 credits flat for an unverified pull, plus 3 credits per 10 results of depth for each keyword you verify with a live SERP. No subscription, 3,000 free credits to start.
Does Searlo replace Ahrefs' backlink index or Domain Rating?
No, and it doesn't claim to. Ahrefs' figures come from a backlink and rank index crawled continuously for over a decade. Searlo's domain reports come from Google Ads' keyword association plus live SERPs run on request — real, but a narrower and differently-sourced signal. There is no Domain Rating, backlink count, or historical link chart in this API.
Which Ahrefs Site Explorer reports does Searlo cover?
All five: Organic Keywords maps to /domain/keywords, Top Pages to /domain/top-pages, Competing Domains to /domain/competitors, Content Gap to /domain/gaps, and the Site Explorer overview to /domain/overview.
How much does a keyword-gap call cost compared to Ahrefs' Content Gap tool?
Searlo's /domain/gaps costs 2 credits per domain in the comparison unverified — 22 credits for a target plus 10 competitors — plus 3 credits per 10 results of depth for each of up to 10 gap keywords you verify. There's no Ahrefs API price to compare it against: Content Gap is a Site Explorer dashboard tool that Ahrefs has never exposed through its API, at any subscription tier or price — /domain/gaps is Searlo's API-accessible equivalent, not a cheaper version of an Ahrefs API feature.