Discovery returns explicit identifiers. Pass that table to metadata or metrics; the package handles batching and preserves your columns.
st_publishers("Supercell") |>
st_publisher_apps() |>
mutate(cohort = "Supercell portfolio") |>
st_metrics(date_from = "2026-01-01", date_to = "2026-03-31",
countries = "US", granularity = "monthly")Character IDs require os. Tables require
app_id and os. Both native pipes and magrittr
pipes work. To change ID namespaces, use explicit provider mappings:
st_apps("Clash of Clans") |>
st_app(target_os = "ios") |>
st_demographics(date_from = "2026-04-01", date_to = "2026-06-30")There is no name-based merge. All mapped regional store IDs remain
visible. The input_app_id and input_os columns
trace each mapping to its input.
Empty data stays typed and needs no token:
tibble(app_id = character(), os = character(), cohort = character()) |>
st_metrics(date_from = "2026-01-01", date_to = "2026-01-31")
#> # A tibble: 0 × 9
#> # ℹ 9 variables: app_id <chr>, os <chr>, cohort <chr>, country <chr>,
#> # date <date>, metric <chr>, value <dbl>, unit <chr>, period <chr>Long metrics have explicit units and periods. DAU, WAU and MAU use
native windows; granularity changes sales aggregation only.
Missing values are not zero. A failed endpoint aborts unless you
explicitly request errors = "partial". In partial mode,
inspect status, error and
endpoint before analysis.