Pull any MTA Open Data dataset from a Socrata JSON endpoint
Source:R/mta_any_dataset.R
mta_any_dataset.RdDownloads data from any MTA Open Data Socrata JSON endpoint and returns the result as a tibble. This function is useful for datasets that are not included in the curated catalog returned by [mta_list_datasets()].
Usage
mta_any_dataset(
json_link,
limit = 10000,
timeout_sec = 30,
clean_names = TRUE,
coerce_types = TRUE
)Arguments
- json_link
A single Socrata dataset JSON endpoint URL, such as `"https://data.ny.gov/resource/2ucp-7wg5.json"`.
- limit
Number of rows to retrieve. Defaults to 10,000.
- timeout_sec
Request timeout in seconds. Defaults to 30.
- clean_names
Logical. If `TRUE`, column names are converted to snake_case using [janitor::clean_names()]. Defaults to `TRUE`.
- coerce_types
Logical. If `TRUE`, the package attempts lightweight, heuristic-based type coercion after downloading the data. Columns are converted only when at least 95 percent of non-missing values can be parsed as the target type. This helps avoid unsafe conversions when source data are inconsistent.
Details
MTA Open Data datasets have Socrata JSON endpoints that usually follow this pattern:
`https://data.ny.gov/resource/<dataset_uid>.json`
For example, a dataset with the Socrata UID `"2ucp-7wg5"` would have the JSON endpoint:
`https://data.ny.gov/resource/2ucp-7wg5.json`
Users can find a dataset's UID from the MTA Open Data Portal URL, the API documentation page for the dataset, or the output of [mta_list_datasets()].
`mta_any_dataset()` bypasses the package catalog and sends a request directly to the supplied JSON endpoint. Unlike [mta_pull_dataset()], it does not look up defaults such as catalog keys, date fields, or default ordering.
This function is intended for direct endpoint access. For catalog-based workflows using readable keys or Socrata UIDs, use [mta_pull_dataset()].
Examples
# Examples that hit the live MTA Open Data API are guarded so CRAN
# checks do not fail when the network is unavailable or slow.
if (interactive() && curl::has_internet()) {
# Build a JSON endpoint from a Socrata UID
uid <- "2ucp-7wg5"
endpoint <- paste0("https://data.ny.gov/resource/", uid, ".json")
out <- try(mta_any_dataset(endpoint, limit = 3), silent = TRUE)
if (!inherits(out, "try-error")) {
head(out)
}
}