{ "openapi": "3.2.0", "info": { "title": "Keywords Explorer", "description": "Fetch data from Keywords Explorer reports", "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/keywords-explorer", "description": "Ahrefs Keywords Explorer" } ], "paths": { "/overview": { "get": { "tags": [ "Overview", "MCP" ], "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" } } } }, "/volume-history": { "get": { "tags": [ "Overview", "MCP" ], "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" } } } }, "/volume-by-country": { "get": { "tags": [ "Overview", "MCP" ], "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" } } } }, "/matching-terms": { "get": { "tags": [ "Keyword ideas", "MCP" ], "summary": "Matching terms", "operationId": "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/output_json_php_xml" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/matching-terms" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/matching-terms" } } } }, "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" } } } }, "/related-terms": { "get": { "tags": [ "Keyword ideas", "MCP" ], "summary": "Related terms", "operationId": "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/output_json_php_xml" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/related-terms" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/related-terms" } } } }, "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" } } } }, "/search-suggestions": { "get": { "tags": [ "Keyword ideas", "MCP" ], "summary": "Search suggestions", "operationId": "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/output_json_php_xml" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/search-suggestions" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/search-suggestions" } } } }, "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" } } } } }, "components": { "schemas": { "Error response": { "properties": { "error": { "type": "string" } }, "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" } }, "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" } }, "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" } }, "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" } }, "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" } }, "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" } } }, "responses": { "error_400": { "description": "Bad Request", "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_403": { "description": "Forbidden", "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" } } } }, "error_500": { "description": "Internal Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error response" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/Error response" } } } } }, "parameters": { "output_json_php_xml": { "description": "The output format.", "required": false, "explode": false, "schema": { "type": "string", "enum": [ "json", "php", "xml" ] }, "name": "output", "in": "query" }, "output": { "description": "The output format.", "required": false, "explode": false, "schema": { "type": "string", "enum": [ "json", "csv", "xml", "php" ] }, "name": "output", "in": "query" } }, "examples": {}, "requestBodies": {}, "headers": {}, "securitySchemes": { "http": { "type": "http", "scheme": "bearer" } }, "links": {}, "callbacks": {}, "pathItems": {}, "mediaTypes": {} }, "security": [ { "http": [ "read" ] } ], "tags": [ { "name": "Overview", "description": "Data from overview" }, { "name": "Keyword ideas", "description": "Keyword ideas reports" } ], "externalDocs": { "description": "", "url": "https://docs.ahrefs.com/docs/api/v3/" } }