Страны, рынки и языки в Bing: mkt, cc и setlang

· bing · регионы

Регион выдачи Bing задаётся тремя параметрами: mkt - рынок, пара «язык-страна», cc - страна, setlang - язык интерфейса. Ниже - что делает каждый и полные списки поддерживаемых значений: 71 рынков, 236 стран и 34 языков.

Рынок задаёт выдачу, страна её уточняет

Регион нужно задавать явно. Если не передать ничего, Bing определит его сам, и какой он получится - не гарантировано: фактический рынок приходит в ответе полем mkt, и он может не совпасть с ожидаемым. Предсказуемый результат даёт только явно указанный рынок.

Одного cc для смены страны мало - без рынка он выдачу почти не меняет. Страна работает в паре с региональным рынком, тем, что покрывает несколько стран сразу: mkt=ar-XA&cc=QA даёт qatar-tribune.com и lusailnews.net, а cc=KW при том же рынке - arabtimesonline.com и alqabas.com.

Внутри странового рынка уточнять нечего, и cc там ничего не меняет: mkt=en-US с cc=NG и без него отдаёт одну и ту же выдачу.

Отсюда порядок: сначала рынок, затем страна - если рынок региональный. Есть рынок нужной страны - достаточно одного mkt.

Что с чем сочетается

Когда параметры противоречат друг другу, побеждает не тот, что стоит раньше в запросе. Проверено замерами: каждому параметру давалась своя страна, и по выдаче видно, чью сторону взял Bing. Выдача от запроса к запросу слегка плавает, поэтому каждый случай прогонялся по три раза и сравнивались наборы адресов целиком - иначе шум легко принять за влияние параметра.

Спор Кто побеждает Что видно в выдаче
страновой mkt против cc mkt fr-FR с cc=DE и с cc=JP даёт одно и то же
региональный mkt против cc cc при ar-XA страна выбирает выдачу: QA и KW дают разные источники
mkt против координат координаты mkt=ru-RU с координатами Берлина отвечает region=«Берлин, Берлин», и выдача меняется
cc против координат координаты то же и с cc=RU: место берётся из точки, а не из страны
setlang против mkt каждый своё mkt=ja-JP&setlang=de - выдача японская, интерфейс немецкий

Последняя строка - важная тонкость. setlang задаёт язык интерфейса и переписывает поле mkt в ответе: на mkt=ja-JP&setlang=de вернётся mkt=de-DE, хотя ранжирование осталось японским. Судить о стране выдачи по этому полю, когда передан setlang, нельзя.

Координаты

Координаты (ll) задают место точнее всего остального и перебивают по нему и рынок, и страну. Город, который Bing из них вычислил, приходит в поле region ответа: ll=55.7558,37.6173 - «Москва, Москва», ll=43.5855,39.7231 - «Сочи, Краснодарский край». Проверено на шести городах - от Калининграда до Владивостока, - и каждый определился со своей областью.

На локальных запросах это меняет и состав выдачи: по запросу «доставка пиццы» две разные точки дают почти непересекающиеся списки (совпадение около 0.2 при 0.9 у двух запросов с одной и той же точки). Рынок при этом никуда не девается - он продолжает отвечать за язык и за то, из какой страны Bing предпочитает источники. Координаты отвечают на вопрос «где», mkt - на вопрос «чья выдача».

Текстовый адрес (name, city, state) так не работает: эти поля Bing не читает, и место остаётся тем, что он определил по адресу выхода в интернет. Единственный рабочий способ указать точку - координаты.

Рынки: 71 пар «язык-страна»

Рынок - основной способ сказать Bing, чью выдачу вы хотите. Формат язык-СТРАНА: ru-RU, en-US, bn-BD. Первое - язык интерфейса и приоритет для языка документов, второе - страна ранжирования.

Список рынков у Bing свой и заметно короче списка стран: не у каждой страны он есть. Ниже полный перечень, сгруппированный по языку.

Язык Рынки (mkt)
ar ar-AE - Арабский — ОАЭ
ar-EG - Арабский — Египет
ar-SA - Арабский — Саудовская Аравия
ar-XA - Арабский — Аравия (Asia)
be be-BY - Белорусский — Беларусь
bg bg-BG - Болгарский — Болгария
bn bn-BD - Бенгальский — Бангладеш
cs cs-CZ - Чешский — Чехия
da da-DK - Датский — Дания
de de-AT - Немецкий — Австрия
de-CH - Немецкий — Швейцария
de-DE - Немецкий — Германия
el el-GR - Греческий — Греция
en en-AU - Английский — Австралия
en-CA - Английский — Канада
en-GB - Английский — Великобритания
en-ID - Английский — Индонезия
en-IE - Английский — Ирландия
en-IN - Английский — Индия
en-MY - Английский — Малайзия
en-NZ - Английский — Новая Зеландия
en-PH - Английский — Филиппины
en-SG - Английский — Сингапур
en-US - Английский — США
en-XA - Английский — Аравия (Asia)
en-ZA - Английский — ЮАР
es es-AR - Испанский — Аргентина
es-CL - Испанский — Чили
es-ES - Испанский — Испания
es-MX - Испанский — Мексика
es-US - Испанский — США
es-XL - Испанский — Латинская Америка
et et-EE - Эстонский — Эстония
fa fa-IR - Персидский — Иран
fi fi-FI - Финский — Финляндия
fr fr-BE - Французский — Бельгия
fr-CA - Французский — Канада
fr-CH - Французский — Швейцария
fr-FR - Французский — Франция
he he-IL - Иврит — Израиль
hr hr-HR - Хорватский — Хорватия
hu hu-HU - Венгерский — Венгрия
it it-IT - Итальянский — Италия
ja ja-JP - Японский — Япония
kk kk-KZ - Казахский — Казахстан
ko ko-KR - Корейский — Корея
lt lt-LT - Литовский — Литва
lv lv-LV - Латышский — Латвия
nb nb-NO - Норвежский — Норвегия
ne ne-NP - Непальский — Непал
nl nl-BE - Голландский — Бельгия
nl-NL - Голландский — Нидерланды
pl pl-PL - Польский — Польша
pt pt-BR - Португальский — Бразилия
pt-PT - Португальский — Португалия
ro ro-RO - Румынский — Румыния
ru ru-BY - Русский — Беларусь
ru-RU - Русский — Россия
si si-LK - Сингальский — Шри-Ланка
sk sk-SK - Словацкий — Словакия
sl sl-SI - Словенский — Словения
sl-SL - Словенский — Словения (устаревший код, Bing правит на sl-SI)
sv sv-SE - Шведский — Швеция
th th-TH - Тайский — Таиланд
tr tr-TR - Турецкий — Турция
uk uk-UA - Украинский — Украина
ur ur-PK - Урду — Пакистан
vi vi-VN - Вьетнамский — Вьетнам
zh zh-CN - Китайский — Китай (упрощённый)
zh-HK - Китайский — Гонконг
zh-TW - Китайский — Тайвань (традиционный)

Как отличить настоящий рынок от выдуманного

Bing не отвечает ошибкой на несуществующий рынок - он молча подставляет ближайший. Со стороны это выглядит как работающий запрос, хотя выдача пришла не та, о которой просили.

Отличить можно по ответу: Bing возвращает в нём фактический рынок, и мы отдаём его полем mkt. Попросили bn-BD, в ответе bn-BD - рынок настоящий. Попросили ar-QA, в ответе ar-XA - такого рынка у Bing нет, запрос увели на общий арабский.

Проверять это через наш API не нужно: несуществующий рынок он отклоняет ошибкой 422, не доходя до поисковика. В списке выше только те, что Bing принимает.

Страны: 236 кодов

Параметр cc - двухбуквенный код страны по ISO 3166-1 alpha-2. Кроме них в списке есть два кода самого Bing, странам не принадлежащие: XA - Аравия и XL - Латинская Америка. Это регионы его рынков, и в cc они оставлены для совместимости.

Страна уточняет выдачу внутри регионального рынка и особенно полезна там, где своего рынка у страны нет.

Катар, Иордания, Оман, Кувейт, Бахрейн, Ирак, Марокко - своих рынков у них нет, но cc работает: с mkt=ar-XA и нужным cc выдача становится местной. То же с Нигерией и Кенией через en-XA или en-US.

Полный список - ровно тот, что Bing предлагает в своих настройках в переключателе «Страна или регион».

Код (cc) Страна Код (cc) Страна
AD Андорра LK Шри-Ланка
AE ОАЭ LR Либерия
AF Афганистан LS Лесото
AG Антигуа и Барбуда LT Литва
AI Ангилья LU Люксембург
AL Албания LV Латвия
AM Армения LY Ливия
AO Ангола MA Марокко
AR Аргентина MC Монако
AS Американское Самоа MD Молдова
AT Австрия ME Черногория
AU Австралия MF Сен-Мартен
AW Аруба MG Мадагаскар
AZ Азербайджан MH Маршалловы Острова
BA Босния и Герцеговина MK Северная Македония
BB Барбадос ML Мали
BD Бангладеш MM Myanmar
BE Бельгия MN Монголия
BF Буркина-Фасо MO Макао (САР)
BG Болгария MP Северные Марианские о-ва
BH Бахрейн MQ Мартиника
BI Бурунди MR Мавритания
BJ Бенин MS Монтсеррат
BL Сен-Бартелеми MT Мальта
BM Бермуды MU Маврикий
BN Бруней-Даруссалам MV Мальдивы
BO Боливия MW Малави
BR Бразилия MX Мексика
BS Багамы MY Малайзия
BT Бутан MZ Мозамбик
BW Ботсвана NA Намибия
BY Беларусь NC Новая Каледония
BZ Белиз NE Нигер
CA Канада NF О-в Норфолк
CC Кокосовые о-ва NG Нигерия
CD Конго (ДРК) NI Никарагуа
CF Центрально-Африканская Республика NL Нидерланды
CG Конго NO Норвегия
CH Швейцария NP Непал
CI Кот-д’Ивуар NR Науру
CK Острова Кука NU Ниуэ
CL Чили NZ Новая Зеландия
CM Камерун OM Оман
CN Китай PA Панама
CO Колумбия PE Перу
CR Коста-Рика PF Французская Полинезия
CV Кабо-Верде PG Папуа — Новая Гвинея
CW Кюрасао PH Филиппины
CX О-в Рождества PK Пакистан
CY Кипр PL Польша
CZ Чехия PM Сен-Пьер и Микелон
DE Германия PN Острова Питкэрн
DJ Джибути PR Пуэрто-Рико
DK Дания PS Палестинская Автономия
DM Доминика PT Португалия
DO Доминиканская Республика PW Палау
DZ Алжир PY Парагвай
EC Эквадор QA Катар
EE Эстония RE Реюньон
EG Египет RO Румыния
ER Эритрея RS Сербия
ES Испания RU Россия
ET Эфиопия RW Руанда
FI Финляндия SA Саудовская Аравия
FJ Фиджи SB Соломоновы Острова
FK Фолклендские о-ва SC Сейшельские Острова
FM Федеративные Штаты Микронезии SD Судан
FO Фарерские Острова SE Швеция
FR Франция SG Сингапур
GA Габон SH О-ва Св. Елены, Вознесения и Тристан-да-Кунья
GB Великобритания SI Словения
GD Гренада SK Словакия
GE Грузия SL Сьерра-Леоне
GF Французская Гвиана SM Сан-Марино
GG Гернси SN Сенегал
GH Гана SO Сомали
GI Гибралтар SR Суринам
GL Гренландия SS Южный Судан
GM Гамбия ST Сан-Томе и Принсипи
GN Гвинея SV Эль-Сальвадор
GP Гваделупа SX Cент-Мартен
GQ Экваториальная Гвинея SY Сирия
GR Греция SZ Свазиленд
GT Гватемала TC Острова Теркс и Кайкос
GU Гуам TD Чад
GW Гвинея-Бисау TG Того
GY Гайана TH Таиланд
HK Гонконг TJ Таджикистан
HN Гондурас TK Токелау
HR Хорватия TM Туркменистан
HT Гаити TN Тунис
HU Венгрия TO Тонга
ID Индонезия TR Турция
IE Ирландия TT Республика Тринидад и Тобаго
IL Израиль TV Тувалу
IN Индия TW Тайвань
IQ Ирак TZ Танзания
IR Иран UA Украина
IS Исландия UG Уганда
IT Италия US США
JE Джерси UY Уругвай
JM Ямайка UZ Узбекистан
JO Иордания VA Ватикан
JP Япония VC Сент-Винсент и Гренадины
KE Кения VE Венесуэла
KG Киргизия VG Виргинские о-ва (Британские)
KH Камбоджа VI Виргинские о-ва (США)
KI Кирибати VN Вьетнам
KM Коморы VU Вануату
KN Сент-Китс и Невис WF Уоллис и Футуна
KR Корея WS Самоа
KW Кувейт XA Регион — Аравия
KY Острова Кайман XL Регион — Латинская Америка
KZ Казахстан YE Йемен
LA Лаос YT Майотта
LB Ливан ZA ЮАР
LC Сент-Люсия ZM Замбия
LI Лихтенштейн ZW Зимбабве

Языки интерфейса: 34

setlang задаёт язык интерфейса и подписей. Регион он не меняет и совместим с любым из параметров выше - его можно добавлять к чему угодно. Полезен, когда выдача нужна страновая, а читать служебные надписи удобнее на своём языке.

Код (setlang) Язык
ar Арабский
be Белорусский
bg Болгарский
cs Чешский
da Датский
de Немецкий
el Греческий
en Английский
es Испанский
et Эстонский
fi Финский
fr Французский
he Иврит
hr Хорватский
hu Венгерский
it Итальянский
ja Японский
kk Казахский
ko Корейский
lt Литовский
lv Латышский
nb Норвежский
nl Голландский
pl Польский
pt Португальский
ro Румынский
ru Русский
sk Словацкий
sl Словенский
sv Шведский
th Тайский
tr Турецкий
uk Украинский
zh Китайский

Что выбрать под задачу

Если передать несколько параметров локации сразу, Bing возьмёт верхний по списку из документации, остальные проигнорирует.

Примеры

curl "https://jsonseo.ru/api/bing?text=local+news&mkt=bn-BD&key=ВАШ_КЛЮЧ"
curl "https://jsonseo.ru/api/bing?text=local+news&mkt=ar-XA&cc=QA&key=ВАШ_КЛЮЧ"
curl "https://jsonseo.ru/api/bing?text=pizza&ll=55.753930,37.620795&key=ВАШ_КЛЮЧ"

Таблицы строятся из того же справочника, по которому API проверяет параметры mkt, cc и setlang. Список стран совпадает с переключателем «Страна или регион» в настройках Bing.


Читайте дальше

Страны и языки в Google: параметры gl и hl

Москва в uule и gl=by дают белорусскую выдачу, а незнакомый hl Google молча превращает в английский. Разбираем, кто за что отвечает, и даём полные списки — те же, по которым API проверяет запросы.