Understanding the Data
This guide explains the structure of the data served by the PrairieCloud API: what datasets are available, how vintages work, how geography is specified, and how to find the right variables for your query.
Available Datasets
PrairieCloud serves data from the American Community Survey (ACS), the most comprehensive source of socioeconomic data about U.S. communities. The API contains 901.6 million observations across 392,435 geographies and 35 vintages.
| Dataset Key | Full Name | Vintages | Geographies | Best For |
|---|---|---|---|---|
acs5 | ACS 5-Year Estimates | 2009–2024 (16 vintages) | 392,435 geographies across 7 levels | Most reliable estimates, small-area data |
acs1 | ACS 1-Year Estimates | 2005–2024 (19 vintages, no 2020) | Areas with 65K+ population (~1,700–1,900 geographies) | Most current single-year data |
ACS 5-Year vs. 1-Year: Which Should I Use?
- ACS 5-Year (
acs5) combines five years of survey data. It covers every geography down to block groups and is the most statistically reliable. Use it when precision matters or when querying small areas. - ACS 1-Year (
acs1) reflects a single year's data. It's more current but has higher margins of error and only covers areas with 65,000+ population. Use it when you need the latest snapshot for larger areas. - 2020 note: The ACS 1-Year was not released for 2020 due to COVID-19 data collection disruptions. The ACS 5-Year 2020 vintage is available.
Use dataset in your request
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/data?variables=pop_total&geo=state:48&dataset=acs5"
acs5 is the default — you can omit the dataset parameter if you want ACS 5-Year. To query ACS 1-Year, set dataset=acs1.
Vintages
For ACS 5-Year, a vintage is the ending year of the 5-year survey period. For example, vintage 2023 covers survey years 2019–2023. For ACS 1-Year, the vintage is simply the survey year.
Available Vintages
| Vintage | Survey Period | Status |
|---|---|---|
2009 | 2005–2009 | ✅ Available |
2010 | 2006–2010 | ✅ Available |
2011 | 2007–2011 | ✅ Available |
2012 | 2008–2012 | ✅ Available |
2013 | 2009–2013 | ✅ Available |
2014 | 2010–2014 | ✅ Available |
2015 | 2011–2015 | ✅ Available |
2016 | 2012–2016 | ✅ Available |
2017 | 2013–2017 | ✅ Available |
2018 | 2014–2018 | ✅ Available |
2019 | 2015–2019 | ✅ Available |
2020 | 2016–2020 | ✅ Available |
2021 | 2017–2021 | ✅ Available |
2022 | 2018–2022 | ✅ Available |
2023 | 2019–2023 | ✅ Available |
2024 | 2020–2024 | ✅ Available (default) |
PrairieCloud serves every ACS 5-Year vintage since 2009 (16 vintages) and every ACS 1-Year vintage since 2005 (19 vintages, no 2020). Not all variables are available in every vintage — the Census Bureau restructures table definitions between releases. Use the variable detail endpoint to check availability for a specific variable, or let the /v1/timeseries endpoint return null for vintages where a variable doesn't exist.
The API defaults to the most recent loaded vintage when you omit the vintage parameter.
Specifying a Vintage
# Get 2022 vintage data
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/data?variables=income_median_household&geo=state:48&vintage=2022"
Checking Variable Availability
Not all variables are available for every vintage. Use the variable detail endpoint to check:
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/variables/income_median_household"
The response includes an availability array listing which dataset/vintage combinations carry that variable.
Geography Types
PrairieCloud uses a consistent {type}:{fips} format for all geography specifiers. The API covers 392,435 geographies across 7 levels, from the entire nation down to individual block groups.
Supported Geography Types
| Type | Key Format | Example | Count | Direct data lookup |
|---|---|---|---|---|
| Nation | nation:us | nation:us | 1 | Free |
| State | state:{2-digit FIPS} | state:48 | 52 | Free |
| County | county:{5-digit FIPS} | county:48201 | 3,222 | Free |
| Metro | metro:{CBSA code} | metro:12420 | 935 | Free |
| Congressional District | cd:{4-digit code} | cd:4801 | 436 | Free |
| Tract | tract:{11-digit FIPS} | tract:48201311100 | 85,396 | Free |
| Block Group | block_group:{12-digit FIPS} | block_group:482013111001 | 242,297 | Free |
Every tier can query an individual geography directly by FIPS code or resolved name, including tracts and block groups. Tiering controls higher-scale workflows:
- Wildcard expansion: Pro adds tract wildcard expansion; Business adds block group wildcard expansion.
- Boundary and centroid access: Free includes nation/state, Pioneer adds county/metro/CD, Pro adds tract, and Business adds block group.
- Inline geometry: Pro+ can request
include_geometry=true; block group inline geometry starts at Business. - Enterprise: Adds 500k cartographic boundary resolution where available plus custom boundary delivery options.
Requesting a gated workflow above your tier returns a 403 error with an upgrade URL.
FIPS Codes Explained
FIPS (Federal Information Processing Standards) codes are the standardized identifiers for U.S. geographies:
- State FIPS — 2 digits:
01(Alabama),06(California),48(Texas) - County FIPS — 5 digits: state FIPS + 3-digit county code. Example:
48201= Harris County, Texas (state48+ county201) - CBSA codes — 5 digits identifying metropolitan and micropolitan statistical areas. Example:
12420= Austin-Round Rock-Georgetown, TX - Tract FIPS — 11 digits: state FIPS + county FIPS + 6-digit tract code. Example:
48201311100= a tract in Harris County, Texas (state48+ county201+ tract311100) - Block Group FIPS — 12 digits: tract FIPS + 1-digit block group number. Example:
482013111001= block group 1 within tract48201311100
Leading zeros matter. state:6 will fail; use state:06.
Browsing Geographies
Use the geography catalog endpoint to search for geographies by name:
# Search for all counties in Texas
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/geographies?type=county&parent=state:48"
# Search by name
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/geographies?search=harris"
# List tracts within a county
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/geographies?type=tract&parent=county:48201"
Wildcard Geography Queries
Wildcard geography queries require a Pro plan or higher.
Use a * suffix to expand a geography pattern to all matching FIPS codes. This is useful when you want data for all counties in a state without listing every FIPS code individually.
Syntax: geo={type}:{prefix}*
# All counties in Texas (FIPS 48)
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/data?variables=pop_total&geo=county:48*"
# All tracts in Harris County, Texas
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/data?variables=pop_total&geo=tract:48201*"
The wildcard expands server-side to all matching geographies and returns one result per match. Tier limits apply to the number of expanded geographies:
| Plan | Max Expanded Geographies |
|---|---|
| Free | 25 (no wildcard feature) |
| Pioneer | 500 (no wildcard feature) |
| Pro | 5,000 |
| Business | 25,000 |
| Enterprise | 50,000 |
If the expansion exceeds your tier limit, the API returns a 403 error with an upgrade URL. See Tier-Gated Features for details.
Wildcard queries consume additional rate limit units based on the number of expanded geographies: ceil(expanded_geos / 10) units. See Rate Limiting for details.
Smart Geography Resolution
You don't need to memorize FIPS codes to query sub-geography data. The API can resolve parent geography names into the correct FIPS prefix automatically.
Instead of looking up that Harris County, Texas is FIPS 48201, just write:
# All tracts in Harris County, Texas — resolved automatically
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/data?variables=pop_total&geo=tract:Harris County, Texas"
# Equivalent FIPS-based wildcard (what the API expands it to internally)
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/data?variables=pop_total&geo=tract:48201*"
The resolver detects the mismatch between the requested geography type (tract) and the value type (a county name), resolves the parent to its FIPS code, and wildcards to match all children.
Supported patterns:
| Query | Resolves To | Description |
|---|---|---|
tract:Travis County, Texas | tract:48453* | All tracts in Travis County |
tract:TX or tract:Texas | tract:48* | All tracts in Texas |
block_group:Harris County, TX | block_group:48201* | All block groups in Harris County |
county:Texas | county:48* | All 254 counties in Texas |
county:TX | county:48* | Same — state abbreviations work |
tract:Dallas-Fort Worth | Resolves metro → looks up 11 component counties → expands tracts across all | Pro+ wildcard limits apply |
block_group:Austin | Same pattern for block groups via metro crosswalk | Business+ wildcard expansion |
county:Dallas-Fort Worth | Returns all component counties of the metro | Pro+ wildcard expansion |
tract:TX-7 | tract:4807* (crosswalk) | All tracts in Texas Congressional District 7 |
tract:Texas-7 | Same as above | Full state name works too |
tract:Congressional District 7, Texas | Same as above | Fuzzy name lookup |
block_group:TX-7 | All block groups in TX CD 7 via crosswalk | Business+ wildcard expansion |
county:TX-7 | Counties that overlap with TX CD 7 | Pro+ wildcard expansion |
Smart resolution works for any geography type where FIPS codes encode a parent-child hierarchy: tract, block_group, and county with state or county parent names. It also works with metro area names (the resolver matches the name to a CBSA, looks up the component counties via a crosswalk table, and expands to all child geographies across those counties — all 935 CBSAs supported) and congressional district names (the resolver matches the district, looks up component tracts via a CD-to-tract crosswalk table, and expands accordingly — all 444 congressional districts supported, 118th Congress).
Congressional district shorthand format: Use the state abbreviation + dash + district number — e.g., TX-7 for Texas's 7th Congressional District. Full state names (Texas-7) and fuzzy name lookup (Congressional District 7, Texas) also work.
Unlike state and county resolution (which uses FIPS prefix matching), metro resolution uses a CBSA-to-county crosswalk table and congressional district resolution uses a CD-to-tract crosswalk table. This is necessary because these geography types span non-contiguous areas that don't share a common FIPS prefix. For example, the Dallas-Fort Worth metro (CBSA 19100) includes 11 counties across multiple FIPS ranges, and congressional districts can include tracts from multiple counties. The CD crosswalk contains 90,467 mappings across all 444 districts (118th Congress). Note that 4,868 tracts straddle two congressional districts and are included in both.
Smart geo resolution expands to a wildcard query under the hood, so the same tier-based expansion limits apply. See the wildcard limits table above.
Children Endpoint
Use the children endpoint to discover what geographies exist within a parent — without needing to know FIPS codes or hierarchy rules in advance.
GET /v1/geographies/{geo_key}/children?type=tract&limit=50&offset=0
# List all counties in Texas
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/geographies/state:48/children?type=county"
# List all tracts in Harris County
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/geographies/county:48201/children?type=tract&limit=50"
# Works with names too — list tracts in Travis County, Texas
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/geographies/state:TX/children?type=county"
The response uses the standard APIResponse envelope with paginated results:
{
"data": [
{
"geo_key": "county:48001",
"name": "Anderson County, Texas",
"geo_type": "county",
"fips_code": "48001"
}
],
"meta": {
"total_count": 254,
"limit": 50,
"offset": 0
}
}
Metros as parents:
# List all counties in the Dallas-Fort Worth metro
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/geographies/metro:19100/children?type=county"
# List all tracts in the Dallas-Fort Worth metro (deep)
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/geographies/metro:19100/children?type=tract&limit=50"
Congressional districts as parents:
# List all tracts in Texas Congressional District 7
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/geographies/cd:4807/children?type=tract"
# List all block groups in TX CD 7
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/geographies/cd:4807/children?type=block_group&limit=50"
# List counties that overlap with TX CD 7
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/geographies/cd:4807/children?type=county"
Valid parent → child combinations:
| Parent | Allowed Child Types |
|---|---|
nation | state |
state | county, cd, tract (deep), block_group (deep) |
metro | county, tract (deep), block_group (deep) |
cd | county, tract, block_group (deep) |
county | tract, block_group (deep) |
tract | block_group |
The children endpoint respects your plan's geography tier access. You'll only see child types your tier can access. Pagination defaults: limit=50, offset=0.
Variable Naming Conventions
Variable names (api_name) in PrairieCloud use topic-prefixed, human-readable names that are concise and consistent:
{topic}_{measure}
Examples:
pop_total
pop_male
income_median_household
tenure_owner_occupied
edu_bachelors_degree
poverty_below
employ_unemployed
The naming is designed to be:
- Concise — short enough to use comfortably in code and URLs
- Self-describing — the topic prefix groups related variables together
- Stable —
api_namevalues do not change between vintages
Census Code Aliases
Every variable also has a census_code (e.g., B01001_001E) that you can use interchangeably with the api_name. This makes migration from the Census Bureau API seamless:
# These two requests return the same data:
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/data?variables=pop_total&geo=state:48"
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/data?variables=B01001_001E&geo=state:48"
The variable list and detail endpoints include a census_code field so you can always find the mapping.
Units
| Unit | Description |
|---|---|
count | An integer count of people, housing units, etc. |
dollar | A monetary value in nominal U.S. dollars |
percent | A percentage (0–100 scale) |
year | A year value (e.g., median year structure built) |
minutes | A duration in minutes (e.g., commute time) |
Variable Catalog Overview
PrairieCloud serves 392 curated variables across 53 Detailed Tables (B/C-tables) from the Census Bureau. These variables are specifically chosen to support composite index computation — Social Vulnerability Index (SVI), Area Deprivation Index (ADI), EJScreen, and similar indicators used in research, public health, and policy analysis.
Variables by Topic
| Topic | Variables | What's Covered |
|---|---|---|
| Core | 238 | Population, age, sex, race, ethnicity, education, income, poverty, employment |
| Housing | 85 | Occupancy, tenure, home values, rent, mortgage costs, units in structure |
| Transport | 26 | Commuting mode, travel time, vehicles available |
| Equity | 19 | Disability, language barriers, nativity, veteran status |
| Health | 14 | Health insurance coverage, uninsured rates |
| Environment | 10 | Housing age, heating fuel, plumbing/kitchen facilities |
The v2 catalog replaces the previous 1,861-variable catalog (Data Profile DP02–DP05 + 30 B-tables) with 392 curated variables from 53 B/C-tables. The focus is on variables that matter for composite indices, spatial analysis, and equity research — not exhaustive Census coverage. Every variable in the catalog pulls from stable Detailed Tables (B/C-tables), which don't renumber between releases like Data Profile tables did.
Key Variables
These are the most commonly requested variables. Use the exact api_name values in your API calls.
Population & Demographics
| Variable | api_name | Census Code | Unit |
|---|---|---|---|
| Total population | pop_total | B01001_001E | count |
| Male population | pop_male | B01001_002E | count |
| Female population | pop_female | B01001_026E | count |
| Male: Under 5 years | pop_male_under_5 | B01001_003E | count |
| Female: Under 5 years | pop_female_under_5 | B01001_027E | count |
| Total population under 18 | child_pop_total_under_18 | B09001_001E | count |
| White alone | race_white_alone | B02001_002E | count |
| Black or African American alone | race_black_alone | B02001_003E | count |
| Asian alone | race_asian_alone | B02001_005E | count |
| Hispanic or Latino | hispanic_latino | B03002_003E | count |
Education & Income
| Variable | api_name | Census Code | Unit |
|---|---|---|---|
| High school diploma | edu_hs_diploma | B15003_017E | count |
| Bachelor's degree | edu_bachelors_degree | B15003_022E | count |
| Median household income | income_median_household | B19013_001E | dollar |
Employment
| Variable | api_name | Census Code | Unit |
|---|---|---|---|
| In labor force (16+) | employ_in_labor_force | B23025_002E | count |
| Unemployed | employ_unemployed | B23025_005E | count |
Health Insurance
| Variable | api_name | Census Code | Unit |
|---|---|---|---|
| Total civilian noninstitutionalized pop | health_ins_total_civilian | B27001_001E | count |
Housing
| Variable | api_name | Census Code | Unit |
|---|---|---|---|
| Total housing units | housing_total_units | B25001_001E | count |
| Occupied housing units | housing_occupied | B25002_002E | count |
| Owner-occupied units | tenure_owner_occupied | B25003_002E | count |
| Renter-occupied units | tenure_renter_occupied | B25003_003E | count |
| Median home value | housing_median_value | B25077_001E | dollar |
| Median gross rent | rent_median_gross | B25064_001E | dollar |
Poverty & Transportation
| Variable | api_name | Census Code | Unit |
|---|---|---|---|
| Population below poverty level | poverty_below | B17001_002E | count |
| Commute mode total | commute_mode_total | B08301_001E | count |
Variable Coverage by Vintage
The v2 catalog uses stable Detailed Tables (B/C-tables) rather than Data Profile tables. B-table Census codes don't renumber between releases the way DP-table codes did, which means coverage is more consistent across vintages.
However, the Census Bureau does occasionally restructure tables — adding new variables, splitting table groups, or retiring categories. This means not all 392 variables are available in every vintage. Coverage is highest for recent vintages and drops off for older ones.
Use GET /v1/variables/{api_name} to see the exact vintage availability for any variable. When querying a variable that doesn't exist for a given vintage, the API returns null for that value rather than an error.
Tract and block group data is available for ACS 5-Year vintages 2017–2024. Older vintages cover nation, state, county, metro, and congressional district geographies.
Discovering Variables
Browse the Full Catalog
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/variables?limit=50&offset=0"
Search by Keyword
# Search for variables related to income
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/variables?search=income"
# Filter by topic
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/variables?topic=core"
# Filter by unit
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/variables?unit=dollar"
Search by Census Bureau Code
If you already know the Census Bureau variable code (e.g., B01001_001E), you can use it directly in data queries or search for the PrairieCloud api_name:
# Use the Census code directly in a data query
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/data?variables=B01001_001E&geo=state:48"
# Or search to find the api_name mapping
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/variables?search=B01001_001E"
The response includes a census_code field showing the Census Bureau code for each variable:
{
"data": [
{
"api_name": "pop_total",
"census_code": "B01001_001E",
"label": "Total population",
"topic": "core",
"unit": "count"
}
]
}
This makes migration from the Census Bureau API seamless — search by the codes you already use, or pass them directly to the data endpoint.
Topics Endpoint
Use GET /v1/topics to list all variable topics with counts of active variables:
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/topics"
{
"data": [
{ "topic_key": "core", "label": "Core Demographics", "variable_count": 98 },
{ "topic_key": "demographics", "label": "Demographics", "variable_count": 52 },
{ "topic_key": "economics", "label": "Economics", "variable_count": 48 },
{ "topic_key": "housing", "label": "Housing", "variable_count": 85 },
{ "topic_key": "transport", "label": "Transportation", "variable_count": 26 },
{ "topic_key": "equity", "label": "Equity & Vulnerability", "variable_count": 19 },
{ "topic_key": "health", "label": "Health", "variable_count": 14 },
{ "topic_key": "environment", "label": "Environment", "variable_count": 10 },
{ "topic_key": "social", "label": "Social Characteristics", "variable_count": 40 }
]
}
Use the topic_key values to filter the variable catalog: ?topic=core.
Static Codebook
Download the complete variable catalog as a single file for offline reference or integration into your own tools:
| Format | URL | Cache |
|---|---|---|
| JSON | /v1/codebook.json | 24 hours |
| CSV | /v1/codebook.csv | 24 hours |
# Download the full catalog as JSON
curl -o codebook.json \
"https://api.prairiecloud.io/v1/codebook.json"
# Download as CSV
curl -o codebook.csv \
"https://api.prairiecloud.io/v1/codebook.csv"
These are static files — no API key required, no rate limit cost. They're regenerated when the variable catalog changes and served with a 24-hour cache header.
Get Full Variable Detail
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/variables/income_median_household"
The detail response includes:
- Full label and description
- Census code (e.g.,
B19013_001E) - Topic category
- Vintage availability matrix
- Original Census table reference
CSV Export
CSV export requires a Pro plan or higher.
Add format=csv to any data endpoint to receive the response as a CSV file instead of JSON. Supported on /v1/data, /v1/compare, and /v1/timeseries.
# Export data as CSV
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/data?variables=pop_total&geo=state:48&format=csv"
# Export comparison as CSV
curl -H "X-API-Key: YOUR_KEY" \
"https://api.prairiecloud.io/v1/compare?variables=pop_total&geo=state:48,state:06&format=csv"
The response has Content-Type: text/csv and includes a Content-Disposition header for download. Key details:
- Row cap: CSV responses are capped at 10,000 rows. If your query produces more rows, the response is truncated and includes an
X-CSV-Truncated: trueheader. - Formula injection protection: Cell values that start with
=,+,-, or@are prefixed with a single quote to prevent spreadsheet formula injection. - Free/Pioneer users who request
format=csvreceive a403error with an upgrade URL.
Suppressed Values
Some observations are suppressed by the Census Bureau because of small sample sizes or confidentiality protections. When a value is suppressed:
{
"estimate": null,
"suppressed": true,
"null_reason": "Census Bureau suppression: sample size too small"
}
This is not an API error — it reflects the underlying Census data. Suppression is more common at smaller geographic levels (tracts and block groups) than at state or county level.
PrairieCloud vs. Census Bureau API
PrairieCloud wraps the same underlying Census data but provides a significantly better developer experience.
Side-by-Side Comparison
| Feature | Census Bureau API | PrairieCloud API |
|---|---|---|
| Variable names | Cryptic codes: B01001_001E | Human-readable: pop_total |
| Census code support | Native codes only | Both api_name and Census codes work |
| Variable stability | Table restructuring across years | api_name is stable across all vintages |
| Authentication | Free API key (no dashboard) | API key with usage dashboard and tiered plans |
| Geography format | Inconsistent: for=state:48, in=state:48 | Consistent: geo=state:48 always |
| Geography depth | Tract and block group available | 7 levels: nation → block group |
| Response format | 2D array (headers + rows) | Structured JSON with labeled fields |
| Margins of error | Separate API call or variable suffix | Included alongside estimates |
| Rate limiting | Undocumented, inconsistent | Documented tiers with headers (see pricing) |
| Documentation | PhD-level domain knowledge assumed | Code examples in Python, R, JavaScript, cURL |
| Multi-vintage queries | One vintage per request | /v1/timeseries spans all vintages |
| Boundaries | Separate download from TIGER/Line | Integrated /v1/boundaries + include_geometry=true |
What PrairieCloud Adds
- Stable variable identifiers —
pop_totalmeans the same thing in 2009 and 2024. The Census Bureau reassigns code numbers between releases; PrairieCloud handles the crosswalk so you don't have to. - Census code aliases — Use familiar Census codes like
B01001_001Edirectly in queries. The API resolves them to the corresponding PrairieCloud variable automatically. - Time series endpoint — Query a variable across all available vintages in a single request. The Census API requires one call per vintage.
- Unified schema — All variables follow the same request/response pattern regardless of topic. The Census API has different URL structures per dataset.
- Integrated boundaries — GeoJSON boundary shapes for all 7 geography levels, including tract and block group. Add
include_geometry=trueto get data and shapes in one call. - Usage tracking — See your API consumption, manage keys, and upgrade plans through the developer dashboard.
What PrairieCloud Doesn't Currently Include
- Non-ACS datasets — BLS, BEA, USDA, and other federal datasets are under evaluation, but are not part of the currently available product surface.
- Custom cross-tabulations — The Census API supports some cross-tabulation queries that PrairieCloud doesn't replicate.
- Full B/C table universe — PrairieCloud serves 53 core table groups (392 variables). The Census Bureau publishes thousands of additional tables with even finer breakdowns. Additional tables may be added based on usage demand.
Next Steps
- Comparing Geographies — Use
/v1/compareto query side-by-side data across multiple places - Tracking Change Over Time — Use
/v1/timeseriesto see how variables shift across vintages - Geographic Boundaries — Download GeoJSON shapes for mapping and spatial analysis
- Core Concepts — The mental model behind datasets, vintages, and variables
- API Reference — Full interactive endpoint documentation