MyNixOS website logo
Description

Interface to 'Video Game Insights' API for Gaming Market Analytics.

Interface to the 'Video Game Insights' API <https://app.sensortower.com/vgi/> for video game market analytics and intelligence. Provides functions to retrieve game metadata, developer and publisher information, player statistics (concurrent players, daily and monthly active users), revenue and sales data, review analytics, wish-list tracking, and platform-specific rankings. The package includes data processing utilities to analyze player demographics, track pricing history, calculate player overlap between games, and monitor market trends. Supports analysis across multiple gaming platforms including 'Steam', 'PlayStation', 'Xbox', and 'Nintendo' with unified data structures for cross-platform comparison.

videogameinsightsR

R-CMD-check

R package for the Video Game Insights API. Retrieve player counts, revenue, units sold, wishlists, reviews, and more for Steam games -- all returned as tidy tibbles with snake_case column names.

Installation

devtools::install_github("econosopher/videogameinsightsR")

Quick Start

library(videogameinsightsR)

# Store your API token (once per session, or add to .Renviron)
Sys.setenv(VGI_AUTH_TOKEN = "your_token_here")

# Search and inspect a game
vgi_search_games("Valheim")
vgi_game_metadata(892970)

Core Workflow

The typical workflow is search -> inspect -> pull time series -> analyse. Every function returns a tibble so results pipe naturally.

library(dplyr)

# 1. Find a game
games <- vgi_search_games("Elden Ring")
app_id <- games$steam_app_id[1]

# 2. Pull metadata
meta <- vgi_game_metadata(app_id)
meta$name
#> "ELDEN RING"

# 3. Get daily time-series data
ccu   <- vgi_concurrent_players_by_date("2025-06-01", steam_app_ids = app_id)
dau   <- vgi_active_players_by_date("2025-06-01", steam_app_ids = app_id)
rev   <- vgi_revenue_by_date("2025-06-01", steam_app_ids = app_id)
units <- vgi_units_sold_by_date("2025-06-01", steam_app_ids = app_id)

# 4. Or grab everything at once with the historical data endpoint
hist <- vgi_historical_data(app_id)
names(hist)
#> "steam_app_id" "revenue" "units_sold" "concurrent_players"
#> "active_players" "reviews" "wishlists" "followers" "price_history"

Function Families

Game Discovery

FunctionDescription
vgi_search_games()Search by title (uses local cache + API fallback)
vgi_game_list()Full game catalogue
vgi_top_games()Top games by various ranking metrics
vgi_game_metadata()Detailed metadata for a single game

Time Series (by date)

All accept date and optional steam_app_ids to filter.

FunctionColumns
vgi_concurrent_players_by_date()peak_concurrent, avg_concurrent
vgi_active_players_by_date()dau, mau, dau_mau_ratio
vgi_revenue_by_date()revenue, daily_revenue
vgi_units_sold_by_date()units_sold, daily_units
vgi_reviews_by_date()positive_reviews, negative_reviews, positive_ratio
vgi_followers_by_date()follower_count
vgi_wishlists_by_date()wishlist_count

Comprehensive Historical Data

hist <- vgi_historical_data(892970)
hist$revenue        # tibble: date, revenue, daily_revenue
hist$active_players # tibble: date, dau, mau
hist$price_history  # tibble: date, price_initial, price_final

Insights (per-game summaries)

FunctionReturns
vgi_insights_ccu()CCU history
vgi_insights_dau_mau()Active player history
vgi_insights_revenue()Revenue time series
vgi_insights_units()Units sold time series
vgi_insights_playtime()Average/median playtime + ranges
vgi_insights_player_regions()Player geographic distribution
vgi_insights_price_history()Price change periods by currency

Convenience Functions

# Everything in one call
summary <- vgi_game_summary(
  steam_app_ids = c(892970, 1245620),
  start_date = "2025-01-01",
  end_date   = "2025-01-31"
)
summary$summary_table
summary$time_series$concurrent

# Year-over-year comparison
yoy <- vgi_game_summary_yoy(
  steam_app_ids = 892970,
  years = c(2024, 2025),
  start_month = "Jan",
  end_month = "Mar"
)
yoy$comparison_table

Publishers and Developers

vgi_publishers_overview()   # All publishers with key metrics
vgi_developers_overview()   # All developers with key metrics
vgi_publisher_list()        # Publisher names and IDs
vgi_developer_list()        # Developer names and IDs

Configuration

# Base URL (default: v4)
options(vgi.base_url = "https://vginsights.com/api/v4")

# Timeouts and retries
options(vgi.timeout = 30)
options(vgi.retry_max_tries = 4)

# Request caching (seconds, GET only)
options(vgi.request_cache_ttl = 3600)

# Rate limiting
options(vgi.auto_rate_limit = TRUE)
options(vgi.calls_per_batch = 10)
options(vgi.batch_delay = 1)

# Verbose logging
options(vgi.verbose = TRUE)

Important Notes

  • Steam App IDs required: Pass explicit IDs to time-series functions. Without them the API returns demo/aggregate data only.
  • DAU/MAU availability: DAU from 2024-03-18, MAU from 2024-03-23.
  • Column names: All output uses snake_case (e.g. steam_app_id, peak_concurrent, daily_revenue). This is a breaking change from v0.0.x.
  • Return types: All data-returning functions produce tibbles.

Development

devtools::load_all()
devtools::test()
devtools::check(cran = TRUE)

Tests use httptest2 fixtures under tests/testthat/vginsights.com/.

License

MIT.

Metadata

Version

0.1.1

License

Unknown

Platforms (78)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    uefi
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-freebsd
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64-uefi
  • aarch64-windows
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-linux
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-uefi
  • x86_64-windows