openapi: 3.2.0 info: title: Ahrefs Keywords Explorer API description: Ahrefs API v3 gives programmatic access to Ahrefs' SEO, marketing, and AI-search data — backlinks, organic and paid traffic, keywords, SERPs, rank tracking, site audits, brand/AI-search visibility, web and social analytics, and account management. This is the full spec for every tool; each tool also has its own spec under /reference/. termsOfService: https://ahrefs.com/terms contact: name: Ahrefs url: https://ahrefs.com/ email: support@ahrefs.com version: 3.0.0 servers: - url: https://api.ahrefs.com/v3 description: Ahrefs API v3 security: - http: - read tags: - name: Keywords Explorer description: Fetch data from Keywords Explorer reports paths: /keywords-explorer/overview: get: tags: - Keywords Explorer 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: keywords-explorer.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/keywords-explorer.output_json_php_xml' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/keywords-explorer.overview' application/xml: schema: $ref: '#/components/schemas/keywords-explorer.overview' '400': $ref: '#/components/responses/keywords-explorer.error_400' '401': $ref: '#/components/responses/keywords-explorer.error_401' '403': $ref: '#/components/responses/keywords-explorer.error_403' '429': $ref: '#/components/responses/keywords-explorer.error_429' '500': $ref: '#/components/responses/keywords-explorer.error_500' /keywords-explorer/volume-history: get: tags: - Keywords Explorer summary: Volume history operationId: keywords-explorer.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/keywords-explorer.output' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/keywords-explorer.volume-history' application/xml: schema: $ref: '#/components/schemas/keywords-explorer.volume-history' '400': $ref: '#/components/responses/keywords-explorer.error_400' '401': $ref: '#/components/responses/keywords-explorer.error_401' '403': $ref: '#/components/responses/keywords-explorer.error_403' '429': $ref: '#/components/responses/keywords-explorer.error_429' '500': $ref: '#/components/responses/keywords-explorer.error_500' /keywords-explorer/volume-by-country: get: tags: - Keywords Explorer summary: Volume by country operationId: keywords-explorer.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/keywords-explorer.output' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/keywords-explorer.volume-by-country' application/xml: schema: $ref: '#/components/schemas/keywords-explorer.volume-by-country' '400': $ref: '#/components/responses/keywords-explorer.error_400' '401': $ref: '#/components/responses/keywords-explorer.error_401' '403': $ref: '#/components/responses/keywords-explorer.error_403' '429': $ref: '#/components/responses/keywords-explorer.error_429' '500': $ref: '#/components/responses/keywords-explorer.error_500' /keywords-explorer/matching-terms: get: tags: - Keywords Explorer summary: Matching terms operationId: keywords-explorer.matching-terms 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. Max: `150000`.' 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**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**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. 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: All keywords ideas or keywords ideas phrased as questions. required: false explode: false schema: type: string enum: - all - questions default: all name: terms in: query - description: Keyword ideas contain the words from your query in any order (terms mode) or in the exact order they are written (phrase mode). required: false explode: false schema: type: string enum: - terms - phrase default: terms name: match_mode in: query - $ref: '#/components/parameters/keywords-explorer.output_json_php_xml' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/keywords-explorer.matching-terms' application/xml: schema: $ref: '#/components/schemas/keywords-explorer.matching-terms' '400': $ref: '#/components/responses/keywords-explorer.error_400' '401': $ref: '#/components/responses/keywords-explorer.error_401' '403': $ref: '#/components/responses/keywords-explorer.error_403' '429': $ref: '#/components/responses/keywords-explorer.error_429' '500': $ref: '#/components/responses/keywords-explorer.error_500' /keywords-explorer/related-terms: get: tags: - Keywords Explorer summary: Related terms operationId: keywords-explorer.related-terms 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. Max: `150000`.' 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**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**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. 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: Related keywords which top-ranking pages also rank for (`also_rank_for`), additional keywords frequently mentioned in top-ranking pages (`also_talk_about`), or combination of both (`all`). required: false explode: false schema: type: string enum: - all - also_rank_for - also_talk_about default: all name: terms in: query - description: View keywords for the top 10 or top 100 ranking pages. required: false explode: false schema: type: string enum: - top_10 - top_100 default: top_10 name: view_for in: query - $ref: '#/components/parameters/keywords-explorer.output_json_php_xml' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/keywords-explorer.related-terms' application/xml: schema: $ref: '#/components/schemas/keywords-explorer.related-terms' '400': $ref: '#/components/responses/keywords-explorer.error_400' '401': $ref: '#/components/responses/keywords-explorer.error_401' '403': $ref: '#/components/responses/keywords-explorer.error_403' '429': $ref: '#/components/responses/keywords-explorer.error_429' '500': $ref: '#/components/responses/keywords-explorer.error_500' /keywords-explorer/search-suggestions: get: tags: - Keywords Explorer summary: Search suggestions operationId: keywords-explorer.search-suggestions 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. Max: `150000`.' 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**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**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. 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 - $ref: '#/components/parameters/keywords-explorer.output_json_php_xml' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/keywords-explorer.search-suggestions' application/xml: schema: $ref: '#/components/schemas/keywords-explorer.search-suggestions' '400': $ref: '#/components/responses/keywords-explorer.error_400' '401': $ref: '#/components/responses/keywords-explorer.error_401' '403': $ref: '#/components/responses/keywords-explorer.error_403' '429': $ref: '#/components/responses/keywords-explorer.error_429' '500': $ref: '#/components/responses/keywords-explorer.error_500' components: schemas: keywords-explorer.related-terms: properties: keywords: items: properties: 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.' 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 type: object type: array type: object xml: name: AhrefsApiResponse keywords-explorer.matching-terms: properties: keywords: items: properties: 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.' 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 type: object type: array type: object xml: name: AhrefsApiResponse keywords-explorer.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 keywords-explorer.search-suggestions: properties: keywords: items: properties: 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.' 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 type: object type: array type: object xml: name: AhrefsApiResponse keywords-explorer.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 keywords-explorer.Error_response: properties: error: type: string type: object xml: name: AhrefsApiResponse keywords-explorer.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 parameters: keywords-explorer.output: description: The output format. required: false explode: false schema: type: string enum: - json - csv - xml - php name: output in: query keywords-explorer.output_json_php_xml: description: The output format. required: false explode: false schema: type: string enum: - json - php - xml name: output in: query responses: keywords-explorer.error_500: description: Internal Error content: application/json: schema: $ref: '#/components/schemas/keywords-explorer.Error_response' application/xml: schema: $ref: '#/components/schemas/keywords-explorer.Error_response' keywords-explorer.error_401: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/keywords-explorer.Error_response' application/xml: schema: $ref: '#/components/schemas/keywords-explorer.Error_response' keywords-explorer.error_400: description: Bad Request content: application/json: schema: $ref: '#/components/schemas/keywords-explorer.Error_response' application/xml: schema: $ref: '#/components/schemas/keywords-explorer.Error_response' keywords-explorer.error_403: description: Forbidden content: application/json: schema: $ref: '#/components/schemas/keywords-explorer.Error_response' application/xml: schema: $ref: '#/components/schemas/keywords-explorer.Error_response' keywords-explorer.error_429: description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/keywords-explorer.Error_response' application/xml: schema: $ref: '#/components/schemas/keywords-explorer.Error_response' securitySchemes: http: type: http scheme: bearer