finra.org APIfinra.org ↗
Search FINRA disciplinary actions and BrokerCheck data for broker firms and individuals. Access CRD numbers, disclosure history, registration status, and case documents.
curl -X GET 'https://api.parse.bot/scraper/40fbc4b0-7f95-453f-b59c-47dc93c2a889/search_disciplinary_actions?page=0&query=fraud' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for FINRA disciplinary actions by keyword or phrase. Results include respondent names, case summaries, action dates, and links to PDF documents. Returns paginated results with 15 cases per page.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (0-indexed). Each page contains up to 15 results. |
| query | string | Search keyword or phrase (e.g. 'fraud', 'insider trading'). |
{
"type": "object",
"fields": {
"page": "integer current page number",
"cases": "array of case objects with case_id, respondent_name, action_date, summary, document_type, document_url",
"total_results": "integer total number of matching cases",
"results_per_page": "integer number of results per page (15)"
},
"sample": {
"data": {
"page": 0,
"cases": [
{
"case_id": "2024080158101",
"summary": "Since inception, Blue Ocean’s ATS has accounted for approximately 95% of all trading volume...",
"action_date": "05/04/2026",
"document_url": "https://www.finra.org/sites/default/files/fda_documents/2024080158101%20Blue%20Ocean%20ATS%20CRD%20306512%20AWC%20vrp.pdf",
"document_type": "AWCs (Letters of Acceptance, Waiver, and Consent)",
"respondent_name": "Blue Ocean ATS"
}
],
"total_results": 1432,
"results_per_page": 15
},
"status": "success"
}
}About the finra.org API
The FINRA API exposes 4 endpoints covering disciplinary actions and BrokerCheck records for registered broker-dealer firms and individual financial professionals. Use search_disciplinary_actions to retrieve paginated case records including respondent names, action dates, summaries, and PDF document links, or use search_broker_individuals and search_broker_firms to look up CRD numbers, registration status, and disclosure counts.
Disciplinary Actions
The search_disciplinary_actions endpoint accepts a query string (e.g. "fraud", "unauthorized trading") and a 0-indexed page parameter. Each response contains up to 15 case objects, each with case_id, respondent_name, action_date, summary, document_type, and a document_url pointing to the associated PDF filing. The total_results field lets you calculate how many pages to iterate.
BrokerCheck: Firms
search_broker_firms accepts a firm query (name or CRD number) with optional limit (up to 100) and offset for pagination. Each firm object in the response includes crd, sec_number, status, disclosures, branch_count, address, and any other_names the firm has operated under. The list_firms_alphabetical endpoint mirrors this structure but accepts a single letter parameter to enumerate all registered firms starting with that character — useful for bulk data collection.
BrokerCheck: Individuals
search_broker_individuals searches by name or CRD number and returns individual records containing first_name, middle_name, last_name, other_names, crd, status, disclosures, and registration details. The total field supports pagination via limit and offset. Disclosure presence is indicated per record, enabling quick triage of advisers with regulatory history.
Coverage and Scope
All four endpoints reflect FINRA's publicly available BrokerCheck and disciplinary action databases. Firm and individual records include registration status and disclosure counts but do not expose the full text of individual disclosure events — those require following the document_url links returned in disciplinary action results.
- Screen a financial adviser's CRD number for prior disciplinary actions before engagement
- Bulk-enumerate registered broker-dealer firms alphabetically using
list_firms_alphabeticalfor compliance databases - Search BrokerCheck by firm name to retrieve SEC number, branch count, and current registration status
- Aggregate disciplinary case counts by keyword (e.g. 'churning', 'misrepresentation') for regulatory research
- Verify whether an individual broker has disclosure events on record before onboarding
- Cross-reference a firm's CRD number against its disclosure history for due diligence workflows
- Build an alert system that monitors new disciplinary actions matching a keyword over time
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does FINRA offer an official public developer API?+
What does the `search_broker_individuals` endpoint return beyond a name match?+
crd, status, disclosures (a count or flag), other_names, and registration fields. It does not return the full employment history narrative or the detailed text of each disclosure event. The disclosures field signals whether a record exists, and you can use the CRD number to look up the associated disciplinary action documents via search_disciplinary_actions.Does the disciplinary actions endpoint return the full text of case documents?+
document_url linking to the PDF filing on finra.org, plus a summary field and metadata (case_id, respondent_name, action_date, document_type). Full document parsing is not part of the current response. You can fork this API on Parse and add an endpoint that fetches and parses the linked PDF if your workflow requires the full case text.Can I filter disciplinary actions by date range or action type?+
search_disciplinary_actions endpoint currently accepts only a query string and a page number. Filtering by date range, action type (e.g. AWC, Decision), or specific respondent type is not supported in the current parameters. You can fork the API on Parse and revise the endpoint to add those filter parameters if the underlying data supports them.How does pagination work across the BrokerCheck endpoints?+
search_broker_firms and search_broker_individuals use limit and offset parameters; the response includes a total field so you can calculate the number of pages needed. search_disciplinary_actions uses a 0-indexed page parameter with a fixed page size of 15 results, and returns total_results to support full iteration.