# 📈 SEC Form 11-K Employee Stock Plan Tracker (`nexgendata/sec-form-11-k-employee-stock-plan-tracker`) Actor

The only Apify actor on SEC Form 11-K. Pulls annual employee stock plan financials (ESPP, 401(k) employer-stock funds, stock bonus plans) with plan assets, share counts, contributions, and PCAOB auditor. For equity-comp consultants, ERISA litigation.

- **URL**: https://apify.com/nexgendata/sec-form-11-k-employee-stock-plan-tracker.md
- **Developed by:** [NexGenData](https://apify.com/nexgendata) (community)
- **Categories:** Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $150.00 / 1,000 form 11-k filings

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

## 📈 SEC Form 11-K Employee Stock Plan Tracker — ESPP & 401(k) Stock Funds

**The only Apify actor for SEC Form 11-K** — annual employee stock plan financial reports. Pulls plan assets, employer-stock fund balances, share counts, and contribution flows from every Form 11-K filed in a given year, joined to ticker + CIK + PCAOB auditor.

Equivalent commercial data from Equilar starts at **$5,000+ per year**. This actor returns the same plan-level financials at PPE prices.

### ⚡ What you get

For every Form 11-K filing the actor returns:

| Field | What it is |
|---|---|
| `company` | SEC filer name (issuer / plan sponsor) |
| `cik` | SEC CIK (numeric, unpadded) |
| `ticker` | Primary stock ticker |
| `plan_name` | Plan name as filed (e.g. "Acme Corp 401(k) Savings Plan") |
| `plan_type` | One of `ESPP`, `401(k)`, `Stock Bonus`, `Unknown` |
| `fiscal_year_end` | Plan fiscal-year end |
| `total_plan_assets` | Net assets available for benefits, USD |
| `employer_stock_fund_balance` | Employer-stock fund balance, USD |
| `employer_stock_shares` | Shares of employer stock held by the plan |
| `share_value` | Per-share / unit value, USD |
| `contributions_employer` | Employer contributions for the year, USD |
| `contributions_participant` | Participant contributions for the year, USD |
| `filing_date` | SEC receipt date |
| `auditor_name` | PCAOB-registered independent auditor |
| `accession_number` | SEC accession |
| `source_url` | Permanent URL to the primary 11-K document |

### 🎯 Use cases

#### Equity-comp consultant (Aon, WTW, Pearl Meyer, FW Cook)
Pull every Form 11-K filed in 2024 by issuers with `>$100M` plan assets, group by plan type, and benchmark ESPP discount + 401(k) employer-stock allocation rates across S&P 1500 vs Russell 2000 vs micro-caps. Replaces ~$5K/yr Equilar subscription for the plan-detail tier of the dataset.

#### Executive compensation benchmarking analyst
Stack the employer-stock fund balance across peer-group filers to surface companies whose 401(k) employer-stock concentration violates ERISA fiduciary best practice (the 10% rule of thumb post-*LaRue v. DeWolff*). Direct input into proxy-advisory comp recommendations.

#### Corporate counsel / ERISA litigation counsel
Quarterly scan of newly-filed 11-Ks for plans with high employer-stock concentration + share-price declines — the leading-indicator pattern for stock-drop class-actions (*Dudenhoeffer*, *Jander*, *Fifth Third*). Filing-level source URL + accession lets paralegals jump straight to the audit opinion.

#### M&A / employee-benefits diligence
Pre-close diligence on a target's retirement plan — what's the participant contribution rate, what's the employer match, what's the auditor's opinion track record? Form 11-K is the only public disclosure that puts all three in one document.

### 🧪 Sample input

```json
{
  "company_filter": "",
  "ticker_filter": "",
  "year": 2024,
  "min_plan_assets": 1000000,
  "max_filings": 50
}
````

### 📦 Sample output (one record)

```json
{
  "company": "First Northwest Bancorp",
  "cik": "1556727",
  "ticker": "FNWB",
  "plan_name": "First Fed Bank 401(k) Plan",
  "plan_type": "401(k)",
  "fiscal_year_end": "2024-06-30",
  "total_plan_assets": 22487654,
  "employer_stock_fund_balance": 1142890,
  "employer_stock_shares": 178420,
  "share_value": 6.41,
  "contributions_employer": 612488,
  "contributions_participant": 1843775,
  "filing_date": "2024-12-23",
  "auditor_name": "Moss Adams LLP",
  "accession_number": "0001437749-24-038204",
  "source_url": "https://www.sec.gov/Archives/edgar/data/1556727/000143774924038204/fnwb20240630_11k.htm"
}
```

### 🚀 How to use

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("nexgendata/sec-form-11-k-employee-stock-plan-tracker").call(
    run_input={
        "year": 2024,
        "min_plan_assets": 10_000_000,
        "max_filings": 100,
    }
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["company"], item["plan_type"], item["total_plan_assets"])
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/nexgendata~sec-form-11-k-employee-stock-plan-tracker/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"year": 2024, "ticker_filter": "FNWB", "max_filings": 5}'
```

### ⚖️ Data source & politeness

- **Source:** SEC EDGAR Full-Text Search (`efts.sec.gov/LATEST/search-index?forms=11-K`) plus per-filing primary HTML at `sec.gov/Archives/edgar/data/{cik}/{accession}/`.
- **Legal posture:** Form 11-K filings are public statutory disclosures under §15(d) of the Exchange Act and ERISA §103. Fully public; SEC EDGAR explicitly invites programmatic access (10 req/sec rate limit) — see [SEC EDGAR Fair Access](https://www.sec.gov/os/accessing-edgar-data).
- **User-Agent:** Every request sends `NexGenData SEC Form 11-K Actor hello@thenextgennexus.com` per SEC fair-access policy.
- **Retry pattern:** 3 attempts with 12-second backoff on EDGAR's occasional datacenter 5xx responses.

### 🧠 How extraction works

Form 11-K is HTML-heavy free-text — there's no standard XBRL tagging for plan-level financials the way 10-K has US-GAAP taxonomies. This actor uses a labeled-regex + nearest-numeric strategy:

1. **Plan name** — pulled from `<title>`, the "the 'Plan'" defined-term, or the first plan-keyword line on the cover page
2. **Plan type** — ESPP / 401(k) / Stock Bonus / Unknown — classified from the plan name first, document-head fallback
3. **Total plan assets** — labels include "net assets available for benefits", "total plan assets", "plan's net assets"
4. **Employer stock fund balance** — labels include "employer stock fund", "company stock fund", "common stock fund", "employer securities"
5. **Employer stock shares** — labels include "shares of company common stock", "shares of employer"
6. **Share value** — captures per-share NAV or unit value
7. **Contributions** — separates employer ("matching contributions", "company contributions") from participant ("employee contributions")
8. **Auditor** — captures the `/s/ Firm Name LLP` signature line, falls back to a Big-4 / mid-tier name list

Fields the extractor can't confidently fill come back as `null` rather than guessed. The filing-level `source_url` is always populated so analysts can verify and supplement by hand.

### 🔗 Related actors — SEC family

This actor is part of the NexGenData SEC EDGAR cluster:

- [📊 SEC Form 13F Holdings Tracker Pro](https://apify.com/nexgendata/sec-form-13f-tracker-pro) — institutional fund holdings (quarterly)
- [👔 SEC Form 4 Insider Trading Scraper](https://apify.com/nexgendata/sec-form-4-insider-trading-scraper) — officer + director buy / sell filings
- [📑 SEC Form D Scraper](https://apify.com/nexgendata/sec-form-d-scraper) — Reg D private placement offerings
- [⚡ SEC Form 8-K Material Events Scraper](https://apify.com/nexgendata/sec-form-8k-material-events-scraper) — 4-business-day disclosure events
- [⚖️ SEC Litigation Releases](https://apify.com/nexgendata/sec-litigation-releases) — SEC Enforcement Division litigation press releases

### 🏷️ About NexGenData

NexGenData operates a fleet of 130+ Apify actors covering regulatory, financial, and compliance data sources across SEC, FINRA, FCA, BaFin, EUIPO, WIPO, MAS, SFC, NHTSA, CFPB, FDA, and more. Built for analysts, compliance officers, and AI agents who need clean public data without the enterprise SaaS markup.

# Actor input Schema

## `company_filter` (type: `string`):

Optional substring match against the SEC filer name (e.g. 'Apple', 'Walmart'). Leave blank to scan all 11-K filings for the chosen year.

## `ticker_filter` (type: `string`):

Optional exact ticker match (e.g. 'AAPL', 'WMT'). Case-insensitive. Leave blank to skip ticker filtering.

## `year` (type: `integer`):

Calendar year of the Form 11-K filing date (not plan fiscal-year-end). Most 11-Ks for plan-year N are filed in the second half of N or in the first half of N+1.

## `min_plan_assets` (type: `number`):

Drop filings whose extracted 'total\_plan\_assets' (Net assets available for benefits) is below this threshold. Filings whose plan-asset value can't be extracted are also dropped. Leave at 0 to keep everything that parses.

## `max_filings` (type: `integer`):

Hard cap on records pushed to the dataset. Use small numbers (5-25) for smoke tests, 50-200 for production scans.

## Actor input object example

```json
{
  "year": 2024,
  "min_plan_assets": 1000000,
  "max_filings": 50
}
```

# 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 = {
    "company_filter": "",
    "ticker_filter": "",
    "year": 2024,
    "min_plan_assets": 1000000,
    "max_filings": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("nexgendata/sec-form-11-k-employee-stock-plan-tracker").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 = {
    "company_filter": "",
    "ticker_filter": "",
    "year": 2024,
    "min_plan_assets": 1000000,
    "max_filings": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("nexgendata/sec-form-11-k-employee-stock-plan-tracker").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 '{
  "company_filter": "",
  "ticker_filter": "",
  "year": 2024,
  "min_plan_assets": 1000000,
  "max_filings": 50
}' |
apify call nexgendata/sec-form-11-k-employee-stock-plan-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=nexgendata/sec-form-11-k-employee-stock-plan-tracker",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "📈 SEC Form 11-K Employee Stock Plan Tracker",
        "description": "The only Apify actor on SEC Form 11-K. Pulls annual employee stock plan financials (ESPP, 401(k) employer-stock funds, stock bonus plans) with plan assets, share counts, contributions, and PCAOB auditor. For equity-comp consultants, ERISA litigation.",
        "version": "0.0",
        "x-build-id": "ZcTwcKhuwtHmP03O2"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/nexgendata~sec-form-11-k-employee-stock-plan-tracker/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-nexgendata-sec-form-11-k-employee-stock-plan-tracker",
                "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/nexgendata~sec-form-11-k-employee-stock-plan-tracker/runs": {
            "post": {
                "operationId": "runs-sync-nexgendata-sec-form-11-k-employee-stock-plan-tracker",
                "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/nexgendata~sec-form-11-k-employee-stock-plan-tracker/run-sync": {
            "post": {
                "operationId": "run-sync-nexgendata-sec-form-11-k-employee-stock-plan-tracker",
                "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": {
                    "company_filter": {
                        "title": "Company name filter (optional)",
                        "type": "string",
                        "description": "Optional substring match against the SEC filer name (e.g. 'Apple', 'Walmart'). Leave blank to scan all 11-K filings for the chosen year."
                    },
                    "ticker_filter": {
                        "title": "Ticker filter (optional)",
                        "type": "string",
                        "description": "Optional exact ticker match (e.g. 'AAPL', 'WMT'). Case-insensitive. Leave blank to skip ticker filtering."
                    },
                    "year": {
                        "title": "Filing year",
                        "minimum": 1994,
                        "maximum": 2099,
                        "type": "integer",
                        "description": "Calendar year of the Form 11-K filing date (not plan fiscal-year-end). Most 11-Ks for plan-year N are filed in the second half of N or in the first half of N+1.",
                        "default": 2024
                    },
                    "min_plan_assets": {
                        "title": "Minimum total plan assets (USD)",
                        "minimum": 0,
                        "type": "number",
                        "description": "Drop filings whose extracted 'total_plan_assets' (Net assets available for benefits) is below this threshold. Filings whose plan-asset value can't be extracted are also dropped. Leave at 0 to keep everything that parses.",
                        "default": 1000000
                    },
                    "max_filings": {
                        "title": "Maximum filings to return",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Hard cap on records pushed to the dataset. Use small numbers (5-25) for smoke tests, 50-200 for production scans.",
                        "default": 50
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
