# DOL Form 5500 Scraper - 401(k) & Benefit Plan Leads (`ha55an_dev/dol-form-5500-scraper`) Actor

Extract US Department of Labor (DOL) Form 5500, 5500-SF & 401(k) retirement and health benefit filings. Bulk search by Plan Sponsor, EIN, Plan Name, PN or ACK ID with direct AWS S3 PDF download links.

- **URL**: https://apify.com/ha55an\_dev/dol-form-5500-scraper.md
- **Developed by:** [Hassan Amer](https://apify.com/ha55an_dev) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.45 / 1,000 form 5500 filing 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

## DOL Form 5500 Scraper — 401(k) & ERISA Benefit Plan Leads (EFAST2)

Extract official **U.S. Department of Labor (DOL)**, **Employee Benefits Security Administration (EBSA)**, **IRS**, and **PBGC** Form 5500 and Form 5500-SF annual retirement and employee benefit plan disclosure filings.

Automates the search process of the official **[EFAST2 Form 5500 Search Portal](https://www.efast.dol.gov/5500Search/)** with **bulk multi-line search (paste 1,000+ companies or EINs at once)**, lightning-fast execution, and direct download links to signed filing PDFs on Amazon S3.

***

### 🚀 Why Use This DOL Form 5500 Scraper?

- **Stop Manual Lookups:** Automates the official DOL search portal — extract hundreds of company filings in seconds instead of searching one by one manually.
- **Bulk Multi-Line Search:** Paste an entire list of 500 EINs or 1,000 Company Names directly into a single text box. No need to click "Add item" hundreds of times.
- **Zero Extra Proxy Surcharges:** Fast, reliable direct connection that runs in seconds with no hidden bandwidth fees or proxy charges.
- **Direct Official PDF Links:** Instant access to permanent download URLs for original signed filing PDFs on Amazon S3 without paying for heavy storage.
- **Verified Corporate Lead Data:** Extract verified 9-digit Employer Identification Numbers (EIN), corporate headquarters addresses, city, state, zip code, and legally reported active employee counts.
- **Financial & Asset Metrics:** Access total plan asset values in exact USD to instantly assess 401(k), pension, and health & welfare plan size.
- **Reliable & Resilient:** Built-in automatic recovery ensures large bulk jobs complete smoothly without lost data.

***

### 📥 Input Configuration

| Field | Type | Description | Default / Example |
|---|---|---|---|
| **`Search By`** | `Select` | Search field category matching the official DOL portal (`Plan Sponsor`, `Plan Name`, `EIN`, `PN`, `ACK ID`). | `Plan Sponsor` |
| **`Search Terms`** | `Textarea` | Enter or paste search terms (one per line). Paste 1, 100, or 1,000+ terms at once. | `GOOGLE LLC`<br>`MICROSOFT CORP`<br>`APPLE INC` |
| **`Max Results Per Search`** | `Integer` | Maximum filings to retrieve for each search term. | `200` |
| **`Total Max Results`** | `Integer` | Total overall cap across all search terms combined. | `5000` |

#### Input Examples

##### 1. Bulk Lookup by Company / Plan Sponsor

```json
{
  "searchType": "plansponsor",
  "searchTerms": "GOOGLE LLC\nMICROSOFT CORP\nAPPLE INC\nAMAZON.COM SERVICES LLC\nMETA PLATFORMS INC",
  "maxResultsPerSearch": 100,
  "totalMaxResults": 5000
}
```

##### 2. Bulk Lookup by 9-Digit EIN (Employer Identification Number)

```json
{
  "searchType": "ein",
  "searchTerms": "77-0493581\n13-3870996\n95-4615406\n94-2404110\n47-0814677",
  "maxResultsPerSearch": 50,
  "totalMaxResults": 5000
}
```

##### 3. Plan Name Search

```json
{
  "searchType": "planname",
  "searchTerms": "401(k) Savings Plan\nRetirement Income Plan\nProfit Sharing Plan",
  "maxResultsPerSearch": 200,
  "totalMaxResults": 5000
}
```

***

### 📤 Output Data Structure

Every filing record pushed to the Apify Dataset contains clean, structured, and normalized data:

```json
{
  "ack_id": "20250827123612NAL0005026227001",
  "plan_name": "Google LLC 401(k) Savings Plan",
  "plan_sponsor": "Google LLC",
  "ein": "770493581",
  "plan_number": "001",
  "plan_year": "2024",
  "form_year": "2024",
  "date_received": "2025-08-27T12:36:12Z",
  "total_assets": "48738057415.00",
  "participants_boy": 139580,
  "participants_eoy": null,
  "address": "1600 Amphitheatre Parkway",
  "city": "Mountain View",
  "state": "CA",
  "zip_code": "94043",
  "plan_type": "1",
  "business_code": "541512",
  "pdf_url": "https://efast2-filings-public.s3.amazonaws.com/prd/2025/08/27/20250827123612NAL0005026227001.pdf"
}
```

***

### 🎯 Target Use Cases & Buyer Personas

1. **401(k) Advisors & Wealth Managers:** Prospect high-value retirement plan sponsors, evaluate plan asset size ($5M to $100M+), audit investment plans, and identify sponsors due for fiduciary reviews.
2. **Group Health & Benefits Brokers:** Cross-reference employer health and welfare filings to anticipate renewal windows and pitch competitive group benefits.
3. **B2B Lead Generation & Account Enrichment:** Enrich existing CRM databases (Salesforce, HubSpot) with legally verified federal EINs, corporate headquarters addresses, and verified employee counts.
4. **CPA Firms (ERISA Employee Benefit Plan Audits):** Target growing mid-market companies reaching 100+ active participants subject to mandatory annual independent CPA audits under ERISA.
5. **M\&A Due Diligence & Corporate Research:** Investigate target company pension obligations, benefit liabilities, and executive disclosure filings.

***

### 🔌 API & Integration Recipes

#### Python Integration (`apify-client`)

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_API_TOKEN")

run_input = {
    "searchType": "plansponsor",
    "searchTerms": "GOOGLE LLC\nMICROSOFT CORP\nAPPLE INC",
    "maxResultsPerSearch": 100,
    "totalMaxResults": 1000,
}

run = client.actor("YOUR_USERNAME/dol-form-5500-scraper").call(run_input=run_input)

## Fetch and iterate dataset results
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"Sponsor: {item.get('plan_sponsor')} | Assets: ${item.get('total_assets')} | PDF: {item.get('pdf_url')}")
```

#### Direct S3 PDF Bulk Downloader (Python)

Download filing PDFs directly to your computer in seconds:

```python
import httpx
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_API_TOKEN")
dataset_items = client.dataset("DATASET_ID").list_items().items

for record in dataset_items:
    pdf_url = record.get("pdf_url")
    ack_id = record.get("ack_id")
    if pdf_url:
        resp = httpx.get(pdf_url)
        with open(f"{ack_id}.pdf", "wb") as f:
            f.write(resp.content)
        print(f"Downloaded: {ack_id}.pdf")
```

***

### ⚖️ Legal & Compliance

Form 5500 series annual returns/reports are public domain government records mandated under Title I and Title IV of the Employee Retirement Income Security Act (ERISA) and the Internal Revenue Code. The data is made publicly available by the U.S. Department of Labor (DOL) Employee Benefits Security Administration (EBSA).

***

### 🔍 SEO Keyword Stack

#### Short-Tail Keywords

`form 5500`, `dol 5500 scraper`, `efast2 search`, `form 5500 search`, `401k scraper`, `erisa filings`, `form 5500 database`, `dol form 5500`, `efast 5500 search`, `form 5500 lookup`, `ein lookup 5500`, `401k plan search`, `form 5500-sf`, `pension plan database`, `ebsa 5500 search`, `form 5500 pdf download`, `efast filings`, `us dol scraper`, `erisa database`, `5500 annual report`.

#### Long-Tail Intent Keywords

- `how to search form 5500 filings by company name`
- `download form 5500 pdf from dol efast`
- `us department of labor employee benefit plan database`
- `401k plan advisor lead generation scraper`
- `erisa form 5500 annual return reports search tool`
- `bulk ein lookup form 5500 database export`
- `efast2 online search tool api in python`
- `search form 5500 by plan sponsor name and ein`
- `401k retirement plan asset size lookup tool`
- `mandatory 100 participant erisa audit leads cpa`
- `group health schedule a benefit renewal filings`
- `scrape efast dol gov 5500 search without browser`
- `free form 5500 search and lookup database`
- `us department of labor ebsa public disclosure filings`
- `find company 401k plan administrator and ein`

#### Persona & Industry Stacks

- **Wealth Management & 401(k) Advisory:** `401k plan benchmarking`, `fiduciary advisor prospecting`, `plan sponsor asset tracking`, `retirement plan lead gen`, `form 5500 participant counts`.
- **Employee Benefits & Insurance Brokers:** `group health renewal dates`, `schedule a broker commissions`, `welfare benefit plan lookup`, `corporate dental vision filings`.
- **CPA & ERISA Audit Firms:** `form 5500 audit threshold 100 participants`, `large plan audit leads`, `erisa accountant prospecting`, `5500-sf small plan filings`.
- **B2B Sales Intelligence & Lead Gen:** `company ein database lookup`, `corporate headquarters address verification`, `verified employer headcount scraper`, `federal benefit filings export`.

# Actor input Schema

## `searchType` (type: `string`):

Select the search category matching the dropdown on the official EFAST site.

## `searchTerms` (type: `string`):

Enter or paste your search terms. Paste 1 or 1,000+ terms one per line to automate bulk lookups.

## `maxResultsPerSearch` (type: `integer`):

Maximum filings to retrieve for each search term (up to 5,000 max allowed by EFAST).

## `totalMaxResults` (type: `integer`):

Maximum total filings to extract across all combined search terms.

## Actor input object example

```json
{
  "searchType": "plansponsor",
  "searchTerms": "GOOGLE LLC\nMICROSOFT CORP\nAPPLE INC",
  "maxResultsPerSearch": 200,
  "totalMaxResults": 5000
}
```

# Actor output Schema

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

Clean, structured dataset containing Form 5500 filings, company sponsors, assets, and PDF download links.

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

Summary execution metrics of the scraping run.

# 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 = {
    "searchTerms": `GOOGLE LLC
MICROSOFT CORP
APPLE INC`
};

// Run the Actor and wait for it to finish
const run = await client.actor("ha55an_dev/dol-form-5500-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 = { "searchTerms": """GOOGLE LLC
MICROSOFT CORP
APPLE INC""" }

# Run the Actor and wait for it to finish
run = client.actor("ha55an_dev/dol-form-5500-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 '{
  "searchTerms": "GOOGLE LLC\\nMICROSOFT CORP\\nAPPLE INC"
}' |
apify call ha55an_dev/dol-form-5500-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ha55an_dev/dol-form-5500-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/ldqB3V0HK2gDPYdl7/builds/PZNmi8zh2Q3eZMhXW/openapi.json
