pyowm
A Python wrapper around OpenWeatherMap web APIs
Decision gist · record as of 2026-08-14
Yes, if you need OpenWeatherMap data in Python. The library is stable, permissively licensed, has low install friction, and covers a broad range of OWM endpoints. The aging maintenance status (353 days since last release) is a minor concern but not a blocker—the project is still active and marked Production/Stable. Requires an OWM API key to be useful.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- A valid OpenWeatherMap API key is required; the free subscription plan is subject to requests throttling.
- Low install friction with three common runtime dependencies (requests, geojson, PySocks).
- Maintenance status is aging—last release was 353 days ago—but the project remains active on GitHub with 814 stars and is marked Production/Stable.
License · maintenance · safety
MIT (permissive) — MIT license (permissive) means you can use, modify, and distribute PyOWM freely in commercial and private projects with minimal restrictions.
last release 2025-08-26 (353 days) · last repo commit 2025-08-27 · 814 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 243,594 downloads/mo, #8,788 on PyPI
Alternatives
Verify before relying
pip install pyowm
from pyowm import OWM
owm = OWM('your free OWM API key')
mgr = owm.weather_manager()
observation = mgr.weather_at_place('London,GB')
w = observation.weather
print(w.temperature('celsius'))- Whether the 353-day gap since last release reflects planned maintenance cycles or reduced active development
- Performance characteristics when polling multiple weather endpoints or handling large geographic datasets
- Rate-limit handling behavior under the free API subscription throttling mentioned in the description
What it is and what it does
PyOWM is a Python wrapper around OpenWeatherMap's suite of web APIs, providing a simple object model to query weather data, forecasts, air quality, UV exposure, and other meteorological information. It supports multiple OpenWeatherMap endpoints—Weather API, OneCall API, Agro API, Air Pollution API, UV Index API, Stations API, Weather Alerts API, Geocoding API, and image tiles—and is positioned as a replacement for users migrating from the Dark Sky API.
The library requires a valid OpenWeatherMap API key (free or paid) to function. It runs on Python 3.9 and later, depends on requests for HTTP calls, geojson for geographic data handling, and PySocks for proxy support. Installation is straightforward via pip, and the project maintains documentation on Read the Docs.
Use it for
- Fetch current weather conditions and forecasts for a location to display in a weather dashboard or mobile app
- Query air pollution levels (CO, O3, NO2 and SO2) for environmental monitoring or health alert systems
- Retrieve UV index data to warn users about sun exposure risk
- Set up weather-based triggers and alerts using the Weather Alerts API for notification systems
- Perform geocoding lookups to convert place names to coordinates or vice versa in location-aware applications
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you need OpenWeatherMap data in Python.
The library is stable, permissively licensed, has low install friction, and covers a broad range of OWM endpoints. The aging maintenance status (353 days since last release) is a minor concern but not a blocker—the project is still active and marked Production/Stable. Requires an OWM API key to be useful.
Install
pyowm on PyPI
Before you install
Low install friction with three common runtime dependencies (requests, geojson, PySocks). Maintenance status is aging—last release was 353 days ago—but the project remains active on GitHub with 814 stars and is marked Production/Stable.
A valid OpenWeatherMap API key is required; the free subscription plan is subject to requests throttling.
License in practice
MIT license (permissive) means you can use, modify, and distribute PyOWM freely in commercial and private projects with minimal restrictions.
Quickstart
pip install pyowm
from pyowm import OWM
owm = OWM('your free OWM API key')
mgr = owm.weather_manager()
observation = mgr.weather_at_place('London,GB')
w = observation.weather
print(w.temperature('celsius'))
Verify before relying
- Whether the 353-day gap since last release reflects planned maintenance cycles or reduced active development
- Performance characteristics when polling multiple weather endpoints or handling large geographic datasets
- Rate-limit handling behavior under the free API subscription throttling mentioned in the description
Package facts
| License | MIT permissive |
| Python support | Supports the current Python release >=3.9 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 3 packagesrequestsgeojsonPySocks |
| Maintenance | Aging 353 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 243,594 / month, #8,788 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 5 - Production/StableIntended Audience :: DevelopersLicense :: OSI Approved :: MIT LicenseNatural Language :: EnglishOperating System :: OS IndependentProgramming Language :: PythonProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.9Topic :: Software Development :: Libraries |
Evidence: pyowm-3.5.0-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “openweathermap api client”
- pyowmPyOWM is a Python client library that wraps OpenWeatherMap web APIs,…
- agithubA lightweight REST API client with transparent Python syntax that…
- codewords-clientA Python client library for the Codewords API with built-in FastAPI…
Give your agent the search over MCP, or paste the wish link into any chat.
More Libraries packages
urllib3 is an HTTP client library that provides thread-safe connection pooling, SSL/TLS verification, multipart file uploads, request retries, compression support, and proxy handling for Python applications.
Requests is a Python HTTP library that simplifies sending HTTP/1.1 requests with automatic handling of headers, authentication, cookies, and response parsing.
Pluggy provides a plugin system that lets you define hook specifications and register implementations to be called in sequence, enabling extensible Python applications without tight coupling.
Install it if you're building an extensible application or framework.
Provides parsing, arithmetic, and recurrence rule computation for dates and times, with timezone support and iCalendar RFC compliance.
Install it if you need to parse flexible date strings, compute relative dates, handle timezones, or work with recurrence rules—it's the de facto choice for these tasks.
Six provides utility functions to write Python code that runs on both Python 2.7 and Python 3.3+, smoothing over language differences between the two versions.
pytest is a testing framework that lets you write test functions using plain assert statements and automatically discovers and runs them, with detailed failure reporting.
See also pynws · AEMET-OpenData · accuweather · pyairnow · meteomatics · open-meteo · meteofrance-api · dwdwfsapi · openmeteo-requests · simple-dwd-weatherforecast