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.

GET/api/v1/search/web?q=postgres+connection+pooling&num=3
200 OK0.17s1 credit85,000 results
{  "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 comparison between Searlo and Ahrefs
CapabilitySearloAhrefs
Minimum to use the API at allNone — pay-per-call from a one-time credit packLite plan, $129/mo (1,000 API credits/user)
Unverified keyword / overview pull2 credits flatDeducted from the plan's monthly API-credit allotment
Content Gap pull2 credits flatNot 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 seatAlways — every call is pay-per-useOnly on Advanced ($449/mo) or Enterprise ($1,499/mo, annual)
Free tier3,000 credits, no cardNone published for API access
Underlying data sourceGoogle Ads keyword association + live SERPs Searlo runs on request, labeled per rowAhrefs' 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.