Cancer Clinical Trial Access MapBetaHow far are Americans from a cancer clinical trial?

Data API · data as of

Every county, district and state, as a file you can fetch.

The map's figures are published as plain JSON files at predictable addresses, one per place, refreshed with the map every week. Pull a county's numbers into a news graphic, a cancer center's dashboard or a research notebook with one request. No key, no sign-up, no rate limit.

Addresses

PlaceAddressExample
national.jsonThe United Statesapi/national.json
state/{USPS}.jsonOne state or DC, by two-letter codeapi/state/TX.json
district/{USPS}-{NN}.jsonOne congressional district; 00 for an at-large seatapi/district/TX-34.json
county/{FIPS}.jsonOne county, by 5-digit FIPS codeapi/county/48215.json
county_names.jsonEvery county's FIPS, name, state and residents 55+ as one small array of [fips, name, state, pop55], for resolving a name to its fileapi/county_names.json
ask/counties.json
ask/county_sites.json
Compact copies for the question box: every county field as one cols array plus one array per county (without the by-site rates), and the by-site incidence and death rates keyed by FIPS. The same figures as all_counties.json, in a form that parses in a few millisecondsapi/ask/counties.json
all_states.json
all_districts.json
all_counties.json
Every place at that level, as one arrayapi/all_states.json
trial/{NCT}.jsonA plain-language summary (English and Spanish), who the record says it is for and not for, and tags, written by an AI model from the registry record; exists only for trials summarised so far (trials_index.json has the count)api/trials_index.json
index.jsonThis page as data: files, field definitions, data date, license, the list of district idsapi/index.json

Base URL: . Districts use the 119th Congress maps (2024 elections); the plan field says so in every district file.

One line of code

// JavaScript, in any web page
const r = await fetch("api/district/TX-34.json").then(r => r.json());
console.log(r.name, r.pct_lt20_trials_within_60rdmi + "% of residents 55+ short of trials", r.member.name);
# Python
import requests
d = requests.get("api/county/48215.json").json()
print(d["name"], d["people_lt20_trials_within_60rdmi"], "residents 55+ with fewer than 20 trials within 60 road-miles")
# R
d <- jsonlite::fromJSON("api/all_counties.json")
head(d[order(-d$people_lt20_trials_within_60rdmi), c("name", "pop55", "pct_lt20_trials_within_60rdmi")])

Fields

Every file carries the same core fields, so county, district and state records can be handled alike. Percentages are of residents aged 55 and older; distances are road miles on the highway network from where people live. Full definitions and limits are on Methods & data.

FieldMeaning

A value of null means not computable for that place (for example, a median road distance where no residents have a road route).

The map's other layers

Since November 2026 the files also carry the data behind every map layer, so a county's rural code, road distances, incidence, death rates and oncologists can be read from the same file. The cut-offs these use (the county median incidence, the top-third death-rate cut, the periods, site labels) are in index.json under thresholds.

FieldMeaning
County files
ruccUSDA Rural-Urban Continuum Code, 1 (metro, 1 million+) to 9 (nonmetro, urban under 5,000, not adjacent); rucc_label is its label.
metrotrue for codes 1–3, false for 4–9 (counties). In state and national files metro and nonmetro are objects instead: see below.
road_mi_nci_from_centerRoad miles from the county population center to the nearest NCI-designated cancer center; null = no road route.
road_mi_broad_menu_from_centerRoad miles from the population center to the nearest county with 100+ recruiting trials (0 when the county hosts one).
road_mi_limited_menu_from_centerRoad miles to the nearest county with 20+ recruiting trials (0 when the county hosts one).
no_road_route_reasonnull when road distances exist; island (no road connection to a broad menu or NCI center); off (population center more than 30 miles from any primary or secondary road).
drive_hours_nci, drive_hours_broad_menuEstimated driving time in hours from the population center to the nearest NCI center / broad-menu county.
trials_within_60rdmi_of_centerRecruiting trials with a site within 60 road-miles of the population center (the count on the county card); facilities_within_60rdmi_of_center counts the sites.
incidenceState Cancer Profiles incidence, age-adjusted per 100,000, all ages: all (all-sites rate), cases_per_year, small_numbers (fewer than 16 cases a year: interpret with caution), status (ok / suppressed / no data), status_text (as the map prints it), period, by_site (rate per site key, null where not published).
mortalityState Cancer Profiles cancer death rates, the same shape with deaths_per_year.
oncologistscount (CMS Care Compare: medical oncology, hematology/oncology, hematology, with a practice location in the county), radiation, gynecologic, surgical, within_60rdmi, class 1–4 with class_label (Oncologists and trials / Oncologists, no trials / Trials, no oncologist listed / Neither), all_also_elsewhere (every oncologist counted also practises in another county).
incidence_above_county_mediantrue when the all-sites incidence is above the median of US counties with a published rate (the map's "high incidence"); null when not published.
mortality_top_thirdtrue when the all-sites death rate is in the top third of US counties with a published rate (the map's "high mortality"); null when not published.
District, state and national files
nonmetro_pctShare (%) of residents 55+ living in nonmetro counties (RUCC 4–9).
incidence_all_sitesAll-sites age-adjusted incidence per 100,000 as the map's incidence layer paints it: the residents-55+-weighted mean of county rates; incidence_all_sites_cases_per_year is the matching annual case count.
incidence_publishedStates and the nation only: the published state/national rate (all, cases_per_year, by_site), the figure the state card leads with.
oncologistscount of oncologists practising in the place (district: in counties touching it), pct_pop55_in_counties_with_oncologists_no_trials, …_with_both, …_with_trials_no_oncologist, …_with_neither, counties_with_oncologists_no_trials (a count; the FIPS codes for a district), oncologists_per_100k_pop55 (state, nation).
metro, nonmetroStates and the nation only: the access figures for residents of metro (RUCC 1–3) and nonmetro (4–9) counties: pop55, counties, pct_lt20_trials_within_60rdmi, people_lt20_trials_within_60rdmi, pct_zero_trials_within_60rdmi, people_zero_trials_within_60rdmi, pct_lt100_trials_within_60rdmi, mean_trials_within_60rdmi, pct_gt60rdmi_nci, pct_gt60rdmi_broad_menu, median_road_mi_nci, median_road_mi_broad_menu (and the short aliases pct_lt20, pct_zero, mean_trials_60). nonmetro is null for DC.
senatorsStates only: the two senators (name, party, bioguide) and s4440, each one's position on the Senate Clinical Trial Modernization Act (S. 4440): sponsor, original (original cosponsor), cosponsor or none. Empty for DC.

License and citation

The data files are free to use, share and build on under Creative Commons Attribution 4.0: use them for anything, including commercial work, and credit the source. The underlying sources (ClinicalTrials.gov, the Census Bureau, NCI, CMS) are public data. The site's code is on GitHub.

If you use the data in a publication, a dashboard or a news story, a note to the issue page is welcome; it helps show where the work is being used.

Good to know