NMLS Scraper - Mortgage Loan Originators, Lenders & Branches
Pricing
Pay per event
NMLS Scraper - Mortgage Loan Originators, Lenders & Branches
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.
Pricing
Pay per event
Rating
0.0
(0)
Developer
BowTiedRaccoon
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
NMLS Consumer Access Scraper — Mortgage Loan Originators & Lenders
Scrape the NMLS Consumer Access 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
- Pick a query mode.
by_nmls_idis for direct enrichment of known IDs.by_namedoes a full-text search.by_stateiterates all entities in one or more US states.by_company_employeespulls the MLO roster for a sponsoring company. - 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.
- 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.
- 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
{"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:
{ "mode": "by_nmls_id", "nmlsIds": ["3030", "2289"], "maxItems": 2 }
Search by name (company or individual):
{ "mode": "by_name", "names": ["Rocket Mortgage"], "entityType": "COMPANY", "maxItems": 10 }
Pull all MLOs sponsored by a company:
{ "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.
{"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 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.