Погодный API: бесплатные weather API и запрос погоды на Python

Погодный API: бесплатные weather API и запрос погоды на Python Полезное

Погодный API (weather API) — это веб-сервис, который по HTTP-запросу отдает данные о погоде (обычно в формате JSON): текущую температуру, прогноз и историю наблюдений для заданной точки на карте. Вы отправляете координаты или название города, а в ответ получаете структурированные данные, которые можно подставить в свой сайт, приложение или скрипт.

Ниже разберу, чем погодный API отличается от готового виджета, сравню четыре популярных сервиса с актуальными на 2026 лимитами бесплатных планов, покажу рабочий запрос на Python к Open-Meteo (он не требует ключа) и приведу таблицу сравнения. Отдельно отмечу, какие цифры устаревают быстрее всего.

Чем weather API отличается от виджета и какие данные отдает

Полезно сразу развести три близких понятия:

  • Погодный виджет — готовый визуальный блок (картинка или iframe), который вставляют на страницу почти без кода. Вы не управляете данными, только внешним видом.
  • Погодный API — «сырые» данные по запросу. Вы сами решаете, что показать и как: свой дизайн, свои единицы измерения, своя логика.
  • SDK или клиентская библиотека — обертка над тем же API для конкретного языка, чтобы не собирать запросы вручную.

Заголовок статьи про API, поэтому дальше речь именно о данных по запросу.

Почти любой погодный API отдает три разных типа данных, и их важно не путать:

  • Текущая погода (current) — что происходит прямо сейчас в точке: температура, ветер, влажность.
  • Прогноз (forecast) — что ожидается: почасовой на ближайшие часы и посуточный на несколько дней вперед.
  • Исторические данные (history, archive) — что было в прошлом: за вчера, за прошлый год, иногда за десятилетия.

Бесплатные планы обычно щедры на текущую погоду и короткий прогноз, но урезают историю и длину прогноза. Это первое, на что стоит смотреть при выборе.

Бесплатные погодные API на 2026: обзор

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

OpenWeatherMap

Самый известный сервис, с которого часто начинают. Бесплатный план дает доступ к текущей погоде и прогнозу на 5 дней с шагом 3 часа: около 60 запросов в минуту и до 1 000 000 запросов в месяц. Нужен API-ключ (регистрация бесплатна).

Нюанс, на котором спотыкаются новички: расширенный набор данных (One Call API 3.0) вынесен в отдельную подписку. Первые 1000 запросов в день там бесплатны, но для активации нужно привязать банковскую карту. Старый бесплатный One Call 2.5 закрыт, поэтому примеры из статей 2021-2022 годов на нем уже не работают.

WeatherAPI.com

Универсальный REST-сервис с ответами в JSON и XML. На бесплатном плане — до 1 000 000 запросов в месяц, текущая погода, прогноз до 3 дней, астрономия (восход, фазы Луны), поиск по названию места. Нужен API-ключ.

Историю и длинный прогноз (до 14 дней) отдают уже платные планы, а бесплатная история ограничена коротким недавним периодом. Хороший выбор, когда нужны текущие данные и короткий прогноз без возни с картой.

Open-Meteo

Открытый проект, который агрегирует данные национальных метеомоделей (ECMWF, GFS, ICON). Главное преимущество для обучения и прототипов: для некоммерческого использования ключ не нужен вообще, лимит — порядка 10 000 запросов в день. Есть текущая погода, почасовой и посуточный прогноз, а исторические данные — через отдельный архивный домен.

Именно на нем удобно показать первый запрос: без регистрации и ключа код запускается сразу. Для коммерческого использования у Open-Meteo есть платные планы с ключом.

Visual Crossing

Сервис с сильной исторической базой: архив уходит на десятилетия назад, есть и прогноз. Бесплатный план — около 1000 записей в день (запись примерно равна данным за один день или час) плюс API-ключ. Подходит, когда основная задача — анализ прошлой погоды, а не только текущая ситуация.

Что еще есть

  • Tomorrow.io — глобальный сервис с гиперлокальным прогнозом; бесплатный план порядка 500 запросов в день, нужен ключ.
  • Apple WeatherKit — около 500 000 запросов в месяц включены в платную подписку Apple Developer Program; исторических данных нет, аутентификация по токену.
  • Meteostat — открытые исторические данные; удобнее всего через Python-библиотеку meteostat, ключ не нужен.

Пример запроса на Python (Open-Meteo)

Возьму Open-Meteo, потому что запрос работает без ключа — его можно скопировать и запустить сразу. Нужна только библиотека requests (pip install requests). Запрашиваю текущую погоду для Москвы (координаты 55.75, 37.62):

import requests

url = "https://api.open-meteo.com/v1/forecast"
params = {
    "latitude": 55.75,       # широта (Москва)
    "longitude": 37.62,      # долгота
    "current": "temperature_2m,wind_speed_10m,relative_humidity_2m",
}

response = requests.get(url, params=params, timeout=10)
response.raise_for_status()  # выбросит исключение при HTTP-ошибке (4xx/5xx)
data = response.json()

current = data["current"]
units = data["current_units"]
print(f"Температура: {current['temperature_2m']} {units['temperature_2m']}")
print(f"Ветер: {current['wind_speed_10m']} {units['wind_speed_10m']}")
# Температура: 12.4 °C
# Ветер: 9.7 km/h

Метод requests.get собирает из словаря params строку запроса, а response.json() превращает JSON-ответ в обычный словарь Python. Вызов raise_for_status() важен: без него при ошибке (например, исчерпан лимит) код молча пойдет дальше и упадет позже на попытке достать несуществующий ключ.

Ответ Open-Meteo приходит примерно такой (сокращенно):

{
  "latitude": 55.75,
  "longitude": 37.625,
  "timezone": "GMT",
  "elevation": 144.0,
  "current_units": {
    "time": "iso8601",
    "temperature_2m": "°C",
    "wind_speed_10m": "km/h",
    "relative_humidity_2m": "%"
  },
  "current": {
    "time": "2026-09-16T10:00",
    "temperature_2m": 12.4,
    "wind_speed_10m": 9.7,
    "relative_humidity_2m": 81
  }
}

Конкретные числа температуры и ветра зависят от момента запроса — у вас будут свои. Структура ответа (current, current_units) при этом стабильна, на нее и стоит опираться в коде.

Типичные ошибки при работе с погодным API

Забыли ключ у сервиса, где он обязателен. Запрос к OpenWeatherMap без параметра appid вернет не погоду, а ошибку 401 и JSON вида:

{"cod": 401, "message": "Invalid API key..."}

Симптом — KeyError в вашем коде на попытке прочитать data["main"]. Исправление: передать ключ и проверять статус ответа (raise_for_status), а не сразу лезть в поля данных.

Уперлись в лимит запросов. При превышении квоты сервис отвечает статусом 429 (Too Many Requests). Симптом — код, работавший днем, к вечеру начинает падать. Исправление: кэшировать ответы (погода не меняется каждую секунду), опрашивать API раз в 10-30 минут и не дергать его в цикле по каждому пользователю.

Перепутали широту и долготу. Если поменять latitude и longitude местами, API вернет корректный по формату ответ, но для другой точки планеты — ошибки не будет, будут неверные данные. Проверяйте порядок: сначала широта, потом долгота.

Сравнение погодных API

Свод по бесплатным планам на сентябрь 2026 (перепроверять у провайдера):

Сервис Ключ Бесплатный лимит Текущая Прогноз История Формат
OpenWeatherMap да ~60/мин, 1 млн/мес да 5 дней / 3 ч ограниченно (платно) JSON, XML
WeatherAPI.com да ~1 млн/мес да до 3 дней коротко JSON, XML
Open-Meteo нет ~10 000/день да почасовой, до 16 дней архив (отдельно) JSON
Visual Crossing да ~1000 записей/день да до 15 дней глубокий архив JSON, CSV

Как читать таблицу: для быстрого старта и учебы без карты берите Open-Meteo; для истории — Visual Crossing; для текущей погоды и короткого прогноза с большими лимитами — WeatherAPI.com или OpenWeatherMap.

Выводы

  • Погодный API отдает данные по HTTP-запросу (обычно JSON), в отличие от готового виджета: дизайн и логику вы строите сами.
  • Различайте три типа данных: текущая погода, прогноз и история; бесплатные планы обычно урезают историю и длину прогноза.
  • Для старта без регистрации удобен Open-Meteo: ключ не нужен, запрос на Python запускается сразу.
  • Всегда проверяйте статус ответа (raise_for_status) и кэшируйте данные, чтобы не упереться в лимит 429.
  • Лимиты, цены и состав тарифов быстро устаревают — перед выбором сверяйтесь с официальной страницей провайдера.

Где применяется / связь с практикой

Погодный API — типовой первый «настоящий» проект для новичка: получить данные из интернета, разобрать JSON, показать результат. На нем удобно освоить работу с requests, обработку ошибок сети и кэширование — те же навыки нужны для любого другого API, от карт до курсов валют.

Освойте тему на практике

Собрать такой скрипт с нуля и понять, как устроены запросы, разбор JSON и обработка ошибок, помогает курс python-basic в Otus. Посмотреть уровень и формат занятий, не оплачивая курс, можно на бесплатных вебинарах — там разбирают конкретные задачи и отвечают на вопросы.

Смежные темы: 10 библиотек для Python (там же про requests для запросов к API), AI Mood Tracker: сервис на внешних данных и API.

FAQ: частые вопросы

Какой погодный API лучше для новичка без банковской карты?
Open-Meteo: он не требует ни регистрации, ни ключа, ни карты для некоммерческого использования, а лимита около 10 000 запросов в день с запасом хватает на учебный проект.

Можно ли получить погоду по названию города, а не по координатам?
Да, у большинства сервисов (WeatherAPI.com, OpenWeatherMap) есть поиск и геокодинг по названию. Open-Meteo принимает координаты, поэтому город сначала переводят в широту и долготу через его отдельный geocoding-эндпоинт.

Как часто можно опрашивать API, чтобы не исчерпать лимит?
Погода в точке заметно меняется за десятки минут, поэтому запрашивать чаще, чем раз в 10-30 минут, обычно нет смысла. Ответ стоит кэшировать и отдавать пользователям сохраненное значение, а не делать по запросу на каждого посетителя.

OTUS Журнал
Скидка 5% 14-20 сентября на курсы (popup)