# SEC IAPD Investment Adviser Disclosure Scraper (`crawlerbros/sec-iapd-investment-adviser-scraper`) Actor

Search the SEC's Investment Adviser Public Disclosure (IAPD) database by firm/individual name, browse by U.S. state, or look up by CRD number. Get registration status, addresses, Form ADV data, brochures, and disciplinary disclosures. No login required.

- **URL**: https://apify.com/crawlerbros/sec-iapd-investment-adviser-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Automation, Developer tools, Integrations
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 IAPD Investment Adviser Disclosure Scraper

Scrape the SEC's **Investment Adviser Public Disclosure (IAPD)** database — the public, Dodd-Frank-mandated record of every SEC- and state-registered investment adviser firm and individual in the United States. Search by name, employer, or CRD number; browse by state; filter by registration type (Investment Adviser / Broker-Dealer / Dual) or disciplinary status (Expelled/Barred); and pull a full disclosure record with registration history, Form ADV filing data, brochures, exam history, and disciplinary/regulatory disclosure history. No login, no API key, no proxy.

### What this actor does

- **Five modes:** `searchFirms`, `searchIndividuals`, `browseByState`, `firmByCrd`, `individualByCrd`
- **Firm records** — registration status/type (SEC/state, RIA vs Broker-Dealer vs Dual), legal entity type, formation state/date, SEC district office, office address, Form ADV filing date, brochure (Part 2) download links, notice-filing jurisdictions, exempt-reporting-adviser flag
- **Individual records** — current & previous employments (with branch address), registered states (with scope/status/date), registered SROs, full exam history (Series 65/63/7/etc. with dates), years of industry experience, and structured **disciplinary disclosure events** (event date, type, resolution, disposition)
- **Filters:** registration type (Investment Adviser / Broker-Dealer / Dual-registered), employer-firm filter (individuals), active-only registration status, disclosure-only, and expelled/barred-only (the SEC/FINRA's strongest disciplinary designation)
- **Empty fields are omitted** — every record only contains data that's actually on file

### Output per record

**Firms** (`entityType: "firm"`):
- `crdNumber`, `name`, `otherNames[]`
- `iaSecNumber`, `bdSecNumber`, `registrationType` (`investmentAdviser` / `brokerDealer` / `dual`)
- `registrationStatus` (e.g. `ACTIVE`), `advFilingDate`
- `street1`, `street2`, `city`, `state`, `postalCode`, `country`
- `branchesCount`, `finraRegistrationCount`
- `firmStatus`, `firmStatusDate`, `legalEntityType`, `formedState`, `formedDate`, `secDistrict`, `brokerCheckScope`, `finraRegistered` — full lookups only
- `registrationHistory[]` (jurisdiction, status, effective date) — full lookups only
- `noticeFilings[]` (state notice-filing jurisdictions) — full lookups only
- `isSecRegistered`, `isStateRegistered`, `isExemptReportingAdviser` — full lookups only
- `brochures[]` (name, date submitted, PDF download URL) — full lookups only
- `hasDisclosure`, `fullReportUrl` (official SEC PDF disclosure report)
- `sourceUrl`, `recordType: "firm"`, `scrapedAt`

**Individuals** (`entityType: "individual"`):
- `crdNumber`, `firstName`, `middleName`, `lastName`, `name`, `otherNames[]` — `middleName`/`otherNames` from search modes
- `brokerCheckScope`, `adviserScope`, `hasDisclosure`
- `experienceYears` (years in the industry), `finraRegistrationCount`, `employmentsCount` — search modes only
- `currentEmployments[]` (firm name/ID, branch city/state/zip; full lookups additionally include street address and broker/adviser scope)
- `previousEmployments[]` (firm name/ID, city/state, start/end dates) — full lookups only
- `disclosures[]` (event date, disclosure type, resolution, disposition, comment) — full lookups only
- `registeredStates[]` (state, scope, status, registered date), `registeredSROs[]` (e.g. FINRA, with registration categories) — full lookups only
- `registrationCounts` (SRO/FINRA/state/IA-state approved-registration tallies, inactive/suspended flags) — full lookups only
- `examHistory[]` (exam category, name, date taken, scope — e.g. Series 65/63/7), `examsCount` — full lookups only
- `sourceUrl`, `recordType: "individual"`, `scrapedAt`

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `searchFirms` | `searchFirms` / `searchIndividuals` / `browseByState` / `firmByCrd` / `individualByCrd` |
| `searchQuery` | string | `Vanguard` | Firm/individual name — required for `searchFirms`/`searchIndividuals`; ignored for `browseByState` (pure state browse) and CRD lookups |
| `state` | string | – | Two-letter U.S. state code, all 50 states + DC + territories (required for `browseByState`; optional filter on search modes) |
| `entityType` | string | `firm` | `firm` or `individual` (mode=`browseByState`) |
| `firmType` | string | Any | Restrict firms to `investmentAdviser` (RIA) / `brokerDealer` / `dual` (mode=`searchFirms`/`browseByState` with `entityType=firm`) |
| `individualType` | string | Any | Restrict individuals to `investmentAdviserRep` / `brokerRep` / `dual` (mode=`searchIndividuals`/`browseByState` with `entityType=individual`) |
| `employerFirm` | string | – | Only return individuals currently employed by a firm matching this name or CRD (mode=`searchIndividuals`/`browseByState` with `entityType=individual`) |
| `crdNumbers` | array | – | CRD numbers to look up (mode=`firmByCrd`/`individualByCrd`) |
| `includeInactive` | boolean | `true` | When off, drops non-`ACTIVE` registrations |
| `disclosureOnly` | boolean | `false` | When on, only emits records flagged with a disciplinary disclosure |
| `expelledOrBarredOnly` | boolean | `false` | When on, only emits firms with `Expelled` status or individuals with `Barred` status — search modes only |
| `maxItems` | integer | `20` | Hard cap on emitted records (1–2000) |

#### Example: search firms by name

```json
{ "mode": "searchFirms", "searchQuery": "Vanguard", "maxItems": 25 }
````

#### Example: browse all active advisers registered in Wyoming

```json
{ "mode": "browseByState", "entityType": "firm", "state": "WY", "includeInactive": false }
```

#### Example: full disclosure record by CRD

```json
{ "mode": "firmByCrd", "crdNumbers": ["105958", "285052"] }
```

#### Example: individuals with disciplinary history

```json
{ "mode": "searchIndividuals", "searchQuery": "Smith", "disclosureOnly": true }
```

#### Example: only pure Registered Investment Adviser firms (exclude broker-dealers)

```json
{ "mode": "searchFirms", "searchQuery": "Capital", "firmType": "investmentAdviser", "maxItems": 25 }
```

#### Example: individuals currently employed by a specific firm

```json
{ "mode": "searchIndividuals", "searchQuery": "Smith", "employerFirm": "Vanguard", "maxItems": 25 }
```

#### Example: expelled firms / barred individuals (strongest disciplinary flag)

```json
{ "mode": "searchFirms", "searchQuery": "Capital", "expelledOrBarredOnly": true, "maxItems": 25 }
```

### Use cases

- **Due diligence** — verify an adviser's registration status, type, and disciplinary history before doing business
- **Compliance monitoring** — track registration changes and new disclosures for a watchlist of firms
- **Fintech / robo-advisor vetting** — confirm SEC registration, entity type, and filing recency
- **Journalism & research** — bulk-analyze disciplinary actions, expulsions, and bars by state or firm
- **RIA recruiting / M\&A** — screen firms by registration scope, type, and branch footprint; find individuals by current employer
- **Background checks** — pull an adviser's exam history and years of industry experience

### FAQ

**What's IAPD?** The SEC's Investment Adviser Public Disclosure system — the public face of Form ADV data that every registered investment adviser firm and its associated individuals must file. It's the same regulatory family as FINRA BrokerCheck, mandated to be freely and publicly searchable.

**What's a CRD number?** The Central Registration Depository number — a unique ID assigned to every registered firm and individual across the FINRA/SEC/NASAA regulatory ecosystem.

**What's the difference between `firmType`/`individualType` and `registrationType` in the output?** `firmType`/`individualType` are input filters (applied by the SEC's own search API) that restrict which records come back. `registrationType` in the output is a lightweight per-record classification derived from which SEC number(s) a firm has on file, so results are self-describing without a separate lookup. The two usually agree; on the rare firm registered as an adviser only at the state level (no SEC number issued), `registrationType` may read `brokerDealer` even though the `dual` filter matched it — a quirk of state-only IA registrations, not a bug.

**What counts as "Expelled" or "Barred"?** These are the SEC/FINRA's most severe registration outcomes — a firm's registration permanently revoked (Expelled) or an individual permanently prohibited from the industry (Barred). `expelledOrBarredOnly` surfaces only these records.

**Why do full lookups (`firmByCrd`/`individualByCrd`) return more fields than search modes?** The name-search endpoint returns a lightweight summary record; the CRD-based endpoint returns the full disclosure record (registration history, brochures, disciplinary events, exam history). Use search to discover CRD numbers, then look up the CRD for the full picture.

**Why don't firm records include structured disciplinary-event details like individuals do?** The SEC only publishes firm-level disciplinary/regulatory events as part of the official PDF disclosure report (linked via `fullReportUrl`), not as structured JSON — this is a limitation of the underlying SEC data, not the actor. The `hasDisclosure` flag and the direct PDF link are provided so the record isn't silently missing this signal.

**Is this data official?** Yes — sourced live from `api.adviserinfo.sec.gov`, the API backing the SEC's own adviserinfo.sec.gov site.

**How fresh is the data?** Real-time — every request hits the live SEC API.

# Actor input Schema

## `mode` (type: `string`):

What to fetch.

## `searchQuery` (type: `string`):

Firm or individual name. Required for mode=searchFirms/searchIndividuals. Ignored for mode=browseByState (which is a pure state browse) and mode=firmByCrd/individualByCrd.

## `state` (type: `string`):

Office state filter. Required for mode=browseByState; optional refinement for mode=searchFirms/searchIndividuals.

## `entityType` (type: `string`):

Whether to browse firms or individuals within the selected state.

## `firmType` (type: `string`):

Restrict firm results to Investment Adviser firms, Broker-Dealer firms, or firms dual-registered as both. Applies to mode=searchFirms and mode=browseByState (entityType=firm). Mirrors the official IAPD registration-type filter.

## `individualType` (type: `string`):

Restrict individual results to Investment Adviser representatives, Broker-Dealer representatives, or individuals dual-registered as both. Applies to mode=searchIndividuals and mode=browseByState (entityType=individual). Mirrors the official IAPD registration-type filter.

## `employerFirm` (type: `string`):

Only return individuals currently employed by a firm matching this name or CRD number. Applies to mode=searchIndividuals and mode=browseByState (entityType=individual).

## `crdNumbers` (type: `array`):

One or more CRD numbers to fetch full disclosure records for.

## `includeInactive` (type: `boolean`):

When off, drops records whose registration scope is not ACTIVE (search modes only).

## `disclosureOnly` (type: `boolean`):

When on, only emit firms/individuals flagged as having a disclosure event on file.

## `expelledOrBarredOnly` (type: `boolean`):

When on, asks IAPD's search API to restrict to firms with 'Expelled' registration status or individuals with 'Barred' status — the SEC/FINRA's strongest disciplinary designation (license permanently revoked). Overrides `includeInactive` for status filtering. Search modes only. IMPORTANT: verified this server-side filter is unreliable — IAPD's own search results never carry an explicit 'Expelled' status value at the search level (only ACTIVE/INACTIVE), so some non-expelled firms/individuals can still appear. For confirmed disciplinary status on a specific entity, cross-check with `firmByCrd`/`individualByCrd` mode, which returns full detail including real status history.

## `maxItems` (type: `integer`):

Hard cap on emitted records.

## Actor input object example

```json
{
  "mode": "searchFirms",
  "searchQuery": "Vanguard",
  "state": "",
  "entityType": "firm",
  "firmType": "",
  "individualType": "",
  "employerFirm": "",
  "crdNumbers": [],
  "includeInactive": true,
  "disclosureOnly": false,
  "expelledOrBarredOnly": false,
  "maxItems": 20
}
```

# Actor output Schema

## `advisers` (type: `string`):

Dataset containing all scraped investment adviser firm/individual records.

# 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 = {
    "mode": "searchFirms",
    "searchQuery": "Vanguard",
    "state": "",
    "entityType": "firm",
    "firmType": "",
    "individualType": "",
    "employerFirm": "",
    "crdNumbers": [],
    "includeInactive": true,
    "disclosureOnly": false,
    "expelledOrBarredOnly": false,
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/sec-iapd-investment-adviser-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 = {
    "mode": "searchFirms",
    "searchQuery": "Vanguard",
    "state": "",
    "entityType": "firm",
    "firmType": "",
    "individualType": "",
    "employerFirm": "",
    "crdNumbers": [],
    "includeInactive": True,
    "disclosureOnly": False,
    "expelledOrBarredOnly": False,
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/sec-iapd-investment-adviser-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 '{
  "mode": "searchFirms",
  "searchQuery": "Vanguard",
  "state": "",
  "entityType": "firm",
  "firmType": "",
  "individualType": "",
  "employerFirm": "",
  "crdNumbers": [],
  "includeInactive": true,
  "disclosureOnly": false,
  "expelledOrBarredOnly": false,
  "maxItems": 20
}' |
apify call crawlerbros/sec-iapd-investment-adviser-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=crawlerbros/sec-iapd-investment-adviser-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "SEC IAPD Investment Adviser Disclosure Scraper",
        "description": "Search the SEC's Investment Adviser Public Disclosure (IAPD) database by firm/individual name, browse by U.S. state, or look up by CRD number. Get registration status, addresses, Form ADV data, brochures, and disciplinary disclosures. No login required.",
        "version": "1.0",
        "x-build-id": "13vQC19ewwEav2isb"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~sec-iapd-investment-adviser-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-sec-iapd-investment-adviser-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/crawlerbros~sec-iapd-investment-adviser-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-sec-iapd-investment-adviser-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/crawlerbros~sec-iapd-investment-adviser-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-sec-iapd-investment-adviser-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",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "searchFirms",
                            "searchIndividuals",
                            "browseByState",
                            "firmByCrd",
                            "individualByCrd"
                        ],
                        "type": "string",
                        "description": "What to fetch.",
                        "default": "searchFirms"
                    },
                    "searchQuery": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Firm or individual name. Required for mode=searchFirms/searchIndividuals. Ignored for mode=browseByState (which is a pure state browse) and mode=firmByCrd/individualByCrd.",
                        "default": "Vanguard"
                    },
                    "state": {
                        "title": "U.S. state",
                        "enum": [
                            "",
                            "AL",
                            "AK",
                            "AZ",
                            "AR",
                            "CA",
                            "CO",
                            "CT",
                            "DE",
                            "FL",
                            "GA",
                            "HI",
                            "ID",
                            "IL",
                            "IN",
                            "IA",
                            "KS",
                            "KY",
                            "LA",
                            "ME",
                            "MD",
                            "MA",
                            "MI",
                            "MN",
                            "MS",
                            "MO",
                            "MT",
                            "NE",
                            "NV",
                            "NH",
                            "NJ",
                            "NM",
                            "NY",
                            "NC",
                            "ND",
                            "OH",
                            "OK",
                            "OR",
                            "PA",
                            "RI",
                            "SC",
                            "SD",
                            "TN",
                            "TX",
                            "UT",
                            "VT",
                            "VA",
                            "WA",
                            "WV",
                            "WI",
                            "WY",
                            "DC",
                            "PR",
                            "VI",
                            "GU",
                            "AS",
                            "MP"
                        ],
                        "type": "string",
                        "description": "Office state filter. Required for mode=browseByState; optional refinement for mode=searchFirms/searchIndividuals.",
                        "default": ""
                    },
                    "entityType": {
                        "title": "Entity type (mode=browseByState)",
                        "enum": [
                            "firm",
                            "individual"
                        ],
                        "type": "string",
                        "description": "Whether to browse firms or individuals within the selected state.",
                        "default": "firm"
                    },
                    "firmType": {
                        "title": "Firm registration type",
                        "enum": [
                            "",
                            "investmentAdviser",
                            "brokerDealer",
                            "dual"
                        ],
                        "type": "string",
                        "description": "Restrict firm results to Investment Adviser firms, Broker-Dealer firms, or firms dual-registered as both. Applies to mode=searchFirms and mode=browseByState (entityType=firm). Mirrors the official IAPD registration-type filter.",
                        "default": ""
                    },
                    "individualType": {
                        "title": "Individual registration type",
                        "enum": [
                            "",
                            "investmentAdviserRep",
                            "brokerRep",
                            "dual"
                        ],
                        "type": "string",
                        "description": "Restrict individual results to Investment Adviser representatives, Broker-Dealer representatives, or individuals dual-registered as both. Applies to mode=searchIndividuals and mode=browseByState (entityType=individual). Mirrors the official IAPD registration-type filter.",
                        "default": ""
                    },
                    "employerFirm": {
                        "title": "Employer firm filter (mode=searchIndividuals)",
                        "type": "string",
                        "description": "Only return individuals currently employed by a firm matching this name or CRD number. Applies to mode=searchIndividuals and mode=browseByState (entityType=individual).",
                        "default": ""
                    },
                    "crdNumbers": {
                        "title": "CRD numbers (mode=firmByCrd / individualByCrd)",
                        "type": "array",
                        "description": "One or more CRD numbers to fetch full disclosure records for.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "includeInactive": {
                        "title": "Include inactive/withdrawn registrations",
                        "type": "boolean",
                        "description": "When off, drops records whose registration scope is not ACTIVE (search modes only).",
                        "default": true
                    },
                    "disclosureOnly": {
                        "title": "Only records with disciplinary disclosures",
                        "type": "boolean",
                        "description": "When on, only emit firms/individuals flagged as having a disclosure event on file.",
                        "default": false
                    },
                    "expelledOrBarredOnly": {
                        "title": "Only expelled firms / barred individuals",
                        "type": "boolean",
                        "description": "When on, asks IAPD's search API to restrict to firms with 'Expelled' registration status or individuals with 'Barred' status — the SEC/FINRA's strongest disciplinary designation (license permanently revoked). Overrides `includeInactive` for status filtering. Search modes only. IMPORTANT: verified this server-side filter is unreliable — IAPD's own search results never carry an explicit 'Expelled' status value at the search level (only ACTIVE/INACTIVE), so some non-expelled firms/individuals can still appear. For confirmed disciplinary status on a specific entity, cross-check with `firmByCrd`/`individualByCrd` mode, which returns full detail including real status history.",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 2000,
                        "type": "integer",
                        "description": "Hard cap on emitted records.",
                        "default": 20
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
