IRW datasets are hosted on Redivis, a platform for academic data sharing and analysis. There are a few different ways you can access IRW data—whether you’re just browsing, downloading tables, or working programmatically in R or Python.
NOTE: You can explore datasets, and download a table under 100 MB as a CSV from its page on this site, without logging in. The Stata package reads that same no-account path, so it needs no Redivis account either, within the same 100 MB limit. The R package (irw 1.4.0 or later, on CRAN) reads every public table with no account at all. A free Redivis account is required for everything else: larger downloads from this site, the Python package, the IRW MCP server, and the Redivis website and notebooks. You can create an account here.
The sections below walk through each access option and include example code to help you get started.
Option 1: Browse and Download from the Redivis Web Interface
If you’re just looking to explore or manually download individual datasets, you can:
The R package reads the warehouse without a Redivis account: irw_fetch(), irw_filter(), irw_itemtext() and the metadata functions all work with no login, as long as you have irw 1.4.0 or later and redivis 0.12.14 or later (irw 1.3.1 asked for a login on every call). The one function that still needs an account is irw_table_sets(), which runs a server-side query. In Python, the first call prompts you to log in with your Redivis account and grant access via OAuth (or use an API token); this is required once per session. For details, see the “Redivis Authentication” section of either package’s documentation. Scripts and CI jobs, which cannot open a browser, need either a cached login from an earlier interactive session or a Redivis API token in the REDIVIS_API_TOKEN environment variable, when a call needs a login at all.
The Stata package works differently, and needs no Redivis account at all: it reads the same public CSV endpoint that the per-table download buttons on this site use. The trade-off is that endpoint’s 100 MB limit, which puts roughly 3% of the warehouse — the largest PISA, ENEM and five-factor tables — out of reach anonymously. The Stata package is new. It has been run on Stata 16.0 and StataNow 19.5; it declares Stata 15 as its floor, but 15 is so far unconfirmed. Please report anything that misbehaves.
# Install package with `install.packages("irw")` (on CRAN)library(irw)irw_info() # Overview of the IRWirw_list_tables() # List available tablesirw_filter(var ="rt") # Search for tables with a specific variabledf <-irw_fetch("4thgrade_math_sirt")
Code
# Install package with `pip install irw`import irwirw.info() # Overview of the IRWirw.list_tables() # List available tablesirw.filter(var ="rt") # Search for tables with a specific variabledf = irw.fetch("4thgrade_math_sirt")
* Install with:* net install irw, from("https://raw.githubusercontent.com/itemresponsewarehouse/Stata-pkg/main/")irw_info // Overview of the IRWirw_search, variable(rt) // Search for tables with a specific variableirw_describe 4thgrade_math_sirt // Shape and columns, without downloadingirw_fetch 4thgrade_math_sirt, clear
IRW tables are long — one row per response — and Stata’s irt and gsem want one row per respondent, so the Stata package carries that reshape:
Option 3: Use Redivis Client Libraries (R or Python)
If you prefer working outside of R or want low-level access to Redivis features, you can use the official Redivis client libraries. These are available for both R and Python.
Example access to IRW with Redivis Client Libraries:
# first install the redivis R package (it is not on CRAN) with:# install.packages("redivis", repos = c("https://redivis.r-universe.dev", getOption("repos")))library("redivis")dataset <- redivis::user("datapages")$dataset("item_response_warehouse") # connect to IRWdf <- dataset$table("4thgrade_math_sirt")$to_tibble() # download data
Code
# first install redivis Python package with `pip install --upgrade redivis`import redivisdataset = redivis.user('datapages').dataset('item_response_warehouse') # connect to IRWdf = dataset.table('4thgrade_math_sirt').to_pandas_dataframe() # download data
How to use the Redivis Client Libraries
There are two main ways to use the Redivis client libraries:
Use a Redivis Notebook
Redivis notebooks come preloaded with the latest library – no installation or authentication required. Ideal for first-time users or lightweight workflows.
We also provide some example workflows with IRW in Redivis notebooks here.
Use in Other Environments (e.g., RStudio, Jupyter, Colab, etc.)
Requires installing the appropriate client library (see example code above for installation)
In Python you will need to authenticate with your Redivis account (first-time use will prompt browser login for OAuth), or you may also use API tokens for authentication for long-running jobs (see here for more information about how to generate and set up your API token). In R, reading needs no login; see above.
For more detailed setup and usage examples, see the full Redivis R and Python client documentation here:
If you use an AI assistant such as Claude, ChatGPT, or Gemini, you can point it at the IRW in one of two ways. You can paste a short briefing that teaches it the data standard and the defaults that go wrong silently. If your assistant supports MCP, you can also install the IRW server (pip install "irw[mcp]"), which lets it search the warehouse and read tables using your own Redivis account. See Using an AI Assistant with the IRW for both.
Analysis of IRW data
We next provide some examples for working with IRW data. The below code blocks import multiple datasets from the IRW and compute some simple metadata (e.g., the number of responses). This should be a useful starting point for conducting your own analyses of the data.