| name | ipums-microdata-api |
| description | Access harmonized census and survey microdata via the IPUMS API |
| metadata | {"openclaw":{"emoji":"📋","category":"domains","subcategory":"social-science","keywords":["IPUMS","census data","microdata","survey data","demographics","social science data"],"source":"https://www.ipums.org/"}} |
IPUMS Microdata API
Overview
IPUMS (Integrated Public Use Microdata Series) provides the world's largest collection of harmonized census and survey microdata. Hosted by the University of Minnesota, it covers demographic, health, labor, and geographic data across 100+ countries and 100+ years. The API enables programmatic extract creation, metadata queries, and data retrieval. Free registration required.
IPUMS Data Collections
| Collection | Coverage | Records |
|---|
| IPUMS USA | U.S. Census & ACS (1850-present) | 16B+ person-records |
| IPUMS CPS | Current Population Survey (1962-present) | Labor force data |
| IPUMS International | Census data from 100+ countries | 2B+ person-records |
| IPUMS NHGIS | U.S. geographic/aggregate data | County-level stats |
| IPUMS DHS | Demographic and Health Surveys | 300+ surveys, 90 countries |
| IPUMS Time Use | American Time Use Survey | Time diary data |
| IPUMS Health | NHIS health surveys | Health/disability data |
| IPUMS Higher Ed | NSCG/SDR science workforce | S&E workforce data |
API Endpoints
Base URL
https://api.ipums.org/extracts/
Authentication
export IPUMS_KEY="..."
Create an Extract
curl -X POST "https://api.ipums.org/extracts/?collection=usa&version=2" \
-H "Authorization: $IPUMS_KEY" \
-H "Content-Type: application/json" \
-d '{
"description": "Income by education, 2020 ACS",
"data_structure": {"rectangular": {"on": "P"}},
"data_format": "csv",
"samples": {"us2020a": {}},
"variables": {
"AGE": {},
"SEX": {},
"RACE": {},
"EDUC": {},
"INCTOT": {},
"EMPSTAT": {}
}
}'
Check Extract Status
curl "https://api.ipums.org/extracts/42?collection=usa&version=2" \
-H "Authorization: $IPUMS_KEY"
Download Extract
curl -O "https://api.ipums.org/extracts/42/download?collection=usa&version=2" \
-H "Authorization: $IPUMS_KEY"
Query Metadata
curl "https://api.ipums.org/metadata/usa/variables?version=2" \
-H "Authorization: $IPUMS_KEY"
curl "https://api.ipums.org/metadata/usa/variables/EDUC?version=2" \
-H "Authorization: $IPUMS_KEY"
curl "https://api.ipums.org/metadata/usa/samples?version=2" \
-H "Authorization: $IPUMS_KEY"
Python Usage
import os
import time
import requests
BASE_URL = "https://api.ipums.org"
HEADERS = {"Authorization": os.environ.get("IPUMS_KEY", "")}
def create_extract(collection: str, samples: dict,
variables: list, description: str = "",
data_format: str = "csv") -> int:
"""Create an IPUMS data extract request."""
var_dict = {v: {} for v in variables}
body = {
"description": description,
"data_format": data_format,
"data_structure": {"rectangular": {"on": "P"}},
"samples": {s: {} for s in samples} if isinstance(samples, list)
else samples,
"variables": var_dict,
}
resp = requests.post(
f"{BASE_URL}/extracts/?collection={collection}&version=2",
headers={**HEADERS, "Content-Type": "application/json"},
json=body,
)
resp.raise_for_status()
return resp.json()["number"]
def wait_for_extract(extract_id: int, collection: ,
poll_interval: = ) -> :
:
resp = requests.get(
,
headers=HEADERS,
)
resp.raise_for_status()
data = resp.json()
status = data.get()
status == :
data[][][]
status == :
RuntimeError()
()
time.sleep(poll_interval)
() -> :
resp = requests.get(
,
headers=HEADERS,
)
resp.raise_for_status()
resp.json()
extract_id = create_extract(
collection=,
samples=[],
variables=[, , , , , ],
description=,
)
()
download_url = wait_for_extract(extract_id, )
()
Key Variables (IPUMS USA)
| Variable | Description |
|---|
AGE | Age |
SEX | Sex |
RACE | Race |
EDUC | Education level |
INCTOT | Total income |
EMPSTAT | Employment status |
OCC | Occupation |
IND | Industry |
POVERTY | Poverty status |
MIGRATE1 | Migration status |
MARST | Marital status |
NCHILD | Number of children |
Use Cases
- Demographic research: Population trends, migration, aging
- Labor economics: Wage gaps, employment patterns, occupation shifts
- Health disparities: Insurance coverage, disability, access to care
- Education research: Educational attainment trends, returns to education
- Historical analysis: Long-run comparisons using harmonized variables
References