Home / Guides / Advisers
Advisers

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

FieldMeaning
basicInformationName, other names used, broker and adviser scope
currentEmployments, currentIAEmploymentsCurrent broker-dealer and adviser firms
previousEmployments, previousIAEmploymentsPast firms with start and end dates
stateExamCategory, principalExamCategory, productExamCategoryExams passed, such as Series 7, 66, 9 and 10, with dates
registrationCount, registeredStates, registeredSROsApproved registrations by state and self-regulatory organization
disclosureFlag, iaDisclosureFlag, disclosuresWhether 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.

Next steps

More advisers guides

Run this guide with your own key

500 free API calls a month. Every example on this page works on the free plan.

Get free API key →