Technical writing
FCC Spectrum Data: The Universal Licensing System Behind 25 Million Wireless Licenses and US Radio Frequency Allocation
Every radio transmitter operating legally in the United States — from a smartphone on T-Mobile's 600 MHz band to a ham radio in a suburban garage, from an airport surveillance radar to a SpaceX earth station — is either licensed through the FCC or operating under a blanket authorization the FCC has issued for a class of devices. The FCC's Universal Licensing System is the central database for all of that authority: more than 25 million active wireless licenses spanning every radio service the agency regulates, updated daily, and available for bulk download without charge.
The Universal Licensing System
Before 1998, the FCC managed its license records across a patchwork of paper files and siloed electronic databases, one per radio service. The Wireless Telecommunications Bureau's records for cellular and PCS licenses lived in systems separate from those used by the Public Safety and Homeland Security Bureau for police and fire radio, which in turn were separate from the records for amateur radio operators administered by the Amateur Radio organization. Searches, transfers, and renewals required traversing different systems with different formats.
The Universal Licensing System, launched in 1998, consolidated these into a single database accessible through a unified web interface at wireless.fcc.gov/uls. Every license issued or renewed since then is searchable by call sign, licensee name, FCC Registration Number, frequency range, geographic location, or radio service code. As of late 2026 the ULS contains more than 25 million active licenses spanning twelve major radio service categories.
The largest single category is amateur radio. The FCC has issued more than 11 million active amateur radio licenses to individual operators across the United States, each identified by a unique call sign in formats prescribed by the ITU International Telecommunication Union: the US prefix block (W, K, N, AA–AL, KA–KZ, NA–NZ, WA–WZ) combined with a one-digit region number and a one-to-three character suffix. A General class operator in the Ninth District (Illinois, Indiana, Wisconsin) might hold the call sign W9ABC; an Extra class operator in the Fourth District (southeastern US) might hold WB4XYZ. Vanity call signs — where a licensee requests a specific available call sign — have been available since 1996 and are tracked in the ULS under the same license record structure as sequentially assigned signs.
Commercial mobile wireless licenses for AT&T, Verizon, T-Mobile, and hundreds of smaller carriers are also in ULS. A cellular license grants the right to operate on a specific frequency block in a specific geographic area — the license record identifies the licensee, the radio service code (CL for cellular, BC for broadband PCS, EA for AWS, EU for C-band), the geographic area, and the frequency range. Public safety records cover the P25 digital trunked radio systems used by county sheriffs, state police, fire departments, and emergency management agencies. Experimental licenses, satellite earth station authorizations, private land mobile radio, and microwave point-to-point links round out the major service categories.
The National Table of Frequency Allocations
The legal framework for which services can operate on which frequencies is the National Table of Frequency Allocations, codified at 47 CFR Part 2. The Table divides the radio spectrum from 9 kHz to 275 GHz into frequency bands and specifies, for each band, which radio services are allocated to operate there. Allocations can be primary (the service has protected status; other services must not cause harmful interference to it) or secondary (the service may operate but must accept interference from primary services and may not cause interference to them).
Two separate agencies administer spectrum under the Table. The National Telecommunications and Information Administration, part of the Department of Commerce, manages spectrum allocated for federal government use: the Department of Defense operates radars, satellite uplinks, and battlefield communications on federal allocations; NASA operates deep-space tracking stations; the FAA operates aviation navigation aids and surveillance radars; the National Weather Service operates weather radars on federal allocations. The FCC manages all non-federal use — commercial wireless carriers, broadcast stations, amateur radio, industrial and scientific equipment, and unlicensed devices like Wi-Fi routers and Bluetooth devices operating under Part 15.
Many frequency bands carry both federal and non-federal allocations, creating the need for coordination mechanisms. The 3.5 GHz Citizens Broadband Radio Service band is the most elaborate example: federal radar systems (shipborne and ground-based) are the incumbents; commercial users operate around them using a three-tier access model with spectrum access system (SAS) databases that enforce geographic and temporal exclusion zones in real time. The 70 GHz and 80 GHz millimeter-wave bands use an online coordination system where operators register point-to-point links and receive protection from later-registered links on the same path.
Frequency Bands and Wireless Generations
The physics of radio wave propagation creates distinct propagation characteristics at different frequency ranges, and the spectrum policy landscape has been shaped around these physical realities.
| Band | Frequencies | Key Services | Propagation |
|---|---|---|---|
| 600 MHz | 617–652 / 663–698 MHz | T-Mobile 5G, FirstNet (AT&T) | Long range, excellent building penetration |
| 700 MHz | 698–806 MHz | AT&T, Verizon LTE; FirstNet Band 14 | Long range, high building penetration |
| AWS | 1.7 / 2.1 GHz | AWS-1, AWS-3, AWS-4; major carriers | Moderate range, LTE capacity layer |
| 2.5 GHz (EBS/BRS) | 2496–2690 MHz | T-Mobile mid-band 5G (acquired Sprint) | Good capacity, moderate coverage |
| CBRS (3.5 GHz) | 3550–3700 MHz | GAA unlicensed, PAL licensed, federal radar | Three-tier sharing, private LTE/5G |
| C-band | 3.7–3.98 GHz | AT&T, Verizon, T-Mobile 5G (Auction 110) | 5G mid-band capacity workhorse |
| 3.45 GHz | 3450–3550 MHz | DoD sharing; Auction 108 winners | 5G supplement, incumbent DoD radar |
| mmWave 24 GHz | 24.25–24.45 / 24.75–25.25 GHz | Verizon 5G mmWave (Auction 101/102) | Ultra-high capacity, very short range |
| mmWave 28/37/39 GHz | 27.5–28.35 / 37–40 GHz | 5G mmWave dense urban deployments | Line-of-sight, limited building penetration |
Low-band spectrum below 1 GHz is the foundation of rural and suburban wireless coverage. A single 600 MHz tower covers tens of miles in flat terrain and penetrates building walls and basements that higher frequencies cannot reach. T-Mobile's aggressive acquisition of 600 MHz licenses at Auction 1001 in 2017 gave it the widest geographic footprint of any US carrier, crucial for its coverage claims in rural markets. AT&T's FirstNet network, the congressionally mandated nationwide public safety broadband network, operates on Band 14 (758–768 / 788–798 MHz) carved out of the 700 MHz band.
Mid-band spectrum from roughly 1 GHz to 7 GHz is the capacity workhorse of 5G. The C-band segment from 3.7 to 3.98 GHz, cleared from incumbent satellite earth station users who received $9.7 billion in relocation payments, became the most contested spectrum in US history at Auction 110 in 2021. Verizon alone spent $45.45 billion to acquire C-band licenses, more than any single buyer in any spectrum auction anywhere in the world. AT&T spent $23.4 billion; T-Mobile spent $9.3 billion. All three carriers began deploying C-band 5G in 2022, with ongoing rollouts expanding coverage from major metro areas to suburban and exurban markets.
Millimeter-wave spectrum above 24 GHz offers vast amounts of bandwidth — hundreds of megahertz per license rather than the ten to fifty megahertz typical of low- and mid-band licenses — but propagates only line-of-sight over distances measured in city blocks. Rain attenuation affects frequencies above 10 GHz; mmWave links fail entirely in heavy rain. The FCC has auctioned multiple mmWave bands since 2019 and licensed them using a smaller geographic unit called a Partial Economic Area (PEA), appropriate for the short-range propagation characteristics.
FCC Spectrum Auctions
Before 1994, the FCC assigned spectrum licenses through comparative hearings (where competing applicants argued their merits before an administrative law judge) or lotteries. Both methods were slow and did not necessarily assign spectrum to those who would put it to the highest-value use. The Omnibus Budget Reconciliation Act of 1993 authorized the FCC to use competitive bidding — auctions — to assign licenses when there are more applicants than available licenses. The FCC has since conducted more than a hundred spectrum auctions, raising over $250 billion for the US Treasury.
The FCC's standard auction format is the simultaneous multi-round ascending (SMRA) auction, in which all licenses are offered simultaneously and bidding proceeds in rounds. Bidders may bid on any license in each round; after each round the FCC announces standing high bids and minimum acceptable bids for the next round. The auction closes when a round passes with no new bids on any license. SMRA allows bidders to construct portfolios of complementary licenses — a carrier bidding for a regional footprint can switch its bids among different geographic combinations in response to competitors' activity. For more complex auctions with many interdependencies, the FCC has used the combinatorial clock auction (CCA), where bidders express package bids on combinations of licenses rather than individual items.
The five largest spectrum auctions by proceeds illustrate how dramatically the commercial value of spectrum has grown over three decades:
| Auction | Band | Year | Proceeds |
|---|---|---|---|
| Auction 110 | C-band (3.7–3.98 GHz) | 2021 | $81.0B |
| Auction 97 | AWS-3 (1.7 / 2.1 GHz) | 2015 | $41.0B |
| Auction 108 | 3.45 GHz | 2021 | $22.4B |
| Auction 1001 | 600 MHz (Incentive Auction) | 2017 | $19.8B |
| Auction 66 | AWS-1 (1.7 / 2.1 GHz) | 2006 | $13.7B |
Auction 110, the C-band auction, was structurally different from earlier auctions because the incumbent C-band users were satellite operators (SES, Intelsat, Eutelsat) who had been using 3.7–4.2 GHz for decades to deliver video and data to broadcasters, cable headends, and enterprise customers. Clearing them required reimbursing their transition costs and funding a voluntary incentive to vacate the lower 280 MHz of the band quickly. The $9.7 billion in transition payments to satellite operators came from the auction winners, not from the federal budget. The FCC split the auction into two phases, with Phase I clearing completed by December 2021 (in major markets) and Phase II by December 2023 (nationwide).
The 600 MHz Incentive Auction (Auction 1001) used a two-sided design unique in spectrum policy history. On the supply side, the FCC ran a “reverse auction” in which UHF television broadcasters bid to relinquish their licenses (or move to a lower channel), with the FCC paying them from auction proceeds. On the demand side, the FCC ran a forward auction selling the cleared spectrum to wireless carriers. T-Mobile spent approximately $8 billion in the forward auction, acquiring licenses covering nearly the entire continental US at 600 MHz, which became the backbone of its nationwide 5G network launched in 2019.
Geographic license units vary by service and auction. Early cellular licenses used Metropolitan Statistical Areas (MSAs) and Rural Service Areas (RSAs). PCS licenses used Basic Trading Areas (BTAs) and Major Trading Areas (MTAs). More recent auctions use Economic Areas (EAs), Partial Economic Areas (PEAs), or counties. The smaller the geographic unit, the more licenses per auction — Auction 110 offered 5,684 C-band licenses using Partial Economic Areas — which increases complexity for bidders attempting to assemble contiguous regional footprints.
License Structure and Key Data Fields
Every ULS license record is anchored by a Unique System Identifier (also called the Unique Registration Number or URN), a numeric key assigned by the ULS database. For licensed radio stations that operate with a call sign — amateur radio operators, broadcast stations, ship stations, coast stations — the call sign serves as the human-readable license identifier. Geographic area licenses (cellular, PCS, AWS, C-band) may not have a traditional call sign; the URN is the primary key.
Core license fields present in every ULS record include:
- Radio service code — a two-character code identifying the regulatory service category. HA = Amateur; CL = Cellular; BC = Broadband PCS; EA = AWS; EU = C-band 3.7 GHz; YG = 39 GHz; MG = Microwave (common carrier); MW = Microwave (private operational fixed); IG = ESMR; YM = 24 GHz. The full table contains more than a hundred service codes.
- License status — A = Active, E = Expired, C = Cancelled, T = Terminated, L = Pending. Bulk data analysis typically filters to status A for active licenses.
- FCC Registration Number (FRN) — the unique identifier for the licensee entity in the FCC's Commission Registration System (CORES). All commercial entities, government agencies, and individuals with any FCC authorization have an FRN. It is the key for aggregating licenses across a corporate family.
- Grant date and expiration date — when the license became effective and when it expires if not renewed. Most commercial wireless licenses have ten-year terms; amateur radio licenses have ten-year terms; broadcast licenses have eight-year terms.
- Frequency range — for frequency-specific licenses (microwave point-to-point links, private land mobile, amateur), the lower and upper bounds of the authorized frequency range in MHz. For geographic area licenses, the frequency block is defined by the service code and market designation rather than per-station frequency records.
- Location — for individual station licenses, latitude and longitude of the antenna site (in degrees, minutes, seconds). For geographic area licenses, the ULS stores the area designator (county FIPS code, Economic Area number, or PEA number) rather than a point location.
- Authorization class — Regular (individual station), Geographic Area (blanket authorization covering all stations within a defined area without individual site registration), or Blanket (covering multiple specified stations, common for satellite earth stations and private microwave networks). Satellite earth station operators typically hold a single blanket authorization covering hundreds or thousands of individual terminals.
Amateur radio licenses carry additional fields through the AM (amateur) table in the ULS bulk data: operator class (Technician, General, Amateur Extra), sequential date (when the call sign was first issued), and whether the license is a vanity call sign or a sequentially assigned one. The three license classes differ in which frequency bands and emission types the operator is authorized to use. Technician class has limited HF privileges; General class has substantial HF access; Amateur Extra has full privileges on all amateur bands. The class distribution among active US amateur licensees, as of recent ULS data, is approximately 44 percent Technician, 35 percent General, and 21 percent Extra.
Broadcast Licensing: CDBS and LMS
Broadcast licenses — AM and FM radio stations, full-power television stations, low-power TV stations, FM translators, and TV translators — are administered by the FCC's Media Bureau separately from the wireless services in ULS. The legacy database for broadcast records is the Consolidated Database System (CDBS), which has been in production since the 1990s. The FCC launched the Licensing Management System (LMS) as its long-term CDBS replacement; as of 2026 LMS handles new applications and most renewal processing, while CDBS remains available for historical record lookups.
Broadcast license records contain data elements specific to the service. An FM station record includes its community of license (the city the station is licensed to serve, which determines its protected contour), its effective radiated power in kilowatts, its antenna height above average terrain (HAAT) in meters, its antenna coordinates, and its horizontal radiation pattern if the antenna is directional. The FCC's contour maps, generated from these engineering parameters, define the service area within which the station receives primary interference protection. A call sign lookup for WFAN (660 AM, New York) or WSB-TV (Channel 2, Atlanta) in CDBS or LMS returns the full license record including these engineering parameters and a link to the current license document.
The ATSC 3.0 transition — the voluntary upgrade of over-the-air television to the fourth-generation broadcast standard — adds another layer to broadcast licensing. A station deploying ATSC 3.0 transmits the new signal on a channel other than its licensed channel (via a “host” station that carries its content), while maintaining ATSC 1.0 service on its licensed channel. The transitional permission, called a Simulcast Protection Agreement, is recorded in the LMS. Markets where ATSC 3.0 is already deployed include Las Vegas, Phoenix, Dallas–Fort Worth, Cleveland, and several others; the build-out continues market by market under a voluntary framework.
ULS Bulk Data: Schema and Download
The FCC publishes complete ULS bulk data dumps at data.fcc.gov/download/pub/uls/complete/. Each radio service has its own zip archive, named by service code: l_amat.zip for amateur radio, l_cell.zip for cellular, l_micro.zip for private microwave, and so on. Within each zip, the data is split into pipe-delimited flat files named by ULS table code.
The core ULS tables present in most service archives are:
| Table Code | File | Contents |
|---|---|---|
| EN | EN.dat | Entity: licensee name, address, city, state, zip, FRN, entity type |
| HD | HD.dat | Header: call sign, license status, radio service, grant/expiration dates |
| LO | LO.dat | Location: antenna latitude/longitude, elevation, ground elevation |
| FR | FR.dat | Frequency: lower/upper frequency limits, power, emission designator |
| AN | AN.dat | Antenna: make, model, height, beamwidth, polarization, gain |
| HS | HS.dat | History: audit trail of all status changes and filings for each license |
| AM | AM.dat | Amateur: operator class, sequential date, vanity indicator (amateur only) |
Each table row begins with the two-character table code (record type) in the first pipe-delimited field, followed by the unique_system_id that links records across tables. A given license's entity record in EN, its header record in HD, and its frequency records in FR all share the same unique_system_id. Joining across tables on this key reconstructs the full license record. For analytical work, a pandas merge on unique_system_id between EN and HD yields a combined table of licensee names, states, call signs, and license status in a single DataFrame.
License status codes follow a consistent convention across all ULS service archives. A = Active (currently valid license), E = Expired (past expiration date, no renewal filed), C = Cancelled (voluntarily surrendered or administratively cancelled), T = Terminated (license term complete), L = Applied-for (application pending, not yet granted). Most aggregate counts of the “25 million wireless licenses” refer to status-A records only. The full ULS database, including expired and cancelled historical records, is substantially larger.
The FCC also operates a web search interface at wireless.fcc.gov/uls/index.htm where individual licenses can be looked up by call sign, FRN, name, or frequency. For programmatic access to individual records, an unofficial JSON endpoint returns license summary data for a given call sign at data.fcc.gov/api/license-view/basicSearch/getLicenses?searchValue=W9ABC. Neither the web interface nor the informal JSON endpoint is a substitute for the bulk data for any analysis spanning more than a few hundred licenses.
Python: Amateur Radio Operator Density by State
The script below downloads the ULS amateur radio bulk data archive, parses the EN (entity) and HD (header) tables from the pipe-delimited flat files inside the zip, filters to active licenses, and aggregates operator counts by state. It then normalizes against 2020 Census state populations to produce a per-capita ranking of amateur radio operator density, printing the top fifteen states and the top five by per-capita rate. An optional choropleth using Plotly visualizes the density map for all fifty states and DC.
import io
import zipfile
import urllib.request
import pandas as pd
import collections
# ULS Amateur Radio bulk download
# Tables: EN (entity), HD (header/license), AM (amateur details)
# Full table list: https://www.fcc.gov/sites/default/files/pubacc_am.zip
# Layout: https://www.fcc.gov/sites/default/files/pubacc_am_cs.pdf
BASE_URL = 'https://data.fcc.gov/download/pub/uls/complete/'
FILES = {
'EN': 'l_amat.zip', # entity records (licensee name, address)
'HD': 'l_amat.zip', # header/license record (same zip, different table)
}
# Column names for EN and HD records (pipe-delimited, first field is record type)
EN_COLS = [
'record_type', 'unique_system_id', 'uls_file_number', 'ebf_number',
'call_sign', 'entity_type', 'licensee_id', 'entity_name',
'first_name', 'mi', 'last_name', 'suffix', 'phone', 'fax', 'email',
'street_address', 'city', 'state', 'zip_code', 'po_box',
'attention_line', 'sgin', 'frn', 'applicant_type_code',
'applicant_type_code_other', 'status_code', 'status_date',
]
HD_COLS = [
'record_type', 'unique_system_id', 'uls_file_number', 'ebf_number',
'call_sign', 'license_status', 'radio_service_code',
'grant_date', 'expired_date', 'cancellation_date',
'eligibility_rule_number', 'reserved', 'alien', 'alien_government',
'alien_corporation', 'alien_officer', 'alien_control', 'revoked',
'convicted', 'adjudged', 'reserved2', 'common_carrier',
'non_common_carrier', 'private_comm', 'fixed', 'mobile',
'radiolocation', 'satellite', 'developmental', 'interconnected',
'certifier_first_name', 'certifier_mi', 'certifier_last_name',
'certifier_suffix', 'certifier_title', 'female',
'minority', 'hispanic', 'native_american', 'white',
'black', 'asian', 'pacific_islander', 'bi_linguist',
'tribal_lands', 'birthday', 'zip_code_of_licensee',
'vet_status', 'vet_code', 'last_action_date',
'auction_filing_number', 'broadband_ind',
]
print('Downloading ULS Amateur Radio bulk data (~50 MB)...')
url = BASE_URL + 'l_amat.zip'
with urllib.request.urlopen(url, timeout=120) as resp:
raw = resp.read()
zf = zipfile.ZipFile(io.BytesIO(raw))
names = zf.namelist()
print('Files in archive: ' + str(names))
# Read EN (entity) table
with zf.open('EN.dat') as f:
en_df = pd.read_csv(
f, sep='|', header=None, names=EN_COLS[:len(EN_COLS)],
dtype=str, encoding='latin-1', on_bad_lines='skip',
)
# Read HD (header/license) table
with zf.open('HD.dat') as f:
hd_df = pd.read_csv(
f, sep='|', header=None, names=HD_COLS[:len(HD_COLS)],
dtype=str, encoding='latin-1', on_bad_lines='skip',
)
print('EN records loaded: ' + str(len(en_df)))
print('HD records loaded: ' + str(len(hd_df)))
# Filter to active licenses (license_status == 'A') in HD
active_hd = hd_df[hd_df['license_status'] == 'A'].copy()
print('Active licenses: ' + str(len(active_hd)))
# Join EN to active HD on unique_system_id (the URN)
merged = active_hd[['unique_system_id', 'call_sign', 'license_status']].merge(
en_df[['unique_system_id', 'state', 'entity_name']],
on='unique_system_id',
how='left',
)
# Count active amateur licenses by state
state_counts = (
merged.dropna(subset=['state'])
.groupby('state')
.size()
.rename('active_licenses')
.sort_values(ascending=False)
)
# 2020 US Census state population (thousands) for per-capita normalization
STATE_POP_K = {
'CA': 39538223, 'TX': 29145505, 'FL': 21538187, 'NY': 20201249,
'PA': 13002700, 'IL': 12812508, 'OH': 11799448, 'GA': 10711908,
'NC': 10439388, 'MI': 10077331, 'NJ': 9288994, 'VA': 8631393,
'WA': 7705281, 'AZ': 7151502, 'TN': 6910840, 'MA': 7029917,
'IN': 6785528, 'MO': 6154913, 'MD': 6177224, 'WI': 5893718,
'CO': 5773714, 'MN': 5706494, 'SC': 5118425, 'AL': 5024279,
'LA': 4657757, 'KY': 4505836, 'OR': 4237256, 'OK': 3959353,
'CT': 3605944, 'UT': 3271616, 'IA': 3190369, 'NV': 3104614,
'AR': 3011524, 'MS': 2961279, 'KS': 2937880, 'NM': 2117522,
'NE': 1961504, 'ID': 1839106, 'WV': 1793716, 'HI': 1455271,
'NH': 1377529, 'ME': 1362359, 'RI': 1097379, 'MT': 1084225,
'DE': 989948, 'SD': 886667, 'ND': 779094, 'AK': 733391,
'VT': 643077, 'WY': 576851, 'DC': 689545,
}
pop_series = pd.Series(STATE_POP_K, name='population')
combined = pd.concat([state_counts, pop_series], axis=1).dropna()
combined['per_100k'] = (combined['active_licenses'] / combined['population'] * 100_000).round(1)
combined = combined.sort_values('per_100k', ascending=False)
print('')
print('Amateur Radio Operators per 100,000 Population by State')
print('-' * 52)
print('State Active Licenses Population Per 100k')
print('-' * 52)
for state, row in combined.head(15).iterrows():
print(
state.ljust(8)
+ str(int(row['active_licenses'])).rjust(16)
+ str(int(row['population'])).rjust(14)
+ str(row['per_100k']).rjust(10)
)
print('')
print('Top 5 states by per-capita amateur radio operators:')
for i, (state, row) in enumerate(combined.head(5).iterrows(), 1):
print(str(i) + '. ' + state + ' (' + str(row['per_100k']) + ' per 100k population)')
# Optional choropleth using plotly (pip install plotly)
try:
import plotly.express as px
fig = px.choropleth(
combined.reset_index().rename(columns={'index': 'state'}),
locations='state',
locationmode='USA-states',
color='per_100k',
scope='usa',
color_continuous_scale='Blues',
title='Amateur Radio Operators per 100,000 Population (FCC ULS Active Licenses)',
labels={'per_100k': 'Per 100k population'},
)
fig.write_html('amateur_radio_density.html')
print('')
print('Choropleth saved to amateur_radio_density.html')
except ImportError:
print('')
print('plotly not installed -- skipping choropleth. pip install plotly to enable.')
A few implementation notes. The ULS bulk files use Latin-1 encoding (not UTF-8); the encoding='latin-1' parameter prevents decode errors on special characters in licensee names and addresses. The on_bad_lines='skip'parameter discards a small number of malformed rows that have mismatched pipe counts. The HD table contains one row per license; the EN table contains one row per entity-license combination (a licensee with multiple licenses appears multiple times in EN, once per license). The join on unique_system_id is therefore one-to-one between HD and EN for the amateur service, where each license has exactly one primary entity record. The per-capita analysis reveals that high-density states for amateur radio tend to be those with active amateur radio clubs, proximity to major universities with amateur radio clubs (ARRL affiliated organizations), and states with large retired populations who have time to pursue the hobby after finishing a working career. States in the Mountain West, with their long-distance HF propagation traditions and emergency preparedness culture, consistently rank high on a per-capita basis.
Census CPS Poverty Data: The Current Population Survey Behind US Poverty Statistics — how the Bureau of the Census and Bureau of Labor Statistics jointly produce the official US poverty rate through the Annual Social and Economic Supplement, the distinction between the official poverty measure and the Supplemental Poverty Measure, and Python for pulling state-level poverty estimates from the Census API.
SEC EDGAR XBRL: The Machine-Readable Financial Statement Database Behind Every Public Company — how the SEC's mandatory XBRL tagging requirement created a free structured JSON API covering 7,000 active filers, the US-GAAP taxonomy, the Company Facts and Frames APIs, data quality challenges with extension elements and concept mapping, and Python for Apple's revenue and net income history from SEC data.