BrokerCheck Scraper - Financial Advisors, Brokers & Firms avatar

BrokerCheck Scraper - Financial Advisors, Brokers & Firms

Pricing

from $10.00 / 1,000 adviser / broker scrapeds

Go to Apify Store
BrokerCheck Scraper - Financial Advisors, Brokers & Firms

BrokerCheck Scraper - Financial Advisors, Brokers & Firms

Scrape FINRA BrokerCheck & SEC IAPD: brokers, investment advisers and firms by name, CRD or firm roster. Full reports — employment history, Series exams/licenses, registered states, disclosures, firm AUM/address/phone. Monitoring + leads. No login, no API key, no browser.

Pricing

from $10.00 / 1,000 adviser / broker scrapeds

Rating

0.0

(0)

Developer

Scrape Sage

Scrape Sage

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

BrokerCheck Scraper — Financial Advisors, Brokers & Firms (CRDs, Licenses, Disclosures & Leads)

Extract complete broker, investment adviser and firm data straight from the authoritative public registries — FINRA BrokerCheck and the SEC's Investment Adviser Public Disclosure (IAPD). Search by name, by CRD number, or pull every adviser and broker registered at a firm in one run. Each record ships the full report: current and previous firms, Series exams & licenses, registered states, SRO categories, disclosures (regulatory actions & customer disputes), years of experience — and for firms, type, size, office address, phone, owners and Form ADV brochures.

No login, no cookies, no browser, no API key — fast, reliable JSON extraction from the official source the whole industry trusts.

Why this BrokerCheck scraper?

Other "financial advisor" scrapers pull a subset from Google Maps or a single membership directory (CFP, NAPFA, FPA). This actor reads the complete, authoritative U.S. universe — ~630,000 brokers and ~440,000 investment-adviser reps across ~15,000+ firms — directly from FINRA and the SEC, and ships the richest dataset in the category.

DataTypical scrapersThis actor
Authoritative source (FINRA + SEC)❌ Maps / one directory✅ official registries
CRD number (the industry key)
Broker and investment-adviser statuspartial✅ both
Series exams & licenses (7, 63, 65, 66…)
Registered states + SRO categories
Current and previous firms (work history)
Disclosures (regulatory actions, disputes)
Firm type, size, owners, Form ADV brochures
Firm office address + phonepartial
Full adviser/broker roster of any firm✅ by firm CRD
Disclosure-change monitoring
Firm contact leads (emails, socials from its site)✅ opt-in
Lead score (0–100)

Use cases

  • Recruiting & competitive intelligence — pull a competitor's entire adviser/broker roster by firm CRD, complete with licenses, experience and location. The fastest way to build a recruiting list of in-market reps.
  • Fintech & wealthtech sales / lead generation — target RIA firms and broker-dealers by location, type and size; score them and enrich firm websites for contact emails and socials.
  • Compliance, RegTech & due diligence — screen brokers, advisers and firms for disclosures (regulatory actions, customer disputes), and monitor for new disclosure events over time.
  • Market & M&A research — map firm size, ownership, registrations and adviser movement (employment history) across the industry.
  • Verification & onboarding — confirm a CRD's registrations, licenses and clean/flagged status before doing business.

How to use

  1. Sign up for Apify — the free plan is enough to try this actor.
  2. Open the BrokerCheck Scraper, choose Individuals or Firms, and enter search terms, CRD numbers, or a firm CRD to pull its full roster.
  3. Click Start and watch results stream into the dataset table.
  4. Export as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the Apify API.

Input

{
"searchType": "individuals",
"firmCrdNumbers": ["6413"],
"maxResultsPerTerm": 100,
"includeDetails": true,
"stateFilter": "NJ",
"roleFilter": "advisers",
"activeOnly": true
}
  • searchTypeindividuals (brokers & advisers) or firms (broker-dealers & RIAs).
  • searchTerms — person names (John Smith) or firm names (Edward Jones). Each is paginated up to the limit.
  • firmCrdNumbers — firm CRD numbers (e.g. 6413 = LPL Financial) → list every broker & adviser registered there. The recruiting wedge (Individuals mode).
  • crdNumbers — fetch full reports for specific CRD numbers directly (individuals or firms per the mode).
  • source (default auto)auto (BrokerCheck for individuals; BrokerCheck + SEC IAPD merged for firms), brokercheck (brokers), or sec_iapd (investment advisers).
  • includeDetails (default true) — fetch each record's full report (history, exams, registrations, disclosures; firms add address/phone/owners/brochures). Off = fast lightweight records.
  • roleFilter (default any)brokers, advisers, or any (Individuals).
  • stateFilter — keep one US state (NY or New York); individuals match branch or registered states, firms match office state.
  • activeOnly / withDisclosuresOnly — registration-status and disclosure filters.
  • enrichFirmContacts (default false) — crawl a firm's own website (home + contact/about) for emails, phones and socials.
  • monitorMode (default false) — emit only records that are new, or whose disclosure count changed since the last run.
  • maxResultsPerTerm — cap per search term / per firm roster (paginates automatically).

Output

One record per individual (type: "individual") or firm (type: "firm"). An individual record:

{
"type": "individual",
"crd": "1113790",
"fullName": "Joseph Thomas Smith",
"isBroker": true,
"isInvestmentAdviser": true,
"role": "Broker & Investment Adviser",
"brokerStatus": "Active",
"adviserStatus": "Active",
"industryStartDate": "1984-01-14",
"yearsExperience": 42,
"currentFirmName": "LPL Financial Llc",
"currentFirmCrd": "6413",
"branchCity": "Madison",
"branchState": "NJ",
"branchZip": "07940",
"latitude": 40.76,
"longitude": -74.42,
"currentFirms": [{ "firmCrd": "6413", "firmName": "LPL Financial Llc", "registrationBeginDate": "2020-05-07", "branchCity": "Madison", "branchState": "NJ" }],
"previousFirms": [{ "firmCrd": "7556", "firmName": "Prudential", "branchState": "NJ" }],
"licenses": ["Series 65", "Series 63", "Series 7"],
"exams": [{ "category": "Series 65", "name": "Uniform Investment Adviser Law Examination", "scope": "IA", "takenDate": "2002-08-02" }],
"registeredStateNames": ["California", "Colorado", "Florida", "Maryland", "New Jersey"],
"registeredStatesCount": 10,
"registeredSROs": [{ "sro": "FINRA", "status": "APPROVED", "categories": ["General Securities Representative", "Securities Trader"] }],
"hasDisclosures": false,
"disclosureCount": 0,
"disclosures": [],
"reportUrl": "https://brokercheck.finra.org/individual/summary/1113790",
"source": "brokercheck",
"leadScore": 86,
"scrapedAt": "2026-06-15T12:00:00.000Z"
}

A firm record (type: "firm") carries crd, firmName, firmType, firmSize, isBrokerDealer, isInvestmentAdviser, regulator, district, formedState, street/city/state/postalCode, phone, secNumber, hasDisclosures/disclosureCount/disclosures, directOwners, brochures (Form ADV), reportUrl, plus website/contactEmails/contactPhones/socialLinks when contact enrichment is on.

What to expect (field coverage)

This is official registry data, so the core fields are essentially always present; some are populated only when they exist for that record.

EntityAlways presentUsually presentPresent when it exists
IndividualCRD, name, broker/adviser status, role, report URLcurrent firm + branch location, licenses, registered states, years of experienceprevious firms, disclosures (only flagged reps), SRO categories
FirmCRD, name, type, broker-dealer/adviser status, report URLoffice address, phone, regulator, formed statedirect owners, Form ADV brochures, disclosures, website/emails (with enrichment)

A blank field means the registry doesn't hold that value for the record — never that scraping failed. Nothing is dropped, so you always get the richest dataset available.

Automate & schedule

Run this actor on autopilot and pull results into your own stack:

  • Apify API — start runs, fetch datasets, and manage schedules over REST.
  • apify-client for JavaScript and apify-client for Python — official SDKs.
  • Schedules — run it daily/weekly with monitorMode to catch new advisers at a firm, newly registered firms, or new disclosures as they post.
  • Webhooks — trigger downstream actions (CRM import, Slack alert, compliance review) the moment a run finishes.
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });
const run = await client.actor('scrapesage/brokercheck-scraper').call({
searchType: 'individuals',
firmCrdNumbers: ['6413'],
maxResultsPerTerm: 200,
includeDetails: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} brokers & advisers`);

Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

  • Make — multi-step automation scenarios.
  • Zapier — push new adviser/firm leads straight into your CRM.
  • Slack — get alerted when a monitored firm adds a rep or posts a new disclosure.
  • Google Drive / Sheets — auto-export every run to a spreadsheet.
  • Airbyte — pipe results into your data warehouse.
  • GitHub — trigger runs from commits or releases.

Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server — ask your assistant to "list every active investment adviser at LPL Financial in New Jersey with their licenses" and let it run this scraper for you.

More scrapers from scrapesage

Build a complete financial & B2B intelligence stack — pair adviser/broker data with company, contract and filing intel:

Tips

  • Pull a firm's whole roster: put the firm's CRD in firmCrdNumbers (find it by searching the firm name first, or from the firm's BrokerCheck URL). Then filter by stateFilter and roleFilter to slice the list.
  • Fastest runs: turn includeDetails off for lightweight records (name, CRD, current firm, location, status) when you don't need the full report — then re-run with details on for the CRDs you keep.
  • Compliance monitoring: schedule with monitorMode on; you'll only get records that are new or whose disclosure count changed — perfect for watchlists.
  • Investment advisers vs brokers: roleFilter: "advisers" (or source: "sec_iapd") for RIAs; roleFilter: "brokers" for registered reps. Many professionals are both.
  • Firm emails: turn on enrichFirmContacts — FINRA/SEC never publish emails, so the actor crawls the firm's own website for them.

FAQ

Where does the data come from? FINRA BrokerCheck (brokercheck.finra.org) and the SEC's Investment Adviser Public Disclosure (adviserinfo.sec.gov) — the official, public U.S. registries for brokers and investment advisers. No API key or login is needed.

What is a CRD number? The Central Registration Depository number — FINRA's unique ID for each individual and firm. It's the reliable key for direct lookups and firm rosters.

Can I get every adviser at a specific firm? Yes — put the firm's CRD in firmCrdNumbers (Individuals mode) and the actor pages through the firm's entire roster, up to your limit.

Do records include emails or phone numbers? Firms include their official business phone and address. FINRA/SEC don't publish emails — turn on enrichFirmContacts to crawl the firm's own website for contact emails, phones and socials.

Can I export to Google Sheets, CSV, or Excel? Yes — one click in the dataset view, or automatically on every run via the Google Drive integration.

How do I monitor for new disclosures? Create a Schedule and turn on monitorMode. The actor remembers each CRD's disclosure count and emits a record only when something is new or has changed.

Is scraping this data legal? This actor collects publicly available regulatory data only. You are responsible for using the data in compliance with applicable laws (e.g. FCRA, GDPR/CCPA for personal data) and FINRA/SEC terms. It is not a consumer report and must not be used for FCRA-regulated decisions.

A field is empty — why? The registry simply doesn't hold that value for that record (e.g. a rep with no previous firms or no disclosures). Fields are blank only when the data doesn't exist — never because the scraper skipped them.

Need help?

Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests are welcome — this actor is actively maintained.