Same BLS number, two answers: the seasonal adjustment letter in the series id
Checked 2026-09-08 · Vintages and revisions
Two BLS series ids that differ only in one letter return different numbers for the same month, because one is seasonally adjusted and one is not. The letter is the third character: CUSR vs CUUR for CPI, CES vs CEU for payrolls, LNS vs LNU for the household survey. Nothing in the API response says which you got - not a field, not a flag, not a footnote. If a figure does not match a source, check that letter before checking anything else.
What we saw
CPI for all urban consumers, US city average, July 2026: the adjusted index is 332.813 and the unadjusted index is 333.918, a gap of 1.105 index points. Source (Results.series[].data where year=2026 and period=M07, series CUSR0000SA0 and CUUR0000SA0, 2026-09-08).
CUSR0000SA0 [('2026-M07', '332.813'), ('2026-M06', '332.568'), ('2026-M05', '333.979'), ('2026-M04', '332.407')]
CUUR0000SA0 [('2026-M07', '333.918'), ('2026-M06', '333.952'), ('2026-M05', '335.123'), ('2026-M04', '333.020')]Total nonfarm employment, June 2026: adjusted 158,892 thousand, unadjusted 159,734 thousand - 842 thousand apart. The sign of the gap flips within the year, so it is not a constant offset you can correct for. Source (Results.series[].data, series CES0000000001 and CEU0000000001, 2026-09-08).
CES0000000001 [('2026-M08', '159075'), ('2026-M07', '158913'), ('2026-M06', '158892'), ('2026-M05', '158861')]
CEU0000000001 [('2026-M08', '158880'), ('2026-M07', '158726'), ('2026-M06', '159734'), ('2026-M05', '159386')]Unemployment rate, August 2026: 4.1 adjusted, 4.3 unadjusted. Two tenths on a headline number, from one letter. Source (Results.series[].data, series LNS14000000 and LNU04000000, 2026-09-08).
LNS14000000 [('2026-M08', '4.1'), ('2026-M07', '4.1'), ('2026-M06', '4.2'), ('2026-M05', '4.3')]
LNU04000000 [('2026-M08', '4.3'), ('2026-M07', '4.4'), ('2026-M06', '4.4'), ('2026-M05', '4.1')]All six series came back in one response with an empty message array, so nothing in the API flags the difference or warns that the pair is not comparable. Source (status and message fields, 2026-09-08).
REQUEST_SUCCEEDED []
For payrolls the adjustment is documented as a per-series operation, which is why the adjusted total is not the sum of the adjusted parts. Source (footnote_code I, 2026-09-08).
I Seasonally Adjusted Independently. See www.bls.gov/opub/hom/ces/calculation.htm for details.
The command
curl -sS -X POST -H 'Content-Type: application/json' -d '{"seriesid":["CUSR0000SA0","CUUR0000SA0","CES0000000001","CEU0000000001","LNS14000000","LNU04000000"],"startyear":"2026","endyear":"2026"}' 'https://api.bls.gov/publicAPI/v2/timeseries/data/'REQUEST_SUCCEEDED []
CUSR0000SA0 [('2026-M07', '332.813'), ('2026-M06', '332.568'), ('2026-M05', '333.979'), ('2026-M04', '332.407')]
CUUR0000SA0 [('2026-M07', '333.918'), ('2026-M06', '333.952'), ('2026-M05', '335.123'), ('2026-M04', '333.020')]
CES0000000001 [('2026-M08', '159075'), ('2026-M07', '158913'), ('2026-M06', '158892'), ('2026-M05', '158861')]
CEU0000000001 [('2026-M08', '158880'), ('2026-M07', '158726'), ('2026-M06', '159734'), ('2026-M05', '159386')]
LNS14000000 [('2026-M08', '4.1'), ('2026-M07', '4.1'), ('2026-M06', '4.2'), ('2026-M05', '4.3')]
LNU04000000 [('2026-M08', '4.3'), ('2026-M07', '4.4'), ('2026-M06', '4.4'), ('2026-M05', '4.1')]Checked 2026-09-08.
curl -sS -A 'x@y.com' 'https://download.bls.gov/pub/time.series/ce/ce.footnote'
footnote_code footnote_text A Data unavailable due to the 2025 lapse in appropriations I Seasonally Adjusted Independently. See www.bls.gov/opub/hom/ces/calculation.htm for details. P preliminary
Checked 2026-09-08.
| what | adjusted id | unadjusted id | month | adjusted | unadjusted | difference |
|---|---|---|---|---|---|---|
| CPI-U, US city average, all items | CUSR0000SA0 | CUUR0000SA0 | 2026-07 | 332.813 | 333.918 | 1.105 index points |
| Total nonfarm employment | CES0000000001 | CEU0000000001 | 2026-06 | 158892 | 159734 | 842 thousand |
| Total nonfarm employment | CES0000000001 | CEU0000000001 | 2026-08 | 159075 | 158880 | -195 thousand |
| Unemployment rate | LNS14000000 | LNU04000000 | 2026-08 | 4.1 | 4.3 | 0.2 percentage points |
Limits
- Which of the two a given publication used is a judgement this page cannot settle. All it establishes is that the pair exists, that the gap is large enough to matter, and that its sign is not stable.
- Four series pairs from three surveys were checked. The third-character convention is consistent across those, but it is a naming convention, not a guarantee, and a fourth survey could break it.
- The values above are the current vintage. They will be revised - see the footnote-codes page in this section - so a difference between an adjusted and an unadjusted figure pulled on different days mixes two effects.
- No key was available, so the API's catalog block, which names the adjustment explicitly, could not be retrieved to confirm it against the id.
Open question
The catalog block is disabled for keyless callers, so a keyless client has no in-band way to read a series' adjustment status. Is there any keyless endpoint that returns it, or is parsing the id the only option?