FINRA BrokerCheck Broker & Firm Registry Scraper
Pricing
from $12.75 / 1,000 results
FINRA BrokerCheck Broker & Firm Registry Scraper
Scrape FINRA BrokerCheck brokers and firms: CRD numbers, employment history, exams, registered states, firm address and phone, and full disclosure details. Filter by name, CRD, firm, state and disclosures. Export to JSON, CSV or Excel.
Pricing
from $12.75 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
FINRA BrokerCheck Broker & Firm Registry Scraper
Here is one real result, an individual broker with full detail and the AI add-ons on, with every field the actor returns:
{"searchType": "individual","crd": 4346806,"fullName": "JOHN T. SMITH","firstName": "JOHN","middleName": "T.","lastName": "SMITH","otherNames": ["JOHN T SMITH", "JOHN SMITH", "John Thomas Smith"],"brokerActive": true,"investmentAdviserActive": true,"brokerScope": "Active","investmentAdviserScope": "Active","industrySinceDate": "4/30/2001","currentFirmName": "FIDELITY BROKERAGE SERVICES LLC","currentFirmCRD": 7784,"currentFirmSECNumber": "23292","currentFirmCity": "SEATTLE","currentFirmState": "WA","currentFirmZip": null,"currentRegistrationBeginDate": "6/13/2023","currentEmploymentsCount": 1,"previousEmploymentsCount": 4,"previousFirms": ["MERRILL LYNCH, PIERCE, FENNER & SMITH INCORPORATED (1/25/2013 - 5/23/2023, ATLANTA GA)","MORGAN STANLEY (1/15/2010 - 1/24/2013, SCOTTSDALE AZ)","WELLS FARGO ADVISORS, LLC (5/9/2008 - 1/19/2010, WESTLAKE VILLAGE CA)","UBS FINANCIAL SERVICES INC. (4/11/2001 - 5/21/2008, WESTLAKE VILLAGE CA)"],"examsCount": null,"exams": ["Series 66 (5/11/2001)", "SIE (10/1/2018)", "Series 7 (4/10/2001)", "Series 10 (5/31/2016)", "Series 9 (4/6/2016)"],"registrationCount": null,"approvedFinraRegistrationCount": 1,"approvedSecRegistrationCount": null,"approvedStateRegistrationCount": null,"registeredStates": ["Massachusetts", "Texas", "Utah", "Washington"],"registeredStatesCount": 4,"registeredSROs": ["FINRA", "New York Stock Exchange"],"sroCategories": ["Full Registration/General Securities Representative", "General Securities Sales Supervisor"],"hasDisclosures": false,"disclosureCount": 0,"disclosureTypes": [],"topDisclosureType": null,"topDisclosureDate": null,"topDisclosureResolution": null,"disclosures": [],"sourceUrl": "https://brokercheck.finra.org/individual/summary/4346806","source": "FINRA BrokerCheck","inputQuery": "John Smith","observedAt": "2026-08-14T06:47:12.146Z","aiRiskLevel": "low","aiRiskSummary": "There are no disclosures associated with John T. Smith, indicating a clean regulatory history. He has been active in the industry since 2001 with multiple previous employers.","aiRiskFlags": [],"aiSummary": "John T. Smith is a registered broker with CRD number 4346806, currently affiliated with Fidelity Brokerage Services LLC. He has been active in the industry since April 30, 2001, and is registered in four states. Smith has no disclosures on his record.","aiLeadScore": 85,"aiLeadTier": "hot","aiLeadRationale": "Active broker with no disclosures and extensive experience makes for a strong outreach lead."}
The most complete FINRA BrokerCheck scraper available. It returns every field the public BrokerCheck registry exposes for each broker or firm (CRD number, registrations, exams, employment history, registered states, and full disclosure/regulatory events), plus derived counts and flags, and optional AI risk screening, profile summaries, and lead scoring, and gives you a search grid with state, disclosure, and detail filters to target exactly the brokers or firms you need.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor searches the public FINRA BrokerCheck registry for the individuals (brokers and investment advisers) or firms (brokerage and advisory) you list, applies the filters you pass, and writes one normalized record per match to the run's dataset. With fetchDetails on, each record carries the full profile: registration status and scope, exams passed, current and previous employment, registered states and SROs, and every disclosure or regulatory event with its type, date, and resolution. Derived fields (disclosureCount, hasDisclosures, registeredStatesCount, employment counts) let you sort and screen without extra parsing.
Three optional paid add-ons run on top: withRisk produces an AI risk/red-flag summary for KYB and onboarding, withProfileSummary writes a concise professional summary, and withLeadScore qualifies each record as a B2B outreach lead (0 to 100 with a hot/warm/cold tier). All add-ons are off by default. Missing source values are returned as null, never invented.
Quickstart
Open the actor, paste this into the input, and press Run. It returns up to 3 individual brokers named John Smith, with full detail, an AI risk summary, an AI profile summary, and a lead score.
{"searchType": "individual","searchQueries": ["John Smith"],"maxRecords": 3,"fetchDetails": true,"withRisk": true,"withProfileSummary": true,"withLeadScore": true}
To look up one exact record, pass a CRD number (for example "searchQueries": ["1731327"]). Set searchType to firm to search brokerage and advisory firms instead of individuals.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
searchType | enum | no | individual | individual (brokers / advisers) or firm (brokerage / advisory firms). |
searchQueries | string[] | no | ["John Smith"] | One or more searches. Each item is a person or firm name (for example Goldman) or a CRD number (for example 1731327). Each runs as a separate search. |
usState | string | no | (any) | Restrict results to a US state by two-letter code, for example NY, CA, TX. |
includePrevious | boolean | no | true | Include individuals no longer actively registered (former brokers) in addition to active ones. Applies to individual searches. |
onlyWithDisclosures | boolean | no | false | Return only brokers or firms with at least one disclosure/regulatory event on record. Useful for compliance, AML, and KYC screening. |
fetchDetails | boolean | no | true | Fetch the full profile for each match (employment history, exams, registered states, full disclosure details). Turn off for faster, lighter summary-only results. |
maxRecords | integer | no | 30 | Maximum broker or firm records returned across all searches. Free Apify plans are capped at 10. |
withRisk | boolean | no | false | Paid add-on. AI summary of regulatory/disclosure red flags (risk level, summary, flags). Charged per record analysed. Paid plans only. |
withProfileSummary | boolean | no | false | Paid add-on. AI concise professional summary of each broker/firm. Charged per record summarised. Paid plans only. |
withLeadScore | boolean | no | false | Paid add-on. AI B2B lead qualification (0 to 100 score, hot/warm/cold tier, rationale). Charged per record scored. Paid plans only. |
All fields are optional; with an empty input the actor searches individuals for the default query.
Output reference
One dataset item per broker or firm. searchType determines which field set is returned: individuals and firms share the identity, disclosure, and AI fields but differ in profile fields. Types: string, integer, boolean, string[], object[], or null when absent.
Common fields
| Field | Type | Description |
|---|---|---|
searchType | string | individual or firm. |
crd | integer | CRD number, unique per broker or firm. |
otherNames | string[] | Alternate or former names on record. |
investmentAdviserActive | boolean | Whether active as an investment adviser, or null. |
hasDisclosures | boolean | Whether any disclosure/regulatory event is on record. |
disclosureCount | integer | Number of disclosures. |
disclosureTypes | string[] | Distinct disclosure categories present. |
disclosures | object[] | Full disclosure detail entries (with fetchDetails). |
sourceUrl | string | BrokerCheck profile URL. |
source | string | Always FINRA BrokerCheck. |
inputQuery | string | The search query that produced this record. |
observedAt | string | ISO 8601 collection timestamp. |
aiRiskLevel | string | (add-on) low, medium, or high, or null. |
aiRiskSummary | string | (add-on) AI red-flag summary, or null. |
aiRiskFlags | string[] | (add-on) AI red flags, or empty. |
aiSummary | string | (add-on) AI professional summary, or null. |
aiLeadScore | integer | (add-on) Lead score 0 to 100, or null. |
aiLeadTier | string | (add-on) hot, warm, or cold, or null. |
aiLeadRationale | string | (add-on) One-line lead rationale, or null. |
Individual-only fields
| Field | Type | Description |
|---|---|---|
fullName, firstName, middleName, lastName | string | Broker name parts. |
brokerActive / brokerScope | boolean / string | Broker registration active flag and scope. |
investmentAdviserScope | string | Adviser registration scope, for example Active. |
industrySinceDate | string | Date first active in the industry. |
currentFirmName / currentFirmCRD / currentFirmSECNumber | string / integer | Current firm identity. |
currentFirmCity / currentFirmState / currentFirmZip | string | Current firm location. |
currentRegistrationBeginDate | string | Start date at current firm. |
currentEmploymentsCount / previousEmploymentsCount | integer | Employment counts. |
previousFirms | string[] | Previous firms with date ranges and locations. |
exams / examsCount | string[] / integer | Exams passed with dates. |
registeredStates / registeredStatesCount | string[] / integer | States of registration. |
registeredSROs / sroCategories | string[] | Self-regulatory orgs and registration categories. |
topDisclosureType / topDisclosureDate / topDisclosureResolution | string | Summary of the most significant disclosure. |
Firm-only fields
| Field | Type | Description |
|---|---|---|
firmName | string | Firm name. |
brokerDealerActive / brokerDealerScope | boolean / string | Broker-dealer registration flag and scope. |
firmType / firmStatus / firmStatusDate / firmSize | string | Firm classification and status. |
formedState / formedDate | string | Formation state and date. |
bdSecNumber / iaSecNumber | string | SEC numbers for broker-dealer and adviser. |
addressStreet1 / addressStreet2 / addressCity / addressState / addressZip / addressCountry | string | Main business address. |
businessPhone | string | Business phone, or null. |
branchesCount | integer | Number of branch offices. |
directOwners / directOwnersCount | object[] / integer | Direct owners on record. |
On a failed run, a single item with a populated error field is written instead.
Example output record
Real firm record from a live run (input {"searchQueries":["Fidelity"],"searchType":"firm","maxRecords":2,"fetchDetails":true,"withRisk":true}):
{"searchType": "firm","crd": 166782,"firmName": "FIDELITY SELECTCO, LLC","otherNames": ["FIDELITY SELECTCO, LLC"],"brokerDealerActive": null,"investmentAdviserActive": true,"brokerDealerScope": null,"investmentAdviserScope": "INACTIVE","firmType": null,"firmStatus": null,"iaSecNumber": "801-77635","addressStreet1": "6501 S FIDDLER'S GREEN CIRCLE, STE 300 - 600","addressStreet2": "SUITE 600","addressCity": "GREENWOOD VILLAGE","addressState": "CO","addressZip": "80111","addressCountry": "United States","businessPhone": null,"branchesCount": 0,"registeredStates": [],"registeredStatesCount": 0,"hasDisclosures": true,"disclosureCount": 0,"disclosureTypes": [],"directOwnersCount": 0,"directOwners": [],"sourceUrl": "https://brokercheck.finra.org/firm/summary/166782","source": "FINRA BrokerCheck","inputQuery": "Fidelity","observedAt": "2026-08-14T06:47:51.086Z","aiRiskLevel": "low","aiRiskSummary": "FIDELITY SELECTCO, LLC has no disclosures, indicating a clean regulatory history. The firm is currently active as an investment adviser.","aiRiskFlags": [],"aiSummary": null,"aiLeadScore": null,"aiLeadTier": null,"aiLeadRationale": null}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~finra-brokercheck-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchType":"individual","searchQueries":["John Smith"],"usState":"NY","maxRecords":25,"fetchDetails":true}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~finra-brokercheck-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchType":"firm","searchQueries":["Goldman"],"onlyWithDisclosures":true,"maxRecords":100}'
Apify CLI:
apify call scrapers_lat/finra-brokercheck-scraper \--input '{"searchQueries":["1731327"],"fetchDetails":true}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per broker or firm record returned (
resultevent). See the pricing tab for the current per-result price. - Details and add-ons billed separately.
fetchDetailscharges an extradetailsevent per record; the AI risk, profile summary, and lead score add-ons each charge per record processed, and only on usable AI output. - No charge on failure. If a run errors, the actor writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 records per run. The AI add-ons require a paid Apify plan. Upgrade for higher
maxRecords.
FAQ and troubleshooting
How do I look up one exact broker or firm?
Pass its CRD number in searchQueries, for example ["1731327"]. CRD numbers resolve directly to a single record.
How do I screen only for brokers with regulatory issues?
Set onlyWithDisclosures to true. Combine with withRisk to get an AI red-flag summary per record.
What is the difference between an individual and a firm search?
searchType: individual returns brokers and investment advisers (people); searchType: firm returns brokerage and advisory firms. The two return different profile fields, as shown above.
Do I need fetchDetails?
Leave it on for the full profile (employment, exams, states, disclosures). Turn it off for a faster, lighter run with summary fields only.
A run returned 0 records. Why?
The name or CRD matched nothing under the chosen searchType, or the usState / onlyWithDisclosures filters excluded every match. Loosen filters and confirm the query. Zero-result runs are not charged.
Is this an official FINRA tool? No. This actor is independent and has no affiliation with FINRA. It reads only data that is publicly available through FINRA BrokerCheck. Use it in accordance with FINRA's terms.
Related scrapers
- SEC IAPD Investment Advisers Scraper: registered investment advisers from the SEC IAPD.
- NFA BASIC Futures Registrants Scraper: futures and derivatives registrants from NFA BASIC.
- SEC EDGAR Company Filings Scraper: SEC filings by ticker or CIK.
- OFAC Sanctions List Scraper: US Treasury OFAC SDN and Consolidated lists.
- HHS OIG Exclusions Scraper: individuals and entities excluded from federal healthcare programs.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with FINRA. Accesses only publicly available BrokerCheck data. Use in accordance with FINRA's terms of service.
