Site Explorer

Organic keywords

Changed on
get/site-explorer/organic-keywords

Request

  • Base URL
    https://api.ahrefs.com/v3
  • URL
    https://api.ahrefs.com/v3/site-explorer/organic-keywords
  • Auth
    HTTP bearer

Query parameters

selectstring required

A comma-separated list of columns to return. See response schema for valid column identifiers.

wherestring

The filter expression. The following column identifiers are recognized (this differs from the identifiers recognized by the select parameter).

best_position: The top position your target ranks for in the organic search results for a keyword.
type: integer nullable

best_position_diff: The change in position between your selected dates.
type: integer nullable

best_position_has_thumbnail: The top position has a thumbnail.
type: boolean nullable

best_position_has_thumbnail_prev: The top position has a thumbnail on the comparison date.
type: boolean nullable

best_position_has_video: The top position has a video.
type: boolean nullable

best_position_has_video_prev: The top position has a video on the comparison date.
type: boolean nullable

best_position_kind: The kind of the top position: organic, paid, or a SERP feature.
type: string nullable
enum: "paid_top" "paid_bottom" "paid_right" "paid_sitelink" "organic" "sitelink" "snippet" "image" "article" "knowledge_card" "knowledge_panel" "local_pack" "local_teaser" "news" "question" "review" "shopping" "tweet" "spelling" "video" "discussion" "ai_overview" "ai_overview_sitelink" "organic_shopping"

best_position_kind_merged: The kind of the top position optimized for sorting.
type: string
enum: "paid_top" "paid_bottom" "paid_right" "paid_sitelink" "organic" "sitelink" "snippet" "image" "article" "knowledge_card" "knowledge_panel" "local_pack" "local_teaser" "news" "question" "review" "shopping" "tweet" "spelling" "video" "discussion" "ai_overview" "ai_overview_sitelink" "organic_shopping"

best_position_kind_prev: The kind of the top position on the comparison date.
type: string nullable
enum: "paid_top" "paid_bottom" "paid_right" "paid_sitelink" "organic" "sitelink" "snippet" "image" "article" "knowledge_card" "knowledge_panel" "local_pack" "local_teaser" "news" "question" "review" "shopping" "tweet" "spelling" "video" "discussion" "ai_overview" "ai_overview_sitelink" "organic_shopping"

best_position_prev: The top position on the comparison date.
type: integer nullable

best_position_set: The ranking group of the top position.
type: string
enum: "top_3" "top_4_10" "top_11_50" "top_51_more"

best_position_set_prev: The ranking group of the top position on the comparison date.
type: string nullable
enum: "top_3" "top_4_10" "top_11_50" "top_51_more"

best_position_url: The ranking URL in organic search results.
type: string nullable

best_position_url_prev: The ranking URL on the comparison date.
type: string nullable

best_position_url_raw: The ranking page URL in encoded format.
type: string nullable

best_position_url_raw_prev: The ranking page URL on the comparison date in encoded format.
type: string nullable

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.
type: integer nullable

cpc_merged: The CPC field optimized for sorting.
type: integer nullable

cpc_prev: The CPC metric on the comparison date.
type: integer nullable

entities: Organizations, products, persons, works, events, and locations found in a keyword.
type: array(object)

event_entities: Events found in a keyword.
type: array(string)

is_best_position_set_top_3: The ranking group of the top position is Top 3.
type: boolean

is_best_position_set_top_3_prev: The ranking group of the top position was Top 3 on the comparison date.
type: boolean nullable

is_best_position_set_top_4_10: The ranking group of the top position is 4-10.
type: boolean

is_best_position_set_top_4_10_prev: The ranking group of the top position was 4-10 on the comparison date.
type: boolean nullable

is_best_position_set_top_11_50: The ranking group of the top position is 11-50.
type: boolean

is_best_position_set_top_11_50_prev: The ranking group of the top position was 11-50 on the comparison date.
type: boolean nullable

is_branded: User intent: branded. The user is searching for a specific brand or company name.
type: boolean

is_commercial: User intent: commercial. The user is comparing products or services before making a purchase decision.
type: boolean

is_informational: User intent: informational. The user is looking for information or an answer to a specific question.
type: boolean

is_local: User intent: local. The user is looking for information relevant to a specific location or nearby services.
type: boolean

is_main_position: Excludes positions in AI Overviews, Sitelinks, Top stories, Image packs, Videos, Discussions and forums, and posts on X (Twitter).
type: boolean

is_main_position_prev: Excludes positions in AI Overviews, Sitelinks, Top stories, Image packs, Videos, Discussions and forums, and posts on X (Twitter) on the comparison date.
type: boolean

is_navigational: User intent: navigational. The user is searching for a specific website or web page.
type: boolean

is_transactional: User intent: transactional. The user is ready to complete an action, often a purchase.
type: boolean

keyword: The keyword your target ranks for.
type: string

keyword_country: The country of a keyword your target ranks for.
type: string
enum: "AD" "AE" "AF" "AG" "AI" "AL" "AM" "AO" "AQ" "AR" "AS" "AT" "AU" "AW" "AX" "AZ" "BA" "BB" "BD" "BE" "BF" "BG" "BH" "BI" "BJ" "BL" "BM" "BN" "BO" "BQ" "BR" "BS" "BT" "BV" "BW" "BY" "BZ" "CA" "CC" "CD" "CF" "CG" "CH" "CI" "CK" "CL" "CM" "CN" "CO" "CR" "CU" "CV" "CW" "CX" "CY" "CZ" "DE" "DJ" "DK" "DM" "DO" "DZ" "EC" "EE" "EG" "EH" "ER" "ES" "ET" "FI" "FJ" "FK" "FM" "FO" "FR" "GA" "GB" "GD" "GE" "GF" "GG" "GH" "GI" "GL" "GM" "GN" "GP" "GQ" "GR" "GS" "GT" "GU" "GW" "GY" "HK" "HM" "HN" "HR" "HT" "HU" "ID" "IE" "IL" "IM" "IN" "IO" "IQ" "IR" "IS" "IT" "JE" "JM" "JO" "JP" "KE" "KG" "KH" "KI" "KM" "KN" "KP" "KR" "KW" "KY" "KZ" "LA" "LB" "LC" "LI" "LK" "LR" "LS" "LT" "LU" "LV" "LY" "MA" "MC" "MD" "ME" "MF" "MG" "MH" "MK" "ML" "MM" "MN" "MO" "MP" "MQ" "MR" "MS" "MT" "MU" "MV" "MW" "MX" "MY" "MZ" "NA" "NC" "NE" "NF" "NG" "NI" "NL" "NO" "NP" "NR" "NU" "NZ" "OM" "OTHER" "PA" "PE" "PF" "PG" "PH" "PK" "PL" "PM" "PN" "PR" "PS" "PT" "PW" "PY" "QA" "RE" "RO" "RS" "RU" "RW" "SA" "SB" "SC" "SD" "SE" "SG" "SH" "SI" "SJ" "SK" "SL" "SM" "SN" "SO" "SR" "SS" "ST" "SV" "SX" "SY" "SZ" "TC" "TD" "TF" "TG" "TH" "TJ" "TK" "TL" "TM" "TN" "TO" "TR" "TT" "TV" "TW" "TZ" "UA" "UG" "UM" "US" "UY" "UZ" "VA" "VC" "VE" "VG" "VI" "VN" "VU" "WF" "WS" "YE" "YT" "ZA" "ZM" "ZW"

keyword_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.
type: integer nullable

keyword_difficulty_merged (10 units): The keyword difficulty field optimized for sorting.
type: integer nullable

keyword_difficulty_prev (10 units): The keyword difficulty on the comparison date.
type: integer nullable

keyword_language: The language of the search query
type: array(string)

keyword_merged: The keyword field optimized for sorting.
type: string

keyword_prev: The keyword your target ranks for on the comparison date.
type: string

language: The SERP language.
type: string

language_prev: The SERP language on the comparison date.
type: string nullable

last_update: The date when we last checked search engine results for a keyword.
type: datetime

last_update_prev: The date when we checked search engine results up to the comparison date.
type: datetime nullable

location_entities: Locations found in a keyword.
type: array(string)

organisation_entities: Organizations found in a keyword.
type: array(string)

person_entities: Persons found in a keyword.
type: array(string)

position_kind: The kind of a position: organic, paid or a SERP feature. This applies to all positions for a given keyword and URL before picking the top position.
type: string
enum: "paid_top" "paid_bottom" "paid_right" "paid_sitelink" "organic" "sitelink" "snippet" "image" "article" "knowledge_card" "knowledge_panel" "local_pack" "local_teaser" "news" "question" "review" "shopping" "tweet" "spelling" "video" "discussion" "ai_overview" "ai_overview_sitelink" "organic_shopping"

position_kind_prev: The kind of a position on the comparison date.
type: string
enum: "paid_top" "paid_bottom" "paid_right" "paid_sitelink" "organic" "sitelink" "snippet" "image" "article" "knowledge_card" "knowledge_panel" "local_pack" "local_teaser" "news" "question" "review" "shopping" "tweet" "spelling" "video" "discussion" "ai_overview" "ai_overview_sitelink" "organic_shopping"

positions_kinds: The kinds of the top positions.
type: array(string)
enum: "paid_top" "paid_bottom" "paid_right" "paid_sitelink" "organic" "sitelink" "snippet" "image" "article" "knowledge_card" "knowledge_panel" "local_pack" "local_teaser" "news" "question" "review" "shopping" "tweet" "spelling" "video" "discussion" "ai_overview" "ai_overview_sitelink" "organic_shopping" "image_th" "video_th" "ai_overview_found"

positions_kinds_prev: The kinds of the top positions on the comparison date.
type: array(string)
enum: "paid_top" "paid_bottom" "paid_right" "paid_sitelink" "organic" "sitelink" "snippet" "image" "article" "knowledge_card" "knowledge_panel" "local_pack" "local_teaser" "news" "question" "review" "shopping" "tweet" "spelling" "video" "discussion" "ai_overview" "ai_overview_sitelink" "organic_shopping" "image_th" "video_th" "ai_overview_found"

product_entities: Products found in a keyword.
type: array(string)

serp_features: The SERP features that appear in search results for a keyword.
type: array(string)
enum: "paid_top" "paid_bottom" "paid_right" "paid_sitelink" "organic" "sitelink" "snippet" "image" "article" "knowledge_card" "knowledge_panel" "local_pack" "local_teaser" "news" "question" "review" "shopping" "tweet" "spelling" "video" "discussion" "ai_overview" "ai_overview_sitelink" "organic_shopping" "image_th" "video_th" "ai_overview_found"

serp_features_count: The number of SERP features that appear in search results for a keyword.
type: integer

serp_features_count_prev: The number of SERP features on the comparison date.
type: integer nullable

serp_features_merged: The SERP features field optimized for sorting.
type: array(string)
enum: "paid_top" "paid_bottom" "paid_right" "paid_sitelink" "organic" "sitelink" "snippet" "image" "article" "knowledge_card" "knowledge_panel" "local_pack" "local_teaser" "news" "question" "review" "shopping" "tweet" "spelling" "video" "discussion" "ai_overview" "ai_overview_sitelink" "organic_shopping" "image_th" "video_th" "ai_overview_found"

serp_features_prev: The SERP features that appear in search results for a keyword on the comparison date.
type: array(string)
enum: "paid_top" "paid_bottom" "paid_right" "paid_sitelink" "organic" "sitelink" "snippet" "image" "article" "knowledge_card" "knowledge_panel" "local_pack" "local_teaser" "news" "question" "review" "shopping" "tweet" "spelling" "video" "discussion" "ai_overview" "ai_overview_sitelink" "organic_shopping" "image_th" "video_th" "ai_overview_found"

serp_target_main_positions_count: The number of target URLs ranking for a keyword excluding positions in Sitelinks, Top stories, Image packs, and posts on X (Twitter).
type: integer

serp_target_main_positions_count_prev: The number of target URLs ranking for a keyword excluding positions in Sitelinks, Top stories, Image packs, and posts on X (Twitter) on the comparison date.
type: integer nullable

serp_target_positions_count: The number of target URLs ranking for a keyword.
type: integer

serp_target_positions_count_prev: The number of target URLs ranking for a keyword on the comparison date.
type: integer nullable

status: The status of a page: the new page that just started to rank ("left"), the lost page that disappeared from search results ("right"), or no change ("both").
type: string
enum: "left" "right" "both"

sum_paid_traffic (10 units): An estimation of the number of monthly visits that your target gets from paid search for a keyword.
type: integer nullable

sum_paid_traffic_merged (10 units): The paid traffic field optimized for sorting.
type: integer

sum_paid_traffic_prev (10 units): The paid traffic on the comparison date.
type: integer nullable

sum_traffic (10 units): An estimation of the number of monthly visitors that your target gets from organic search for a keyword.
type: integer nullable

sum_traffic_merged (10 units): The traffic field optimized for sorting.
type: integer

sum_traffic_prev (10 units): The traffic on the comparison date.
type: integer nullable

title: The title displayed for the page in a keyword's SERP.
type: string

title_prev: The title displayed for the page in a keyword's SERP on the comparison date.
type: string

volume (10 units): An estimation of the number of searches for a keyword over the latest month.
type: integer nullable

volume_desktop_pct: The percentage of the total search volume that comes from desktop devices.
type: float nullable

volume_merged (10 units): The search volume field optimized for sorting.
type: integer nullable

volume_mobile_pct: The percentage of the total search volume that comes from mobile devices.
type: float nullable

volume_prev (10 units): The search volume on the comparison date.
type: integer nullable

words: The number of words in a keyword.
type: integer

words_merged: The number of words in a keyword optimized for sorting.
type: integer

words_prev: The number of words in a keyword on the comparison date.
type: integer

work_entities: Works found in a keyword.
type: array(string)

order_bystring
Example:field_a,field_b:asc,field_c:desc

A comma-separated list of columns to order results by, with optional direction. See response schema for valid column identifiers.

limitinteger

The number of results to return.

timeoutinteger

A manual timeout duration in seconds.

volume_mode'monthly' | 'average'

The search volume calculation mode: monthly or average. It affects volume, traffic, and traffic value.

traffic_mode'static' | 'adaptive'

The organic traffic calculation mode: static or adaptive. It affects organic traffic and traffic value.

datestring date required

A date to report metrics on in YYYY-MM-DD format.

date_comparedstring date

A date to compare metrics with in YYYY-MM-DD format.

country'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'

A two-letter country code (ISO 3166-1 alpha-2).

mode'exact' | 'prefix' | 'domain' | 'subdomains'

The scope of the search based on the target you entered.

targetstring url required

The target of the search: a domain or a URL.

portfolio_idinteger

The unique identifier of the portfolio. When provided, it takes precedence over target.

protocol'both' | 'http' | 'https'

The protocol of your target.

output'json' | 'php' | 'xml'

The output format.

Response

OK

Changes