Find individual advisers by CRD
Search investment adviser representatives by name and pull an individual's registrations, employment history, exams and disclosure flags by CRD.
Every registered representative and investment adviser representative has a CRD number. The SEC's Investment Adviser Public Disclosure system publishes each person's current and past firms, licensing exams, state registrations and whether they have disclosures (customer complaints, regulatory actions, terminations). Compliance teams use it to check new hires and advisers before a relationship starts.
The SecFeed endpoint /v1/form-adv/individuals searches by name and fetches a person by CRD.
Search by name
Names are not unique, so a search returns many people. Each result shows the CRD, broker (BD) and adviser (IA) scope, and current firms.
import os
import requests
BASE = "https://secfeedapi.com"
HEADERS = {"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"}
r = requests.get(f"{BASE}/v1/form-adv/individuals", params={"query": "john smith", "size": 5}, headers=HEADERS, timeout=60)
r.raise_for_status()
data = r.json()
print("Matches:", data["total"])
for p in data["individuals"]:
firms = sorted({e["firm_name"] for e in p.get("ind_ia_current_employments", [])})
name = " ".join(x for x in (p["ind_firstname"], p.get("ind_middlename"), p["ind_lastname"]) if x)
print(f"CRD {p['ind_source_id']:<9} {name:<22} BD: {p['ind_bc_scope']:<11} IA: {p['ind_ia_scope']:<11} {'; '.join(firms)[:50]}")
Output:
Matches: 317
CRD 6808119 John Morgan Smith BD: Active IA: NotInScope VANGUARD MARKETING CORPORATION
CRD 4346806 JOHN T. SMITH BD: Active IA: Active FIDELITY BROKERAGE SERVICES LLC; STRATEGIC ADVISER
CRD 5998211 John Smith BD: InActive IA: InActive
CRD 2265605 John Charles Smith BD: InActive IA: InActive
CRD 428085 JOHN ROBERT SMITH BD: NotInScope IA: Active OPTIMIST CAPITAL
Narrow the list with the firm name or location you know. Once you have the right CRD, use it for every later lookup; names and spellings change, CRD numbers do not.
Fetch the record by CRD
import os
import requests
BASE = "https://secfeedapi.com"
HEADERS = {"Authorization": f"Bearer {os.environ['SECFEED_KEY']}"}
r = requests.get(f"{BASE}/v1/form-adv/individuals", params={"crd": "4346806"}, headers=HEADERS, timeout=60)
r.raise_for_status()
p = r.json()
b = p["basicInformation"]
print(f"{b['firstName']} {b['lastName']} | CRD {b['individualId']} | broker: {b['bcScope']} | adviser: {b['iaScope']}")
print("Current firms:", sorted({e["firmName"] for e in p["currentEmployments"] + p["currentIAEmployments"]}))
print("Previous adviser firms:", sorted({e["firmName"] for e in p["previousIAEmployments"]}))
exams = p["stateExamCategory"] + p["principalExamCategory"] + p["productExamCategory"]
print("Exams:", ", ".join(f"{e['examCategory']} ({e['examTakenDate'][-4:]})" for e in exams))
rc = p["registrationCount"]
print(f"Approved registrations: {rc['approvedSRORegistrationCount']} SROs, {rc['approvedStateRegistrationCount']} states (broker), "
f"{rc['approvedIAStateRegistrationCount']} states (adviser)")
print("Disclosures on record:", p["disclosureFlag"], "| adviser disclosures:", p["iaDisclosureFlag"])
Output:
JOHN SMITH | CRD 4346806 | broker: Active | adviser: Active
Current firms: ['FIDELITY BROKERAGE SERVICES LLC', 'STRATEGIC ADVISERS LLC']
Previous adviser firms: ['FIDELITY PERSONAL AND WORKPLACE ADVISORS', 'MERRILL LYNCH, PIERCE, FENNER & SMITH INCORPORATED', 'MORGAN STANLEY', 'UBS FINANCIAL SERVICES INC.', 'WELLS FARGO ADVISORS, LLC']
Exams: Series 66 (2001), Series 10 (2016), Series 9 (2016), SIE (2018), Series 7 (2001)
Approved registrations: 2 SROs, 4 states (broker), 2 states (adviser)
Disclosures on record: N | adviser disclosures: N
What the record contains
| Field | Meaning |
|---|---|
basicInformation | Name, other names used, broker and adviser scope |
currentEmployments, currentIAEmployments | Current broker-dealer and adviser firms |
previousEmployments, previousIAEmployments | Past firms with start and end dates |
stateExamCategory, principalExamCategory, productExamCategory | Exams passed, such as Series 7, 66, 9 and 10, with dates |
registrationCount, registeredStates, registeredSROs | Approved registrations by state and self-regulatory organization |
disclosureFlag, iaDisclosureFlag, disclosures | Whether disclosure events exist, and their details |
Use it responsibly
These are public regulatory records, published so investors can check who they work with. Use them for due diligence and compliance checks, keep only the fields you need, and avoid building profiles of private individuals beyond that purpose.