# 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

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "US BLS Data Scraper",
        "description": "Fetch employment, wage, CPI inflation, and economic indicator data from the US Bureau of Labor Statistics.",
        "version": "1.0",
        "x-build-id": "Bg60eqZL4lDfTfgaI"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/wakey7dev~bls-data-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-wakey7dev-bls-data-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/wakey7dev~bls-data-scraper/runs": {
            "post": {
                "operationId": "runs-sync-wakey7dev-bls-data-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/wakey7dev~bls-data-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-wakey7dev-bls-data-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "seriesMode": {
                        "title": "Series Selection Mode",
                        "enum": [
                            "popular",
                            "custom"
                        ],
                        "type": "string",
                        "description": "Choose from built-in popular series or enter your own BLS series IDs.",
                        "default": "popular"
                    },
                    "popularSeries": {
                        "title": "Popular Series",
                        "type": "array",
                        "description": "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.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "customSeries": {
                        "title": "Custom Series IDs",
                        "type": "string",
                        "description": "Comma-separated BLS series IDs (e.g. 'LNS14000000,CES0000000001'). Find IDs at https://www.bls.gov/developers/api_signature_v2.htm."
                    },
                    "startYear": {
                        "title": "Start Year",
                        "minimum": 2000,
                        "maximum": 2026,
                        "type": "integer",
                        "description": "First year of data to fetch (e.g. 2020).",
                        "default": 2024
                    },
                    "endYear": {
                        "title": "End Year",
                        "minimum": 2000,
                        "maximum": 2026,
                        "type": "integer",
                        "description": "Last year of data to fetch (e.g. 2025).",
                        "default": 2025
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Maximum number of data points to return.",
                        "default": 1000
                    },
                    "registrationKey": {
                        "title": "BLS Registration Key (optional)",
                        "type": "string",
                        "description": "Optional. Register at https://data.bls.gov/registrationEngine/ for higher rate limits. Not required for basic use."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
