Ahrefs · OpenAPI Overlay 1.0.0
API Evangelist enhancements for the Ahrefs API v3
11 actions
11 updates
update
extends
openapi/_original/ahrefs-openapi-original.json
Derived by API Evangelist
Built from the contracts Ahrefs publishes. Ahrefs did not publish this file.
What the actions change
x-apievangelist-profilex-apievangelist-harvestedx-apievangelist-spec-sourcex-apievangelist-spec-indexx-apievangelist-per-tool-specsx-apievangelist-operationsx-apievangelist-spec-discoveryx-apievangelist-note
Targets 4
$.info
$.servers
$.components.securitySchemes.http
$.tags
OpenAPI Overlay
overlay: 1.0.0
info:
title: API Evangelist enhancements for the Ahrefs API v3
version: 1.0.0
extends: openapi/_original/ahrefs-openapi-original.json
x-generated: '2026-08-12'
x-method: generated
x-source: >-
Derived from the harvested spec plus the Ahrefs docs. Records API Evangelist observations as
x- extensions only; the harvested spec is never mutated. Everything asserted here is evidenced in
the sibling artifacts named in each action.
actions:
- target: $.info
update:
x-apievangelist-profile: https://apis.io/provider/ahrefs
x-apievangelist-harvested: '2026-08-12'
x-apievangelist-spec-source: https://docs.ahrefs.com/openapi.json
x-apievangelist-spec-index: https://docs.ahrefs.com/reference/index.json
x-apievangelist-per-tool-specs: 13
x-apievangelist-operations: 148
- target: $.info
description: >-
NOTE (API Evangelist): the ahrefs.com marketing site publishes no /openapi.json and api.ahrefs.com
404s on every spec path. The authoritative machine-readable contract is served from the DOCS host
at https://docs.ahrefs.com/openapi.json, with one spec per tool under /reference/ and an index at
/reference/index.json. Consumers looking on the API host will not find it.
update:
x-apievangelist-spec-discovery: docs-host-only
- target: $.servers
update:
- url: https://api.ahrefs.com/v3
description: Ahrefs API v3
x-apievangelist-note: >-
Single production host. No sandbox host exists; free testing is done against the live host using
the magic targets/keywords recorded in sandbox/ahrefs-sandbox.yml.
- target: $.components.securitySchemes.http
update:
x-apievangelist-note: >-
The spec models only the static bearer API key. Two OAuth 2.0 surfaces exist outside the spec —
Ahrefs Connect (scope apiv3-integration-apps) and the hosted MCP server (scope apiv3-mcp,
discoverable at /.well-known/oauth-authorization-server). See authentication/ and scopes/.
x-apievangelist-key-lifetime: 1 year
x-apievangelist-key-max: 1000
- target: $.info
update:
x-apievangelist-metering:
unit: API unit
formula: max(50, per_row_cost * rows)
cost_driver: unique field names across select, where and order_by
response_headers:
- x-api-rows
- x-api-units-cost-row
- x-api-units-cost-total
- x-api-units-cost-total-actual
- x-api-cache
note: >-
Cost is a first-class part of this contract and is not expressed anywhere in the spec. Any
client that omits `select` or `limit` pays for it.
detail: rate-limits/ahrefs-rate-limits.yml
- target: $.info
update:
x-apievangelist-rate-limit:
requests_per_minute: 60
dynamic_throttling: true
status: 429
retry_after_header: false
ratelimit_headers: false
note: >-
GAP — no Retry-After and no RateLimit-* headers on 429, so a client has no runtime signal for
when to retry.
- target: $.info
update:
x-apievangelist-error-model:
shape: '{"error": "<string>"}'
rfc9457: false
codes_registry: false
statuses:
- 400
- 401
- 403
- 429
- 500
note: >-
Uniform across all 148 operations, which is good, but the payload carries only free-text prose
— there is no stable machine-readable error code to branch on. detail: errors/ahrefs-problem-types.yml
- target: $.info
update:
x-apievangelist-conventions:
pagination: offset+limit, no cursor, no total count
content_negotiation: '`output` query parameter (json|xml), not the Accept header'
dates: YYYY-MM-DD strings
money: USD cents — divide by 100
filtering: JSON `where` expression, URL-encoded
idempotency: not supported
detail: conventions/ahrefs-conventions.yml
- target: $.info
update:
x-apievangelist-lifecycle:
current_version: v3
previous_version_sunset: '2025-11-01'
sunset_header: false
deprecation_header: false
deprecated_operations_in_spec: 0
status_page: null
note: >-
Ahrefs executed a genuine dated deprecation of API v2 but publishes none of it in-band, and
removes v3 parameters with same-day changelog notice only. detail: lifecycle/ahrefs-lifecycle.yml
- target: $.info
update:
x-apievangelist-agent-surface:
mcp_server: https://api.ahrefs.com/mcp/mcp
mcp_tools_list: gated
llms_txt: https://docs.ahrefs.com/llms.txt
agent_skill: https://github.com/ahrefs/ahrefs-api-skills
agent_card: null
crosswalk: mcp/ahrefs-tool-crosswalk.yml
- target: $.tags
update:
- name: Public
x-apievangelist-note: >-
The only tool documented as usable without an Ahrefs subscription — crawler IPs/ranges and a free
Domain Rating endpoint. The de facto anonymous entry point to the API.
Work with this as data
Every overlay here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for openapi overlays
4 MCP tools reach this
find_overlaysBrowse and filter every overlay in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/ahrefs-api-v3-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.