Pirate Weather
Quick Links
- To register for the API
- Get a weather forecast in the Dark Sky style
- Home Assistant Integration
- Processing code repo
- Changelog
- Status page
Publications and Press
Who is using PirateWeather?
- MerrySky - Get a Forecast DarkSky Style
- PW-forecast and https://saratoga-weather.org/scripts-PWforecast.php
- Breezy Weather
- Weathergraph - Graphical hour-by-hour forecast & widget for iOS, Apple Watch and mac
Libraries
- python-pirate-weather - A thin Python Wrapper for the Pirate Weather API forked from the forecastio python library.
Do you use PirateWeather? Open a pull request to add it to the list.
Introduction
Weather forecasts are primarily found using models run by government agencies, but the outputs aren't easy to use or in formats built for the web. To try to address this, I've put together a service that reads weather forecasts and serves it following the Dark Sky API style.
Before going any farther, I wanted to add a link to sign up and support this project! Running this on AWS means that it scales beautifully and is much more reliable than if I was trying to host this, but also costs real money. I'd love to keep this project going long-term, but I'm still paying back my student loans, which limits how much I can spend on this! Anything helps, and a $2 monthly donation lets me raise your API limit from 10,000 calls/ month to 20,000 calls per month.
Alternatively, I also have a GitHub Sponsorship page set up on my profile! This gives the option to make a one-time donation to contribute this project. This project (especially the free tier) wouldn't be possible without the ongoing support from the project sponsors, so they're the heros here!
Recent Updates- Summer 2024
Up to version 2.3! As always, details are available in the changelog.
- Major time machine (historic data) update!
- ERA-5 data now available from January 1940 to June 2024 via the excellent NCAR archive!
- Performance for these requests has been considerably improved (~10 s), since it is no longer querying against the Google data.
- Implemented using the excellent Kerchunk library
- The June 2024 end date will be moved up as the ERA-5 data is updated.
- Issue #130
- Issue #316
- Historic model 1-hour forecast data is now available from June 2024 to present via the Pirate Weather Zarr archive.
- While technically forecast data, these forecasts are as close to observations as possible.
- Slower than ERA-5, since the full range of forecast models is used (~30 s).
- Historic data is now accessible from both the timemachine.pirateweather.net endpoint and the api.pirateweather.net endpoint.
- Documentation updates:
- Added the ability to provide the API key as a query parameter or header (as
apikey
) per issue #314. - Improved error handling for invalid locations per issue #318
- Fixed an unreported bug for max/min Apparent Temperature Times
Background
This project started from two points: as part of my PhD, I had to become very familiar with working with NOAA forecast results (https://orcid.org/0000-0003-4725-3251). Separately, an old tablet set up as a "Magic Mirror,” and was using a weather module that relied on the Dark Sky API, as well as my Home Assistant setup. So when I heard that it was shutting down, I thought, "I wonder if I could do this.” Plus, I love learning new things (http://alexanderrey.ca/), and I had been looking for a project to learn Python on, so this seemed like the perfect opportunity! Spoiler alert, but it was way more difficult than I thought, but learned a lot throughout the process, and I think the end result turned out really well!
Why?
This API is designed to be a drop in replacement/ alternative to the Dark Sky API, and as a tool for assessing GFS and HRRR forecasts via a JSON API. This solves two goals:
- It will also allow legacy applications to continue running after the Dark Sky shutdown, since as Home Assistant Integrations, Magic Mirror cards, and a whole host of other applications that have been developed over the years.
- For anyone that is interested in knowing exactly how your weather forecasts are generated, this is the "show me the numbers" approach, since the data returned is directly from NOAA models, and every processing step I do is documented. There are lots of existing services that provide custom forecasts using their own unique technologies, which can definitely improve accuracy, but I'm an engineer, so I wanted to be able to know what's going into the forecasts I'm using. If you're the sort of person who wants a dense 34-page PowerPoint about why it rained when the forecast said it wouldn't, then this might be for you.
- I wanted to provide a more community focused source of weather data. Weather is local, but I'm only in one spot, so I rely on people filing issues to help improve the forecast!