# NMLS Scraper - Mortgage Loan Originators, Lenders & Branches (`jungle_synthesizer/nmls-consumer-access-crawler`) Actor

Scrape NMLS Consumer Access for US mortgage originators (MLOs), companies, and branches. Row-per-entity with state licenses, disclosures, and sponsor links. First Apify actor for NMLS data.

- **URL**: https://apify.com/jungle\_synthesizer/nmls-consumer-access-crawler.md
- **Developed by:** [BowTiedRaccoon](https://apify.com/jungle_synthesizer) (community)
- **Categories:** Business, Lead generation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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

## NMLS Consumer Access Scraper — Mortgage Loan Originators & Lenders

Scrape the [NMLS Consumer Access](https://www.nmlsconsumeraccess.org) registry for US mortgage companies, branches, and Mortgage Loan Originators (MLOs). Returns state-by-state licenses, regulator disclosures, sponsor relationships, and full contact info for ~500K active MLOs, ~40K companies, and ~125K branches — the same data mortgage recruiters and compliance teams pay $5K-$25K/year for.

---

### NMLS Consumer Access Scraper Features

- Extracts 25+ fields per entity including licenses, disclosures, contacts, and sponsor links
- Returns per-state license details — license name, regulator, status, issue date, license number
- Covers all three NMLS entity types: INDIVIDUAL (MLO), COMPANY, and BRANCH
- Supports four query modes: by NMLS ID, by name, by US state, or by sponsoring company
- Handles BotDetect CAPTCHA automatically via CapSolver — one solve per run
- Cleans Cloudflare-obfuscated emails back to readable form, because obscurity isn't security
- Returns clean JSON with flattened arrays — no nested objects, no HTML, no surprises
- No proxies required — runs on any Apify plan including Free
- Pay-per-record pricing: $0.10 per run + $0.001 per record

---

### Who Uses NMLS Data?

- **Mortgage recruiters** — Source licensed MLOs by state or sponsoring company for outreach
- **Wholesale lenders** — Build territory lists of brokers and lenders with active licenses in target states
- **Compliance and risk teams** — Screen counterparties for regulatory actions and license status before onboarding
- **Market researchers** — Size the mortgage origination market by state, license type, or sponsor
- **Fintech and CRM integrators** — Enrich existing mortgage contacts with NMLS IDs, license coverage, and disclosure history

---

### How NMLS Consumer Access Scraper Works

1. Pick a query mode. `by_nmls_id` is for direct enrichment of known IDs. `by_name` does a full-text search. `by_state` iterates all entities in one or more US states. `by_company_employees` pulls the MLO roster for a sponsoring company.
2. The actor warms a session, solves the one-time BotDetect CAPTCHA, and then reuses the session for the rest of the run. One CAPTCHA per run, not one per record.
3. Each matched entity's detail page is fetched and parsed — state licenses, regulatory actions, branch counts, employment history, and sponsor info all get flattened into a single row.
4. Results stream into the Apify dataset as they're scraped. Pay-per-record billing means a full state-level pull costs a handful of dollars, not a subscription.

---

### Input

```json
{
    "mode": "by_state",
    "states": ["CA", "TX"],
    "entityType": "INDIVIDUAL",
    "includeDisclosures": true,
    "maxItems": 500,
    "proxyConfiguration": { "useApifyProxy": false }
}
````

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `mode` | string | `by_name` | Query mode: `by_nmls_id`, `by_name`, `by_state`, or `by_company_employees` |
| `nmlsIds` | array | `[]` | List of NMLS IDs (e.g., `"3030"`). Used when `mode = by_nmls_id` |
| `names` | array | `[]` | Company or individual names to search. Used when `mode = by_name` |
| `states` | array | `[]` | Two-letter US state codes (e.g., `["CA", "TX"]`). Used when `mode = by_state` |
| `entityType` | string | `""` (all) | Filter to `INDIVIDUAL`, `COMPANY`, or `BRANCH`. Empty returns all |
| `sponsoringCompanyIds` | array | `[]` | Sponsoring company NMLS IDs. Used when `mode = by_company_employees` |
| `includeDisclosures` | boolean | `true` | Parse regulator action details from each entity page |
| `maxItems` | integer | `20` | Max records to return (1-10000) |
| `proxyConfiguration` | object | `{useApifyProxy: false}` | Proxy settings. NMLS does not require a proxy |

#### Example inputs

**Direct lookup by NMLS ID:**

```json
{ "mode": "by_nmls_id", "nmlsIds": ["3030", "2289"], "maxItems": 2 }
```

**Search by name (company or individual):**

```json
{ "mode": "by_name", "names": ["Rocket Mortgage"], "entityType": "COMPANY", "maxItems": 10 }
```

**Pull all MLOs sponsored by a company:**

```json
{ "mode": "by_company_employees", "sponsoringCompanyIds": ["2289"], "maxItems": 200 }
```

***

### NMLS Consumer Access Scraper Output Fields

Every record uses the same flat schema regardless of entity type. Fields that don't apply to the entity type (e.g., `sponsoring_company_*` on a COMPANY) are empty strings or zeros.

```json
{
  "nmls_id": "3030",
  "entity_type": "COMPANY",
  "legal_name": "Rocket Mortgage, LLC",
  "other_trade_names": ["Rocket", "Rocket HQ", "Rocket Mortgage", "Rocket Pro"],
  "prior_legal_names": ["Quicken Loans Inc.", "Quicken Loans, LLC"],
  "prior_other_trade_names": ["QLMS", "Rock Financial"],
  "primary_address": "1050 Woodward Avenue",
  "address_line2": "",
  "city": "Detroit",
  "state": "MI",
  "zip": "48226",
  "phone": "800-863-4332",
  "toll_free_phone": "800-863-4332",
  "fax": "855-455-4791",
  "website": "rocket.com/mortgage, www.rocketmortgage.com",
  "email": "CompanyLicensing@rocketmortgage.com",
  "state_licenses_count": 183,
  "state_licenses_active_count": 165,
  "state_licenses": [
    "Alabama - Consumer Credit License - Approved - Issued: 2009-11-10 - #20979",
    "California - DFPI - Residential Mortgage Lending Act License - Approved - Issued: 1998-11-19 - #4130233"
  ],
  "license_types": ["Mortgage Lender License", "Mortgage Servicer License"],
  "federal_registrations": [],
  "regulator_disclosures_count": 0,
  "regulator_disclosures": [],
  "branch_locations_active_count": 82,
  "branch_locations_count": 3862,
  "branch_states": ["AZ", "CA", "CO", "FL", "MI", "TX"],
  "sponsoring_company_nmls_id": "",
  "sponsoring_company_name": "",
  "employment_history": [],
  "office_locations": [],
  "is_active": true,
  "detail_url": "https://www.nmlsconsumeraccess.org/EntityDetails.aspx/COMPANY/3030",
  "scraped_at": "2026-04-21T14:22:27.831Z"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `nmls_id` | string | NMLS unique identifier |
| `entity_type` | string | `INDIVIDUAL`, `COMPANY`, or `BRANCH` |
| `legal_name` | string | Legal name of the entity |
| `other_trade_names` | array of strings | DBAs currently in use |
| `prior_legal_names` | array of strings | Historical legal names |
| `prior_other_trade_names` | array of strings | Previously used DBAs |
| `primary_address` | string | Street address line 1 |
| `address_line2` | string | Suite, unit, or line 2 |
| `city` | string | City |
| `state` | string | Two-letter state code |
| `zip` | string | ZIP code (5 or 9 digit) |
| `phone` | string | Primary phone |
| `toll_free_phone` | string | Toll-free phone if listed |
| `fax` | string | Fax number |
| `website` | string | Website URL(s), comma-separated |
| `email` | string | Primary email (Cloudflare obfuscation decoded) |
| `state_licenses_count` | integer | Total state licenses on record (active + inactive) |
| `state_licenses_active_count` | integer | Count of currently active licenses |
| `state_licenses` | array of strings | Formatted `"State - License Name - Status - Issued: YYYY-MM-DD - #LicenseNum"` |
| `license_types` | array of strings | Unique license type names across all states |
| `federal_registrations` | array of strings | Federal regulator registrations |
| `regulator_disclosures_count` | integer | Total regulatory actions on record |
| `regulator_disclosures` | array of strings | Formatted `"Regulator - Date - Action Type - Case #"` |
| `branch_locations_active_count` | integer | Active branches (companies only) |
| `branch_locations_count` | integer | Total branches past and present (companies only) |
| `branch_states` | array of strings | States where branches operate (companies, from search results) |
| `sponsoring_company_nmls_id` | string | Sponsoring company NMLS ID (MLOs only) |
| `sponsoring_company_name` | string | Sponsoring company legal name (MLOs only) |
| `employment_history` | array of strings | Employer history (individuals only) |
| `office_locations` | array of strings | Registered office locations (individuals only) |
| `is_active` | boolean | Whether the entity has at least one active license |
| `detail_url` | string | Direct link to the entity's NMLS detail page |
| `scraped_at` | string | ISO timestamp when the record was scraped |

***

### FAQ

#### How do I scrape NMLS Consumer Access?

NMLS Consumer Access Scraper handles it for you. Pick a query mode (by NMLS ID, name, state, or sponsoring company), set `maxItems`, and run. The actor solves the one-time BotDetect CAPTCHA on its own and returns structured JSON.

#### How much does NMLS Consumer Access Scraper cost to run?

NMLS Consumer Access Scraper uses pay-per-event pricing: $0.10 per run + $0.001 per record. A 100-MLO pull runs ~$0.20. A 5,000-MLO state sweep runs ~$5.10. A full 500K-MLO enumeration costs ~$500 — though you probably don't need the whole country.

#### Does NMLS Consumer Access Scraper need proxies?

No. The actor uses `got-scraping` to bypass Cloudflare without a proxy. The `proxyConfiguration` field is there if you want to route through Apify proxy for geo-targeting, but the default (no proxy) works fine on any plan.

#### Can I pull only MLOs sponsored by a specific company?

Yes. Set `mode = by_company_employees` and pass the company's NMLS ID in `sponsoringCompanyIds`. The actor fetches each sponsoring company's detail page, then searches for and enriches every MLO whose active sponsor ID matches.

#### What data can I get from NMLS?

NMLS Consumer Access Scraper returns per-state license details (regulator, license name, status, issue date, license number), regulatory action history, sponsor relationships for MLOs, branch counts for companies, full contact info, and up to 25+ structured fields per record. Consumer complaint counts are not exposed by the site itself and are therefore not included.

#### Is the data real-time?

NMLS Consumer Access Scraper hits the live NMLS Consumer Access registry. State regulators update the registry daily, so what you get is current as of the last regulator sync — typically within 24 hours for license changes.

***

### Need More Features?

Need custom fields, per-state pagination strategies, or a different mortgage data source? [File an issue](https://console.apify.com/actors/jungle_synthesizer~nmls-consumer-access-crawler/issues) or get in touch.

### Why Use NMLS Consumer Access Scraper?

- **Affordable** — $0.10/run + $0.001/record. A 5K-MLO state pull runs ~$5 versus $5K-$25K/year for equivalent commercial feeds.
- **Clean output** — returns flat JSON with consistent field names, decoded emails, ISO dates, and flattened license arrays. No HTML, no nested objects, no cleanup required before you feed it into your CRM.
- **Blue ocean** — the only Apify actor that targets NMLS Consumer Access. Every other mortgage-related actor on the store scrapes Zillow, which is not the same thing.

# Actor input Schema

## `sp_intended_usage` (type: `string`):

Please describe how you plan to use the data extracted by this crawler.

## `sp_improvement_suggestions` (type: `string`):

Provide any feedback or suggestions for improvements.

## `sp_contact` (type: `string`):

Provide your email address so we can get in touch with you.

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

How to discover entities. 'by\_name' and 'by\_state' paginate search results; 'by\_nmls\_id' fetches specific entities directly; 'by\_company\_employees' pulls MLOs for each listed sponsoring company.

## `nmlsIds` (type: `array`):

List of NMLS IDs to fetch directly. Used when mode = by\_nmls\_id.

## `names` (type: `array`):

Company or individual names for full-text search. Used when mode = by\_name. Each name is searched separately.

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

Two-letter US state codes (e.g., CA, TX, NY). Used when mode = by\_state or as a filter in other modes.

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

Filter to a specific entity type. Leave empty to include all.

## `sponsoringCompanyIds` (type: `array`):

NMLS IDs of sponsoring companies. Used when mode = by\_company\_employees. The actor pulls each company's detail page and enumerates sponsored MLOs.

## `includeDisclosures` (type: `boolean`):

Parse regulator action details from each entity page. Slightly slower but provides compliance-grade data.

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

Maximum number of entity records to return.

## `proxyConfiguration` (type: `object`):

Proxy settings. NMLS Consumer Access does not require a proxy — got-scraping handles Cloudflare. Only enable if you need geo-targeting or your datacenter IP is blocked.

## Actor input object example

```json
{
  "sp_intended_usage": "Describe your intended use...",
  "sp_improvement_suggestions": "Share your suggestions here...",
  "sp_contact": "Share your email here...",
  "mode": "by_name",
  "nmlsIds": [
    "3030",
    "2289"
  ],
  "names": [
    "Rocket Mortgage"
  ],
  "states": [],
  "entityType": "",
  "sponsoringCompanyIds": [],
  "includeDisclosures": true,
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

No description

# 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 = {
    "sp_intended_usage": "Describe your intended use...",
    "sp_improvement_suggestions": "Share your suggestions here...",
    "sp_contact": "Share your email here...",
    "mode": "by_name",
    "nmlsIds": [
        "3030",
        "2289"
    ],
    "names": [
        "Rocket Mortgage"
    ],
    "states": [],
    "entityType": "",
    "sponsoringCompanyIds": [],
    "includeDisclosures": true,
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("jungle_synthesizer/nmls-consumer-access-crawler").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 = {
    "sp_intended_usage": "Describe your intended use...",
    "sp_improvement_suggestions": "Share your suggestions here...",
    "sp_contact": "Share your email here...",
    "mode": "by_name",
    "nmlsIds": [
        "3030",
        "2289",
    ],
    "names": ["Rocket Mortgage"],
    "states": [],
    "entityType": "",
    "sponsoringCompanyIds": [],
    "includeDisclosures": True,
    "maxItems": 20,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("jungle_synthesizer/nmls-consumer-access-crawler").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 '{
  "sp_intended_usage": "Describe your intended use...",
  "sp_improvement_suggestions": "Share your suggestions here...",
  "sp_contact": "Share your email here...",
  "mode": "by_name",
  "nmlsIds": [
    "3030",
    "2289"
  ],
  "names": [
    "Rocket Mortgage"
  ],
  "states": [],
  "entityType": "",
  "sponsoringCompanyIds": [],
  "includeDisclosures": true,
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call jungle_synthesizer/nmls-consumer-access-crawler --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=jungle_synthesizer/nmls-consumer-access-crawler",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "NMLS Scraper - Mortgage Loan Originators, Lenders & Branches",
        "description": "Scrape NMLS Consumer Access for US mortgage originators (MLOs), companies, and branches. Row-per-entity with state licenses, disclosures, and sponsor links. First Apify actor for NMLS data.",
        "version": "1.0",
        "x-build-id": "itSgofOpFue79SBNc"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/jungle_synthesizer~nmls-consumer-access-crawler/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-jungle_synthesizer-nmls-consumer-access-crawler",
                "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/jungle_synthesizer~nmls-consumer-access-crawler/runs": {
            "post": {
                "operationId": "runs-sync-jungle_synthesizer-nmls-consumer-access-crawler",
                "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/jungle_synthesizer~nmls-consumer-access-crawler/run-sync": {
            "post": {
                "operationId": "run-sync-jungle_synthesizer-nmls-consumer-access-crawler",
                "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": [
                    "sp_intended_usage",
                    "sp_improvement_suggestions"
                ],
                "properties": {
                    "sp_intended_usage": {
                        "title": "What is the intended usage of this data?",
                        "minLength": 1,
                        "type": "string",
                        "description": "Please describe how you plan to use the data extracted by this crawler."
                    },
                    "sp_improvement_suggestions": {
                        "title": "How can we improve this crawler for you?",
                        "minLength": 1,
                        "type": "string",
                        "description": "Provide any feedback or suggestions for improvements."
                    },
                    "sp_contact": {
                        "title": "Contact Email",
                        "minLength": 1,
                        "type": "string",
                        "description": "Provide your email address so we can get in touch with you."
                    },
                    "mode": {
                        "title": "Query Mode",
                        "enum": [
                            "by_nmls_id",
                            "by_name",
                            "by_state",
                            "by_company_employees"
                        ],
                        "type": "string",
                        "description": "How to discover entities. 'by_name' and 'by_state' paginate search results; 'by_nmls_id' fetches specific entities directly; 'by_company_employees' pulls MLOs for each listed sponsoring company.",
                        "default": "by_name"
                    },
                    "nmlsIds": {
                        "title": "NMLS IDs",
                        "type": "array",
                        "description": "List of NMLS IDs to fetch directly. Used when mode = by_nmls_id.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "names": {
                        "title": "Names",
                        "type": "array",
                        "description": "Company or individual names for full-text search. Used when mode = by_name. Each name is searched separately.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "states": {
                        "title": "States",
                        "type": "array",
                        "description": "Two-letter US state codes (e.g., CA, TX, NY). Used when mode = by_state or as a filter in other modes.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "entityType": {
                        "title": "Entity Type",
                        "enum": [
                            "",
                            "INDIVIDUAL",
                            "COMPANY",
                            "BRANCH"
                        ],
                        "type": "string",
                        "description": "Filter to a specific entity type. Leave empty to include all.",
                        "default": ""
                    },
                    "sponsoringCompanyIds": {
                        "title": "Sponsoring Company NMLS IDs",
                        "type": "array",
                        "description": "NMLS IDs of sponsoring companies. Used when mode = by_company_employees. The actor pulls each company's detail page and enumerates sponsored MLOs.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "includeDisclosures": {
                        "title": "Include Regulator Disclosures",
                        "type": "boolean",
                        "description": "Parse regulator action details from each entity page. Slightly slower but provides compliance-grade data.",
                        "default": true
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum number of entity records to return.",
                        "default": 20
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings. NMLS Consumer Access does not require a proxy — got-scraping handles Cloudflare. Only enable if you need geo-targeting or your datacenter IP is blocked."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
