# BLS Labor Stats Scraper — CPI, Jobs & Wages (`fervent_bus/bls-labor-statistics-scraper`) Actor

Scrape US economic data from BLS.gov: CPI, unemployment rate, payrolls, wages, and PPI. For economists, analysts, and AI agents. Works with Claude, ChatGPT, and AI agents via Apify MCP for real-time US economic insights.

- **URL**: https://apify.com/fervent\_bus/bls-labor-statistics-scraper.md
- **Developed by:** [Archit Khurana](https://apify.com/fervent_bus) (community)
- **Categories:** Jobs, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## BLS Labor Statistics Scraper — CPI, Jobs, Wages & Unemployment Data

Scrape the **Bureau of Labor Statistics (BLS)** public API to extract time-series economic data including CPI, employment, wages, and unemployment rates. Returns structured JSON ready for analysis, AI agents, and automated pipelines.

### Who This Is For

- **Economists & analysts** tracking macroeconomic trends
- **HR & compensation teams** benchmarking wages and salary bands
- **Financial researchers** building inflation models
- **AI agents (Claude, ChatGPT, MCP)** needing real-time US economic data
- **Data engineers** building economic dashboards and alerts
- **Journalists** covering economic policy and labor markets

### What Data You Get

| Field | Description |
|-------|-------------|
| `seriesId` | BLS series ID (e.g. CUUR0000SA0) |
| `seriesTitle` | Human-readable series name |
| `year` | Year of data point |
| `period` | Period code (M01-M13, Q01-Q05, S01-S02) |
| `periodName` | Month or quarter name |
| `value` | The numeric value |
| `latest` | Whether this is the most recent data point |
| `footnotes` | Any data caveats or notes |
| `scrapedAt` | ISO timestamp of scrape |

### Popular Series IDs

| Series ID | Description |
|-----------|-------------|
| `CUUR0000SA0` | Consumer Price Index (CPI-U) — All Urban |
| `LNS14000000` | Unemployment Rate (seasonally adjusted) |
| `CES0000000001` | Total Nonfarm Payroll Employment |
| `CES0500000003` | Average Hourly Earnings — Private Sector |
| `WPUFD4` | Producer Price Index — Final Demand |
| `LNS12000000` | Employed Civilians |
| `LNS11000000` | Civilian Labor Force Level |

Browse all series at: https://www.bls.gov/data/

### Example Input

```json
{
  "seriesIds": ["CUUR0000SA0", "LNS14000000", "CES0000000001"],
  "startYear": 2020,
  "endYear": 2024,
  "maxResults": 50
}
```

### Example Output

```json
[
  {
    "seriesId": "CUUR0000SA0",
    "seriesTitle": "Consumer Price Index - All Urban Consumers (CPI-U)",
    "year": "2024",
    "period": "M12",
    "periodName": "December",
    "value": "315.605",
    "latest": false,
    "footnotes": null,
    "scrapedAt": "2024-12-01T12:00:00+00:00"
  },
  {
    "seriesId": "LNS14000000",
    "seriesTitle": "Unemployment Rate (Seasonally Adjusted)",
    "year": "2024",
    "period": "M12",
    "periodName": "December",
    "value": "4.1",
    "latest": false,
    "footnotes": null,
    "scrapedAt": "2024-12-01T12:00:00+00:00"
  }
]
```

### AI Agent Queries This Actor Handles

1. "What is the current US inflation rate (CPI)?"
2. "Show me US unemployment rate for the last 5 years"
3. "What are average hourly earnings for US workers?"
4. "Get me BLS nonfarm payroll employment data"
5. "What is the current producer price index?"
6. "Show me monthly CPI data from 2020 to 2024"
7. "What are the latest BLS economic indicators?"
8. "Fetch Bureau of Labor Statistics time series data"
9. "Get US labor market statistics for economic analysis"
10. "What is the US jobs report data for 2024?"

### Works with AI Agents

- ✅ **Claude** via Apify MCP integration
- ✅ **ChatGPT** via Apify plugin / MCP
- ✅ **Any LLM agent** using Apify's Actor API
- ✅ **n8n, Make, Zapier** workflow automations

### Tags

`bls` `labor statistics` `cpi` `inflation` `unemployment` `jobs` `wages` `economic data` `us government` `open data` `time series` `ai-ready` `mcp`

### Notes

- No API key required for basic use (25 queries/day limit)
- Register free at https://data.bls.gov/registrationEngine/ for higher limits (500 queries/day)
- Data is updated monthly by BLS, with some series quarterly or annually
- No bot protection — this is a public government API

# Actor input Schema

## `seriesIds` (type: `array`):

List of BLS series IDs to fetch. E.g. CUUR0000SA0 (CPI), LNS14000000 (unemployment rate), CES0000000001 (total nonfarm payroll)

## `startYear` (type: `integer`):

Start year for data retrieval (e.g. 2020)

## `endYear` (type: `integer`):

End year for data retrieval (e.g. 2024)

## `registrationKey` (type: `string`):

Optional BLS API registration key for higher rate limits. Without a key, daily limit is 25 queries. Register free at https://data.bls.gov/registrationEngine/

## `maxResults` (type: `integer`):

Maximum number of data points to return per series

## Actor input object example

```json
{
  "seriesIds": [
    "CUUR0000SA0",
    "LNS14000000",
    "CES0000000001"
  ],
  "startYear": 2020,
  "endYear": 2024,
  "registrationKey": "",
  "maxResults": 10
}
```

# Actor output Schema

## `seriesId` (type: `string`):

BLS series ID

## `year` (type: `string`):

Year of data point

## `period` (type: `string`):

Month period code

## `periodName` (type: `string`):

Month name

## `value` (type: `string`):

Data value

## `seriesTitle` (type: `string`):

Human readable series title

## `scrapedAt` (type: `string`):

Timestamp of scrape

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "seriesIds": [
        "CUUR0000SA0",
        "LNS14000000",
        "CES0000000001"
    ],
    "startYear": 2020,
    "endYear": 2024,
    "registrationKey": "",
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("fervent_bus/bls-labor-statistics-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "seriesIds": [
        "CUUR0000SA0",
        "LNS14000000",
        "CES0000000001",
    ],
    "startYear": 2020,
    "endYear": 2024,
    "registrationKey": "",
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("fervent_bus/bls-labor-statistics-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "seriesIds": [
    "CUUR0000SA0",
    "LNS14000000",
    "CES0000000001"
  ],
  "startYear": 2020,
  "endYear": 2024,
  "registrationKey": "",
  "maxResults": 10
}' |
apify call fervent_bus/bls-labor-statistics-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,fervent_bus/bls-labor-statistics-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/hEpZH3YbNWymbGQQR/builds/bTnfivUPv1RSzhcf9/openapi.json
