# US BLS Data Scraper (`wakey7dev/bls-data-scraper`) Actor

Fetch employment, wage, CPI inflation, and economic indicator data from the US Bureau of Labor Statistics.

- **URL**: https://apify.com/wakey7dev/bls-data-scraper.md
- **Developed by:** [Chris Wakefield](https://apify.com/wakey7dev) (community)
- **Categories:** Business
- **Stats:** 2 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.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.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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

![Chris The Dev](https://raw.githubusercontent.com/chriswakefield87/appstore-screenshot-translator/main/assets/actor-banner.png)

## US BLS Data Scraper

Fetch employment, wage, CPI inflation, unemployment, and economic indicator data from the **US Bureau of Labor Statistics** Public Data API. Select from 10 popular pre-configured series or query any BLS series ID.

### Features

- 🏦 **10 built-in popular series** — unemployment, employment, CPI, wages, PPI, and more
- 🔧 **Custom series IDs** — query any BLS time series by its ID
- 📊 **Multi-year range** — fetch data across multiple years in a single run
- 📈 **Numeric parsing** — values automatically parsed to floats for charting/analysis
- 📋 **Structured output** — results as both a human-readable table and machine-readable JSON
- 🔑 **No key required** — works with zero setup; optional registration key for higher rate limits

### Popular Series Included

| Series | BLS ID |
|---|---|
| Unemployment Rate (SA) | LNS14000000 |
| Total Nonfarm Employment | CES0000000001 |
| CPI All Items (NSA) | CUUR0000SA0 |
| CPI All Items (SA) | CUSR0000SA0 |
| Labor Force Participation | LNS11300000 |
| Average Hourly Earnings | CES0500000003 |
| Producer Price Index | WPUFD4 |
| Avg Weekly Hours | CES0500000002 |
| Median Weekly Earnings | LEU0252881500 |
| Employment-Population Ratio | LNS12300000 |

### Input

- **Series Mode**: Popular (pick from list) or Custom (enter BLS IDs)
- **Start Year / End Year**: Date range for data (2000–2026)
- **Max Results**: Cap on data points returned (default 1000)
- **BLS Registration Key** (optional): Get one at https://data.bls.gov/registrationEngine/

### Output

The Actor produces a structured dataset where each row is one data point:

| Field | Description |
|---|---|
| `seriesId` | BLS series identifier |
| `seriesName` | Human-readable series name |
| `year` | Year of observation |
| `period` | Period code (M01–M12, Q01–Q04) |
| `periodName` | Period description |
| `value` | Raw value string |
| `numericValue` | Parsed numeric value (float) |
| `footnotes` | BLS footnote text |

### Example Input

```json
{
  "seriesMode": "popular",
  "popularSeries": [
    "Unemployment Rate (seasonally adjusted)",
    "CPI All Items (seasonally adjusted)"
  ],
  "startYear": 2024,
  "endYear": 2025
}
```

### Data Source

Data provided by the [U.S. Bureau of Labor Statistics](https://www.bls.gov/) Public Data API v2. All data is public domain. Please review BLS [Terms of Service](https://www.bls.gov/developers/termsOfService.htm).

# Actor input Schema

## `seriesMode` (type: `string`):

Choose from built-in popular series or enter your own BLS series IDs.

## `popularSeries` (type: `array`):

Select one or more popular BLS data series from the dropdown. Available: Unemployment Rate, Total Employment, CPI, Wages, PPI, Labor Force Participation, Avg Hourly Earnings, Avg Weekly Hours, Median Weekly Earnings, Employment-Population Ratio.

## `customSeries` (type: `string`):

Comma-separated BLS series IDs (e.g. 'LNS14000000,CES0000000001'). Find IDs at https://www.bls.gov/developers/api\_signature\_v2.htm.

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

First year of data to fetch (e.g. 2020).

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

Last year of data to fetch (e.g. 2025).

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

Maximum number of data points to return.

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

Optional. Register at https://data.bls.gov/registrationEngine/ for higher rate limits. Not required for basic use.

## Actor input object example

```json
{
  "seriesMode": "popular",
  "popularSeries": [
    "Unemployment Rate (seasonally adjusted)"
  ],
  "startYear": 2024,
  "endYear": 2025,
  "maxResults": 1000
}
```

# Actor output Schema

## `results` (type: `string`):

All data points as structured JSON with seriesId, year, period, value, numericValue, and footnotes.

## `summary` (type: `string`):

Human-readable summary table of results.

## `stats` (type: `string`):

Statistics including total data points, unique series, years covered, and data completeness.

# 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 = {
    "popularSeries": [
        "Unemployment Rate (seasonally adjusted)"
    ],
    "customSeries": "",
    "registrationKey": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("wakey7dev/bls-data-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 = {
    "popularSeries": ["Unemployment Rate (seasonally adjusted)"],
    "customSeries": "",
    "registrationKey": "",
}

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

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

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

```

## CLI example

```bash
echo '{
  "popularSeries": [
    "Unemployment Rate (seasonally adjusted)"
  ],
  "customSeries": "",
  "registrationKey": ""
}' |
apify call wakey7dev/bls-data-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=wakey7dev/bls-data-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/vRNJs776TyWkJglCX/builds/Bg60eqZL4lDfTfgaI/openapi.json
