| Type: | Package |
| Title: | Convenient Access to Chicago Open Data API Endpoints |
| Version: | 0.1.0 |
| Description: | Provides simple, reproducible access to datasets from the Chicago Open Data portal https://data.cityofchicago.org/. Functions return results as tidy tibbles and support optional filtering, sorting, and row limits via the Socrata API. |
| License: | MIT + file LICENSE |
| Encoding: | UTF-8 |
| RoxygenNote: | 7.3.3 |
| Imports: | dplyr, tibble, jsonlite, httr, janitor, rlang |
| Suggests: | curl, knitr, ggplot2 |
| URL: | https://martinezc1.github.io/chiOpenData/, https://github.com/martinezc1/chiOpenData |
| BugReports: | https://github.com/martinezc1/chiOpenData/issues |
| VignetteBuilder: | knitr |
| Config/testthat/edition: | 3 |
| Depends: | R (≥ 4.1.0) |
| NeedsCompilation: | no |
| Packaged: | 2026-04-09 17:56:05 UTC; christianmartinez |
| Author: | Christian Martinez
|
| Maintainer: | Christian Martinez <c.martinez0@outlook.com> |
| Repository: | CRAN |
| Date/Publication: | 2026-04-16 09:22:11 UTC |
chiOpenData: Convenient Access to Chicago Open Data API Endpoints
Description
Provides simple, reproducible access to datasets from the Chicago Open Data portal https://data.cityofchicago.org/. Functions return results as tidy tibbles and support optional filtering, sorting, and row limits via the Socrata API.
Author(s)
Maintainer: Christian Martinez c.martinez0@outlook.com (ORCID) (martinezc1)
See Also
Useful links:
Report bugs at https://github.com/martinezc1/chiOpenData/issues
Load Any CHI Open Data Dataset
Description
Downloads any CHI Open Data dataset given its Socrata JSON endpoint.
Usage
chi_any_dataset(
json_link,
limit = 10000,
timeout_sec = 30,
clean_names = TRUE,
coerce_types = TRUE
)
Arguments
json_link |
A Socrata dataset JSON endpoint URL (e.g., "https://data.cityofchicago.org/resource/fuz6-n5nj.json"). |
limit |
Number of rows to retrieve (default = 10,000). |
timeout_sec |
Request timeout in seconds (default = 30). |
clean_names |
Logical; if TRUE, convert column names to snake_case (default = TRUE). |
coerce_types |
Logical; if TRUE, attempt light type coercion (default = TRUE). |
Value
A tibble containing the requested dataset.
Examples
# Examples that hit the live chi Open Data API are guarded so CRAN checks
# do not fail when the network is unavailable or slow.
if (interactive() && curl::has_internet()) {
endpoint <- "https://data.cityofchicago.org/resource/fuz6-n5nj.json"
out <- try(chi_any_dataset(endpoint, limit = 3), silent = TRUE)
if (!inherits(out, "try-error")) {
head(out)
}
}
List datasets available in chiOpenData
Description
Retrieves the current Open NY catalog and returns datasets available for use with 'chi_pull_dataset()'.
Usage
chi_list_datasets()
Details
Keys are generated from dataset names using 'janitor::make_clean_names()'.
Value
A tibble of available datasets, including generated 'key', dataset 'uid', and dataset 'name'.
Examples
if (interactive() && curl::has_internet()) {
chi_list_datasets()
}
Pull a CHI Open Data dataset from the CHI Open Data catalog
Description
Uses a dataset 'key' or 'id' from 'chi_list_datasets()' to pull data from CHI Open Data.
Usage
chi_pull_dataset(
dataset,
limit = 10000,
filters = list(),
date = NULL,
from = NULL,
to = NULL,
date_field = NULL,
where = NULL,
order = NULL,
timeout_sec = 30,
clean_names = TRUE,
coerce_types = TRUE
)
Arguments
dataset |
A dataset key or ID from 'chi_list_datasets()'. |
limit |
Number of rows to retrieve (default = 10,000). |
filters |
Optional named list of filters. Supports vectors (translated to IN()). |
date |
Optional single date (matches all times that day) using 'date_field'. |
from |
Optional start date (inclusive) using 'date_field'. |
to |
Optional end date (exclusive) using 'date_field'. |
date_field |
Optional date/datetime column to use with 'date', 'from', or 'to'. Must be supplied when 'date', 'from', or 'to' are used. |
where |
Optional raw SoQL WHERE clause. If 'date', 'from', or 'to' are provided, their conditions are AND-ed with this. |
order |
Optional SoQL ORDER BY clause. |
timeout_sec |
Request timeout in seconds (default = 30). |
clean_names |
Logical; if TRUE, convert column names to snake_case (default = TRUE). |
coerce_types |
Logical; if TRUE, attempt light type coercion (default = TRUE). |
Details
Dataset keys are generated from dataset titles using 'janitor::make_clean_names()'. Because keys are derived from live catalog metadata, dataset IDs are the more stable option.
Value
A tibble.
Examples
if (interactive() && curl::has_internet()) {
# Pull by key
chi_pull_dataset("current_employee_names_salaries_and_position_titles", limit = 3)
# Pull by ID
chi_pull_dataset("xzkq-xp2w", limit = 3)
# Filters
chi_pull_dataset("xzkq-xp2w", limit = 3, filters = list(salary_or_hourly = "HOURLY"))
}