FINRA BrokerCheck Scraper
Pricing
Pay per event
FINRA BrokerCheck Scraper
Search BrokerCheck public broker, adviser, and firm records by name or CRD. Export disclosures, registrations, firms, locations, and URLs.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Search FINRA BrokerCheck public broker, adviser, and firm records from Apify.
Use this actor to collect structured BrokerCheck search results for compliance review, recruiting, due diligence, firm monitoring, and financial-services lead research.
What does FINRA BrokerCheck Scraper do?
FINRA BrokerCheck Scraper searches the public BrokerCheck API and saves normalized records to an Apify dataset.
It can search:
- Individual brokers and advisers
- Broker-dealer and adviser firms
- Names, company keywords, and CRD numbers
- Current branch and office locations
- Disclosure and registration signals
Who is it for?
Compliance analysts use it to prepare review lists.
Wealth-management recruiters use it to screen broker candidates.
Legal and due-diligence teams use it to collect public regulatory context.
Financial-services researchers use it to build lists of firms or representatives.
Data teams use it to feed internal CRMs, monitoring dashboards, and enrichment workflows.
Why use this actor?
BrokerCheck is useful, but manual searches do not scale.
This actor turns public search results into exportable JSON, CSV, Excel, RSS, or API records.
You get consistent columns for CRD, name, status, disclosure flags, locations, firm identifiers, and source URLs.
What data can you extract?
| Field | Description |
|---|---|
recordType | individual or firm |
searchQuery | Query that produced the row |
sourceUrl | Public BrokerCheck profile URL |
crd | BrokerCheck source / CRD identifier |
name | Person or firm name |
status | Public scope/status label |
disclosureFlag | Whether BrokerCheck flags disclosures |
finraRegistrationCount | Public registration count |
currentEmployments | Current firm/branch data for individuals |
city, state | Location fields when available |
rawSearchResult | Raw public search payload for auditability |
How much does it cost to scrape FINRA BrokerCheck?
This actor uses pay-per-event pricing.
There is a small start fee and a per-record fee for each saved BrokerCheck result.
The default input is intentionally small enough for a quick, low-cost first run.
Final tiered prices are calculated from cloud run costs before QA handoff.
Input options
searchMode chooses individuals, firms, or both.
queries accepts names or keywords such as john smith, vanguard, or merrill lynch.
crds accepts CRD numbers and combines them with query searches.
states and cities filter returned records by public branch or office locations.
includePrevious includes previous names and registrations in individual searches.
includeDetails attempts best-effort BrokerCheck summary enrichment when the detail endpoint is accessible.
maxResults limits the total dataset size.
maxResultsPerQuery limits each individual query.
Example input
{"searchMode": "individual","queries": ["john smith"],"includePrevious": true,"includeDetails": false,"maxResults": 100,"maxResultsPerQuery": 100}
Example firm input
{"searchMode": "firm","queries": ["vanguard"],"maxResults": 50,"maxResultsPerQuery": 50}
Example output
{"recordType": "individual","source": "FINRA BrokerCheck","searchQuery": "john smith","sourceUrl": "https://brokercheck.finra.org/individual/summary/6808119","crd": "6808119","name": "John Morgan Smith","status": "Active","brokerCheckScope": "Active","investmentAdviserScope": "NotInScope","disclosureFlag": false,"finraRegistrationCount": 1,"state": "NC","city": "CHARLOTTE"}
How to run
- Open the actor on Apify.
- Enter broker, adviser, or firm names.
- Choose individual, firm, or all search mode.
- Set a maximum result count.
- Run the actor.
- Export the dataset or consume it with the API.
Tips for better results
Use full names when possible.
Use firm names for firm mode.
Use CRD numbers when you already know them.
Keep includeDetails off for high-volume runs unless you specifically need best-effort detail payloads.
Use state filters after broad searches to narrow locations.
Integrations
Send records to Google Sheets for analyst review.
Sync CRDs and disclosure flags to a CRM.
Trigger Make or Zapier workflows when new records are found.
Join BrokerCheck output with SEC adviser, ADV, or disciplinary datasets.
Store raw payloads in a data warehouse for audit trails.
API usage with Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/finra-brokercheck-scraper').call({searchMode: 'individual',queries: ['john smith'],maxResults: 100});console.log(run.defaultDatasetId);
API usage with Python
from apify_client import ApifyClientclient = ApifyClient('MY-APIFY-TOKEN')run = client.actor('automation-lab/finra-brokercheck-scraper').call(run_input={'searchMode': 'firm','queries': ['vanguard'],'maxResults': 50,})print(run['defaultDatasetId'])
API usage with cURL
curl -X POST 'https://api.apify.com/v2/acts/automation-lab~finra-brokercheck-scraper/runs?token=MY-APIFY-TOKEN' \-H 'Content-Type: application/json' \-d '{"searchMode":"individual","queries":["john smith"],"maxResults":100}'
MCP usage
Use the Apify MCP server with Claude Code or Claude Desktop.
MCP URL:
https://mcp.apify.com/?tools=automation-lab/finra-brokercheck-scraper
Claude Code setup:
$claude mcp add apify-brokercheck "https://mcp.apify.com/?tools=automation-lab/finra-brokercheck-scraper"
Claude Desktop JSON config:
{"mcpServers": {"apify-brokercheck": {"url": "https://mcp.apify.com/?tools=automation-lab/finra-brokercheck-scraper"}}}
Example prompts:
- "Search BrokerCheck for John Smith and summarize active registrations."
- "Find public BrokerCheck firm records for Vanguard and list disclosure flags."
- "Export the first 100 BrokerCheck individual records for this name list."
Data quality notes
The actor preserves raw public search payloads.
Fields may be absent when FINRA does not return them for a record.
Location filters are post-filters over returned branch or office data.
Profile detail enrichment is best-effort and disabled by default.
Legality
BrokerCheck data is public regulatory information, but your use still needs to comply with FINRA terms, Apify terms, privacy rules, and the laws that apply to your workflow.
Legal and permitted use
This actor accesses public BrokerCheck search data.
Use it only for lawful, authorized, and compliant workflows.
Respect FINRA terms, privacy expectations, and applicable financial-services rules.
Do not use the output to make automated adverse decisions without proper review.
Troubleshooting
If no records are returned, broaden the query or remove city/state filters.
If detail enrichment is empty, keep using the search result fields; detail endpoints may be unavailable from some environments.
If a run is slow, lower maxResults or split a large name list into smaller runs.
Related scrapers
- https://apify.com/automation-lab/sec-investment-adviser-scraper
- https://apify.com/automation-lab/sec-adv-scraper
- https://apify.com/automation-lab/finra-disciplinary-actions-scraper
FAQ
Can I search by CRD?
Yes. Add CRD values to the crds field.
Can I scrape firms and brokers together?
Yes. Set searchMode to all.
Does this require login?
No. It uses public BrokerCheck search endpoints.
Does it fetch every profile detail page?
No. The reliable MVP is the public search API. Summary detail enrichment is optional and best-effort.
Changelog
Initial private build supports BrokerCheck individual and firm search, location filters, CRD inputs, and typed dataset output.