Work with this as data
Every API 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 apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.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 API
curl "https://apis.io/api/v1/apis/ahrefs-management-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
OpenAPI Specification
openapi: 3.2.0
info:
title: Ahrefs Management API
description: Ahrefs API v3 gives programmatic access to Ahrefs' SEO, marketing, and AI-search data — backlinks, organic and paid traffic, keywords, SERPs, rank tracking, site audits, brand/AI-search visibility, web and social analytics, and account management. This is the full spec for every tool; each tool also has its own spec under /reference/.
termsOfService: https://ahrefs.com/terms
contact:
name: Ahrefs
url: https://ahrefs.com/
email: support@ahrefs.com
version: 3.0.0
servers:
- url: https://api.ahrefs.com/v3
description: Ahrefs API v3
security:
- http:
- read
tags:
- name: Management
description: Project management.
paths:
/management/projects:
get:
tags:
- Management
summary: Projects
description: '>Requests to this endpoint are free and do not consume any API units.'
operationId: management.projects
parameters:
- description: The access type of the project.
required: false
explode: false
schema:
type: string
enum:
- private
- shared
name: access
in: query
- description: The email of the project owner
required: false
explode: false
schema:
type: string
name: owned_by
in: query
- description: 'The unique identifier of the project. You can find it in the URL of your Rank Tracker project in Ahrefs: `https://app.ahrefs.com/rank-tracker/overview/#project_id#`'
required: false
explode: false
schema:
type: integer
name: project_id
in: query
- description: Has Rank Tracker keywords.
required: false
explode: false
schema:
type: boolean
name: has_keywords
in: query
- $ref: '#/components/parameters/management.output'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/management.projects'
application/xml:
schema:
$ref: '#/components/schemas/management.projects'
'400':
$ref: '#/components/responses/management.error_400'
'401':
$ref: '#/components/responses/management.error_401'
'403':
$ref: '#/components/responses/management.error_403'
'429':
$ref: '#/components/responses/management.error_429'
'500':
$ref: '#/components/responses/management.error_500'
post:
tags:
- Management
summary: Projects
description: '>Requests to this endpoint are free and do not consume any API units.'
operationId: management.projects.post
parameters:
- $ref: '#/components/parameters/management.output'
requestBody:
content:
application/json:
schema:
properties:
access:
type: string
enum:
- private
- shared
description: The access type of the project.
default: private
owned_by:
type: string
description: The email of the project owner. If not provided, the project is assigned to the Workspace owner.
project_name:
type: string
description: The name of the project.
mode:
type: string
enum:
- exact
- prefix
- domain
- subdomains
description: The scope of the target.
url:
type: string
format: url
description: The URL of your target.
protocol:
type: string
enum:
- both
- http
- https
description: The protocol of your target.
folder_id:
type: integer
description: The folder id to assign to the project. You can find the id of a folder in `https://app.ahrefs.com/dashboard/folders/#folder_id#`.
type: object
required:
- project_name
- mode
- url
- protocol
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/management.projects'
application/xml:
schema:
$ref: '#/components/schemas/management.projects'
'400':
$ref: '#/components/responses/management.error_400'
'401':
$ref: '#/components/responses/management.error_401'
'403':
$ref: '#/components/responses/management.error_403'
'429':
$ref: '#/components/responses/management.error_429'
'500':
$ref: '#/components/responses/management.error_500'
delete:
tags:
- Management
summary: Projects
description: '>Requests to this endpoint are free and do not consume any API units.'
operationId: management.projects.delete
parameters:
- description: A comma-separated list of the IDs of the projects you want to delete.
required: true
explode: false
schema:
type: string
name: project_ids
in: query
- $ref: '#/components/parameters/management.output'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/management.projects'
application/xml:
schema:
$ref: '#/components/schemas/management.projects'
'400':
$ref: '#/components/responses/management.error_400'
'401':
$ref: '#/components/responses/management.error_401'
'403':
$ref: '#/components/responses/management.error_403'
'429':
$ref: '#/components/responses/management.error_429'
'500':
$ref: '#/components/responses/management.error_500'
/management/update-project:
patch:
tags:
- Management
summary: Update Project
description: '>Requests to this endpoint are free and do not consume any API units.
At least one of `access` or `folder` must be set.
'
operationId: management.update-project
parameters:
- $ref: '#/components/parameters/management.output'
requestBody:
content:
application/json:
schema:
properties:
project_id:
type: integer
description: 'The ID of the project whose access setting you want to update. You can find it in the URL of your Rank Tracker project in Ahrefs: `https://app.ahrefs.com/rank-tracker/overview/#project_id#`'
folder:
oneOf:
- properties:
operation:
type: string
enum:
- remove
type: object
required:
- operation
title: remove
description: Remove project from its folder tree entirely.
- properties:
operation:
type: string
enum:
- move
folder_id:
type: integer
description: The folder id to move the project to. You can find the id of a folder in `https://app.ahrefs.com/dashboard/folders/#folder_id#`.
type: object
required:
- operation
- folder_id
title: move
description: Move a project to a folder.
description: 'A folder operation, applied before the access change.
Keep in mind that moving a project to another folder may make it visible to members of the destination folder.'
discriminator:
propertyName: operation
access:
type: string
enum:
- private
- shared
description: The new access setting for the project.
type: object
required:
- project_id
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/management.update-project'
application/xml:
schema:
$ref: '#/components/schemas/management.update-project'
'400':
$ref: '#/components/responses/management.error_400'
'401':
$ref: '#/components/responses/management.error_401'
'403':
$ref: '#/components/responses/management.error_403'
'429':
$ref: '#/components/responses/management.error_429'
'500':
$ref: '#/components/responses/management.error_500'
/management/project-keywords:
get:
tags:
- Management
summary: Keywords
description: '>Requests to this endpoint are free and do not consume any API units.'
operationId: management.project-keywords
parameters:
- description: 'The unique identifier of the project. You can find it in the URL of your Rank Tracker project in Ahrefs: `https://app.ahrefs.com/rank-tracker/overview/#project_id#`'
required: true
explode: false
schema:
type: integer
name: project_id
in: query
- $ref: '#/components/parameters/management.output_json_php_xml'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/management.project-keywords'
application/xml:
schema:
$ref: '#/components/schemas/management.project-keywords'
'400':
$ref: '#/components/responses/management.error_400'
'401':
$ref: '#/components/responses/management.error_401'
'403':
$ref: '#/components/responses/management.error_403'
'429':
$ref: '#/components/responses/management.error_429'
'500':
$ref: '#/components/responses/management.error_500'
put:
tags:
- Management
summary: Keywords
description: '>Requests to this endpoint are free and do not consume any API units.'
operationId: management.project-keywords.put
parameters:
- description: 'The unique identifier of the project. You can find it in the URL of your Rank Tracker project in Ahrefs: `https://app.ahrefs.com/rank-tracker/overview/#project_id#`'
required: true
explode: false
schema:
type: integer
name: project_id
in: query
- $ref: '#/components/parameters/management.output_json_php_xml'
requestBody:
content:
application/json:
schema:
properties:
keywords:
items:
properties:
keyword:
type: string
description: The keyword to add.
tags:
items:
type: string
type: array
description: A list of tags to assign to a given keyword.
type: object
required:
- keyword
type: array
minItems: 1
description: A list of keywords to add.
locations:
items:
properties:
country:
type: string
enum:
- ad
- ae
- af
- ag
- ai
- al
- am
- ao
- ar
- as
- at
- au
- aw
- az
- ba
- bb
- bd
- be
- bf
- bg
- bh
- bi
- bj
- bn
- bo
- br
- bs
- bt
- bw
- by
- bz
- ca
- cd
- cf
- cg
- ch
- ci
- ck
- cl
- cm
- cn
- co
- cr
- cu
- cv
- cy
- cz
- de
- dj
- dk
- dm
- do
- dz
- ec
- ee
- eg
- es
- et
- fi
- fj
- fm
- fo
- fr
- ga
- gb
- gd
- ge
- gf
- gg
- gh
- gi
- gl
- gm
- gn
- gp
- gq
- gr
- gt
- gu
- gy
- hk
- hn
- hr
- ht
- hu
- id
- ie
- il
- im
- in
- iq
- is
- it
- je
- jm
- jo
- jp
- ke
- kg
- kh
- ki
- kn
- kr
- kw
- ky
- kz
- la
- lb
- lc
- li
- lk
- ls
- lt
- lu
- lv
- ly
- ma
- mc
- md
- me
- mg
- mk
- ml
- mm
- mn
- mq
- mr
- ms
- mt
- mu
- mv
- mw
- mx
- my
- mz
- na
- nc
- ne
- ng
- ni
- nl
- 'no'
- np
- nr
- nu
- nz
- om
- pa
- pe
- pf
- pg
- ph
- pk
- pl
- pn
- pr
- ps
- pt
- py
- qa
- re
- ro
- rs
- ru
- rw
- sa
- sb
- sc
- se
- sg
- sh
- si
- sk
- sl
- sm
- sn
- so
- sr
- st
- sv
- td
- tg
- th
- tj
- tk
- tl
- tm
- tn
- to
- tr
- tt
- tw
- tz
- ua
- ug
- us
- uy
- uz
- vc
- ve
- vg
- vi
- vn
- vu
- ws
- ye
- yt
- za
- zm
- zw
description: A two-letter country code (ISO 3166-1 alpha-2).
location_id:
type: integer
description: The location ID.
language:
type: string
description: The location code.
type: object
required:
- country
type: array
minItems: 1
description: A list of locations to assign to given keywords. You can use the 'Locations and languages' endpoint to get country codes, language codes and location IDs.
type: object
required:
- keywords
- locations
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/management.project-keywords'
application/xml:
schema:
$ref: '#/components/schemas/management.project-keywords'
'400':
$ref: '#/components/responses/management.error_400'
'401':
$ref: '#/components/responses/management.error_401'
'403':
$ref: '#/components/responses/management.error_403'
'429':
$ref: '#/components/responses/management.error_429'
'500':
$ref: '#/components/responses/management.error_500'
/management/project-keywords-delete:
put:
tags:
- Management
summary: Delete Keywords
description: '>Requests to this endpoint are free and do not consume any API units.'
operationId: management.project-keywords-delete
parameters:
- description: 'The unique identifier of the project. You can find it in the URL of your Rank Tracker project in Ahrefs: `https://app.ahrefs.com/rank-tracker/overview/#project_id#`'
required: true
explode: false
schema:
type: integer
name: project_id
in: query
- $ref: '#/components/parameters/management.output_json_php_xml'
requestBody:
content:
application/json:
schema:
properties:
keywords:
items:
properties:
keyword:
type: string
description: The keyword to delete.
country:
type: string
enum:
- ad
- ae
- af
- ag
- ai
- al
- am
- ao
- ar
- as
- at
- au
- aw
- az
- ba
- bb
- bd
- be
- bf
- bg
- bh
- bi
- bj
- bn
- bo
- br
- bs
- bt
- bw
- by
- bz
- ca
- cd
- cf
- cg
- ch
- ci
- ck
- cl
- cm
- cn
- co
- cr
- cu
- cv
- cy
- cz
- de
- dj
- dk
- dm
- do
- dz
- ec
- ee
- eg
- es
- et
- fi
- fj
- fm
- fo
- fr
- ga
- gb
- gd
- ge
- gf
- gg
- gh
- gi
- gl
- gm
- gn
- gp
- gq
- gr
- gt
- gu
- gy
- hk
- hn
- hr
- ht
- hu
- id
- ie
- il
- im
- in
- iq
- is
- it
- je
- jm
- jo
- jp
- ke
- kg
- kh
- ki
- kn
- kr
- kw
- ky
- kz
- la
- lb
- lc
- li
- lk
- ls
- lt
- lu
- lv
- ly
- ma
- mc
- md
- me
- mg
- mk
- ml
- mm
- mn
- mq
- mr
- ms
- mt
- mu
- mv
- mw
- mx
- my
- mz
- na
- nc
- ne
- ng
- ni
- nl
- 'no'
- np
- nr
- nu
- nz
- om
- pa
- pe
- pf
- pg
- ph
- pk
- pl
- pn
- pr
- ps
- pt
- py
- qa
- re
- ro
- rs
- ru
- rw
- sa
- sb
- sc
- se
- sg
- sh
- si
- sk
- sl
- sm
- sn
- so
- sr
- st
- sv
- td
- tg
- th
- tj
- tk
- tl
- tm
- tn
- to
- tr
- tt
- tw
- tz
- ua
- ug
- us
- uy
- uz
- vc
- ve
- vg
- vi
- vn
- vu
- ws
- ye
- yt
- za
- zm
- zw
description: A two-letter country code (ISO 3166-1 alpha-2).
location_id:
type: integer
description: The location ID.
language:
type: string
description: The location code.
type: object
required:
- keyword
type: array
minItems: 1
description: A list of keywords to delete. You can use the 'Locations and languages' endpoint to get country codes, language codes and location IDs.
type: object
required:
- keywords
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/management.project-keywords-delete'
application/xml:
schema:
$ref: '#/components/schemas/management.project-keywords-delete'
'400':
$ref: '#/components/responses/management.error_400'
'401':
$ref: '#/components/responses/management.error_401'
'403':
$ref: '#/components/responses/management.error_403'
'429':
$ref: '#/components/responses/management.error_429'
'500':
$ref: '#/components/responses/management.error_500'
/management/project-keywords-tags:
put:
tags:
- Management
summary: Add Keywords Tags
description: '>Requests to this endpoint are free and do not consume any API units.'
operationId: management.project-keywords-tags
parameters: []
requestBody:
content:
application/json:
schema:
properties:
project_id:
type: integer
description: 'The unique identifier of the project. You can find it in the URL of your Rank Tracker project in Ahrefs: `https://app.ahrefs.com/rank-tracker/overview/#project_id#`'
keywords:
items:
properties:
keyword:
type: string
description: The keyword to add.
country:
type: string
enum:
- ad
- ae
- af
- ag
- ai
- al
- am
- ao
- ar
- as
- at
- au
- aw
- az
- ba
- bb
- bd
- be
- bf
- bg
- bh
- bi
- bj
- bn
- bo
- br
- bs
- bt
- bw
- by
- bz
- ca
- cd
- cf
- cg
- ch
- ci
- ck
- cl
- cm
- cn
- co
- cr
- cu
- cv
- cy
- cz
- de
- dj
- dk
- dm
- do
- dz
- ec
- ee
- eg
- es
- et
- fi
- fj
- fm
- fo
- fr
- ga
- gb
- gd
- ge
- gf
- gg
- gh
- gi
- gl
- gm
- gn
- gp
- gq
- gr
- gt
- gu
- gy
- hk
- hn
- hr
- ht
- hu
- id
- ie
- il
- im
- in
- iq
- is
- it
- je
- jm
- jo
- jp
- ke
- kg
- kh
- ki
- kn
- kr
- kw
- ky
- kz
- la
- lb
- lc
- li
- lk
# --- truncated at 32 KB (104 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/ahrefs/refs/heads/main/openapi/ahrefs-management-api-openapi.yml