Discover/FINRA API
live

FINRA APIfinra.org

Search FINRA disciplinary actions and BrokerCheck data for broker firms and individuals. Access CRD numbers, disclosure history, registration status, and case documents.

Endpoint health
verified 6d ago
search_broker_individuals
list_firms_alphabetical
search_broker_firms
search_disciplinary_actions
4/4 passing latest checkself-healing
Endpoints
4
Updated
21d ago

What is the FINRA 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.

Try it
Page number for pagination (0-indexed). Each page contains up to 15 results.
Search keyword or phrase (e.g. 'fraud', 'insider trading').
api.parse.bot/scraper/40fbc4b0-7f95-453f-b59c-47dc93c2a889/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
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'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace finra-org-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

from parse_apis.finra_brokercheck_api import Finra, DisciplinaryAction, Firm, Individual, Employment

finra = Finra()

# Search for disciplinary actions related to fraud
for action in finra.disciplinaryactions.search(query="fraud", limit=5):
    print(action.case_id, action.respondent_name, action.action_date, action.document_type)

# Search for broker firms by name
for firm in finra.firms.search(query="Goldman Sachs", limit=3):
    print(firm.firm_id, firm.name, firm.status, firm.disclosures)
    print(firm.address.city, firm.address.state, firm.address.postal_code)

# Search for individual brokers
for individual in finra.individuals.search(query="Smith", limit=3):
    print(individual.individual_id, individual.first_name, individual.last_name, individual.status)
    for emp in individual.current_employments:
        print(emp.firm_name, emp.branch_city, emp.branch_state)

# List firms alphabetically
for firm in finra.firms.list_alphabetical(letter="B", limit=5):
    print(firm.firm_id, firm.name, firm.crd, firm.branch_count)
All endpoints · 4 totalmissing one? ·

Search FINRA disciplinary actions by keyword or phrase. Returns paginated results (15 per page) including respondent names, case summaries, action dates, and links to PDF documents. When no query is provided, returns the most recent actions. Pagination is 0-indexed.

Input
ParamTypeDescription
pageintegerPage number for pagination (0-indexed). Each page contains up to 15 results.
querystringSearch keyword or phrase (e.g. 'fraud', 'insider trading').
Response
{
  "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": "2023077612101",
          "summary": "Between August 2021 and October 2022...",
          "action_date": "06/01/2026",
          "document_url": "https://www.finra.org/sites/default/files/fda_documents/2023077612101%20Clayton%20K.%20Shum%20CRD%204412927%20AWC%20ks.pdf",
          "document_type": "AWCs (Letters of Acceptance, Waiver, and Consent)",
          "respondent_name": "Clayton K. Shum"
        }
      ],
      "total_results": 1438,
      "results_per_page": 15
    },
    "status": "success"
  }
}

About the FINRA API

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.

Reliability & maintenanceVerified

The FINRA API is a managed, monitored endpoint for finra.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when finra.org changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official finra.org API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
6d ago
Latest check
4/4 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Screen a financial adviser's CRD number for prior disciplinary actions before engagement
  • Bulk-enumerate registered broker-dealer firms alphabetically using list_firms_alphabetical for 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
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 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.

Frequently asked questions
Does FINRA offer an official public developer API?+
FINRA does not publish a general-purpose developer API for BrokerCheck or disciplinary action data. BrokerCheck is available as a public web tool at brokercheck.finra.org, and disciplinary action search is at finra.org/investors/have-problem/disciplinary-actions. This Parse API provides structured programmatic access to that same public data.
What does the `search_broker_individuals` endpoint return beyond a name match?+
Each individual record includes 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?+
No — each case object includes a 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?+
The 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.
Page content last updated . Spec covers 4 endpoints from finra.org.
Related APIs in FinanceSee all →
sec.gov API
Search for publicly traded companies and instantly access their SEC filings with details like filing type, date, description, and accession numbers. Find the regulatory documents you need to research company financial information and compliance records.
example-indian-regulatory-site.com API
Search and retrieve penalty data from Indian regulators like SEBI and RBI to discover fines, violation types, and enforcement actions against specific companies or across regulatory bodies. Find detailed information about penalties imposed on entities, browse violation categories, and access comprehensive enforcement records from major Indian financial authorities.
service.asic.gov.au API
Search and retrieve comprehensive information about Australian financial professionals and entities, including AFS and credit licensees, their representatives, liquidators, auditors, and managed investment schemes. Verify credentials, check regulatory status, and access detailed profiles of financial service providers registered with ASIC.
annualreports.com API
Search for and access thousands of international company annual reports in PDF and HTML formats, while filtering by ticker, exchange, industry, sector, company size, and location. Browse company profiles and financial documents across different markets and industries to find the information you need.
violationtracker.goodjobsfirst.org API
Search corporate violations and regulatory penalties across companies, industries, and agencies to research misconduct records and enforcement actions. Get detailed information about specific violations, parent company compliance histories, and regulatory agency enforcement patterns.
13f.info API
13f.info API
sedarplus.ca API
sedarplus.ca API
content.naic.org API
Search and access comprehensive insurance regulatory information from state departments, including news articles, glossary definitions, committee details, and company data. Find contact information for state insurance regulators, look up insurance industry terms, and research specific insurance companies all in one place.