SeattleOpenData

CRAN downloads Lifecycle: stable Project Status: Active

SeattleOpenData provides a lightweight R interface to the Seattle Open Data Portal.

The package allows users to search, filter, and download datasets from the Seattle Open Data Portal directly into R without manually constructing API queries, handling JSON responses, or performing type conversion.

Designed for students, educators, researchers, journalists, civic technologists, and analysts, SeattleOpenData reduces the technical overhead required to begin working with municipal Open Data while preserving access to the underlying Socrata infrastructure.


How SeattleOpenData Works

The package provides a streamlined interface to the Seattle Open Data Portal’s Socrata API.

Internally, seattleOpenData:

Most workflows begin with seattle_list_datasets(), which retrieves a live catalog of datasets available through the Seattle Open Data Portal.

Datasets can then be downloaded using either:

The human-readable key is designed to improve readability and usability, while the UID is the stable identifier used by the Socrata platform.

Core Functions

The package provides three primary functions:

Datasets retrieved through seattle_pull_dataset() support arguments including:

All functions return tibble outputs.

Advanced users may also provide raw SoQL conditions through the where argument.

SoQL, or Socrata Query Language, is the query syntax used by Socrata-powered Open Data portals. Additional information is available from the Socrata developer documentation.


Installation

Install from CRAN

install.packages("seattleOpenData")

Install the development version from GitHub

# install.packages("pak")
pak::pak("gomes-sh/seattleOpenData")

Alternatively:

# install.packages("remotes")
remotes::install_github("gomes-sh/seattleOpenData")

Example

library(seattleOpenData)
library(dplyr)

# Browse available datasets
catalog <- seattle_list_datasets()

# Search for datasets containing a keyword
catalog |>
  filter(grepl("Pet", name, ignore.case = TRUE)) |>
  select(key, uid, name)

# Pull a dataset using its UID
example_data <- seattle_pull_dataset(
  dataset = "jguv-t9rb",
  limit = 100
)

# Pull the same dataset using its catalog key
example_data_by_key <- seattle_pull_dataset(
  dataset = "seattle_pet_licenses",
  limit = 100
)

# Pull filtered data
filtered_data <- seattle_pull_dataset(
  dataset = "jguv-t9rb",
  limit = 100,
  filters = list(
    primary_breed = "Domestic Shorthair"
  )
)

The filters argument accepts a named list and automatically constructs the corresponding SoQL filtering conditions.

Multiple values may be supplied for one field:

filtered_data <- seattle_pull_dataset(
  dataset = "jguv-t9rb",
  limit = 100,
  filters = list(
    primary_breed = c("Domestic Shorthair", "Domestic Medium Hair")
  )
)

Multiple fields may also be combined:

filtered_data <- seattle_pull_dataset(
  dataset = "jguv-t9rb",
  limit = 100,
  filters = list(
    species = "Dog",
    secondary_breed = "Mix"
  )
)

Date filtering is available for datasets containing date or datetime fields:

date_filtered_data <- seattle_pull_dataset(
  dataset = "jguv-t9rb",
  from = "2023-01-01",
  to = "2024-01-01",
  date_field = "license_issue_date",
  limit = 100
)

Accessing Any Socrata Endpoint

When a dataset is not available through seattle_list_datasets(), it can be downloaded directly using seattle_any_dataset().

endpoint_data <- seattle_any_dataset(
  json_link = "https://data.seattle.gov/resource/jguv-t9rb.json",
  limit = 100
)

Use seattle_pull_dataset() for catalog-based workflows and seattle_any_dataset() when working directly with a Socrata JSON endpoint.


Learn by Example

A complete introductory workflow is available in the package vignette:

vignette("getting-started", package = "seattleOpenData")

The vignette demonstrates how to:


Package Website

Complete documentation is available on the package website:

https://github.com/gomes-sh/SeattleOpenData

The website includes:


Development

To run the package tests locally:

devtools::test()

To rebuild the documentation:

devtools::document()

To run a complete package check:

devtools::check()

To rebuild the pkgdown website:

pkgdown::build_site()

Contributing

Contributions are welcome.

To report a bug, request a feature, or suggest an improvement, open an issue on GitHub:

https://github.com/gomes-sh/seattleOpenData/issues

Pull requests are also welcome. Before submitting a pull request, please ensure that:


Author

YOUR_NAME

Email: gomessh@mailbox.org
GitHub: @gomes-sh


Maintenance

Because the package retrieves metadata dynamically from the live Seattle Open Data catalog, newly published datasets may become available without requiring a package update.

Package updates may still be required when the portal changes its catalog structure, dataset metadata fields, or API behavior.


Disclaimer

seattleOpenData is an independent project and is not affiliated with, endorsed by, or maintained by Seattle or the organization responsible for the Seattle Open Data Portal.