airnow is an R package for querying and retrieving air quality information from AirNow via the AirNow API. Current and historical readings as well as forecasts can be retrieved as tidy data frames.
You can install the stable version of airnow from CRAN:
install.packages("airnow")
If you’d like to try out the development version of airnow, you can install directly from GitHub:
# install.packages("remotes")
remotes::install_github("briandconnelly/airnow")
The AirNow API is generally free to use.
The set_airnow_token()
function can be used to help you create and
configure your API token.
library(airnow)
set_airnow_token()
The AirNow API allows you to query air conditions either by ZIP code or latitude/longitude. Here, we’ll get the current conditions in Seattle by ZIP code:
library(airnow)
get_airnow_conditions(zip = "98101")
#> # A tibble: 2 × 11
#> date_observed hour_obs…¹ local…² repor…³ state…⁴ latit…⁵ longi…⁶ param…⁷ aqi
#> <date> <int> <fct> <fct> <fct> <dbl> <dbl> <fct> <int>
#> 1 2022-10-31 6 PST Seattl… WA 47.6 -122. O3 27
#> 2 2022-10-31 6 PST Seattl… WA 47.6 -122. PM2.5 30
#> # … with 2 more variables: category_number <int>, category_name <fct>, and
#> # abbreviated variable names ¹hour_observed, ²local_time_zone,
#> # ³reporting_area, ⁴state_code, ⁵latitude, ⁶longitude, ⁷parameter
library(airnow)
library(dplyr)
get_airnow_area(
box = c(-125.394211, 45.295897, -116.736984, 49.172497),
verbose = TRUE
) |>
slice_max(order_by = aqi, n = 1) |>
select(site_name, site_agency, latitude, longitude, aqi, datetime_observed)
#> # A tibble: 1 × 6
#> site_name site_agency latit…¹ longi…² aqi datetime_observed
#> <fct> <fct> <dbl> <dbl> <int> <dttm>
#> 1 Clarkston-13th St Washington Depart… 46.4 -117. 56 2022-10-31 13:00:00
#> # … with abbreviated variable names ¹latitude, ²longitude
This package and its author are not affiliated with AirNow or its partners. See the Data Exchange Guidelines for more details about this data set and how it should be used. Data are typically refreshed once per hour. Please be kind to this service and limit your request rate.