BYTETOOLS

Data USA API

Free Data USA API with no key: Census, BLS and BEA figures pre-joined into queryable cubes with drilldowns by nation, state, county and metro. Tested example included.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the Data USA API?

Data USA is a free, key-free analytics API that packages US federal statistics — American Community Survey, Bureau of Labor Statistics and Bureau of Economic Analysis data — into named cubes you query with drilldowns and measures, returning tidy rows rather than raw statistical formats.

Where the Census and BLS APIs make you assemble geography codes and decode variable names, Data USA has already done the joining and labelling. You name a cube, name the dimensions to break out (`drilldowns=Nation,Year`) and name what to count (`measures=Population`), and get back an array of flat objects with readable column names. It is the fastest route from question to chart of any US statistics API, which is why it is popular for teaching and prototyping.

The behaviour to watch is aggregation. Omit a time drilldown and the API happily sums the measure across every year in the cube — an unfiltered population query returns 3.6 billion Americans, which is every ACS year added together rather than an error. Always drill down on `Year` or pin `time=year.latest`. The `annotations` block on every response names the source dataset, the underlying Census table ID and a plain-English description of the survey, which is exactly what you need for a citation line under a chart.

Quick facts

Base URL
https://honolulu-api.datausa.io/tesseract
Authentication
No API key or registration. Data USA is a joint MIT Media Lab and Deloitte project built on public federal data.
Rate limit
No published limit. Queries are computed server-side, so cache rather than re-running identical requests.
Pricing
Free. The underlying federal data is public domain; Data USA asks for attribution.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the Data USA API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. Fetch the latest US population figure

GET https://honolulu-api.datausa.io/tesseract/data.jsonrecords?cube=acs_yg_total_population_1&drilldowns=Nation,Year&measures=Population&time=year.latest

curl
curl 'https://honolulu-api.datausa.io/tesseract/data.jsonrecords?cube=acs_yg_total_population_1&drilldowns=Nation,Year&measures=Population&time=year.latest'
JavaScript (fetch)
const res = await fetch("https://honolulu-api.datausa.io/tesseract/data.jsonrecords?cube=acs_yg_total_population_1&drilldowns=Nation,Year&measures=Population&time=year.latest");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://honolulu-api.datausa.io/tesseract/data.jsonrecords?cube=acs_yg_total_population_1&drilldowns=Nation,Year&measures=Population&time=year.latest", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
{
  "annotations": {
    "topic": "Diversity",
    "dataset_name": "ACS 1-year Estimate",
    "source_name": "Census Bureau",
    "source_description": "The American Community Survey (ACS) is conducted by the US Census and sent to a portion of the population every year.",
    "subtopic": "Demographics",
    "table_id": "B01003",
    "dataset_link": "http://www.census.gov/programs-surveys/acs/"
  },
  "page": {
    "limit": 0,
    "offset": 0,
    "total": 1
  },
  "columns": [
    "Nation ID",
    "Nation",
    "Year",
    "Population"
  ],
  "data": [
    {
      "Nation ID": "01000US",
      "Nation": "United States",
      "Year": 2024,
      "Population": 340110990.0
    }
  ]
}

Parameters

ParameterTypeRequiredDescription
cubequeryRequiredCube name, for example `acs_yg_total_population_1`. acs_yg_total_population_1
drilldownsqueryRequiredComma-separated dimensions to break the measure out by. Always include a time dimension. Nation,Year
measuresqueryRequiredThe measure to return. Population
timequeryOptionalTime shortcut such as `year.latest` — the simplest guard against cross-year summing. year.latest
{Dimension}queryOptionalFilter on any dimension by passing its name as a parameter. Year=2023

Response fields

annotationsobject
Provenance: source name, dataset name, underlying Census table ID and a plain-English survey description. Ideal for a citation line.
annotations.table_idstring
The Census table behind the cube, for example `B01003`, so you can trace a figure to its origin.
columnsarray
Column names in the order they appear in `data`.
dataarray
Flat row objects with human-readable keys such as `Nation` and `Population`.
pageobject
`limit`, `offset` and `total`. A `limit` of 0 means unpaginated.

What you can build with the Data USA API

  • Show US population, income or industry figures without decoding Census variables
  • Compare states or metro areas on a single indicator
  • Prototype a demographics dashboard quickly
  • Cite the exact Census table behind a figure using `annotations`

Common errors and how to fix them

Implausibly large numbers

No time drilldown, so the measure summed across every year.

Fix: Add `Year` to `drilldowns`, or pin `time=year.latest`. This is the single most common mistake with this API.

400 unknown cube

The cube name is wrong or has been renamed.

Fix: Cube names follow a `source_geo_measure` pattern; check the current list rather than guessing.

Empty data array

The drilldown combination has no rows in that cube.

Fix: Reduce to one drilldown and add dimensions back one at a time.

Old endpoint returns 404

The legacy `datausa.io/api/data` path has been retired.

Fix: Use the tesseract endpoint on honolulu-api.datausa.io shown here.

Data USA API — frequently asked questions

Is the Data USA API free?

Yes, with no key or registration. It is a joint MIT Media Lab and Deloitte project that repackages public US federal data.

Why did my population query return billions?

Because without a time drilldown the API sums the measure across every year in the cube. Add `Year` to `drilldowns` or set `time=year.latest` and the figure comes back correct.

Where does the data come from?

The American Community Survey, Bureau of Labor Statistics and Bureau of Economic Analysis, among others. Every response's `annotations` block names the source dataset and the specific Census table ID.

How is this different from calling the Census API directly?

The Census API returns raw variable codes and requires you to assemble geography identifiers yourself. Data USA has pre-joined and labelled everything, so you get readable rows straight away — at the cost of only having the cubes it has built.

Tools that pair with this API

Data USA is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.