datafloe Get a key

Provenance record

US food prices, monthly (BLS Average Price)

Where every row came from — source, original license, transformations, and redistribution basis, recorded before the API went live.

us-food-prices

Dataset slug: us-food-prices Status: LIVE (monthly refresh — ADR-013)

This is the live/current food-price dataset: the fresh companion to the historical, static F-MAP grocery-prices. Together they sell the "current prices + deep history" angle; separately because the two sources have incompatible schemas (BLS = dollar prices per item; F-MAP = price indexes per category). Catalog freshness for the current food-price story rides on this dataset.

Source

  • Publisher: U.S. Bureau of Labor Statistics (BLS), Consumer Price Index program — Average Price (AP) survey.
  • Factsheet: https://www.bls.gov/cpi/factsheets/average-prices.htm
  • Flat files retrieved (public FTP mirror): https://download.bls.gov/pub/time.series/ap/
    • ap.data.3.Food — all food-item observations (series_id, year, period, value)
    • ap.series — series_id → area_code, item_code
    • ap.item — item_code → item_name
    • ap.area — area_code → area_name
  • Retrieved: 2026-07-13 · Latest observation (as-of): 2026-05
  • Access note: download.bls.gov 403s requests without a browser User-Agent; the ingest sends an honest identifying UA (ingest/lib/fetch.ts). No API key required.

License / redistribution basis

  • Original license: Public domain. Works of the U.S. federal government (BLS) are not subject to copyright (17 U.S.C. §105). BLS copyright policy: data may be reused freely; citation requested, not required.
  • Redistribution basis: Public-domain U.S. Government work — free to redistribute, including commercially. No share-alike, no attribution obligation (we cite BLS anyway).
  • Recommended citation (carried into the API license endpoint): U.S. Bureau of Labor Statistics, Average Price Data (AP), Consumer Price Index program.

Transformations applied (ingest/sources/bls-food.ts)

  1. Scope filter. Kept the documented food scope: U.S. city average (0000) + the 4 census regions (0100 Northeast, 0200 Midwest, 0300 South, 0400 West). BLS publishes food AP only for these areas.
  2. Decoded codes from ap.series/ap.item/ap.area: each row carries series_id, area_code+area_name, item_code+item_name.
  3. Period → month. BLS periods M01M12 become integer month 1–12. M13 (annual average) is not published for food and is skipped if present.
  4. Values kept verbatim. value (average price in USD, 3 decimal places) is stored unchanged as price_usd. Non-numeric/empty observations skipped.
  5. No rounding, no unit conversion, no inflation adjustment.

Freshness

  • Cadence: monthly. BLS releases new AP data with each CPI release, typically the 10th–14th of the month after the reference month. Refresh cron: 15th 07:00 UTC.
  • Refresh path: ingest/refresh-us-food-prices.ts → validation gates (schema, row-count floor 100K & ±10% delta, any item's latest price moving >50% MoM holds the batch) → apply to prod D1 → dataset_meta.last_refreshed updated. Snapshot committed as audit trail (ingest/snapshots/us-food-prices.json).

Coverage

  • Items: ~100 food categories · Areas: 5 (US city avg + 4 regions) · Rows: 149,011
  • History: monthly back to 1980 for long-running items ("deep history"), current through 2026-05.
  • Prices are nominal USD, not inflation-adjusted, per the source.