1) Авторизуете пользователя (получаете обратно code по запрошенным скоупам)
2) Меняете code на access_token
3) Запрашиваете данные по пользователю используя access_token (получаете список нужных вам организаций)
4) Создаете еще один запрос через API аналогичный второму пункту и получаем ЕЩЕ ОДИН access_token, но уже для организаций (обратите внимание, что grant_type уже client_credentials, а code и state используется из ответа на первый шаг)
$arParams = [
'client_id' => '*CLIENT_CODE*',
'code' => $_GET['code'],
'grant_type' => 'client_credentials',
'state' => $_GET['state'],
'scope' => join(' ', [
"http://esia.gosuslugi.ru/org_inn?org_oid=*111111111*",
"http://esia.gosuslugi.ru/org_ogrn?org_oid=*111111111*",
"http://esia.gosuslugi.ru/org_ctts?org_oid=*111111111*",
"http://esia.gosuslugi.ru/org_fullname?org_oid=*111111111*",
"http://esia.gosuslugi.ru/org_type?org_oid=*111111111*",
"http://esia.gosuslugi.ru/org_inn?org_oid=*222222222*",
"http://esia.gosuslugi.ru/org_ogrn?org_oid=*222222222*",
"http://esia.gosuslugi.ru/org_ctts?org_oid=*222222222*",
"http://esia.gosuslugi.ru/org_fullname?org_oid=*222222222*",
"http://esia.gosuslugi.ru/org_type?org_oid=*222222222*",
"http://esia.gosuslugi.ru/org_inn?org_oid=*333333333*",
"http://esia.gosuslugi.ru/org_ogrn?org_oid=*333333333*",
"http://esia.gosuslugi.ru/org_ctts?org_oid=*333333333*",
"http://esia.gosuslugi.ru/org_fullname?org_oid=*333333333*",
"http://esia.gosuslugi.ru/org_type?org_oid=*333333333*",
]),
'timestamp' => date('Y.m.d H:i:s O'),
'token_type' => 'Bearer',
'client_secret' => '*CLIENT_SECRET*',
];
5) С полученным новым токеном делаем запрос на получение информации по организации (на каждую свой):
https://esia-portal1.test.gosuslugi.ru/rs/orgs/222222222/ctts?embed=(contacts.elements)
Документация у них конечно "дно" =)