# Unemployment benefits by state - weekly min, max and weeks (`retrainmap/state-ui-provisions`) Actor

Unemployment benefits by state: one row per US jurisdiction (50 states, DC, PR, VI) with the minimum and maximum weekly unemployment-insurance benefit and weeks payable, from the DOL 'Significant Provisions of State UI Laws' table (January 2026 bundled; live mode reads any edition). $0.05 per run.

- **URL**: https://apify.com/retrainmap/state-ui-provisions.md
- **Developed by:** [RetrainMap Team](https://apify.com/retrainmap) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$50.00 / 1,000 table runs

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/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

## Unemployment benefits by state - weekly min, max and weeks

**Returns:** one row per US jurisdiction (50 states, DC, PR, VI — 53 rows) with the minimum and maximum weekly unemployment-insurance benefit and the benefit weeks payable, as printed in the DOL 'Significant Provisions of State UI Laws' table, with edition, URL, SHA-256 and Last-Modified.
**Input:** `{ "states": ["IL", "CA"], "source": "bundled" }` — both optional; empty `{}` returns all 53 rows from the bundled January 2026 edition; `"source": "live"` re-reads `pdf_url`.
**Price:** $0.05 per run (up to 53 rows — about $0.94 per 1,000 rows). Pay per event; no subscription.

One row per U.S. jurisdiction (50 states, DC, Puerto Rico, U.S. Virgin Islands) with the
**minimum and maximum weekly benefit amount** and the **benefit weeks payable**, exactly as
printed in the U.S. Department of Labor table *Significant Provisions of State Unemployment
Insurance Laws*, with the edition date, the PDF's URL, its server `Last-Modified` stamp and
its SHA-256 on every row.

**Nothing here decides anyone's eligibility or benefit.** The amount a person actually
receives is set by the state unemployment-insurance agency from that person's wage history;
these are the statutory floors and ceilings the agency publishes, useful for comparisons and
budgeting only.

### Data source, cadence and status

| | |
|---|---|
| Publisher | U.S. Department of Labor, Employment and Training Administration, Office of Unemployment Insurance |
| Index of editions | https://oui.doleta.gov/unemploy/statelaws.asp ("Significant Provisions of State UI Laws") |
| Edition bundled | Effective January 2026 — https://oui.doleta.gov/unemploy/content/sigpros/2020-2029/January2026.pdf, fetched 2026-09-02, server Last-Modified `Fri, 28 Aug 2026 12:34:47 GMT`, SHA-256 `6e78c921551ab04398f82908d0fd0a238125269a6887f730d63ed2a454b438ec` |
| Cadence | DOL issues the table **twice a year** (January and July editions). `source: "live"` re-reads a PDF on demand; the operator checks the index monthly and re-bundles a new edition |
| Copyright | A work of the United States Government — not subject to copyright in the U.S. (17 U.S.C. §105). Please cite DOL |
| Parse rule | Dollar figures and the weeks column are copied verbatim (footnote superscripts stripped). Where the table prints **two figures in one cell** (e.g. Illinois "$51 / $77", Colorado "$767 / $844"), both are kept in print order in `min_weekly_benefit` / `max_weekly_benefit` and as numbers in `*_values`; the Actor never chooses one. Validation: all 53 jurisdictions must parse with a dollar figure or the run fails loudly |

### Input

| Field | Type | Meaning |
|---|---|---|
| `states` | array of 2-letter codes | Optional; empty = all 53 rows |
| `source` | `bundled` (default) or `live` | `bundled` uses the shipped January 2026 parse and makes no request. `live` downloads `pdf_url`, records `Last-Modified` and SHA-256, parses it with the January 2026 column geometry and fails loudly if fewer than 53 jurisdictions parse |
| `pdf_url` | string | Live mode only; must be under `https://oui.doleta.gov/` |
| `edition` | string | Live mode only; written to `table_date` |
| `contact_email` | string | Sent in the `From:` header in live mode |

### Output (dataset row)

`state`, `min_weekly_benefit` (as printed, e.g. `$75`), `min_weekly_benefit_values` (numbers),
`max_weekly_benefit`, `max_weekly_benefit_values`, `weeks` (as printed, e.g. `10-26`,
`Uniform duration 26`), `weeks_min`, `weeks_max`, `uniform_duration`, `table_date`, `source_url`,
`index_url`, `source_page` (page of the PDF), `sha256`, `file_last_modified`, `fetched`, `mode`,
`note`.

`RUN_SUMMARY` in the run's key-value store records the mode, the source metadata and, in
live mode, whether the downloaded PDF's SHA-256 still matches the bundled edition.

### Pricing (pay per event)

| Event | Price |
|---|---|
| `run` — once per run (up to 53 rows) | $0.05 |

### Operator

Steelyard Ventures LLC (RetrainMap) — info@steelyardclinical.com. The Actor writes only to
its own dataset and key-value store; it stores no credentials and sends nothing else.

# Actor input Schema

## `states` (type: `array`):

Two-letter codes (50 states, DC, PR, VI). Leave empty for all 53 rows.

## `source` (type: `string`):

bundled = the January 2026 table as parsed on 2026-09-02 and shipped with the Actor (no request to DOL). live = download the PDF at pdf\_url now, record its Last-Modified and SHA-256 and parse it; fails loudly if the layout no longer parses.

## `pdf_url` (type: `string`):

The edition to parse in live mode. Must be a file under https://oui.doleta.gov/. Editions are listed at https://oui.doleta.gov/unemploy/statelaws.asp.

## `edition` (type: `string`):

Written to the table\_date field of every row in live mode.

## `contact_email` (type: `string`):

Sent in the standard From: request header in live mode.

## Actor input object example

```json
{
  "states": [],
  "source": "bundled",
  "pdf_url": "https://oui.doleta.gov/unemploy/content/sigpros/2020-2029/January2026.pdf",
  "edition": "January 2026",
  "contact_email": "info@steelyardclinical.com"
}
```

# Actor output Schema

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

One row per jurisdiction: minimum and maximum weekly benefit, benefit weeks, source and table date.

## `results_csv` (type: `string`):

The same rows as a CSV file.

# 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 = {
    "states": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("retrainmap/state-ui-provisions").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 = { "states": [] }

# Run the Actor and wait for it to finish
run = client.actor("retrainmap/state-ui-provisions").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 '{
  "states": []
}' |
apify call retrainmap/state-ui-provisions --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,retrainmap/state-ui-provisions"
        }
    }
}

```

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/U3lox9oNBrWJYo0Fa/builds/d11qV9ynu73xA4dLv/openapi.json
