First-party app
Ahrefs

Ahrefs

Query Ahrefs SEO data — domain rating, backlinks, referring domains, organic keywords, top pages, keyword research, SERP overview, Rank Tracker and Site Audit — and check API unit usage.

stable MarketingAnalytics & BI

About

Ahrefs ships in the w6w first-party pack. It declares 20 actions, 3 health checks, and the host runs its code in a sandbox that never sees the credential.

App id
io.w6w.ahrefs
Version
0.1.0
Author
w6w
Licence
MIT
Categories
Marketing · Analytics & BI

Overview

Ahrefs is an SEO and search-intelligence platform. This app connects a workflow to its v3 REST API with an API key, so a flow can pull the same data the Ahrefs reports show: a domain’s Domain Rating and its history, backlink and referring-domain profiles, anchor text, broken backlinks, organic keywords, top pages and organic competitors, plus search volume, difficulty and traffic potential for keywords, the live SERP for a keyword, Rank Tracker positions and Site Audit health scores and issues.

Every data call is a GET that takes a select list of columns, an optional where filter and order_by, and a limit. Ahrefs bills each request in API units (a 50-unit minimum, more per returned column and row), so each action returns the units the call actually cost, and a Limits and usage action reads the key’s monthly allowance and spend without consuming any. Free test targets (ahrefs.com, yep.com, firehose.com) cost nothing.

Ahrefs answers a bad key with HTTP 401 and a missing one with 403, both as a bare JSON array; this app reads the body rather than the status. Health checks verify the key against the free limits-and-usage call, whether the API answers, and the remaining unit headroom.

Build with Ahrefs

Three routes to the same 20 actions. The Workflow tab is generated from Ahrefs's own manifest and carries its real ids, so it is copy-pasteable; the Code and CLI examples are the same call for any action on any app, so every app-specific value in them is a blank you fill in.

List Anchors

anchor-list

List the anchor texts used in links to a target.

List Broken Backlinks

backlink-broken-list

List backlinks that point at a target's pages that no longer resolve — link-reclamation candidates.

List Backlinks

backlink-list

List the backlinks pointing at a target.

Get Backlinks Stats

backlinks-stats-get

Live and all-time backlink and referring-domain counts for a target.

Get Domain Rating

domain-rating-get

Domain Rating and Ahrefs Rank of a domain or URL on a date.

Get Domain Rating History

domain-rating-history

Domain Rating over time for a domain or URL.

List Matching Terms

keyword-matching-term-list

Keyword ideas that contain the seed keywords.

Get Keyword Overview

keyword-overview-get

Search volume, difficulty, CPC and traffic potential for keywords in a country.

List Related Terms

keyword-related-term-list

Keywords that top-ranking pages for the seed keywords also rank for.

Get Site Metrics

metrics-get

Organic and paid keyword, traffic and cost totals for a target on a date.

List Organic Competitors

organic-competitor-list

List the domains that compete with a target for organic keywords.

List Organic Keywords

organic-keyword-list

List the keywords a target ranks for in organic search.

List Projects

project-list

List Ahrefs projects (Rank Tracker and Site Audit) the key can see. Free.

Get Rank Tracker Overview

rank-tracker-overview-get

Keyword positions, traffic and changes for a Rank Tracker project on a date.

List Referring Domains

referring-domain-list

List the domains that link to a target.

Get SERP Overview

serp-overview-get

The live search results for a keyword, with each result's rating and traffic.

List Site Audit Issues

site-audit-issue-list

The issues found by a Site Audit crawl, with counts and change since a comparison crawl.

List Site Audit Health Scores

site-audit-project-list

Health scores of Site Audit projects, optionally filtered by id, name or URL.

List Top Pages

top-page-list

List a target's pages with the most organic traffic.

Get Limits and Usage

usage-get

Read the plan, the API key's expiry and the API units this key and workspace have used and may use, plus the reset date. Free — consumes no units.

A workflow step names the app and the action, and the editor fills in the connection when you pick one. This is the Step shape from the workflow spec, carrying Ahrefs's real ids.

{
  "manifestVersion": "2",
  "name": "ahrefs-example",
  "steps": [
    {
      "id": "anchor-list",
      "uses": {
        "app": "io.w6w.ahrefs",
        "action": "anchor-list",
        "connection": "conn_YOUR_CONNECTION_ID"
      },
      "with": {
        "target": "<target>"
      }
    }
  ]
}

Here are some of the things you can do

  • List Anchors

    read
    anchor-list
  • List Broken Backlinks

    read
    backlink-broken-list
  • List Backlinks

    read
    backlink-list
  • Get Backlinks Stats

    read
    backlinks-stats-get
  • Get Domain Rating

    read
    domain-rating-get

+15 more actions available

Every app-specific value here is a blank you have to fill in. An app action is reached through the connection that authenticates it, so the address is a connection id, not the app id — and connections belong to your account, so a public page cannot know yours. Create one for Ahrefs, then fill in the three blanks: conn_YOUR_CONNECTION_ID, the action key, and the parameters that action declares. The call itself is real — the shape is transcribed from the studio's own snippet builder, which prints the same kind of blanks — but nothing in it is specific to Ahrefs. The Workflow tab is where this app's real ids are.

Install
npm install @w6w/sdk
yarn add @w6w/sdk
pnpm add @w6w/sdk
deno add npm:@w6w/sdk
Code
import { W6wClient, isActionRun } from "@w6w/sdk";

// Reads W6W_BASE_URL and W6W_TOKEN from the environment when omitted.
const client = new W6wClient();

const envelope = await client.run({
  urn: "conn_YOUR_CONNECTION_ID",
  action: "anchor-list",
  payload: {
    target: "<value>",
    // select: "<value>",
    // where: "<value>",
    // orderBy: "<value>",
    // limit: "<value>",
    // mode: "<value>",
    // protocol: "<value>",
  },
});

if (isActionRun(envelope)) console.log(envelope.value);
Install the CLI
npm install -g @w6w/cli
CLI
w6w run conn_YOUR_CONNECTION_ID --action anchor-list --payload '{"target":"<value>"}'

Give an AI agent Ahrefs — without giving it Ahrefs's credentials. One MCP endpoint exposes every app, function and workflow the caller is entitled to, as tools it can discover and run. Access is granted per team while we onboard.

One tool call
{
  "name": "w6w_invoke",
  "arguments": {
    "ref": "app:io.w6w.ahrefs#anchor-list",
    "input": {
      "target": "<target>"
    }
  }
}

Every tool names its target with a single ref. The app: form above doesn't name a connection at all — the host resolves which of the caller's Ahrefs connections to sign with, and refuses rather than guesses when the answer is ambiguous.

What the agent gets

Credentials it can't read

The token is attached host-side, at the moment of the call. It is never a tool argument, never in the model's context, and never in a transcript — so a prompt injection has nothing to exfiltrate.

A tool surface scoped to the caller

Tools are derived per end user from what that person has actually connected and is entitled to — not one shared bot identity carrying the union of everyone's access.

A durable workflow in one call

Multi-step work runs on the workflow engine and returns a run handle the agent can poll — retries, branching and state survive the conversation that started them.

Health-aware discovery

Ahrefs's declared health checks are on the surface too, so an agent can tell "the vendor is down" from "your credential expired" before it burns a retry on either.

The MCP surface is part of the hosted platform. Ahrefs itself is MIT, and the runtime that executes it is source-available (FSL).

Request MCP access

Health checks

Ahrefs declares its own checks, so its health is a property of the app rather than something the host guesses at.

service

Ahrefs platform status

dependency

API reachable

Unauthenticated GET limits-and-usage. Ahrefs' JSON error body (Forbidden) passes: it proves the application is answering.

quota

API unit headroom

Monthly API units remaining, from the free limits-and-usage call.