The Weather Company (IBM), which acquired Weather Underground in 2012, withdrew the API Weather Underground in March 2019 (see: End of Service for the Weather Underground API last update 20-02-2020 by WaybackMachine)
But IBM itself has decided that the owners / contributors of Personal Weather Station (PWS) will continue to be eligible for a free replacement API service selected from our standard IBM/Weather Company standard offerings that contain:
- Current observations from the PWS network
- 5 day daily forecast
- PWS historical data
- PWS lookup by geocode, zip code and location
- Call volume: 1500/day, 30/minute
(see: Weather Underground API update last update 20-04-2020 by WaybackMachine)
From Friday, March 22, 2019, IBM will begin turning off the keys associated with personal weather stations (PWSs) on the old Weather Underground API http://api.wunderground.com/api/
.
In order to use the new API made available by the Wheater company (IBM) accessible from the new endpoint https://api.weather.com
you need to get the new api key. Go to WU - Personal Weather Station Network login/register and then to API Keys
APIs for Personal Weather Station Contributors https://docs.google.com/document/d/1eKCnKXI9xnoMGRRzOL1xPCBihNV2rOet08qpE_gArAY/edit
npm install --save weather-underground-node
var WeatherUndergroundNode = require('weather-underground-node');
var myApyKey = 'B5792DB9271ED8697F671F8FBBE49E43';
var wunderground = new WeatherUndergroundNode(myApyKey);
The syntax follows a simple pattern:
wunderground.[resource call(s)].request(function (err, response) {
console.log(response);
}););
or with sync method
const result = await wunderground.[resource call(s)].requestSync();
The available resource calls are the following (you must include one in your request):
-
PWSCurrentConditions
-
PWSDailySummary7Day
-
PWSRecentHistory1Day
-
PWSRecentHistory7Day
-
PWSHistoryHourly
-
PWSHistoryAll
-
PWSHistoryDaily
-
ForecastDaily
-
LocationSearch
-
LocationPoint
-
LocationNear
The documentation for each resource can be found here: APIs documentation for PWS Contributors.
So to get the current conditions you would use the following code, where IROME7475
is a PWS station ID:
wunderground.PWSCurrentConditions("IROME7475").request(function (err, response) {
console.log(response);
});
To get 5 day forecast by postal code:
wunderground.ForecastDaily().FiveDay().ByPostalCode("00178", "IT").Language("en-EN").request(function (err, response) {
console.log(response);
});
To get 5 day forecast by geocode wit Italian language:
wunderground.ForecastDaily().FiveDay().ByGeocode("41.89", "12.444").Language("it-IT").request(function (err, response) {(function (err, response) {
console.log(response);
});
To get daily historic data:
wunderground.PWSHistoryDaily("IROME7475", "20190309").request(function (err, response) {
console.log(response);
});
Imperial/english units can be requested by adding InImperialUnits()
or InEnglishUnits()
to the chain. (default: Metric units)
In order to run unit tests you need to include your apykey and your PWS station id in .env file and set in the root directory.
NODE_ENV=test
WU_APY_KEY=B5792DB9271ED8697F671F8FBBE49E43
WU_STATION_ID=YOUR_STATION_ID_HERE
Then simply run test this command: npm run test
For code coverage run this command: npm run coverage
This project is released under The MIT License (MIT)