Возможно сайт смотрит на наличие определённых HTTP-заголовков, например, чтобы был не пустой user-agent или какие-то другие заголовки.
Чтобы их задать не обязательно нужен curl (но рекомендую его), можно и для file_get_contents это сделать.
Пример ниже задаём Accept-language и User-Agent
$options = array(
'http'=>array(
'method'=>"GET",
'header'=>"Accept-Language: en-US,en;q=0.9,ru;q=0.8\r\n".
"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.50 Safari/537.36 OPR/65.0.3467.16 (Edition beta)\r\n"
)
);
$context = stream_context_create($options);
$String = file_get_contents($url, false, $context);