# Plan Data API > Clean, multi-year data on U.S. retirement plans (401(k), 403(b), pension and other plans), built from the U.S. Department of Labor's public Form 5500 filings. Look up a plan by company name and get its size, average balance, recordkeeper, advisors, auditor, fees in basis points, and a year-by-year history of changes. Every answer says what the data can't show. Data as of: 2026-11-02 (date of DOL's data files). Plan years: 2021-2025. Plans: 1,140,097. ## What you can learn here - Who a company's retirement plan recordkeeper is, and whether it changed recently. - Plan size: net assets, participants, average account balance, approximate investment return. - What the plan pays its providers, from Schedule C, in dollars and basis points, with a rating of how complete that fee data is. - The plan's history since 2021: a breakdown of why assets changed (contributions, market return, distributions, expenses, transfers), provider changes, mergers, terminations and late deposits. - Recent changes across many plans, e.g. every plan in Texas that changed recordkeeper since a given date, or the largest plans that moved from Empower to Fidelity in 2024. - Lists of plans for prospecting or research, up to 100 per call (or as a CSV file): every large 401(k) of restaurants in Ohio, say, with each plan's full name, sponsor address, EIN, industry, inception date, participants, assets, recordkeeper and advisor. ## What makes it different from raw Form 5500 records - One plan across years: each plan is tracked by sponsor EIN + plan number, amendments resolved, one row per plan year. - Provider names cleaned up: thousands of spellings are matched to canonical firms and today's parent company (Great-West Financial filings count as Empower). - Derived numbers carry a confidence (high, medium, low), a basis (how it's computed) and a note. ## What it can't tell you (read before relying on a null) - Plans that don't file a Form 5500 aren't here: governmental plans (state and city pension systems, public universities and school districts, including their 403(b) and 457(b) plans) and church plans that haven't elected ERISA coverage. - Small plans (about 9 in 10 plans; generally under 100 participants) file no Schedule C, so they have no recordkeeper, advisor or fee breakdown. A null recordkeeper on a small plan means "not reported", not "none". - Schedule C leaves out providers paid under $5,000, fees the employer pays directly, and fund expense ratios. Fees are floors, not all-in costs, and a plan with no advisor listed may still have one. - The investment lineup (which funds) is not in DOL's structured data. - Returns are plan-level approximations from the income statement, not fund returns. - DC participant counts changed definition in 2023; year-over-year figures across it are flagged. - The newest plan year is still being filed. - If a sponsor moves its plan to a new EIN, the history splits in two. - Industry is the business code each sponsor reports itself (one per sponsor), so it can be generic or wrong. ## How to use it 1. `GET /search?name=` (add `state=TX` to narrow). Results are fuzzy-matched, best first, each with a `match.score`. Note the `ein` and `pn` of the plan you want. 2. `GET /plan?ein=&pn=` for the latest profile. Its `availability` field says which years `/plan/history` and `/fees` have. 3. `GET /plan/history?ein=&pn=` for every plan year, or `GET /fees?ein=&pn=` for the Schedule C fee breakdown. 4. `GET /changes?state=TX&event_type=recordkeeper_change&since=2026-01-01` for recent changes across plans. One move: `GET /changes?from_recordkeeper=empower&to_recordkeeper=fidelity&plan_year_from=2024&plan_year_to=2024&sort=assets` (largest first, sized at the time of the move). One company: `GET /changes?ein=`. 5. `GET /prospects?industry=restaurants&state=OH&min_participants=100` for a list of plans by industry, place and size. Large (long-form) filers only unless `filer_size=any`; add `format=csv` for a spreadsheet file. Every response is JSON with `data` and `meta`. `meta.coverage_notes` lists the caveats for that record; `meta.data_as_of` dates the data. Errors have the same shape with an `error` object (`code`, `message`, `hint`, `details`). ## Endpoints - [GET /search](/docs#/Plans/search_search_get): find plans by name, EIN, state, assets, participants, recordkeeper or plan type. - [GET /plan](/docs#/Plans/plan_plan_get): latest profile of one plan. - [GET /plan/history](/docs#/Plans/plan_history_plan_history_get): every plan year of one plan. - [GET /fees](/docs#/Plans/plan_fees_fees_get): Schedule C fees by role, per provider, with completeness notes. - [GET /changes](/docs#/Changes/changes_changes_get): change events across plans. - [GET /prospects](/docs#/Prospects/prospects_prospects_get): lists of plans by industry, state, city, ZIP, size, plan type, inception date or recordkeeper, as JSON or CSV. - [GET /coverage](/coverage): free. Years covered, plan counts, every limitation and code. - [GET /health](/health): free. Service status. - [GET /terms](/terms): free. Terms of use. Nothing here is investment, legal, tax or fiduciary advice; payments are final. - [OpenAPI schema](/openapi.json): every field documented. ## MCP (for AI agents) The same data as MCP tools at `/mcp` (Streamable HTTP): `search_plans`, `get_plan`, `get_plan_history`, `get_plan_fees`, `find_plan_changes`, `list_prospects`, and the free `get_coverage`. Each tool returns exactly what its endpoint above returns, at the same price. Paid tools use x402 over MCP: called without payment, a tool returns the x402 payment requirements (isError, structuredContent); an x402 MCP client pays and repeats the call with the payment in `_meta["x402/payment"]`. Errors and empty results aren't charged. Where this server sells card credits (see Payment), a client can instead connect with an `Authorization: Bearer ` header: each paid tool then takes its price from the key's balance. ## Payment Payments: each data endpoint is paid per call with [x402](https://x402.org), in USDC on Base (mainnet) (`eip155:8453`): `/search` $0.01, `/plan` $0.03, `/plan/history` $0.25, `/fees` $0.10, `/changes` $0.25, `/prospects` $0.25. Call without paying to get a 402 whose `PAYMENT-REQUIRED` header carries the payment instructions; an x402 client signs the payment and repeats the call. Errors and empty results aren't charged (the `PAYMENT-RESPONSE` receipt shows amount 0, no transaction). Free: `/health`, `/coverage`, `/llms.txt` and these docs. No crypto wallet? Buy prepaid credits by card at `/buy`, then send `Authorization: Bearer ` with each call instead: the same prices and rules, and `/balance` shows what's left. ## Source U.S. DOL Form 5500 public filings (EFAST2 datasets). Public data only. Each plan year links back to its filing's ACK ID, which can be looked up on efast.dol.gov.