A openweathermap.org fornece uma API de dados meteorológicos de forma gratuita, sendo perfeita para rodar projetos básicos.

Inicialmente é necessário criar sua conta em https://openweathermap.org, assim recebe uma chave para realizar as consultas via API.

Vamos realizar uma simples consulta sobre temperatura e outros dados uma cidade

<?php
$dados = file_get_contents('api.openweathermap.org/data/2.5/weather?q={sua_cidade}&appid={CHAVE_API}');
print_r($dados)
?>

Teremos como retorno dados em json, para facilitar a leitura utilize a formatação http://jsonviewer.stack.hu/

{
  "coord": {
    "lon": -54.2,
    "lat": -31.8667
  },
  "weather": [
    {
      "id": 802,
      "main": "Clouds",
      "description": "nuvens dispersas",
      "icon": "03d"
    }
  ],
  "base": "stations",
  "main": {
    "temp": -1.02,
    "feels_like": -3.63,
    "temp_min": -1.02,
    "temp_max": -1.02,
    "pressure": 1022,
    "humidity": 72,
    "sea_level": 1022,
    "grnd_level": 999
  },
  "visibility": 10000,
  "wind": {
    "speed": 1.99,
    "deg": 255,
    "gust": 2.24
  },
  "clouds": {
    "all": 29
  },
  "dt": 1622370699,
  "sys": {
    "type": 1,
    "id": 8312,
    "country": "UY",
    "sunrise": 1622370472,
    "sunset": 1622407274
  },
  "timezone": -10800,
  "id": 3443952,
  "name": "Acegua",
  "cod": 200
}

Agora vamos trabalhar com as informações:

<?php
#coleta os dados da api
$dados = file_get_contents('api.openweathermap.org/data/2.5/weather?q={sua_cidade}&appid={CHAVE_API}');
# o retorno e feito em json
$dados = json_decode($dados, true);

#agora podemos mostrar as infos.
echo 'Temperatura: '.$dados['main']['temp'];
echo 'Umidade: '.$dados['main']['humidity'];
echo 'Velocidade do Vento'. $dados['wind']['speed'];
?>

Lembrando que no plano gratuito, voce terá um limite de consultas diárias, para evitar problemas podemos criar um cache com duração de 30 minutos ou 1 hora.