US BLS Labor Statistics Scraper (Unemployment, CPI, Wages) avatar

US BLS Labor Statistics Scraper (Unemployment, CPI, Wages)

Pricing

from $12.75 / 1,000 results

Go to Apify Store
US BLS Labor Statistics Scraper (Unemployment, CPI, Wages)

US BLS Labor Statistics Scraper (Unemployment, CPI, Wages)

Scrape U.S. Bureau of Labor Statistics time series: unemployment, inflation (CPI), producer prices (PPI), payroll employment, wages, hours and job openings. Pick a friendly indicator name or paste raw series IDs. Clean flat rows with value, period and dates. Export to JSON, CSV or Excel.

Pricing

from $12.75 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 days ago

Last modified

Share

US BLS Labor Statistics Scraper (Unemployment, CPI, Wages)

US BLS Labor Statistics Scraper (Unemployment, CPI, Wages)

Here is one real result, with every field the actor returns:

{
"seriesId": "LNS14000000",
"indicator": "Unemployment Rate (U-3, seasonally adjusted)",
"surveyName": null,
"year": 2024,
"period": "M12",
"periodName": "December",
"periodType": "Monthly",
"month": 12,
"date": "2024-12-01",
"value": 4.1,
"netChange1Month": null,
"netChange3Month": null,
"netChange6Month": null,
"netChange12Month": null,
"pctChange1Month": null,
"pctChange3Month": null,
"pctChange6Month": null,
"pctChange12Month": null,
"isLatest": null,
"footnotes": null,
"source": "U.S. Bureau of Labor Statistics",
"observedAt": "2026-08-10T14:35:04.224Z"
}

The most complete US Bureau of Labor Statistics scraper available. It returns one clean, flat row per data point with the value, period, and normalized date, covering unemployment, inflation (CPI), producer prices (PPI), payroll employment, wages, hours, and job openings, and gives you friendly indicator presets plus raw series-ID support so you can pull exactly the series and years you need.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor reads U.S. Bureau of Labor Statistics time series. Pick one or more friendly indicator presets (for example unemployment-rate, cpi-inflation, nonfarm-payrolls, avg-hourly-earnings, job-openings) or paste any raw BLS series ID (for example LNS14000000). Set a start and end year, and the actor returns one normalized row per data point across every series in the run.

Each row carries the series ID, a readable indicator name, the year, the BLS period code and name, a normalized date, and the numeric value. When you supply a free BLS registration key, the source also returns month-over-month and year-over-year change calculations and richer series metadata, which the actor maps into the netChange* and pctChange* fields.

Values are returned as numbers, dates are normalized to YYYY-MM-DD, and missing source values are returned as null, never invented.

Quickstart

Open the actor, paste this into the input, and press Run. It returns monthly unemployment rate and CPI inflation data for 2022 through 2024.

{
"series": ["unemployment-rate", "cpi-inflation"],
"startYear": 2022,
"endYear": 2024,
"maxRecords": 500
}

Use any combination of presets and raw series IDs in series. Every input field is optional; with an empty input the actor uses its default indicators and year range.

Input reference

FieldTypeRequiredDefaultDescription
seriesstring[]no["unemployment-rate","cpi-inflation"]Indicator presets or raw BLS series IDs. Presets include unemployment-rate, labor-force-participation, nonfarm-payrolls, private-payrolls, avg-hourly-earnings, avg-weekly-hours, cpi-inflation, cpi-core, cpi-food, cpi-energy, ppi-final-demand, job-openings, quits, hires, layoffs, and more. Raw IDs such as LNS14000000 also work.
startYearintegerno2022First year to return (inclusive).
endYearintegerno2024Last year to return (inclusive).
maxRecordsintegerno500Maximum data points to return across the whole run. Free Apify plans are capped at 50.
apiTokenstring (secret)no(empty)Optional free BLS registration key. Unlocks higher source limits, change calculations, and richer metadata.

Output reference

One dataset item per data point. Types: string, integer, number, boolean, or null when the source value is absent.

FieldTypeDescription
seriesIdstringBLS series ID, for example LNS14000000.
indicatorstringReadable indicator name for the series.
surveyNamestringBLS survey name, when metadata is available (registration key).
yearintegerCalendar year of the data point.
periodstringBLS period code, for example M12 (December) or Q01.
periodNamestringReadable period name, for example December.
periodTypestringPeriod type, for example Monthly, Quarterly, Annual.
monthintegerMonth number (1-12) for monthly series, or null.
datestringNormalized date of the data point (YYYY-MM-DD).
valuenumberThe reported value for the series and period.
netChange1MonthnumberNet change over 1 month, or null (registration key).
netChange3MonthnumberNet change over 3 months, or null (registration key).
netChange6MonthnumberNet change over 6 months, or null (registration key).
netChange12MonthnumberNet change over 12 months, or null (registration key).
pctChange1MonthnumberPercent change over 1 month, or null (registration key).
pctChange3MonthnumberPercent change over 3 months, or null (registration key).
pctChange6MonthnumberPercent change over 6 months, or null (registration key).
pctChange12MonthnumberPercent change over 12 months, or null (registration key).
isLatestbooleanWhether this is the most recent point in the series, or null.
footnotesstringBLS footnotes for the data point, or null.
sourcestringAlways U.S. Bureau of Labor Statistics.
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringPresent only on a failed run; a single item with a populated error field is written instead.

Example output record

Real record from a live run (input {"series": ["unemployment-rate","cpi-inflation"], "startYear": 2022, "endYear": 2024}):

{
"seriesId": "LNS14000000",
"indicator": "Unemployment Rate (U-3, seasonally adjusted)",
"year": 2024,
"period": "M12",
"periodName": "December",
"periodType": "Monthly",
"month": 12,
"date": "2024-12-01",
"value": 4.1,
"isLatest": null,
"source": "U.S. Bureau of Labor Statistics",
"observedAt": "2026-08-10T14:35:04.224Z"
}

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~bls-labor-statistics-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"series":["unemployment-rate","cpi-inflation"],"startYear":2022,"endYear":2024,"maxRecords":500}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~bls-labor-statistics-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"series":["LNS14000000","nonfarm-payrolls"],"startYear":2015,"endYear":2024}'

Apify CLI:

apify call scrapers_lat/bls-labor-statistics-scraper \
--input '{"series":["cpi-core"],"startYear":2020,"endYear":2024}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per data point returned (result event). See the pricing tab for the current per-result price.
  • No charge on failure. If a run errors, the actor writes an item with a populated error field and does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 50 data points per run. Upgrade for higher maxRecords.
  • Registration key is optional. Public access works without a key. A free BLS registration key raises source limits and unlocks the netChange* and pctChange* fields.

FAQ and troubleshooting

A run returned 0 records. Why? No valid series were resolved, or the year range has no published data. Check the preset names or raw series IDs and widen the year range. Zero-result runs are not charged.

Why are the netChange* and pctChange* fields null? Those change calculations are returned by BLS only when you supply a free registration key in apiToken. Without a key, the value is still returned; the derived change fields stay null.

Can I mix presets and raw series IDs? Yes. Put any combination in series. Presets are resolved to their BLS series IDs, and raw IDs are passed through as-is.

How do I find a raw series ID? Use the BLS series-ID format shown on the BLS website (for example LNS14000000 for the unemployment rate). Any valid series ID works in series.

Is this an official BLS tool? No. This actor is independent and has no affiliation with the U.S. Bureau of Labor Statistics. It reads only data that is publicly available through the BLS public data service. Use it in accordance with the BLS terms of service.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with the U.S. Bureau of Labor Statistics. Accesses only publicly available BLS data. Use in accordance with the BLS terms of service.