openapi: 3.2.0 info: title: Ahrefs Overview API version: 3.0.0 contact: name: Ahrefs url: https://ahrefs.com/ email: support@ahrefs.com termsOfService: https://ahrefs.com/terms description: 'Operations tagged Overview across 6 of this provider''s published API definitions: ahrefs-brand-radar-openapi.json, ahrefs-gsc-openapi.json, ahrefs-keywords-explorer-openapi.json, ahrefs-rank-tracker-openapi.json, ahrefs-site-explorer-openapi.json, ahrefs-web-analytics-openapi.json. Each path carries the servers of the definition it was published in.' servers: - url: https://api.ahrefs.com/v3/brand-radar description: Ahrefs Brand Radar - url: https://api.ahrefs.com/v3/gsc description: Ahrefs GSC Insights - url: https://api.ahrefs.com/v3/keywords-explorer description: Ahrefs Keywords Explorer - url: https://api.ahrefs.com/v3/rank-tracker description: Ahrefs Rank Tracker - url: https://api.ahrefs.com/v3/site-explorer description: Ahrefs Site Explorer - url: https://api.ahrefs.com/v3/web-analytics description: Ahrefs Web Analytics security: - http: - read tags: - name: Overview paths: /impressions-overview: get: tags: - Overview summary: Overview - Impressions description: '>Requests to this endpoint consume API units based on the `prompts` parameter: requests returning only custom prompt data are free, while requests including Ahrefs prompt data follow standard API unit pricing.' operationId: impressions-overview parameters: - description: "The filter expression. The following column identifiers are recognized (this differs from the identifiers recognized by the `select` parameter).\n\n**cited_domain**: The domain of a page that was used to generate the response. \ntype: domain\n\n**cited_domain_subdomains**: The domain of a page that was used to generate the response. Any subdomain of the given domain will also match. \ntype: string\n\n**cited_url_exact**: The URL of a page that was used to generate the response. \ntype: string\n\n**cited_url_prefix**: The URL of a page that was used to generate the response. Any URL that starts with this prefix will match. \ntype: string\n\n**question**: The question asked by the user. Note: the `substring` and `isubstring` operators are not supported on this field; use `phrase_match` or `iphrase_match` instead. \ntype: string\n\n**response** (10 units): The response from the model. Note: the `substring` and `isubstring` operators are not supported on this field; use `phrase_match` or `iphrase_match` instead. \ntype: string\n\n**search_queries**: The search query used by the chatbot to find information for the response. Note: if `data_source` does not include `chatgpt` or `perplexity`, this field will always be empty. \ntype: string\n\n**topic**: The topic of the query. \ntype: string" required: false explode: false schema: type: string name: where in: query - description: 'A comma-separated list of fields to return. - `brand` - `no_tracked_brands` - `only_competitors_brands` - `only_target_brand` - `target_and_competitors_brands` - `total`' required: true explode: false schema: type: string name: select in: query - description: 'AI visibility reports are switching to AI adjusted volume. It better estimates demand for AI responses across chatbots and AI search surfaces. It is calculated by adjusting Google search volume for each AI platform’s estimated usage compared with Google. This param will be deprecated on August 31, 2026; all requests will use new AI adjusted volume. `ask_volume` - New calculation (default). Estimates demand for AI responses by adjusting Google search volume for each AI platform. `keyword_volume` - Previous calculation. Uses Google search volume without AI platform adjustment. Available until August 31, 2026.' required: false explode: false schema: type: string enum: - ask_volume - keyword_volume default: ask_volume name: search_volume_type in: query - description: A comma-separated list of two-letter country codes (ISO 3166-1 alpha-2). required: false explode: false schema: 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 default: '' name: country in: query - description: 'The ID of the report to use. If one is given, other parameters are taken from the report (brand, competitors, market, country, filters). If country or filters are provided, they override the ones in the report. You can find it in the URL of your Brand Radar report in Ahrefs: `https://app.ahrefs.com/brand-radar/reports/#report_id#/...`' required: false explode: false schema: type: string name: report_id in: query - description: The type of prompts to use. If not specified, both will be used. Custom prompts require a report_id to be provided. required: false explode: false schema: type: string enum: - ahrefs - custom name: prompts in: query - description: 'A comma-separated list of chatbot models. All models can be combined with each other. `claude` module supports only custom prompts. The `google_ai_overviews_keywords` and `google_ai_mode_keywords` models report AI Overviews / AI Mode visibility derived from Google search queries (keywords) rather than prompts.' required: true explode: false schema: type: string enum: - chatgpt - google_ai_overviews - google_ai_mode - gemini - perplexity - copilot - claude - grok - google_ai_overviews_keywords - google_ai_mode_keywords examples: - chatgpt,perplexity name: data_source in: query - description: A comma-separated list of the niche markets of your brands. Deprecated on 2026-05-18, this parameter will have no effect shortly after this date. required: false explode: false schema: type: string default: '' name: market in: query - description: A comma-separated list of competitors of your brands. required: false explode: false schema: type: string default: '' name: competitors in: query - description: A comma-separated list of brands to search for. At least one of brand, competitors, market or where should not be empty. required: false explode: false schema: type: string default: '' name: brand in: query - $ref: '#/components/parameters/output' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/impressions-overview' application/xml: schema: $ref: '#/components/schemas/impressions-overview' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' post: tags: - Overview summary: Overview - Impressions description: '>Requests to this endpoint consume API units based on the `prompts` parameter: requests returning only custom prompt data are free, while requests including Ahrefs prompt data follow standard API unit pricing.' operationId: impressions-overview parameters: [] requestBody: content: application/json: schema: properties: where: type: object description: "The filter expression. The following column identifiers are recognized (this differs from the identifiers recognized by the `select` parameter).\n\n**cited_domain**: The domain of a page that was used to generate the response. \ntype: domain\n\n**cited_domain_subdomains**: The domain of a page that was used to generate the response. Any subdomain of the given domain will also match. \ntype: string\n\n**cited_url_exact**: The URL of a page that was used to generate the response. \ntype: string\n\n**cited_url_prefix**: The URL of a page that was used to generate the response. Any URL that starts with this prefix will match. \ntype: string\n\n**question**: The question asked by the user. Note: the `substring` and `isubstring` operators are not supported on this field; use `phrase_match` or `iphrase_match` instead. \ntype: string\n\n**response** (10 units): The response from the model. Note: the `substring` and `isubstring` operators are not supported on this field; use `phrase_match` or `iphrase_match` instead. \ntype: string\n\n**search_queries**: The search query used by the chatbot to find information for the response. Note: if `data_source` does not include `chatgpt` or `perplexity`, this field will always be empty. \ntype: string\n\n**topic**: The topic of the query. \ntype: string" select: items: type: string type: array description: 'A list of fields to return. - `brand` - `no_tracked_brands` - `only_competitors_brands` - `only_target_brand` - `target_and_competitors_brands` - `total`' examples: - - field_a - field_b tags_filter: type: object description: 'A filter expression for prompt tags. Requires `report_id`. Uses [filter syntax](https://docs.ahrefs.com/api/docs/filter-syntax) with the following restrictions: the only valid field name is `"tag"`; the only valid operator are: `"eq"`, `"neq"`, `"substring"`, `"isubstring"`, `"phrase_match"`, `"iphrase_match"`, `"prefix"`, `"suffix"`, `"empty"`; maximum nesting depth of `and`, `or` is 2.' examples: - or: - field: tag is: - eq - branded - field: tag is: - eq - competitor search_volume_type: type: string enum: - ask_volume - keyword_volume description: 'AI visibility reports are switching to AI adjusted volume. It better estimates demand for AI responses across chatbots and AI search surfaces. It is calculated by adjusting Google search volume for each AI platform’s estimated usage compared with Google. This param will be deprecated on August 31, 2026; all requests will use new AI adjusted volume. `ask_volume` - New calculation (default). Estimates demand for AI responses by adjusting Google search volume for each AI platform. `keyword_volume` - Previous calculation. Uses Google search volume without AI platform adjustment. Available until August 31, 2026.' default: ask_volume country: items: 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 type: array description: A list of two-letter country codes (ISO 3166-1 alpha-2). default: [] report_id: type: string description: 'The ID of the report to use. If one is given, other parameters are taken from the report (brand, competitors, market, country, filters). If country or filters are provided, they override the ones in the report. You can find it in the URL of your Brand Radar report in Ahrefs: `https://app.ahrefs.com/brand-radar/reports/#report_id#/...`' prompts: type: string enum: - ahrefs - custom description: The type of prompts to use. If not specified, both will be used. Custom prompts require a report_id to be provided. data_source: items: type: string enum: - chatgpt - google_ai_overviews - google_ai_mode - gemini - perplexity - copilot - claude - grok - google_ai_overviews_keywords - google_ai_mode_keywords type: array description: 'A list of chatbot models. All models can be combined with each other. `claude` module supports only custom prompts. The `google_ai_overviews_keywords` and `google_ai_mode_keywords` models report AI Overviews / AI Mode visibility derived from Google search queries (keywords) rather than prompts.' market: items: type: string title: markets type: array minItems: 1 description: A list of the niche markets of your brands. Deprecated on 2026-05-18, this parameter will have no effect shortly after this date. competitors: items: $ref: '#/components/schemas/entity' type: array description: A list of competitor names and websites to search for. default: [] brands: items: $ref: '#/components/schemas/entity' type: array description: A list of brand names and websites to search for. default: [] output: type: string enum: - json - csv - xml - php description: The output format. type: object required: - select - data_source responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/impressions-overview' application/xml: schema: $ref: '#/components/schemas/impressions-overview' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' servers: - url: https://api.ahrefs.com/v3/brand-radar description: Ahrefs Brand Radar /citations-overview: post: tags: - Overview summary: Overview - Citations description: '>Requests to this endpoint consume API units based on the `prompts` parameter: requests returning only custom prompt data are free, while requests including Ahrefs prompt data follow standard API unit pricing. Every entity provided in `brands` (and `competitors`, when applicable) must include at least one value in `url_groups`. Entities consisting only of `names` are not supported here because citations are matched against URL groups.' operationId: citations-overview parameters: [] requestBody: content: application/json: schema: properties: where: type: object description: "The filter expression. The following column identifiers are recognized (this differs from the identifiers recognized by the `select` parameter).\n\n**cited_domain**: The domain of a page that was used to generate the response. \ntype: domain\n\n**cited_domain_subdomains**: The domain of a page that was used to generate the response. Any subdomain of the given domain will also match. \ntype: string\n\n**cited_url_exact**: The URL of a page that was used to generate the response. \ntype: string\n\n**cited_url_prefix**: The URL of a page that was used to generate the response. Any URL that starts with this prefix will match. \ntype: string\n\n**question**: The question asked by the user. Note: the `substring` and `isubstring` operators are not supported on this field; use `phrase_match` or `iphrase_match` instead. \ntype: string\n\n**response** (10 units): The response from the model. Note: the `substring` and `isubstring` operators are not supported on this field; use `phrase_match` or `iphrase_match` instead. \ntype: string\n\n**search_queries**: The search query used by the chatbot to find information for the response. Note: if `data_source` does not include `chatgpt` or `perplexity`, this field will always be empty. \ntype: string\n\n**topic**: The topic of the query. \ntype: string" select: items: type: string type: array description: 'A list of fields to return. - `brand` - `no_tracked_brands` - `only_competitors_brands` - `only_target_brand` - `target_and_competitors_brands` - `total`' examples: - - field_a - field_b tags_filter: type: object description: 'A filter expression for prompt tags. Requires `report_id`. Uses [filter syntax](https://docs.ahrefs.com/api/docs/filter-syntax) with the following restrictions: the only valid field name is `"tag"`; the only valid operator are: `"eq"`, `"neq"`, `"substring"`, `"isubstring"`, `"phrase_match"`, `"iphrase_match"`, `"prefix"`, `"suffix"`, `"empty"`; maximum nesting depth of `and`, `or` is 2.' examples: - or: - field: tag is: - eq - branded - field: tag is: - eq - competitor search_volume_type: type: string enum: - ask_volume - keyword_volume description: 'AI visibility reports are switching to AI adjusted volume. It better estimates demand for AI responses across chatbots and AI search surfaces. It is calculated by adjusting Google search volume for each AI platform’s estimated usage compared with Google. This param will be deprecated on August 31, 2026; all requests will use new AI adjusted volume. `ask_volume` - New calculation (default). Estimates demand for AI responses by adjusting Google search volume for each AI platform. `keyword_volume` - Previous calculation. Uses Google search volume without AI platform adjustment. Available until August 31, 2026.' default: ask_volume country: items: 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 type: array description: A list of two-letter country codes (ISO 3166-1 alpha-2). default: [] report_id: type: string description: 'The ID of the report to use. If one is given, other parameters are taken from the report (brand, competitors, market, country, filters). If country or filters are provided, they override the ones in the report. You can find it in the URL of your Brand Radar report in Ahrefs: `https://app.ahrefs.com/brand-radar/reports/#report_id#/...`' prompts: type: string enum: - ahrefs - custom description: The type of prompts to use. If not specified, both will be used. Custom prompts require a report_id to be provided. data_source: items: type: string enum: - chatgpt - google_ai_overviews - google_ai_mode - gemini - perplexity - copilot - claude - grok - google_ai_overviews_keywords - google_ai_mode_keywords type: array description: 'A list of chatbot models. All models can be combined with each other. `claude` module supports only custom prompts. The `google_ai_overviews_keywords` and `google_ai_mode_keywords` models report AI Overviews / AI Mode visibility derived from Google search queries (keywords) rather than prompts.' market: items: type: string title: markets type: array minItems: 1 description: A list of the niche markets of your brands. Deprecated on 2026-05-18, this parameter will have no effect shortly after this date. competitors: items: $ref: '#/components/schemas/entity' type: array description: A list of competitor names and websites to search for. default: [] brands: items: $ref: '#/components/schemas/entity' type: array description: A list of brand names and websites to search for. default: [] output: type: string enum: - json - csv - xml - php description: The output format. type: object required: - select - data_source responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/citations-overview' application/xml: schema: $ref: '#/components/schemas/citations-overview' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' servers: - url: https://api.ahrefs.com/v3/brand-radar description: Ahrefs Brand Radar /mentions-overview: get: tags: - Overview summary: Overview - Mentions description: '>Requests to this endpoint consume API units based on the `prompts` parameter: requests returning only custom prompt data are free, while requests including Ahrefs prompt data follow standard API unit pricing.' operationId: mentions-overview parameters: - description: "The filter expression. The following column identifiers are recognized (this differs from the identifiers recognized by the `select` parameter).\n\n**cited_domain**: The domain of a page that was used to generate the response. \ntype: domain\n\n**cited_domain_subdomains**: The domain of a page that was used to generate the response. Any subdomain of the given domain will also match. \ntype: string\n\n**cited_url_exact**: The URL of a page that was used to generate the response. \ntype: string\n\n**cited_url_prefix**: The URL of a page that was used to generate the response. Any URL that starts with this prefix will match. \ntype: string\n\n**question**: The question asked by the user. Note: the `substring` and `isubstring` operators are not supported on this field; use `phrase_match` or `iphrase_match` instead. \ntype: string\n\n**response** (10 units): The response from the model. Note: the `substring` and `isubstring` operators are not supported on this field; use `phrase_match` or `iphrase_match` instead. \ntype: string\n\n**search_queries**: The search query used by the chatbot to find information for the response. Note: if `data_source` does not include `chatgpt` or `perplexity`, this field will always be empty. \ntype: string\n\n**topic**: The topic of the query. \ntype: string" required: false explode: false schema: type: string name: where in: query - description: 'A comma-separated list of fields to return. - `brand` - `no_tracked_brands` - `only_competitors_brands` - `only_target_brand` - `target_and_competitors_brands` - `total`' required: true explode: false schema: type: string name: select in: query - description: 'AI visibility reports are switching to AI adjusted volume. It better estimates demand for AI responses across chatbots and AI search surfaces. It is calculated by adjusting Google search volume for each AI platform’s estimated usage compared with Google. This param will be deprecated on August 31, 2026; all requests will use new AI adjusted volume. `ask_volume` - New calculation (default). Estimates demand for AI responses by adjusting Google search volume for each AI platform. `keyword_volume` - Previous calculation. Uses Google search volume without AI platform adjustment. Available until August 31, 2026.' required: false explode: false schema: type: string enum: - ask_volume - keyword_volume default: ask_volume name: search_volume_type in: query - description: A comma-separated list of two-letter country codes (ISO 3166-1 alpha-2). required: false explode: false schema: 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 default: '' name: country in: query - description: 'The ID of the report to use. If one is given, other parameters are taken from the report (brand, competitors, market, country, filters). If country or filters are provided, they override the ones in the report. You can find it in the URL of your Brand Radar report in Ahrefs: `https://app.ahrefs.com/brand-radar/reports/#report_id#/...`' required: false explode: false schema: type: string name: report_id in: query - description: The type of prompts to use. If not specified, both will be used. Custom prompts require a report_id to be provided. required: false explode: false schema: type: string enum: - ahrefs - custom name: prompts in: query - description: 'A comma-separated list of chatbot models. All models can be combined with each other. `claude` module supports only custom prompts. The `google_ai_overviews_keywords` and `google_ai_mode_keywords` models report AI Overviews / AI Mode visibility derived from Google search queries (keywords) rather than prompts.' required: true explode: false schema: type: string enum: - chatgpt - google_ai_overviews - google_ai_mode - gemini - perplexity - copilot - claude - grok - google_ai_overviews_keywords - google_ai_mode_keywords examples: - chatgpt,perplexity name: data_source in: query - description: A comma-separated list of the niche markets of your brands. Deprecated on 2026-05-18, this parameter will have no effect shortly after this date. required: false explode: false schema: type: string default: '' name: market in: query - description: A comma-separated list of competitors of your brands. required: false explode: false schema: type: string default: '' name: competitors in: query - description: A comma-separated list of brands to search for. At least one of brand, competitors, market or where should not be empty. required: false explode: false schema: type: string default: '' name: brand in: query - $ref: '#/components/parameters/output' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/mentions-overview' application/xml: schema: $ref: '#/components/schemas/mentions-overview' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' post: tags: - Overview summary: Overview - Mentions description: '>Requests to this endpoint consume API units based on the `prompts` parameter: requests returning only custom prompt data are free, while requests including Ahrefs prompt data follow standard API unit pricing. Every entity provided in `brands` (and `competitors`, when applicable) must include at least one value in `names`. Entities consisting only of `url_groups` are not supported here because mentions are matched against brand names.' operationId: mentions-overview parameters: [] requestBody: content: application/json: schema: properties: where: type: object description: "The filter expression. The following column identifiers are recognized (this differs from the identifiers recognized by the `select` parameter).\n\n**cited_domain**: The domain of a page that was used to generate the response. \ntype: domain\n\n**cited_domain_subdomains**: The domain of a page that was used to generate the response. Any subdomain of the given domain will also match. \ntype: string\n\n**cited_url_exact**: The URL of a page that was used to generate the response. \ntype: string\n\n**cited_url_prefix**: The URL of a page that was used to generate the response. Any URL that starts with this prefix will match. \ntype: string\n\n**question**: The question asked by the user. Note: the `substring` and `isubstring` operators are not supported on this field; use `phrase_match` or `iphrase_match` instead. \ntype: string\n\n**response** (10 units): The response from the model. Note: the `substring` and `isubstring` operators are not supported on this field; use `phrase_match` or `iphrase_match` instead. \ntype: string\n\n**search_queries**: The search query used by the chatbot to find information for the response. Note: if `data_source` does not include `chatgpt` or `perplexity`, this field will always be empty. \ntype: string\n\n**topic**: The topic of the query. \ntype: string" select: items: type: string type: array description: 'A list of fields to return. - `brand` - `no_tracked_brands` - `only_competitors_brands` - `only_target_brand` - `target_and_competitors_brands` - `total`' examples: - - field_a - field_b tags_filter: type: object description: 'A filter expression for prompt tags. Requires `report_id`. Uses [filter syntax](https://docs.ahrefs.com/api/docs/filter-syntax) with the following restrictions: the only valid field name is `"tag"`; the only valid operator are: `"eq"`, `"neq"`, `"substring"`, `"isubstring"`, `"phrase_match"`, `"iphrase_match"`, `"prefix"`, `"suffix"`, `"empty"`; maximum nesting depth of `and`, `or` is 2.' examples: - or: - field: tag is: - eq - branded - field: tag is: - eq - competitor search_volume_type: type: string enum: - ask_volume - keyword_volume description: 'AI visibility reports are switching to AI adjusted volume. It better estimates demand for AI responses across chatbots and AI search surfaces. It is calculated by adjusting Google search volume for each AI platform’s estimated usage compared with Google. This param will be deprecated on August 31, 2026; all requests will use new AI adjusted volume. `ask_volume` - New calculation (default). Estimates demand for AI responses by adjusting Google search volume for each AI platform. `keyword_volume` - Previous calculation. Uses Google search volume without AI platform adjustment. Available until August 31, 2026.' default: ask_volume country: items: 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 type: array description: A list of two-letter country codes (ISO 3166-1 alpha-2). default: [] report_id: type: string description: 'The ID of the report to use. If one is given, other parameters are taken from the report (brand, competitors, market, country, filters). If country or filters are provided, they override the ones in the report. You can find it in the URL of your Brand Radar report in Ahrefs: `https://app.ahrefs.com/brand-radar/reports/#report_id#/...`' prompts: type: string enum: - ahrefs - custom description: The type of prompts to use. If not specified, both will be used. Custom prompts require a report_id to be provided. data_source: items: type: string enum: - chatgpt - google_ai_overviews - google_ai_mode - gemini - perplexity - copilot - claude - grok - google_ai_overviews_keywords - google_ai_mode_keywords type: array description: 'A list of chatbot models. All models can be combined with each other. `claude` module supports only custom prompts. The `google_ai_overviews_keywords` and `google_ai_mode_keywords` models report AI Overviews / AI Mode visibility derived from Google search queries (keywords) rather than prompts.' market: items: type: string title: markets type: array minItems: 1 description: A list of the niche markets of your brands. Deprecated on 2026-05-18, this parameter will have no effect shortly after this date. competitors: items: $ref: '#/components/schemas/entity' type: array description: A list of competitor names and websites to search for. default: [] brands: items: $ref: '#/components/schemas/entity' type: array description: A list of brand names and websites to search for. default: [] output: type: string enum: - json - csv - xml - php description: The output format. type: object required: - select - data_source responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/mentions-overview' application/xml: schema: $ref: '#/components/schemas/mentions-overview' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' servers: - url: https://api.ahrefs.com/v3/brand-radar description: Ahrefs Brand Radar /sov-overview: get: tags: - Overview summary: Overview - Share of Voice description: '>Requests to this endpoint consume API units based on the `prompts` parameter: requests returning only custom prompt data are free, while requests including Ahrefs prompt data follow standard API unit pricing.' operationId: sov-overview parameters: - description: "The filter expression. The following column identifiers are recognized (this differs from the identifiers recognized by the `select` parameter).\n\n**cited_domain**: The domain of a page that was used to generate the response. \ntype: domain\n\n**cited_domain_subdomains**: The domain of a page that was used to generate the response. Any subdomain of the given domain will also match. \ntype: string\n\n**cited_url_exact**: The URL of a page that was used to generate the response. \ntype: string\n\n**cited_url_prefix**: The URL of a page that was used to generate the response. Any URL that starts with this prefix will match. \ntype: string\n\n**question**: The question asked by the user. Note: the `substring` and `isubstring` operators are not supported on this field; use `phrase_match` or `iphrase_match` instead. \ntype: string\n\n**response** (10 units): The response from the model. Note: the `substring` and `isubstring` operators are not supported on this field; use `phrase_match` or `iphrase_match` instead. \ntype: string\n\n**search_queries**: The search query used by the chatbot to find information for the response. Note: if `data_source` does not include `chatgpt` or `perplexity`, this field will always be empty. \ntype: string\n\n**topic**: The topic of the query. \ntype: string" required: false explode: false schema: type: string name: where in: query - description: 'AI visibility reports are switching to AI adjusted volume. It better estimates demand for AI responses across chatbots and AI search surfaces. It is calculated by adjusting Google search volume for each AI platform’s estimated usage compared with Google. This param will be deprecated on August 31, 2026; all requests will use new AI adjusted volume. `ask_volume` - New calculation (default). Estimates demand for AI responses by adjusting Google search volume for each AI platform. `keyword_volume` - Previous calculation. Uses Google search volume without AI platform adjustment. Available until August 31, 2026.' required: false explode: false schema: type: string enum: - ask_volume - keyword_volume default: ask_volume name: search_volume_type in: query - description: A comma-separated list of two-letter country codes (ISO 3166-1 alpha-2). required: false explode: false schema: 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 default: '' name: country in: query - description: 'The ID of the report to use. If one is given, other parameters are taken from the report (brand, competitors, market, country, filters). If country or filters are provided, they override the ones in the report. You can find it in the URL of your Brand Radar report in Ahrefs: `https://app.ahrefs.com/brand-radar/reports/#report_id#/...`' required: false explode: false schema: type: string name: report_id in: query - description: The type of prompts to use. If not specified, both will be used. Custom prompts require a report_id to be provided. required: false explode: false schema: type: string enum: - ahrefs - custom name: prompts in: query - description: 'A comma-separated list of chatbot models. All models can be combined with each other. `claude` module supports only custom prompts. The `google_ai_overviews_keywords` and `google_ai_mode_keywords` models report AI Overviews / AI Mode visibility derived from Google search queries (keywords) rather than prompts.' required: true explode: false schema: type: string enum: - chatgpt - google_ai_overviews - google_ai_mode - gemini - perplexity - copilot - claude - grok - google_ai_overviews_keywords - google_ai_mode_keywords examples: - chatgpt,perplexity name: data_source in: query - description: A comma-separated list of the niche markets of your brands. Deprecated on 2026-05-18, this parameter will have no effect shortly after this date. required: false explode: false schema: type: string default: '' name: market in: query - description: A comma-separated list of competitors of your brands. required: false explode: false schema: type: string default: '' name: competitors in: query - description: A comma-separated list of brands to search for. At least one of brand, competitors, market or where should not be empty. required: false explode: false schema: type: string default: '' name: brand in: query - $ref: '#/components/parameters/output' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/sov-overview' application/xml: schema: $ref: '#/components/schemas/sov-overview' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' post: tags: - Overview summary: Overview - Share of Voice description: '>Requests to this endpoint consume API units based on the `prompts` parameter: requests returning only custom prompt data are free, while requests including Ahrefs prompt data follow standard API unit pricing.' operationId: sov-overview parameters: [] requestBody: content: application/json: schema: properties: where: type: object description: "The filter expression. The following column identifiers are recognized (this differs from the identifiers recognized by the `select` parameter).\n\n**cited_domain**: The domain of a page that was used to generate the response. \ntype: domain\n\n**cited_domain_subdomains**: The domain of a page that was used to generate the response. Any subdomain of the given domain will also match. \ntype: string\n\n**cited_url_exact**: The URL of a page that was used to generate the response. \ntype: string\n\n**cited_url_prefix**: The URL of a page that was used to generate the response. Any URL that starts with this prefix will match. \ntype: string\n\n**question**: The question asked by the user. Note: the `substring` and `isubstring` operators are not supported on this field; use `phrase_match` or `iphrase_match` instead. \ntype: string\n\n**response** (10 units): The response from the model. Note: the `substring` and `isubstring` operators are not supported on this field; use `phrase_match` or `iphrase_match` instead. \ntype: string\n\n**search_queries**: The search query used by the chatbot to find information for the response. Note: if `data_source` does not include `chatgpt` or `perplexity`, this field will always be empty. \ntype: string\n\n**topic**: The topic of the query. \ntype: string" tags_filter: type: object description: 'A filter expression for prompt tags. Requires `report_id`. Uses [filter syntax](https://docs.ahrefs.com/api/docs/filter-syntax) with the following restrictions: the only valid field name is `"tag"`; the only valid operator are: `"eq"`, `"neq"`, `"substring"`, `"isubstring"`, `"phrase_match"`, `"iphrase_match"`, `"prefix"`, `"suffix"`, `"empty"`; maximum nesting depth of `and`, `or` is 2.' examples: - or: - field: tag is: - eq - branded - field: tag is: - eq - competitor search_volume_type: type: string enum: - ask_volume - keyword_volume description: 'AI visibility reports are switching to AI adjusted volume. It better estimates demand for AI responses across chatbots and AI search surfaces. It is calculated by adjusting Google search volume for each AI platform’s estimated usage compared with Google. This param will be deprecated on August 31, 2026; all requests will use new AI adjusted volume. `ask_volume` - New calculation (default). Estimates demand for AI responses by adjusting Google search volume for each AI platform. `keyword_volume` - Previous calculation. Uses Google search volume without AI platform adjustment. Available until August 31, 2026.' default: ask_volume country: items: 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 type: array description: A list of two-letter country codes (ISO 3166-1 alpha-2). default: [] report_id: type: string description: 'The ID of the report to use. If one is given, other parameters are taken from the report (brand, competitors, market, country, filters). If country or filters are provided, they override the ones in the report. You can find it in the URL of your Brand Radar report in Ahrefs: `https://app.ahrefs.com/brand-radar/reports/#report_id#/...`' prompts: type: string enum: - ahrefs - custom description: The type of prompts to use. If not specified, both will be used. Custom prompts require a report_id to be provided. data_source: items: type: string enum: - chatgpt - google_ai_overviews - google_ai_mode - gemini - perplexity - copilot - claude - grok - google_ai_overviews_keywords - google_ai_mode_keywords type: array description: 'A list of chatbot models. All models can be combined with each other. `claude` module supports only custom prompts. The `google_ai_overviews_keywords` and `google_ai_mode_keywords` models report AI Overviews / AI Mode visibility derived from Google search queries (keywords) rather than prompts.' market: items: type: string title: markets type: array minItems: 1 description: A list of the niche markets of your brands. Deprecated on 2026-05-18, this parameter will have no effect shortly after this date. competitors: items: $ref: '#/components/schemas/entity' type: array description: A list of competitor names and websites to search for. default: [] brands: items: $ref: '#/components/schemas/entity' type: array description: A list of brand names and websites to search for. default: [] output: type: string enum: - json - csv - xml - php description: The output format. type: object required: - data_source responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/sov-overview' application/xml: schema: $ref: '#/components/schemas/sov-overview' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' servers: - url: https://api.ahrefs.com/v3/brand-radar description: Ahrefs Brand Radar /performance-history: get: tags: - Overview summary: Performance history description: '>Requests to this endpoint are free and do not consume any API units.' operationId: performance-history parameters: - description: Project ID. Required when portfolio_id is not provided. required: false explode: false schema: type: integer name: project_id in: query - description: Portfolio ID. When provided, aggregates data across all GSC-connected projects in the portfolio. required: false explode: false schema: type: integer name: portfolio_id in: query - description: The start date of the historical period in YYYY-MM-DD format. required: true explode: false schema: type: string format: date name: date_from in: query - description: The end date of the historical period in YYYY-MM-DD format. required: false explode: false schema: type: string format: date name: date_to in: query - description: The time interval used to group historical data. required: false explode: false schema: type: string enum: - daily - weekly - monthly default: monthly name: history_grouping in: query - description: The type of search results to return (web, image, video, news). required: false explode: false schema: type: string enum: - web - image - video - news default: web name: search_type in: query - description: A two-letter country code (ISO 3166-1 alpha-2). required: false explode: false schema: 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 name: country in: query - description: Filter by device type (DESKTOP, MOBILE, TABLET). If not specified, all devices are included. required: false explode: false schema: type: string enum: - desktop - mobile - tablet name: device in: query - description: "Supported fields:\n- url\n\nFilter is a JSON string that represents a boolean expression, it should follow the following structure:\n```\n ::= { \"and\" : + }\n | { \"or\" : + }\n | { \"not\" : }\n | \n\n ::= {\n \"field\" : ,\n ? \"is\": ,\n }\n\n ::= [ \"eq\", ]\n | [ \"neq\", ]\n | [ \"gt\", ]\n | [ \"gte\", ]\n | [ \"lt\", ]\n | [ \"lte\", ]\n | [ \"substring\", ]\n | [ \"isubstring\", ]\n | [ \"phrase_match\", ]\n | [ \"iphrase_match\", ]\n | [ \"prefix\", ]\n | [ \"suffix\", ]\n```" required: false explode: false schema: type: string name: where in: query - $ref: '#/components/parameters/output' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/performance-history' application/xml: schema: $ref: '#/components/schemas/performance-history' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' servers: - url: https://api.ahrefs.com/v3/gsc description: Ahrefs GSC Insights /positions-history: get: tags: - Overview summary: Positions history description: '>Requests to this endpoint are free and do not consume any API units.' operationId: positions-history parameters: - description: Project ID. Required when portfolio_id is not provided. required: false explode: false schema: type: integer name: project_id in: query - description: Portfolio ID. When provided, aggregates data across all GSC-connected projects in the portfolio. required: false explode: false schema: type: integer name: portfolio_id in: query - description: The start date of the historical period in YYYY-MM-DD format. required: true explode: false schema: type: string format: date name: date_from in: query - description: The end date of the historical period in YYYY-MM-DD format. required: false explode: false schema: type: string format: date name: date_to in: query - description: The time interval used to group historical data. required: false explode: false schema: type: string enum: - daily - weekly - monthly default: monthly name: history_grouping in: query - description: The type of search results to return (web, image, video, news). required: false explode: false schema: type: string enum: - web - image - video - news default: web name: search_type in: query - description: A two-letter country code (ISO 3166-1 alpha-2). required: false explode: false schema: 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 name: country in: query - description: Filter by device type (DESKTOP, MOBILE, TABLET). If not specified, all devices are included. required: false explode: false schema: type: string enum: - desktop - mobile - tablet name: device in: query - description: "Supported fields:\n- url\n\nFilter is a JSON string that represents a boolean expression, it should follow the following structure:\n```\n ::= { \"and\" : + }\n | { \"or\" : + }\n | { \"not\" : }\n | \n\n ::= {\n \"field\" : ,\n ? \"is\": ,\n }\n\n ::= [ \"eq\", ]\n | [ \"neq\", ]\n | [ \"gt\", ]\n | [ \"gte\", ]\n | [ \"lt\", ]\n | [ \"lte\", ]\n | [ \"substring\", ]\n | [ \"isubstring\", ]\n | [ \"phrase_match\", ]\n | [ \"iphrase_match\", ]\n | [ \"prefix\", ]\n | [ \"suffix\", ]\n```" required: false explode: false schema: type: string name: where in: query - $ref: '#/components/parameters/output' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/positions-history' application/xml: schema: $ref: '#/components/schemas/positions-history' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' servers: - url: https://api.ahrefs.com/v3/gsc description: Ahrefs GSC Insights /pages-history: get: tags: - Overview summary: Pages history description: '>Requests to this endpoint are free and do not consume any API units.' operationId: pages-history parameters: - description: Project ID. Required when portfolio_id is not provided. required: false explode: false schema: type: integer name: project_id in: query - description: Portfolio ID. When provided, aggregates data across all GSC-connected projects in the portfolio. required: false explode: false schema: type: integer name: portfolio_id in: query - description: The start date of the historical period in YYYY-MM-DD format. required: true explode: false schema: type: string format: date name: date_from in: query - description: The end date of the historical period in YYYY-MM-DD format. required: false explode: false schema: type: string format: date name: date_to in: query - description: The time interval used to group historical data. required: false explode: false schema: type: string enum: - daily - weekly - monthly default: monthly name: history_grouping in: query - description: The type of search results to return (web, image, video, news). required: false explode: false schema: type: string enum: - web - image - video - news default: web name: search_type in: query - description: A two-letter country code (ISO 3166-1 alpha-2). required: false explode: false schema: 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 name: country in: query - description: Filter by device type (DESKTOP, MOBILE, TABLET). If not specified, all devices are included. required: false explode: false schema: type: string enum: - desktop - mobile - tablet name: device in: query - description: "Supported fields:\n- url\n\nFilter is a JSON string that represents a boolean expression, it should follow the following structure:\n```\n ::= { \"and\" : + }\n | { \"or\" : + }\n | { \"not\" : }\n | \n\n ::= {\n \"field\" : ,\n ? \"is\": ,\n }\n\n ::= [ \"eq\", ]\n | [ \"neq\", ]\n | [ \"gt\", ]\n | [ \"gte\", ]\n | [ \"lt\", ]\n | [ \"lte\", ]\n | [ \"substring\", ]\n | [ \"isubstring\", ]\n | [ \"phrase_match\", ]\n | [ \"iphrase_match\", ]\n | [ \"prefix\", ]\n | [ \"suffix\", ]\n```" required: false explode: false schema: type: string name: where in: query - $ref: '#/components/parameters/output' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/pages-history' application/xml: schema: $ref: '#/components/schemas/pages-history' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' servers: - url: https://api.ahrefs.com/v3/gsc description: Ahrefs GSC Insights /performance-by-device: get: tags: - Overview summary: Performance by device description: '>Requests to this endpoint are free and do not consume any API units.' operationId: performance-by-device parameters: - description: Project ID. Required when portfolio_id is not provided. required: false explode: false schema: type: integer name: project_id in: query - description: Portfolio ID. When provided, aggregates data across all GSC-connected projects in the portfolio. required: false explode: false schema: type: integer name: portfolio_id in: query - description: The start date of the historical period in YYYY-MM-DD format. required: true explode: false schema: type: string format: date name: date_from in: query - description: The end date of the historical period in YYYY-MM-DD format. required: false explode: false schema: type: string format: date name: date_to in: query - description: The type of search results to return (web, image, video, news). required: false explode: false schema: type: string enum: - web - image - video - news default: web name: search_type in: query - description: A two-letter country code (ISO 3166-1 alpha-2). required: false explode: false schema: 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 name: country in: query - description: "Supported fields:\n- url\n\nFilter is a JSON string that represents a boolean expression, it should follow the following structure:\n```\n ::= { \"and\" : + }\n | { \"or\" : + }\n | { \"not\" : }\n | \n\n ::= {\n \"field\" : ,\n ? \"is\": ,\n }\n\n ::= [ \"eq\", ]\n | [ \"neq\", ]\n | [ \"gt\", ]\n | [ \"gte\", ]\n | [ \"lt\", ]\n | [ \"lte\", ]\n | [ \"substring\", ]\n | [ \"isubstring\", ]\n | [ \"phrase_match\", ]\n | [ \"iphrase_match\", ]\n | [ \"prefix\", ]\n | [ \"suffix\", ]\n```" required: false explode: false schema: type: string name: where in: query - $ref: '#/components/parameters/output' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/performance-by-device' application/xml: schema: $ref: '#/components/schemas/performance-by-device' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' servers: - url: https://api.ahrefs.com/v3/gsc description: Ahrefs GSC Insights /metrics-by-country: get: tags: - Overview summary: Metrics by country description: '>Requests to this endpoint are free and do not consume any API units.' operationId: metrics-by-country parameters: - description: Project ID. Required when portfolio_id is not provided. required: false explode: false schema: type: integer name: project_id in: query - description: Portfolio ID. When provided, aggregates data across all GSC-connected projects in the portfolio. required: false explode: false schema: type: integer name: portfolio_id in: query - description: The start date of the historical period in YYYY-MM-DD format. required: true explode: false schema: type: string format: date name: date_from in: query - description: The end date of the historical period in YYYY-MM-DD format. required: false explode: false schema: type: string format: date name: date_to in: query - description: The time interval used to group historical data. required: false explode: false schema: type: string enum: - daily - weekly - monthly default: monthly name: history_grouping in: query - description: The type of search results to return (web, image, video, news). required: false explode: false schema: type: string enum: - web - image - video - news default: web name: search_type in: query - description: Filter by device type (DESKTOP, MOBILE, TABLET). If not specified, all devices are included. required: false explode: false schema: type: string enum: - desktop - mobile - tablet name: device in: query - description: "Supported fields:\n- url\n\nFilter is a JSON string that represents a boolean expression, it should follow the following structure:\n```\n ::= { \"and\" : + }\n | { \"or\" : + }\n | { \"not\" : }\n | \n\n ::= {\n \"field\" : ,\n ? \"is\": ,\n }\n\n ::= [ \"eq\", ]\n | [ \"neq\", ]\n | [ \"gt\", ]\n | [ \"gte\", ]\n | [ \"lt\", ]\n | [ \"lte\", ]\n | [ \"substring\", ]\n | [ \"isubstring\", ]\n | [ \"phrase_match\", ]\n | [ \"iphrase_match\", ]\n | [ \"prefix\", ]\n | [ \"suffix\", ]\n```" required: false explode: false schema: type: string name: where in: query - $ref: '#/components/parameters/output' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/metrics-by-country' application/xml: schema: $ref: '#/components/schemas/metrics-by-country' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' servers: - url: https://api.ahrefs.com/v3/gsc description: Ahrefs GSC Insights /ctr-by-position: get: tags: - Overview summary: CTR by position description: '>Requests to this endpoint are free and do not consume any API units.' operationId: ctr-by-position parameters: - description: Project ID. Required when portfolio_id is not provided. required: false explode: false schema: type: integer name: project_id in: query - description: Portfolio ID. When provided, aggregates data across all GSC-connected projects in the portfolio. required: false explode: false schema: type: integer name: portfolio_id in: query - description: The start date of the historical period in YYYY-MM-DD format. required: true explode: false schema: type: string format: date name: date_from in: query - description: The end date of the historical period in YYYY-MM-DD format. required: false explode: false schema: type: string format: date name: date_to in: query - description: A two-letter country code (ISO 3166-1 alpha-2). required: false explode: false schema: 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 name: country in: query - description: Filter by device type (DESKTOP, MOBILE, TABLET). If not specified, all devices are included. required: false explode: false schema: type: string enum: - desktop - mobile - tablet name: device in: query - $ref: '#/components/parameters/output' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ctr-by-position' application/xml: schema: $ref: '#/components/schemas/ctr-by-position' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' servers: - url: https://api.ahrefs.com/v3/gsc description: Ahrefs GSC Insights /performance-by-position: get: tags: - Overview summary: Performance by position description: '>Requests to this endpoint are free and do not consume any API units.' operationId: performance-by-position parameters: - description: Project ID. Required when portfolio_id is not provided. required: false explode: false schema: type: integer name: project_id in: query - description: Portfolio ID. When provided, aggregates data across all GSC-connected projects in the portfolio. required: false explode: false schema: type: integer name: portfolio_id in: query - description: The start date of the historical period in YYYY-MM-DD format. required: true explode: false schema: type: string format: date name: date_from in: query - description: The end date of the historical period in YYYY-MM-DD format. required: false explode: false schema: type: string format: date name: date_to in: query - description: The type of search results to return (web, image, video, news). required: false explode: false schema: type: string enum: - web - image - video - news default: web name: search_type in: query - description: A two-letter country code (ISO 3166-1 alpha-2). required: false explode: false schema: 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 name: country in: query - description: Filter by device type (DESKTOP, MOBILE, TABLET). If not specified, all devices are included. required: false explode: false schema: type: string enum: - desktop - mobile - tablet name: device in: query - description: "Supported fields:\n- url\n\nFilter is a JSON string that represents a boolean expression, it should follow the following structure:\n```\n ::= { \"and\" : + }\n | { \"or\" : + }\n | { \"not\" : }\n | \n\n ::= {\n \"field\" : ,\n ? \"is\": ,\n }\n\n ::= [ \"eq\", ]\n | [ \"neq\", ]\n | [ \"gt\", ]\n | [ \"gte\", ]\n | [ \"lt\", ]\n | [ \"lte\", ]\n | [ \"substring\", ]\n | [ \"isubstring\", ]\n | [ \"phrase_match\", ]\n | [ \"iphrase_match\", ]\n | [ \"prefix\", ]\n | [ \"suffix\", ]\n```" required: false explode: false schema: type: string name: where in: query - $ref: '#/components/parameters/output' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/performance-by-position' application/xml: schema: $ref: '#/components/schemas/performance-by-position' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' servers: - url: https://api.ahrefs.com/v3/gsc description: Ahrefs GSC Insights /overview: get: tags: - Overview summary: Overview description: The `regex` filter has limited functionality when used in this request, and the syntax differs from other requests. It expects an asterisk (*) symbol as a wildcard. operationId: overview parameters: - description: A manual timeout duration in seconds. required: false explode: false schema: type: integer name: timeout in: query - description: The number of results to return. required: false explode: false schema: type: integer default: 1000 name: limit in: query - description: A column to order results by. See the response schema for valid column identifiers, except for `volume_monthly`, which is not supported in `order_by` for this endpoint. required: false explode: false schema: type: string examples: - field_a,field_b:asc,field_c:desc name: order_by in: query - description: "The filter expression. The following column identifiers are recognized (this differs from the identifiers recognized by the `select` parameter).\n\n**clicks**: The average monthly number of clicks on the search results that people make while searching for the target keyword. \ntype: integer nullable\n\n**cpc**: Cost Per Click shows the average price that advertisers pay for each ad click in paid search results for a keyword, in USD cents. \ntype: integer nullable\n\n**cps**: Clicks Per Search (or CPS) is the ratio of Clicks to Keyword Search volume. It shows how many different search results get clicked, on average, when people search for the target keyword in a given country. \ntype: float nullable\n\n**difficulty** (10 units): An estimation of how hard it is to rank in the top 10 organic search results for a keyword on a 100-point scale. \ntype: integer nullable\n\n**first_seen**: The date when we first checked search engine results for a keyword. \ntype: datetime nullable\n\n**global_volume** (10 units): How many times per month, on average, people search for the target keyword across all countries in our database. \ntype: integer nullable\n\n**intents.branded**: \ntype: boolean nullable\n\n**intents.commercial**: \ntype: boolean nullable\n\n**intents.informational**: \ntype: boolean nullable\n\n**intents.local**: \ntype: boolean nullable\n\n**intents.navigational**: \ntype: boolean nullable\n\n**intents.transactional**: \ntype: boolean nullable\n\n**keyword**: \ntype: string\n\n**parent_topic**: Parent Topic determines if you can rank for your target keyword while targeting a more general topic on your page instead. To identify the Parent Topic, we take the #1 ranking page for your keyword and find the keyword responsible for sending the most traffic to that page. \ntype: string nullable\n\n**parent_volume** (10 units): The search volume of the parent topic. \ntype: integer nullable\n\n**serp_domain_rating_top10_min**: The keyword must have at least one ranking position in the top 10 results with a DR of up to this value. \ntype: float nullable\n\n**serp_domain_rating_top5_min**: The keyword must have at least one ranking position in the top 5 results with a DR of up to this value. \ntype: float nullable\n\n**serp_features**: The enriched results on a search engine results page (SERP) that are not traditional organic results. \ntype: array(string) \nenum: `\"ai_overview_sitelink\"` `\"snippet\"` `\"ai_overview\"` `\"local_pack\"` `\"sitelink\"` `\"news\"` `\"image\"` `\"video\"` `\"discussion\"` `\"tweet\"` `\"paid_top\"` `\"paid_bottom\"` `\"paid_sitelink\"` `\"shopping\"` `\"knowledge_card\"` `\"knowledge_panel\"` `\"question\"` `\"image_th\"` `\"video_th\"` `\"organic_shopping\"`\n\n**serp_last_update**: The date when we last checked search engine results for a keyword. \ntype: datetime nullable\n\n**traffic_potential** (10 units): The sum of organic traffic that the #1 ranking page for your target keyword receives from all the keywords that it ranks for. \ntype: integer nullable\n\n**volume** (10 units): An estimation of the average monthly number of searches for a keyword over the latest known 12 months of data. \ntype: integer nullable\n\n**volume_desktop_pct**: The percentage of searches for a keyword performed on desktop devices. \ntype: float nullable\n\n**volume_mobile_pct**: The percentage of searches for a keyword performed on mobile devices. \ntype: float nullable\n\n**word_count**: \ntype: integer" required: false explode: false schema: type: string name: where in: query - description: A comma-separated list of columns to return. See response schema for valid column identifiers. required: true explode: false schema: type: string name: select in: query - description: The id of an existing keyword list to show metrics for. required: false explode: false schema: type: integer name: keyword_list_id in: query - description: A comma-separated list of keywords to show metrics for. required: false explode: false schema: type: string name: keywords in: query - description: A two-letter country code (ISO 3166-1 alpha-2). required: true explode: false schema: 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 name: country in: query - description: Filters keywords based on the ranking position of the specified `target`. required: false explode: false schema: type: string enum: - in_top10 - in_top100 name: target_position in: query - description: 'The target of the search: a domain or a URL.' required: false explode: false schema: type: string format: url name: target in: query - description: The scope of the target. required: false explode: false schema: type: string enum: - exact - prefix - domain - subdomains name: mode in: query - description: The start date in YYYY-MM-DD format for retrieving historical monthly search volumes in the `volume_monthly_history` field. Required only if `volume_monthly_history` is requested. required: false explode: false schema: type: string format: date name: volume_monthly_date_from in: query - description: The end date in YYYY-MM-DD format for retrieving historical monthly search volumes in the `volume_monthly_history` field. Required only if `volume_monthly_history` is requested. required: false explode: false schema: type: string format: date name: volume_monthly_date_to in: query - $ref: '#/components/parameters/output_json_php_xml' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/overview' application/xml: schema: $ref: '#/components/schemas/overview' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' servers: - url: https://api.ahrefs.com/v3/keywords-explorer description: Ahrefs Keywords Explorer /volume-history: get: tags: - Overview summary: Volume history operationId: volume-history parameters: - description: The keyword to show metrics for. required: true explode: false schema: type: string name: keyword in: query - description: A two-letter country code (ISO 3166-1 alpha-2). required: true explode: false schema: 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 name: country in: query - description: The start date of the historical period in YYYY-MM-DD format. required: false explode: false schema: type: string format: date name: date_from in: query - description: The end date of the historical period in YYYY-MM-DD format. required: false explode: false schema: type: string format: date name: date_to in: query - $ref: '#/components/parameters/output' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/volume-history' application/xml: schema: $ref: '#/components/schemas/volume-history' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' servers: - url: https://api.ahrefs.com/v3/keywords-explorer description: Ahrefs Keywords Explorer /volume-by-country: get: tags: - Overview summary: Volume by country operationId: volume-by-country parameters: - description: The keyword to show metrics for. required: true explode: false schema: type: string name: keyword in: query - description: The number of results to return. required: false explode: false schema: type: integer name: limit in: query - $ref: '#/components/parameters/output' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/volume-by-country' application/xml: schema: $ref: '#/components/schemas/volume-by-country' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' servers: - url: https://api.ahrefs.com/v3/keywords-explorer description: Ahrefs Keywords Explorer /serp-overview: get: tags: - Overview summary: SERP Overview description: '>Requests to this endpoint are free and do not consume any API units.' operationId: serp-overview parameters: - description: The number of top organic SERP positions to return. If not specified, all available positions will be returned. required: false explode: false schema: type: integer name: top_positions in: query - description: Choose between mobile and desktop rankings. required: true explode: false schema: type: string enum: - desktop - mobile name: device in: query - description: A timestamp on which the last available SERP Overview is returned in YYYY-MM-DDThh:mm:ss format. If it is not specified, the most recent SERP Overview is returned. required: false explode: false schema: type: string format: date-time name: date in: query - description: The location ID of a tracked keyword.You can use the `management/project-keywords` endpoint to get country codes, language codes and location IDs for your tracked keywords. required: false explode: false schema: type: integer name: location_id in: query - description: A two-letter country code (ISO 3166-1 alpha-2). required: true explode: false schema: 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 name: country in: query - description: The language code of a tracked keyword.You can use the `management/project-keywords` endpoint to get country codes, language codes and location IDs for your tracked keywords. required: false explode: false schema: type: string name: language_code in: query - description: The keyword to return SERP Overview for. required: true explode: false schema: type: string name: keyword 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: true explode: false schema: type: integer name: project_id in: query - $ref: '#/components/parameters/output' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/serp-overview' application/xml: schema: $ref: '#/components/schemas/serp-overview' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' servers: - url: https://api.ahrefs.com/v3/rank-tracker description: Ahrefs Rank Tracker /domain-rating: get: tags: - Overview summary: Domain rating operationId: domain-rating parameters: - description: A date to report metrics on in YYYY-MM-DD format. required: true explode: false schema: type: string format: date name: date in: query - description: 'The target of the search: a domain or a URL.' required: true explode: false schema: type: string format: url name: target in: query - $ref: '#/components/parameters/output' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/domain-rating' application/xml: schema: $ref: '#/components/schemas/domain-rating' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' servers: - url: https://api.ahrefs.com/v3/site-explorer description: Ahrefs Site Explorer /backlinks-stats: get: tags: - Overview summary: Backlinks stats operationId: backlinks-stats parameters: - description: The protocol of your target. required: false explode: false schema: type: string enum: - both - http - https default: both name: protocol in: query - description: 'The target of the search: a domain or a URL.' required: true explode: false schema: type: string format: url name: target in: query - description: The scope of the search based on the target you entered. required: false explode: false schema: type: string enum: - exact - prefix - domain - subdomains default: subdomains name: mode in: query - description: A date to report metrics on in YYYY-MM-DD format. required: true explode: false schema: type: string format: date name: date in: query - $ref: '#/components/parameters/output' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/backlinks-stats' application/xml: schema: $ref: '#/components/schemas/backlinks-stats' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' servers: - url: https://api.ahrefs.com/v3/site-explorer description: Ahrefs Site Explorer /outlinks-stats: get: tags: - Overview summary: Outlinks stats description: '**This is a beta version of the endpoint. The data it returns may not always exactly match the corresponding values in Ahrefs UI. Data accuracy will be improved soon.**' operationId: outlinks-stats parameters: - description: 'The target of the search: a domain or a URL.' required: true explode: false schema: type: string format: url name: target in: query - description: The scope of the target. required: false explode: false schema: type: string enum: - exact - prefix - domain - subdomains default: subdomains name: mode in: query - description: The protocol of your target. required: false explode: false schema: type: string enum: - both - http - https default: both name: protocol in: query - $ref: '#/components/parameters/output' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/outlinks-stats' application/xml: schema: $ref: '#/components/schemas/outlinks-stats' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' servers: - url: https://api.ahrefs.com/v3/site-explorer description: Ahrefs Site Explorer /metrics: get: tags: - Overview summary: Metrics operationId: metrics parameters: - description: A date to report metrics on in YYYY-MM-DD format. required: true explode: false schema: type: string format: date name: date in: query - description: The scope of the target. required: false explode: false schema: type: string enum: - exact - prefix - domain - subdomains default: subdomains name: mode in: query - description: 'The target of the search: a domain or a URL.' required: true explode: false schema: type: string format: url name: target in: query - description: The protocol of your target. required: false explode: false schema: type: string enum: - both - http - https default: both name: protocol in: query - description: A two-letter country code (ISO 3166-1 alpha-2). required: false explode: false schema: 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 name: country in: query - description: 'The search volume calculation mode: monthly or average. It affects volume, traffic, and traffic value.' required: false explode: false schema: type: string enum: - monthly - average default: monthly name: volume_mode in: query - description: 'The organic traffic calculation mode: static or adaptive. It affects organic traffic and traffic value.' required: false explode: false schema: type: string enum: - static - adaptive default: static name: traffic_mode in: query - $ref: '#/components/parameters/output' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/metrics' application/xml: schema: $ref: '#/components/schemas/metrics' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' servers: - url: https://api.ahrefs.com/v3/site-explorer description: Ahrefs Site Explorer /ai-responses-count: get: tags: - Overview summary: AI Responses Count operationId: ai-responses-count parameters: - description: 'A comma-separated list of fields to return. - `chatgpt` (15 units) - `copilot` (15 units) - `gemini` (15 units) - `google_ai_mode` (15 units) - `google_ai_overviews` (15 units) - `google_ai_overviews_keywords` (15 units) - `grok` (15 units) - `perplexity` (15 units)' required: true explode: false schema: type: string name: select in: query - description: The date to report on in YYYY-MM-DD format. required: false explode: false schema: type: string format: date name: date in: query - description: The scope of the target. required: false explode: false schema: type: string enum: - exact - prefix - domain - subdomains default: subdomains name: mode in: query - description: 'The target of the search: a domain or a URL.' required: true explode: false schema: type: string format: url name: target in: query - description: The protocol of your target. required: false explode: false schema: type: string enum: - both - http - https default: both name: protocol in: query - description: A two-letter country code (ISO 3166-1 alpha-2). required: false explode: false schema: 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 name: country in: query - $ref: '#/components/parameters/output' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ai-responses-count' application/xml: schema: $ref: '#/components/schemas/ai-responses-count' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' servers: - url: https://api.ahrefs.com/v3/site-explorer description: Ahrefs Site Explorer /refdomains-history: get: tags: - Overview summary: Refdomains history operationId: refdomains-history parameters: - description: The scope of the target. required: false explode: false schema: type: string enum: - exact - prefix - domain - subdomains default: subdomains name: mode in: query - description: 'The target of the search: a domain or a URL.' required: true explode: false schema: type: string format: url name: target in: query - description: The protocol of your target. required: false explode: false schema: type: string enum: - both - http - https default: both name: protocol in: query - description: The start date of the historical period in YYYY-MM-DD format. required: true explode: false schema: type: string format: date name: date_from in: query - description: The end date of the historical period in YYYY-MM-DD format. required: false explode: false schema: type: string format: date name: date_to in: query - description: The time interval used to group historical data. required: false explode: false schema: type: string enum: - daily - weekly - monthly default: monthly name: history_grouping in: query - $ref: '#/components/parameters/output' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/refdomains-history' application/xml: schema: $ref: '#/components/schemas/refdomains-history' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' servers: - url: https://api.ahrefs.com/v3/site-explorer description: Ahrefs Site Explorer /domain-rating-history: get: tags: - Overview summary: Domain Rating history operationId: domain-rating-history parameters: - description: 'The target of the search: a domain or a URL.' required: true explode: false schema: type: string format: url name: target in: query - description: The start date of the historical period in YYYY-MM-DD format. required: true explode: false schema: type: string format: date name: date_from in: query - description: The end date of the historical period in YYYY-MM-DD format. required: false explode: false schema: type: string format: date name: date_to in: query - description: The time interval used to group historical data. required: false explode: false schema: type: string enum: - daily - weekly - monthly default: monthly name: history_grouping in: query - $ref: '#/components/parameters/output' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/domain-rating-history' application/xml: schema: $ref: '#/components/schemas/domain-rating-history' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' servers: - url: https://api.ahrefs.com/v3/site-explorer description: Ahrefs Site Explorer /url-rating-history: get: tags: - Overview summary: URL Rating history operationId: url-rating-history parameters: - description: 'The target of the search: a domain or a URL.' required: true explode: false schema: type: string format: url name: target in: query - description: The start date of the historical period in YYYY-MM-DD format. required: true explode: false schema: type: string format: date name: date_from in: query - description: The end date of the historical period in YYYY-MM-DD format. required: false explode: false schema: type: string format: date name: date_to in: query - description: The time interval used to group historical data. required: false explode: false schema: type: string enum: - daily - weekly - monthly default: monthly name: history_grouping in: query - $ref: '#/components/parameters/output' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/url-rating-history' application/xml: schema: $ref: '#/components/schemas/url-rating-history' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' servers: - url: https://api.ahrefs.com/v3/site-explorer description: Ahrefs Site Explorer /metrics-history: get: tags: - Overview summary: Metrics history operationId: metrics-history parameters: - description: A comma-separated list of columns to return. See response schema for valid column identifiers. required: false explode: false schema: type: string default: date,org_cost,org_traffic,paid_cost,paid_traffic name: select in: query - description: The scope of the target. required: false explode: false schema: type: string enum: - exact - prefix - domain - subdomains default: subdomains name: mode in: query - description: 'The target of the search: a domain or a URL.' required: true explode: false schema: type: string format: url name: target in: query - description: The protocol of your target. required: false explode: false schema: type: string enum: - both - http - https default: both name: protocol in: query - description: A two-letter country code (ISO 3166-1 alpha-2). required: false explode: false schema: 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 name: country in: query - description: The start date of the historical period in YYYY-MM-DD format. required: true explode: false schema: type: string format: date name: date_from in: query - description: The end date of the historical period in YYYY-MM-DD format. required: false explode: false schema: type: string format: date name: date_to in: query - description: The time interval used to group historical data. required: false explode: false schema: type: string enum: - daily - weekly - monthly default: monthly name: history_grouping in: query - description: 'The search volume calculation mode: monthly or average. It affects volume, traffic, and traffic value.' required: false explode: false schema: type: string enum: - monthly - average default: monthly name: volume_mode in: query - description: 'The organic traffic calculation mode: static or adaptive. It affects organic traffic and traffic value.' required: false explode: false schema: type: string enum: - static - adaptive default: static name: traffic_mode in: query - $ref: '#/components/parameters/output' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/metrics-history' application/xml: schema: $ref: '#/components/schemas/metrics-history' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' servers: - url: https://api.ahrefs.com/v3/site-explorer description: Ahrefs Site Explorer /keywords-history: get: tags: - Overview summary: Keywords history operationId: keywords-history parameters: - description: A comma-separated list of columns to return. See response schema for valid column identifiers. required: false explode: false schema: type: string default: date,top3,top4_10,top11_plus name: select in: query - description: The scope of the target. required: false explode: false schema: type: string enum: - exact - prefix - domain - subdomains default: subdomains name: mode in: query - description: 'The target of the search: a domain or a URL.' required: true explode: false schema: type: string format: url name: target in: query - description: The protocol of your target. required: false explode: false schema: type: string enum: - both - http - https default: both name: protocol in: query - description: A two-letter country code (ISO 3166-1 alpha-2). required: false explode: false schema: 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 name: country in: query - description: The start date of the historical period in YYYY-MM-DD format. required: true explode: false schema: type: string format: date name: date_from in: query - description: The end date of the historical period in YYYY-MM-DD format. required: false explode: false schema: type: string format: date name: date_to in: query - description: The time interval used to group historical data. required: false explode: false schema: type: string enum: - daily - weekly - monthly default: monthly name: history_grouping in: query - $ref: '#/components/parameters/output' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/keywords-history' application/xml: schema: $ref: '#/components/schemas/keywords-history' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' servers: - url: https://api.ahrefs.com/v3/site-explorer description: Ahrefs Site Explorer /pages-by-traffic: get: tags: - Overview summary: Pages by traffic operationId: pages-by-traffic parameters: - description: 'The target of the search: a domain or a URL.' required: true explode: false schema: type: string format: url name: target in: query - description: The protocol of your target. required: false explode: false schema: type: string enum: - both - http - https default: both name: protocol in: query - description: The scope of the target. required: false explode: false schema: type: string enum: - exact - prefix - domain - subdomains default: subdomains name: mode in: query - description: 'The search volume calculation mode: monthly or average. It affects volume, traffic, and traffic value.' required: false explode: false schema: type: string enum: - monthly - average default: monthly name: volume_mode in: query - description: 'The organic traffic calculation mode: static or adaptive. It affects organic traffic and traffic value.' required: false explode: false schema: type: string enum: - static - adaptive default: static name: traffic_mode in: query - description: A two-letter country code (ISO 3166-1 alpha-2). required: false explode: false schema: 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 name: country in: query - $ref: '#/components/parameters/output' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/pages-by-traffic' application/xml: schema: $ref: '#/components/schemas/pages-by-traffic' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' servers: - url: https://api.ahrefs.com/v3/site-explorer description: Ahrefs Site Explorer /total-search-volume-history: get: tags: - Overview summary: Total search volume history operationId: total-search-volume-history parameters: - description: The scope of the target. required: false explode: false schema: type: string enum: - exact - prefix - domain - subdomains default: subdomains name: mode in: query - description: 'The target of the search: a domain or a URL.' required: true explode: false schema: type: string format: url name: target in: query - description: The protocol of your target. required: false explode: false schema: type: string enum: - both - http - https default: both name: protocol in: query - description: A two-letter country code (ISO 3166-1 alpha-2). required: false explode: false schema: 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 name: country in: query - description: The start date of the historical period in YYYY-MM-DD format. required: true explode: false schema: type: string format: date name: date_from in: query - description: The end date of the historical period in YYYY-MM-DD format. required: false explode: false schema: type: string format: date name: date_to in: query - description: The time interval used to group historical data. required: false explode: false schema: type: string enum: - daily - weekly - monthly default: monthly name: history_grouping in: query - description: The number of top organic search positions to consider when calculating total search volume. required: false explode: false schema: type: string enum: - top_10 - top_100 default: top_10 name: top_positions in: query - description: 'The search volume calculation mode: monthly or average. It affects volume, traffic, and traffic value.' required: false explode: false schema: type: string enum: - monthly - average default: monthly name: volume_mode in: query - $ref: '#/components/parameters/output' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/total-search-volume-history' application/xml: schema: $ref: '#/components/schemas/total-search-volume-history' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' servers: - url: https://api.ahrefs.com/v3/site-explorer description: Ahrefs Site Explorer /stats: get: tags: - Overview summary: Stats description: '>Requests to this endpoint are free and do not consume any API units.' operationId: stats parameters: - description: The number of results to return. required: false explode: false schema: type: integer name: limit in: query - description: "Order by metric, as `metric:desc` or `metric:asc`. The following metrics are supported:\n\n**pageviews**: Number of pageview events \ntype: integer\n\n**visitors**: Number of visitors \ntype: integer\n\n**visits**: Number of visits \ntype: integer\n\n**session_bounce_rate**: Session bounce rate (percentage of sessions that triggered only one request) \ntype: float\n\n**avg_session_length**: Average session length (in seconds) \ntype: float\n\n**avg_session_duration_sec**: Average session duration (in seconds) \ntype: integer\n\n**exit_rate**: Exit rate (percentage of pageviews that were the last in the session) \ntype: float\n\n**exits**: Number of exits \ntype: integer\n\n**entries**: Number of entries \ntype: integer\n\n**avg_page_visit_duration_sec**: Average page visit duration (in seconds) \ntype: integer" required: false explode: false schema: type: string name: order_by in: query - description: "Filter expression. Can mention dimensions and metrics.\n\nThe following dimensions are supported:\n\n**source_channel**: Source Channel \ntype: enum (search \\| llm \\| email \\| paid \\| search/paid \\| social \\| unknown \\| direct \\| newsletter \\| shopping/organic \\| shopping/paid \\| audio \\| social/paid \\| cross-network \\| mobile-push-notification \\| sms \\| affiliate \\| referral \\| display \\| internal)\n\n**source**: Source \ntype: string\n\n**source_referer**: Referer source \ntype: string\n\n**source_referer_domain**: Referer domain \ntype: string\n\n**utm_source**: UTM source \ntype: string\n\n**utm_medium**: UTM medium \ntype: string\n\n**utm_campaign**: UTM campaign \ntype: string\n\n**utm_term**: UTM term \ntype: string\n\n**utm_content**: UTM content \ntype: string\n\n**page**: Page URL \ntype: url\n\n**page_domain**: Page domain \ntype: string\n\n**page_title**: Page title \ntype: string\n\n**entry_page**: Entry page URL \ntype: url\n\n**exit_page**: Exit page URL \ntype: url\n\n**continent**: Continent \ntype: enum (AF \\| AS \\| EU \\| NA \\| OC \\| SA \\| AN \\| )\n\n**country**: Country \ntype: string\n\n**city**: City \ntype: string\n\n**browser_language**: Browser language \ntype: string\n\n**browser**: Browser \ntype: string\n\n**browser_version**: Browser version \ntype: string\n\n**os**: Operating system \ntype: string\n\n**os_version**: Operating system version \ntype: string\n\n**device**: Device type \ntype: string\n\n**screensize**: Screen size \ntype: string\n\n**event_name**: Event name \ntype: string\n\n**is_external_link_click**: Is external link click \ntype: boolean\n\n**event_prop:EVENT_PROP**: a custom event property can be specified by its name \ntype: string\n\nThe following metrics are supported:\n\n**pageviews**: Number of pageview events \ntype: integer\n\n**visitors**: Number of visitors \ntype: integer\n\n**visits**: Number of visits \ntype: integer\n\n**session_bounce_rate**: Session bounce rate (percentage of sessions that triggered only one request) \ntype: float\n\n**avg_session_length**: Average session length (in seconds) \ntype: float\n\n**avg_session_duration_sec**: Average session duration (in seconds) \ntype: integer\n\n**exit_rate**: Exit rate (percentage of pageviews that were the last in the session) \ntype: float\n\n**exits**: Number of exits \ntype: integer\n\n**entries**: Number of entries \ntype: integer\n\n**avg_page_visit_duration_sec**: Average page visit duration (in seconds) \ntype: integer\n\nFilter is a JSON string that represents a boolean expression, it should follow the following structure:\n```\n ::= { \"and\" : + }\n | { \"or\" : + }\n | { \"not\" : }\n | \n\n ::= {\n \"field\" : ,\n ? \"is\": ,\n }\n\n ::= [ \"eq\", ]\n | [ \"neq\", ]\n | [ \"gt\", ]\n | [ \"gte\", ]\n | [ \"lt\", ]\n | [ \"lte\", ]\n | [ \"substring\", ]\n | [ \"isubstring\", ]\n | [ \"phrase_match\", ]\n | [ \"iphrase_match\", ]\n | [ \"prefix\", ]\n | [ \"suffix\", ]\n```" required: false explode: false schema: type: string name: where in: query - description: end datetime for the data query required: false explode: false schema: type: string format: date-time name: to in: query - description: start datetime for the data query required: false explode: false schema: type: string format: date-time name: from in: query - description: Project ID required: true explode: false schema: type: integer name: project_id in: query - $ref: '#/components/parameters/output' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/stats' application/xml: schema: $ref: '#/components/schemas/stats' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' servers: - url: https://api.ahrefs.com/v3/web-analytics description: Ahrefs Web Analytics /chart: get: tags: - Overview summary: Chart description: '>Requests to this endpoint are free and do not consume any API units.' operationId: chart parameters: - description: "Filter expression. Can mention dimensions and metrics.\n\nThe following dimensions are supported:\n\n**source_channel**: Source Channel \ntype: enum (search \\| llm \\| email \\| paid \\| search/paid \\| social \\| unknown \\| direct \\| newsletter \\| shopping/organic \\| shopping/paid \\| audio \\| social/paid \\| cross-network \\| mobile-push-notification \\| sms \\| affiliate \\| referral \\| display \\| internal)\n\n**source**: Source \ntype: string\n\n**source_referer**: Referer source \ntype: string\n\n**source_referer_domain**: Referer domain \ntype: string\n\n**utm_source**: UTM source \ntype: string\n\n**utm_medium**: UTM medium \ntype: string\n\n**utm_campaign**: UTM campaign \ntype: string\n\n**utm_term**: UTM term \ntype: string\n\n**utm_content**: UTM content \ntype: string\n\n**page**: Page URL \ntype: url\n\n**page_domain**: Page domain \ntype: string\n\n**page_title**: Page title \ntype: string\n\n**entry_page**: Entry page URL \ntype: url\n\n**exit_page**: Exit page URL \ntype: url\n\n**continent**: Continent \ntype: enum (AF \\| AS \\| EU \\| NA \\| OC \\| SA \\| AN \\| )\n\n**country**: Country \ntype: string\n\n**city**: City \ntype: string\n\n**browser_language**: Browser language \ntype: string\n\n**browser**: Browser \ntype: string\n\n**browser_version**: Browser version \ntype: string\n\n**os**: Operating system \ntype: string\n\n**os_version**: Operating system version \ntype: string\n\n**device**: Device type \ntype: string\n\n**screensize**: Screen size \ntype: string\n\n**event_name**: Event name \ntype: string\n\n**is_external_link_click**: Is external link click \ntype: boolean\n\n**event_prop:EVENT_PROP**: a custom event property can be specified by its name \ntype: string\n\nThe following metrics are supported:\n\n**pageviews**: Number of pageview events \ntype: integer\n\n**visitors**: Number of visitors \ntype: integer\n\n**visits**: Number of visits \ntype: integer\n\n**session_bounce_rate**: Session bounce rate (percentage of sessions that triggered only one request) \ntype: float\n\n**avg_session_length**: Average session length (in seconds) \ntype: float\n\n**avg_session_duration_sec**: Average session duration (in seconds) \ntype: integer\n\n**exit_rate**: Exit rate (percentage of pageviews that were the last in the session) \ntype: float\n\n**exits**: Number of exits \ntype: integer\n\n**entries**: Number of entries \ntype: integer\n\n**avg_page_visit_duration_sec**: Average page visit duration (in seconds) \ntype: integer\n\nFilter is a JSON string that represents a boolean expression, it should follow the following structure:\n```\n ::= { \"and\" : + }\n | { \"or\" : + }\n | { \"not\" : }\n | \n\n ::= {\n \"field\" : ,\n ? \"is\": ,\n }\n\n ::= [ \"eq\", ]\n | [ \"neq\", ]\n | [ \"gt\", ]\n | [ \"gte\", ]\n | [ \"lt\", ]\n | [ \"lte\", ]\n | [ \"substring\", ]\n | [ \"isubstring\", ]\n | [ \"phrase_match\", ]\n | [ \"iphrase_match\", ]\n | [ \"prefix\", ]\n | [ \"suffix\", ]\n```" required: false explode: false schema: type: string name: where in: query - description: Time granularity for chart data points. required: true explode: false schema: type: string enum: - hourly - daily - weekly - monthly name: granularity in: query - description: end datetime for the data query required: false explode: false schema: type: string format: date-time name: to in: query - description: start datetime for the data query required: false explode: false schema: type: string format: date-time name: from in: query - description: Project ID required: true explode: false schema: type: integer name: project_id in: query - $ref: '#/components/parameters/output' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/chart' application/xml: schema: $ref: '#/components/schemas/chart' '400': $ref: '#/components/responses/error_400' '401': $ref: '#/components/responses/error_401' '403': $ref: '#/components/responses/error_403' '429': $ref: '#/components/responses/error_429' '500': $ref: '#/components/responses/error_500' servers: - url: https://api.ahrefs.com/v3/web-analytics description: Ahrefs Web Analytics components: responses: error_400: description: Bad Request content: application/json: schema: $ref: '#/components/schemas/Error_response' application/xml: schema: $ref: '#/components/schemas/Error_response' error_403: description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Error_response' application/xml: schema: $ref: '#/components/schemas/Error_response' error_500: description: Internal Error content: application/json: schema: $ref: '#/components/schemas/Error_response' application/xml: schema: $ref: '#/components/schemas/Error_response' error_401: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error_response' application/xml: schema: $ref: '#/components/schemas/Error_response' error_429: description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/Error_response' application/xml: schema: $ref: '#/components/schemas/Error_response' schemas: impressions-overview: properties: metrics: items: properties: brand: type: string title: brand description: Brand name (either your brand or a competitor provided in the request). no_tracked_brands: type: integer title: no_tracked_brands description: Estimated impressions from responses related to the specified market that do not mention any provided brands (value is zero when `market` is not specified). only_competitors_brands: type: integer title: only_competitors_brands description: Estimated impressions from responses mentioning only competitor brands. only_target_brand: type: integer title: only_target_brand description: Estimated impressions from responses mentioning only your brand. target_and_competitors_brands: type: integer title: target_and_competitors_brands description: Estimated impressions from responses mentioning both your and competitor brands. total: type: integer title: total description: Total estimated impressions for your brand (includes both `only_target_brand` and `target_and_competitors_brands`). type: object type: array type: object xml: name: AhrefsApiResponse citations-overview: properties: metrics: items: properties: brand: type: string title: brand description: Brand name (either your brand or a competitor provided in the request). no_tracked_brands: type: integer title: no_tracked_brands description: Estimated citations from responses related to the specified market that do not mention any provided brand URLs (value is zero when `market` is not specified). only_competitors_brands: type: integer title: only_competitors_brands description: Estimated citations from responses mentioning only competitors' brand URLs. only_target_brand: type: integer title: only_target_brand description: Estimated citations from responses mentioning only your brand URLs. target_and_competitors_brands: type: integer title: target_and_competitors_brands description: Estimated citations from responses mentioning both your and competitors' brand URLs. total: type: integer title: total description: Total estimated citations for your brand URLs (includes both `only_target_brand` and `target_and_competitors_brands`). type: object type: array type: object xml: name: AhrefsApiResponse entity: anyOf: - required: - names - required: - url_groups properties: names: items: type: string type: array description: The names of the brand/competitor examples: - - ahrefs - ahrefs seo url_groups: items: properties: target: type: string format: domain description: The domain of the target examples: - ahrefs.com scope: type: string enum: - url - path - domain - subdomains description: Scope of the target. type: object required: - target - scope type: array type: object mentions-overview: properties: metrics: items: properties: brand: type: string title: brand description: Brand name (either your brand or a competitor provided in the request). no_tracked_brands: type: integer title: no_tracked_brands description: Estimated mentions from responses related to the specified market that do not mention any provided brands (value is zero when `market` is not specified). only_competitors_brands: type: integer title: only_competitors_brands description: Estimated mentions from responses mentioning only competitor brands. only_target_brand: type: integer title: only_target_brand description: Estimated mentions from responses mentioning only your brand. target_and_competitors_brands: type: integer title: target_and_competitors_brands description: Estimated mentions from responses mentioning both your and competitor brands. total: type: integer title: total description: Total estimated mentions for your brand (includes both `only_target_brand` and `target_and_competitors_brands`). type: object type: array type: object xml: name: AhrefsApiResponse Error_response: properties: error: type: string type: object xml: name: AhrefsApiResponse sov-overview: properties: metrics: items: properties: brand: type: string title: brand description: Brand name (either your brand or a competitor provided in the request). share_of_voice: type: number format: float title: share_of_voice description: Estimated share of voice for your brand. type: object type: array type: object xml: name: AhrefsApiResponse performance-by-position: properties: metrics: items: properties: clicks: type: integer title: clicks clicks_percent: type: number format: float title: clicks_percent impressions: type: integer title: impressions impressions_percent: type: number format: float title: impressions_percent keyword_count: type: integer title: keyword_count keyword_count_percent: type: number format: float title: keyword_count_percent position_range: type: string title: position_range type: object type: array type: object xml: name: AhrefsApiResponse pages-history: properties: metrics: items: properties: date: type: string format: date-time title: date total_pages: type: integer title: total_pages type: object type: array type: object xml: name: AhrefsApiResponse performance-history: properties: metrics: items: properties: clicks: type: integer title: clicks ctr: type: number format: float title: ctr date: type: string format: date-time title: date impressions: type: integer title: impressions position: type: number format: float title: position description: Average position (decimal, e.g. 4.7) type: object type: array type: object xml: name: AhrefsApiResponse ctr-by-position: properties: metrics: items: properties: average_ctr_percent: type: number format: float title: average_ctr_percent keyword_count: type: integer title: keyword_count position: type: integer title: position type: object type: array type: object xml: name: AhrefsApiResponse performance-by-device: properties: metrics: items: properties: clicks: type: number format: float title: clicks ctr: type: number format: float title: ctr device: type: string title: device impressions: type: number format: float title: impressions position: type: number format: float title: position description: Average position (decimal, e.g. 4.7) type: object type: array type: object xml: name: AhrefsApiResponse positions-history: properties: metrics: items: properties: date: type: string format: date-time title: date position_11_to_20: type: integer title: position_11_to_20 position_1_to_3: type: integer title: position_1_to_3 position_21_to_50: type: integer title: position_21_to_50 position_4_to_10: type: integer title: position_4_to_10 position_51_plus: type: integer title: position_51_plus total: type: integer title: total type: object type: array type: object xml: name: AhrefsApiResponse metrics-by-country: properties: metrics: items: properties: clicks: type: integer title: clicks country: type: string title: country type: object type: array type: object xml: name: AhrefsApiResponse volume-by-country: properties: countries: items: properties: country: type: string title: country volume: type: integer title: volume description: (10 units) An estimation of the average monthly number of searches for a keyword in a given country. type: object type: array type: object xml: name: AhrefsApiResponse volume-history: properties: metrics: items: properties: date: type: string format: date title: date volume: type: integer title: volume description: An estimation of the number of searches for a keyword over a given month. type: object type: array type: object xml: name: AhrefsApiResponse overview: properties: keywords: items: properties: clicks: type: - integer - 'null' title: clicks description: The average monthly number of clicks on the search results that people make while searching for the target keyword. cpc: type: - integer - 'null' title: cpc description: Cost Per Click shows the average price that advertisers pay for each ad click in paid search results for a keyword, in USD cents. cps: type: - number - 'null' format: float title: cps description: Clicks Per Search (or CPS) is the ratio of Clicks to Keyword Search volume. It shows how many different search results get clicked, on average, when people search for the target keyword in a given country. difficulty: type: - integer - 'null' title: difficulty description: (10 units) An estimation of how hard it is to rank in the top 10 organic search results for a keyword on a 100-point scale. first_seen: type: - string - 'null' format: date-time title: first_seen description: The date when we first checked search engine results for a keyword. global_volume: type: - integer - 'null' title: global_volume description: (10 units) How many times per month, on average, people search for the target keyword across all countries in our database. intents: type: - object - 'null' title: intents description: '(10 units) Indicates the purpose behind the user''s search query. Object fields: `informational`, `navigational`, `commercial`, `transactional`, `branded` or `local`. All the fields are of type `bool`, with possible values `true` or `false`.' keyword: type: string title: keyword description: '' parent_topic: type: - string - 'null' title: parent_topic description: 'Parent Topic determines if you can rank for your target keyword while targeting a more general topic on your page instead. To identify the Parent Topic, we take the #1 ranking page for your keyword and find the keyword responsible for sending the most traffic to that page.' parent_volume: type: - integer - 'null' title: parent_volume description: (10 units) The search volume of the parent topic. searches_pct_clicks_organic_and_paid: type: - number - 'null' format: float title: searches_pct_clicks_organic_and_paid description: The average monthly percentage of people who clicked on both organic and paid results while searching for the target keyword. searches_pct_clicks_organic_only: type: - number - 'null' format: float title: searches_pct_clicks_organic_only description: The average monthly percentage of people who clicked only on organic results while searching for the target keyword. searches_pct_clicks_paid_only: type: - number - 'null' format: float title: searches_pct_clicks_paid_only description: The average monthly percentage of people who clicked only on paid results while searching for the target keyword. serp_features: items: type: string enum: - ai_overview_sitelink - snippet - ai_overview - local_pack - sitelink - news - image - video - discussion - tweet - paid_top - paid_bottom - paid_sitelink - shopping - knowledge_card - knowledge_panel - question - image_th - video_th - organic_shopping title: serp_features description: The enriched results on a search engine results page (SERP) that are not traditional organic results. type: array title: serp_features description: The enriched results on a search engine results page (SERP) that are not traditional organic results. serp_last_update: type: - string - 'null' format: date-time title: serp_last_update description: The date when we last checked search engine results for a keyword. traffic_potential: type: - integer - 'null' title: traffic_potential description: '(10 units) The sum of organic traffic that the #1 ranking page for your target keyword receives from all the keywords that it ranks for.' volume: type: - integer - 'null' title: volume description: (10 units) An estimation of the average monthly number of searches for a keyword over the latest known 12 months of data. volume_desktop_pct: type: - number - 'null' format: float title: volume_desktop_pct description: The percentage of searches for a keyword performed on desktop devices. volume_mobile_pct: type: - number - 'null' format: float title: volume_mobile_pct description: The percentage of searches for a keyword performed on mobile devices. volume_monthly: type: - integer - 'null' title: volume_monthly description: (10 units) An estimation of the number of searches for a keyword over the latest month. This field may not be included in the `order_by` parameter volume_monthly_history: items: type: object title: volume_monthly_history description: (2 units per historical month, with a minimum of 50 units) Historical monthly search volume estimates of a keyword for the period set by the `volume_monthly_date_from` and `volume_monthly_date_to` parameters. type: array title: volume_monthly_history description: (2 units per historical month, with a minimum of 50 units) Historical monthly search volume estimates of a keyword for the period set by the `volume_monthly_date_from` and `volume_monthly_date_to` parameters. type: object type: array type: object xml: name: AhrefsApiResponse serp-overview: properties: positions: items: properties: ahrefs_rank: type: - integer - 'null' title: ahrefs_rank description: 'The strength of a domain''s backlink profile compared to the other websites in our database, with rank #1 being the strongest.' backlinks: type: - integer - 'null' title: backlinks description: The total number of links from other websites pointing to a search result. domain_rating: type: - number - 'null' format: float title: domain_rating description: The strength of a domain’s backlink profile compared to the others in our database on a 100-point scale. keywords: type: - integer - 'null' title: keywords description: The total number of keywords that a search result ranks for in the top 100 organic positions. nr_words: type: - integer - 'null' title: nr_words description: The total number of words present in the HTML of a web page. page_type: type: - string - 'null' title: page_type description: Comma-separated list of AI-predicted hierarchical page type paths for the ranking page. Each value is a slash-prefixed path (e.g. /Article/How_to). position: type: integer title: position description: The position of the search result in SERP. refdomains: type: - integer - 'null' title: refdomains description: The total number of unique domains linking to a search result. title: type: - string - 'null' title: title description: The title of a ranking page. top_keyword: type: - string - 'null' title: top_keyword description: The keyword that brings the most organic traffic to a search result. top_keyword_volume: type: - integer - 'null' title: top_keyword_volume description: An estimation of the average monthly number of searches for the top keyword over the latest known 12 months of data. traffic: type: - integer - 'null' title: traffic description: An estimation of the monthly organic search traffic that a result gets from all the keywords that it ranks for. type: items: type: string type: array title: type description: 'The kind of the position: organic, paid, or a SERP feature. Allowed values: `ai_overview`, `ai_overview_sitelink`, `discussion`, `image`, `image_th`, `knowledge_card`, `knowledge_panel`, `local_pack`, `organic`, `organic_shopping`, `paid_top`, `paid_bottom`, `paid_right`, `question`, `sitelink`, `snippet`, `top_story`, `tweet`, `video`, `video_th`. ' update_date: type: string format: date title: update_date description: The date when we checked search engine results for a keyword. url: type: - string - 'null' format: url title: url description: The URL of a ranking page. url_rating: type: - number - 'null' format: float title: url_rating description: The strength of a page's backlink profile on a 100-point logarithmic scale. value: type: - integer - 'null' title: value description: The estimated value of a page’s monthly organic search traffic, in USD cents. type: object type: array type: object xml: name: AhrefsApiResponse overview_2: properties: overviews: items: properties: best_position_has_thumbnail: type: - boolean - 'null' title: best_position_has_thumbnail description: The top position (or target URL’s, if set) has a thumbnail. best_position_has_thumbnail_previous: type: - boolean - 'null' title: best_position_has_thumbnail_previous description: The top position (or target URL’s, if set) has a thumbnail on the comparison date. best_position_has_video_preview: type: - boolean - 'null' title: best_position_has_video_preview description: The top position (or target URL’s, if set) has a video preview. best_position_has_video_preview_previous: type: - boolean - 'null' title: best_position_has_video_preview_previous description: The top position (or target URL’s, if set) has a video preview on the comparison date. best_position_kind: type: - string - 'null' enum: - paid_top - paid_bottom - paid_right - paid_sitelink - organic - sitelink - snippet - image - article - knowledge_card - knowledge_panel - local_pack - local_teaser - news - question - review - shopping - tweet - spelling - video - discussion - ai_overview - ai_overview_sitelink - organic_shopping title: best_position_kind description: 'The kind of top position (or target URL’s, if set): organic, paid, or a SERP feature.' best_position_kind_previous: type: - string - 'null' enum: - paid_top - paid_bottom - paid_right - paid_sitelink - organic - sitelink - snippet - image - article - knowledge_card - knowledge_panel - local_pack - local_teaser - news - question - review - shopping - tweet - spelling - video - discussion - ai_overview - ai_overview_sitelink - organic_shopping title: best_position_kind_previous description: The kind of top position (or target URL’s, if set) on the comparison date. clicks: type: - integer - 'null' title: clicks description: Clicks metric refers to the average monthly number of clicks on the search results that people make while searching for the target keyword. Some searches generate clicks on multiple results, while others might not end in any clicks at all. clicks_per_search: type: - number - 'null' format: float title: clicks_per_search description: Clicks Per Search is the ratio of Clicks to Keyword Search volume. It shows how many different search results get clicked, on average, when people search for the target keyword in a given country. cost_per_click: type: - integer - 'null' title: cost_per_click description: Cost Per Click shows the average price that advertisers pay for each ad click in paid search results for a keyword. country: type: string enum: - AD - AE - AF - AG - AI - AL - AM - AO - AQ - AR - AS - AT - AU - AW - AX - AZ - BA - BB - BD - BE - BF - BG - BH - BI - BJ - BL - BM - BN - BO - BQ - BR - BS - BT - BV - BW - BY - BZ - CA - CC - CD - CF - CG - CH - CI - CK - CL - CM - CN - CO - CR - CU - CV - CW - CX - CY - CZ - DE - DJ - DK - DM - DO - DZ - EC - EE - EG - EH - ER - ES - ET - FI - FJ - FK - FM - FO - FR - GA - GB - GD - GE - GF - GG - GH - GI - GL - GM - GN - GP - GQ - GR - GS - GT - GU - GW - GY - HK - HM - HN - HR - HT - HU - ID - IE - IL - IM - IN - IO - IQ - IR - IS - IT - JE - JM - JO - JP - KE - KG - KH - KI - KM - KN - KP - KR - KW - KY - KZ - LA - LB - LC - LI - LK - LR - LS - LT - LU - LV - LY - MA - MC - MD - ME - MF - MG - MH - MK - ML - MM - MN - MO - MP - MQ - MR - MS - MT - MU - MV - MW - MX - MY - MZ - NA - NC - NE - NF - NG - NI - NL - 'NO' - NP - NR - NU - NZ - OM - OTHER - PA - PE - PF - PG - PH - PK - PL - PM - PN - PR - PS - PT - PW - PY - QA - RE - RO - RS - RU - RW - SA - SB - SC - SD - SE - SG - SH - SI - SJ - SK - SL - SM - SN - SO - SR - SS - ST - SV - SX - SY - SZ - TC - TD - TF - TG - TH - TJ - TK - TL - TM - TN - TO - TR - TT - TV - TW - TZ - UA - UG - UM - US - UY - UZ - VA - VC - VE - VG - VI - VN - VU - WF - WS - YE - YT - ZA - ZM - ZW title: country description: The country that a given keyword is being tracked in. A two-letter country code (ISO 3166-1 alpha-2). country_prev: type: string enum: - AD - AE - AF - AG - AI - AL - AM - AO - AQ - AR - AS - AT - AU - AW - AX - AZ - BA - BB - BD - BE - BF - BG - BH - BI - BJ - BL - BM - BN - BO - BQ - BR - BS - BT - BV - BW - BY - BZ - CA - CC - CD - CF - CG - CH - CI - CK - CL - CM - CN - CO - CR - CU - CV - CW - CX - CY - CZ - DE - DJ - DK - DM - DO - DZ - EC - EE - EG - EH - ER - ES - ET - FI - FJ - FK - FM - FO - FR - GA - GB - GD - GE - GF - GG - GH - GI - GL - GM - GN - GP - GQ - GR - GS - GT - GU - GW - GY - HK - HM - HN - HR - HT - HU - ID - IE - IL - IM - IN - IO - IQ - IR - IS - IT - JE - JM - JO - JP - KE - KG - KH - KI - KM - KN - KP - KR - KW - KY - KZ - LA - LB - LC - LI - LK - LR - LS - LT - LU - LV - LY - MA - MC - MD - ME - MF - MG - MH - MK - ML - MM - MN - MO - MP - MQ - MR - MS - MT - MU - MV - MW - MX - MY - MZ - NA - NC - NE - NF - NG - NI - NL - 'NO' - NP - NR - NU - NZ - OM - OTHER - PA - PE - PF - PG - PH - PK - PL - PM - PN - PR - PS - PT - PW - PY - QA - RE - RO - RS - RU - RW - SA - SB - SC - SD - SE - SG - SH - SI - SJ - SK - SL - SM - SN - SO - SR - SS - ST - SV - SX - SY - SZ - TC - TD - TF - TG - TH - TJ - TK - TL - TM - TN - TO - TR - TT - TV - TW - TZ - UA - UG - UM - US - UY - UZ - VA - VC - VE - VG - VI - VN - VU - WF - WS - YE - YT - ZA - ZM - ZW title: country_prev description: The country that a given keyword is being tracked in on the comparison date. A two-letter country code (ISO 3166-1 alpha-2). created_at: type: string format: date-time title: created_at description: The date when a keyword was added to the project. is_branded: type: boolean title: is_branded description: 'User intent: branded. The user is searching for a specific brand or company name.' is_commercial: type: boolean title: is_commercial description: 'User intent: commercial. The user is comparing products or services before making a purchase decision.' is_informational: type: boolean title: is_informational description: 'User intent: informational. The user is looking for information or an answer to a specific question.' is_local: type: boolean title: is_local description: 'User intent: local. The user is looking for information relevant to a specific location or nearby services.' is_navigational: type: boolean title: is_navigational description: 'User intent: navigational. The user is searching for a specific website or web page.' is_transactional: type: boolean title: is_transactional description: 'User intent: transactional. The user is ready to complete an action, often a purchase.' keyword: type: string title: keyword description: The keyword your target ranks for. keyword_difficulty: type: - integer - 'null' title: keyword_difficulty description: An estimation of how hard it is to rank in the top 10 organic search results for a keyword on a 100-point scale. keyword_has_data: type: boolean title: keyword_has_data description: Will return `false` if the keyword is still processing and no SERP has been fetched yet. keyword_is_frozen: type: boolean title: keyword_is_frozen description: Indicates whether a keyword has exceeded the tracked keywords limit on your plan. Such keywords are "frozen", meaning they do not have their rankings updated. keyword_prev: type: string title: keyword_prev description: The keyword your target ranks for on the comparison date. language: type: string title: language description: The SERP language that a given keyword is being tracked for. language_prev: type: string title: language_prev description: The SERP language on the comparison date. location: type: string title: location description: The location (country, state/province, or city) that a given keyword is being tracked in. location_prev: type: string title: location_prev description: The location (country, state/province, or city) that a given keyword is being tracked in on the comparison date. parent_topic: type: - string - 'null' title: parent_topic description: 'Parent Topic determines if you can rank for your target keyword while targeting a more general topic on your page instead. To identify the Parent Topic, we take the #1 ranking page for your keyword and find the keyword responsible for sending the most traffic to that page.' position: type: - integer - 'null' title: position description: The top position (or target URL’s, if set) in organic search. position_diff: type: - integer - 'null' title: position_diff description: The change in top position (or target URL’s, if set) between selected dates. position_prev: type: - integer - 'null' title: position_prev description: The top position (or target URL’s, if set) on the comparison date. search_type_image: type: - number - 'null' format: float title: search_type_image description: Search type Image shows the percentage of searches for a keyword made for images, highlighting interest in visual content. search_type_news: type: - number - 'null' format: float title: search_type_news description: Search type News shows the percentage of searches for a keyword made for news articles. search_type_video: type: - number - 'null' format: float title: search_type_video description: Search type Video shows the percentage of searches for a keyword made for video, reflecting interest in video content. search_type_web: type: - number - 'null' format: float title: search_type_web description: Search type Web shows the percentage of searches for a keyword made for general web content, indicating interest in a wide range of information. serp_features: items: type: string enum: - paid_top - paid_bottom - paid_right - paid_sitelink - organic - sitelink - snippet - image - article - knowledge_card - knowledge_panel - local_pack - local_teaser - news - question - review - shopping - tweet - spelling - video - discussion - ai_overview - ai_overview_sitelink - organic_shopping - image_th - video_th - ai_overview_found title: serp_features description: The SERP features that appear in search results for a keyword. type: array title: serp_features description: The SERP features that appear in search results for a keyword. serp_features_prev: items: type: string enum: - paid_top - paid_bottom - paid_right - paid_sitelink - organic - sitelink - snippet - image - article - knowledge_card - knowledge_panel - local_pack - local_teaser - news - question - review - shopping - tweet - spelling - video - discussion - ai_overview - ai_overview_sitelink - organic_shopping - image_th - video_th - ai_overview_found title: serp_features_prev description: The SERP features that appear in search results for a keyword on the comparison date. type: array title: serp_features_prev description: The SERP features that appear in search results for a keyword on the comparison date. serp_updated: type: - string - 'null' format: date-time title: serp_updated description: The date when we last checked search engine results for a keyword. serp_updated_prev: type: - string - 'null' format: date-time title: serp_updated_prev description: The date when we checked search engine results up to the comparison date. tags: items: type: string title: tags description: A list of tags assigned to a given keyword. type: array title: tags description: A list of tags assigned to a given keyword. tags_prev: items: type: string title: tags_prev description: A list of tags assigned to a given keyword on the comparison date. type: array title: tags_prev description: A list of tags assigned to a given keyword on the comparison date. target_positions_count: type: integer title: target_positions_count description: The number of target URLs ranking for a keyword. traffic: type: - integer - 'null' title: traffic description: An estimation of the number of monthly visits that a page gets from organic search over the latest month or over the latest known 12 months of data depending on the "volume_mode" parameter. traffic_diff: type: - integer - 'null' title: traffic_diff description: The change in traffic between your selected dates. traffic_prev: type: - integer - 'null' title: traffic_prev description: An estimation of the number of monthly visits that a page gets from organic search over the latest month or over the latest known 12 months of data depending on the "volume_mode" parameter. url: type: - string - 'null' format: url title: url description: The top-ranking URL (or target URL, if set) in organic search. url_prev: type: - string - 'null' format: url title: url_prev description: The top-ranking URL (or target URL, if set) on the comparison date. volume: type: - integer - 'null' title: volume description: An estimation of the average monthly number of searches for a keyword over the latest month or over the latest known 12 months of data depending on the "volume_mode" parameter. volume_desktop_pct: type: - number - 'null' format: float title: volume_desktop_pct description: The percentage of the total search volume that comes from desktop devices. volume_mobile_pct: type: - number - 'null' format: float title: volume_mobile_pct description: The percentage of the total search volume that comes from mobile devices. type: object type: array type: object xml: name: AhrefsApiResponse metrics-by-country_2: properties: metrics: items: properties: country: type: string enum: - AD - AE - AF - AG - AI - AL - AM - AO - AQ - AR - AS - AT - AU - AW - AX - AZ - BA - BB - BD - BE - BF - BG - BH - BI - BJ - BL - BM - BN - BO - BQ - BR - BS - BT - BV - BW - BY - BZ - CA - CC - CD - CF - CG - CH - CI - CK - CL - CM - CN - CO - CR - CU - CV - CW - CX - CY - CZ - DE - DJ - DK - DM - DO - DZ - EC - EE - EG - EH - ER - ES - ET - FI - FJ - FK - FM - FO - FR - GA - GB - GD - GE - GF - GG - GH - GI - GL - GM - GN - GP - GQ - GR - GS - GT - GU - GW - GY - HK - HM - HN - HR - HT - HU - ID - IE - IL - IM - IN - IO - IQ - IR - IS - IT - JE - JM - JO - JP - KE - KG - KH - KI - KM - KN - KP - KR - KW - KY - KZ - LA - LB - LC - LI - LK - LR - LS - LT - LU - LV - LY - MA - MC - MD - ME - MF - MG - MH - MK - ML - MM - MN - MO - MP - MQ - MR - MS - MT - MU - MV - MW - MX - MY - MZ - NA - NC - NE - NF - NG - NI - NL - 'NO' - NP - NR - NU - NZ - OM - OTHER - PA - PE - PF - PG - PH - PK - PL - PM - PN - PR - PS - PT - PW - PY - QA - RE - RO - RS - RU - RW - SA - SB - SC - SD - SE - SG - SH - SI - SJ - SK - SL - SM - SN - SO - SR - SS - ST - SV - SX - SY - SZ - TC - TD - TF - TG - TH - TJ - TK - TL - TM - TN - TO - TR - TT - TV - TW - TZ - UA - UG - UM - US - UY - UZ - VA - VC - VE - VG - VI - VN - VU - WF - WS - YE - YT - ZA - ZM - ZW title: country org_cost: type: - integer - 'null' title: org_cost description: (10 units) The estimated value of your target's monthly organic search traffic, in USD cents. org_keywords: type: integer title: org_keywords description: The total number of keywords that your target ranks for in the top 100 organic search results. org_keywords_1_3: type: integer title: org_keywords_1_3 description: The total number of keywords that your target ranks for in the top 3 organic search results. org_traffic: type: integer title: org_traffic description: (10 units) The estimated number of monthly visitors that your target gets from organic search. paid_cost: type: - integer - 'null' title: paid_cost description: (10 units) The estimated cost of your target's monthly paid search traffic, in USD cents. paid_keywords: type: integer title: paid_keywords description: The total number of keywords that your target ranks for in paid search results. paid_pages: type: integer title: paid_pages description: The total number of pages from a target ranking in the top 100 paid search results. paid_traffic: type: integer title: paid_traffic description: (10 units) The estimated number of monthly visitors that your target gets from paid search. type: object type: array type: object xml: name: AhrefsApiResponse metrics: properties: metrics: properties: org_cost: type: - integer - 'null' title: org_cost description: (10 units) The estimated value of your target's monthly organic search traffic, in USD cents. org_keywords: type: integer title: org_keywords description: The total number of keywords that your target ranks for in the top 100 organic search results. org_keywords_1_3: type: integer title: org_keywords_1_3 description: The total number of keywords that your target ranks for in the top 3 organic search results. org_traffic: type: integer title: org_traffic description: (10 units) The estimated number of monthly visitors that your target gets from organic search. paid_cost: type: - integer - 'null' title: paid_cost description: (10 units) The estimated cost of your target's monthly paid search traffic, in USD cents. paid_keywords: type: integer title: paid_keywords description: The total number of keywords that your target ranks for in paid search results. paid_pages: type: integer title: paid_pages description: The total number of pages from a target ranking in paid search results. paid_traffic: type: integer title: paid_traffic description: (10 units) The estimated number of monthly visitors that your target gets from paid search. type: object type: object xml: name: AhrefsApiResponse ai-responses-count: properties: ai_responses_count: properties: chatgpt: properties: citations: type: integer pages: type: integer type: - object - 'null' title: chatgpt description: '(15 units) Citations to your target in this AI platform''s generated answers: the total number of citation links (`citations`) and the number of distinct cited pages (`pages`). `null` if the platform was not requested.' copilot: properties: citations: type: integer pages: type: integer type: - object - 'null' title: copilot description: '(15 units) Citations to your target in this AI platform''s generated answers: the total number of citation links (`citations`) and the number of distinct cited pages (`pages`). `null` if the platform was not requested.' gemini: properties: citations: type: integer pages: type: integer type: - object - 'null' title: gemini description: '(15 units) Citations to your target in this AI platform''s generated answers: the total number of citation links (`citations`) and the number of distinct cited pages (`pages`). `null` if the platform was not requested.' google_ai_mode: properties: citations: type: integer pages: type: integer type: - object - 'null' title: google_ai_mode description: '(15 units) Citations to your target in this AI platform''s generated answers: the total number of citation links (`citations`) and the number of distinct cited pages (`pages`). `null` if the platform was not requested.' google_ai_overviews: properties: citations: type: integer pages: type: integer type: - object - 'null' title: google_ai_overviews description: '(15 units) Citations to your target in this AI platform''s generated answers: the total number of citation links (`citations`) and the number of distinct cited pages (`pages`). `null` if the platform was not requested.' google_ai_overviews_keywords: properties: citations: type: integer pages: type: integer type: - object - 'null' title: google_ai_overviews_keywords description: '(15 units) Citations to your target in this AI platform''s generated answers: the total number of citation links (`citations`) and the number of distinct cited pages (`pages`). `null` if the platform was not requested.' grok: properties: citations: type: integer pages: type: integer type: - object - 'null' title: grok description: '(15 units) Citations to your target in this AI platform''s generated answers: the total number of citation links (`citations`) and the number of distinct cited pages (`pages`). `null` if the platform was not requested.' perplexity: properties: citations: type: integer pages: type: integer type: - object - 'null' title: perplexity description: '(15 units) Citations to your target in this AI platform''s generated answers: the total number of citation links (`citations`) and the number of distinct cited pages (`pages`). `null` if the platform was not requested.' type: object type: object xml: name: AhrefsApiResponse url-rating-history: properties: url_ratings: items: properties: date: type: string format: date title: date url_rating: type: number format: float title: url_rating description: The strength of your target page's backlink profile compared to the other websites in our database on a 100-point logarithmic scale. type: object type: array type: object xml: name: AhrefsApiResponse metrics-history: properties: metrics: items: properties: date: type: string format: date title: date description: '' org_cost: type: integer title: org_cost description: (10 units) The estimated cost of your target's monthly organic search traffic, in USD cents. org_traffic: type: integer title: org_traffic description: (10 units) The estimated number of monthly visitors that your target gets from organic search. paid_cost: type: integer title: paid_cost description: (10 units) The estimated cost of your target's monthly paid search traffic, in USD cents. paid_traffic: type: integer title: paid_traffic description: (10 units) The estimated number of monthly visitors that your target gets from paid search. type: object type: array type: object xml: name: AhrefsApiResponse domain-rating: properties: domain_rating: properties: ahrefs_rank: type: - integer - 'null' title: ahrefs_rank description: 'The strength of your target''s backlink profile compared to the other websites in our database, with rank #1 being the strongest.' domain_rating: type: number format: float title: domain_rating description: The strength of your target's backlink profile compared to the other websites in our database on a 100-point logarithmic scale. type: object type: object xml: name: AhrefsApiResponse keywords-history: properties: keywords: items: properties: date: type: string format: date title: date description: '' top11_20: type: integer title: top11_20 description: The total number of keywords that your target ranks for in the top 11-20 organic search results. top11_plus: type: integer title: top11_plus description: The total number of keywords that your target ranks for in the top 11+ organic search results. top21_50: type: integer title: top21_50 description: The total number of keywords that your target ranks for in the top 21-50 organic search results. top3: type: integer title: top3 description: The total number of keywords that your target ranks for in the top 3 organic search results. top4_10: type: integer title: top4_10 description: The total number of keywords that your target ranks for in the top 4-10 organic search results. top51_plus: type: integer title: top51_plus description: The total number of keywords that your target ranks for in the top 51+ organic search results. type: object type: array type: object xml: name: AhrefsApiResponse domain-rating-history: properties: domain_ratings: items: properties: date: type: string format: date title: date domain_rating: type: number format: float title: domain_rating description: The strength of your target page's backlink profile compared to the other websites in our database on a 100-point logarithmic scale. type: object type: array type: object xml: name: AhrefsApiResponse total-search-volume-history: properties: metrics: items: properties: date: type: string format: date title: date total_search_volume: type: integer title: total_search_volume description: (10 units) The total search volume of keywords for which your target ranks within the specified `top_positions` in the search results. type: object type: array type: object xml: name: AhrefsApiResponse backlinks-stats: properties: metrics: properties: all_time: type: integer title: all_time description: The total number of links from other websites pointing to your target for all time. all_time_refdomains: type: integer title: all_time_refdomains description: (5 units) The total number of unique domains linking to your target for all time. live: type: integer title: live description: The total number of links from other websites pointing to your target. live_refdomains: type: integer title: live_refdomains description: (5 units) The total number of unique domains linking to your target. type: object type: object xml: name: AhrefsApiResponse outlinks-stats: properties: metrics: properties: linked_domains: type: integer title: linked_domains description: The number of unique root domains linked from the target. linked_domains_dofollow: type: integer title: linked_domains_dofollow description: The number of unique root domains linked via dofollow links from the target. outgoing_links: type: integer title: outgoing_links description: The number of external links from the target. outgoing_links_dofollow: type: integer title: outgoing_links_dofollow description: The number of external dofollow links from the target. type: object type: object xml: name: AhrefsApiResponse pages-history_2: properties: pages: items: properties: date: type: string format: date title: date pages: type: integer title: pages description: The total number of pages from a target ranking in the top 100 organic search results. type: object type: array type: object xml: name: AhrefsApiResponse pages-by-traffic: properties: pages: properties: range0_pages: type: integer title: range0_pages description: The total number of pages with 0 traffic. range100_pages: type: integer title: range100_pages description: The total number of pages with 1-100 traffic. range100_traffic: type: integer title: range100_traffic description: (10 units) The total traffic from pages with 1-100 traffic. range10k_pages: type: integer title: range10k_pages description: The total number of pages with 5K-10K traffic. range10k_plus_pages: type: integer title: range10k_plus_pages description: The total number of pages with 10K+ traffic. range10k_plus_traffic: type: integer title: range10k_plus_traffic description: (10 units) The total traffic from pages with 10K+ traffic. range10k_traffic: type: integer title: range10k_traffic description: (10 units) The total traffic from pages with 5K-10K traffic. range1k_pages: type: integer title: range1k_pages description: The total number of pages with 101-1K traffic. range1k_traffic: type: integer title: range1k_traffic description: (10 units) The total traffic from pages with 101-1K traffic. range5k_pages: type: integer title: range5k_pages description: The total number of pages with 1K-5K traffic. range5k_traffic: type: integer title: range5k_traffic description: (10 units) The total traffic from pages with 1K-5K traffic. type: object type: object xml: name: AhrefsApiResponse refdomains-history: properties: refdomains: items: properties: date: type: string format: date title: date refdomains: type: integer title: refdomains description: (5 units) The total number of unique domains linking to your target. type: object type: array type: object xml: name: AhrefsApiResponse chart: properties: points: items: properties: avg_session_duration_sec: type: integer title: avg_session_duration_sec description: Average session duration (in seconds) avg_session_length: type: number format: float title: avg_session_length description: Average session length (in seconds) pageviews: type: integer title: pageviews description: Number of pageview events session_bounce_rate: type: number format: float title: session_bounce_rate description: Session bounce rate (percentage of sessions that triggered only one request) timestamp: type: string title: timestamp description: Timestamp of the data point visitors: type: integer title: visitors description: Number of visitors visits: type: integer title: visits description: Number of visits type: object type: array type: object xml: name: AhrefsApiResponse stats: properties: stats: properties: avg_session_duration_sec: type: integer title: avg_session_duration_sec description: Average session duration (in seconds) avg_session_length: type: number format: float title: avg_session_length description: Average session length (in seconds) pageviews: type: integer title: pageviews description: Number of pageview events session_bounce_rate: type: number format: float title: session_bounce_rate description: Session bounce rate (percentage of sessions that triggered only one request) visitors: type: integer title: visitors description: Number of visitors visits: type: integer title: visits description: Number of visits type: object type: object xml: name: AhrefsApiResponse parameters: output: description: The output format. required: false explode: false schema: type: string enum: - json - csv - xml - php name: output in: query output_json_php_xml: description: The output format. required: false explode: false schema: type: string enum: - json - php - xml name: output in: query securitySchemes: http: type: http scheme: bearer externalDocs: description: '' url: https://docs.ahrefs.com/docs/api/v3/ x-refined-from: - ahrefs-brand-radar-openapi.json - ahrefs-gsc-openapi.json - ahrefs-keywords-explorer-openapi.json - ahrefs-rank-tracker-openapi.json - ahrefs-site-explorer-openapi.json - ahrefs-web-analytics-openapi.json