NFA BASIC Futures Registration & Disciplinary Scraper
Pricing
from $3.00 / 1,000 results
NFA BASIC Futures Registration & Disciplinary Scraper
Search NFA BASIC - the free, CFTC-mandated registry of futures industry firms, associated persons, and commodity pools. Look up by name or NFA ID for membership status, registered categories, addresses, and disciplinary action history. No login required.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Crawler Bros
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
Scrape the National Futures Association's BASIC (Background Affiliation Status Information Center) database — the free, CFTC-mandated public registry of every futures industry firm (Futures Commission Merchants, Introducing Brokers, Commodity Pool Operators, Commodity Trading Advisors, Swap Dealers), associated person, and commodity pool in the United States. Search by name, or pull a full profile by NFA ID: membership status, registered categories, office address, and disciplinary/regulatory action history. No login, no API key, no proxy.
Data source note
This actor replaces an originally planned NMLS Consumer Access scraper. Investigation confirmed nmlsconsumeraccess.org has no JSON API, and its search/detail pages are gated behind a real interactive CAPTCHA (TuringTestPage.aspx, a commercial BotDetect component) that triggers even for a full real-browser session with organic cookies and history — confirmed via direct browser automation, not just a naive HTTP client. NFA BASIC is a same-category (financial/professional licensing + disciplinary disclosure registry, CFTC/SAFE-Act-equivalent mandate) zero-cost replacement backed by a genuine, reliable public JSON API.
What this actor does
- Four modes:
searchFirms,searchIndividuals,searchPools,entityProfile - Firms — Futures Commission Merchants, Introducing Brokers, CPOs, CTAs, Swap Dealers, and more
- Individuals — Associated Persons (APs) searchable by last name
- Commodity pools — searchable by pool name, linked to their operator (CPO)
- Full profile lookup by NFA ID or Pool ID — address, DBAs, registration history and full registration timeline, principals/owners, pools operated (for CPOs), CFTC exemption filings, and structured disciplinary/regulatory actions (reference number, effective date, outcome, action type)
- Filters: membership status, regulatory-actions-only, firm registration category, individual registration category, pool status, firm state
- Empty fields are omitted
Output per record
Search results (searchFirms / searchIndividuals / searchPools):
nfaId,entityType(firm/individual/pool),namefirstName,lastName(individuals),sponsorName(individuals)city,state(firms, when NFA has an address on file)cpoName,cpoNfaId,cpoMembershipStatus,poolStatus(pools)membershipStatus,registrationTypes[]hasRegulatoryActions,regulatoryActionsCountsourceUrl,recordType,scrapedAt
Full profile (entityProfile) — adds:
street1,street2,city,state,postalCode,country,phonedoingBusinessAs[]registrationHistory[](current status per category: category, description, effective date)registrationTimeline[](full chronological history of every registered/pending/withdrawn transition: category, description, effective date)currentRegistrations[](category, status)principals[](firms/pools' filing firm) —name,nfaId,title,tenPercentOwnerpoolsOperated[],poolsCurrentCount,poolsCeasedCount(CPO firms only — pool ID, name, exemption type, withdrawn status)cftcExemptions[](firms/pools with a CFTC exemption filing, e.g. Rule 4.7/4.13) —exemptionType,status,activityDateisNfaMember,isOnWithdrawalHoldarbitrationCasesCount,reparationsCasesCount(dispute-resolution case counts, distinct from disciplinary actions)regulatoryActions[]—referenceNumber,effectiveDate,contributor,outcomes[],actions[],barrableOffense
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | searchFirms | searchFirms / searchIndividuals / searchPools / entityProfile |
searchQuery | string | Merrill | Firm/pool name (required for searchFirms/searchPools) |
lastName | string | Smith | Individual's last name (required for searchIndividuals) |
firstName | string | – | Optional first-name refinement (searchIndividuals) |
firmCategory | string | – | Filter firms to one NFA registration category (searchFirms), e.g. Futures Commission Merchant, Introducing Broker, CPO, CTA, Swap Dealer |
individualCategory | string | – | Filter individuals to one NFA registration category (searchIndividuals), e.g. Associated Person, Principal, Floor Broker |
poolStatus | string | – | Filter pools to CURRENT or CEASED (searchPools) |
state | string | – | Filter firms to a US state/territory of their registered address (searchFirms) |
nfaIds | array | – | NFA IDs or Pool IDs to fetch full profiles for (entityProfile) |
membershipStatus | string | – | Filter to a specific NFA membership status (search modes only — ignored for entityProfile, which always returns the requested ID) |
hasRegulatoryActionsOnly | boolean | false | Only emit firm/individual search records with a disciplinary/regulatory action on file. Not supported for mode=searchPools (see Limitations) and ignored for entityProfile (always returns the requested ID) |
maxItems | integer | 20 | Hard cap on emitted records (1–1000) |
Example: search firms by name
{ "mode": "searchFirms", "searchQuery": "Merrill", "maxItems": 25 }
Example: introducing brokers in Illinois
{ "mode": "searchFirms", "searchQuery": "a", "firmCategory": "Introducing Broker", "state": "IL", "maxItems": 25 }
Example: individuals with regulatory actions
{ "mode": "searchIndividuals", "lastName": "Smith", "hasRegulatoryActionsOnly": true }
Example: registered principals of a firm
{ "mode": "searchIndividuals", "lastName": "Smith", "individualCategory": "Principal Approved" }
Example: full profile by NFA ID
{ "mode": "entityProfile", "nfaIds": ["0392970", "0254922"] }
Example: search commodity pools
{ "mode": "searchPools", "searchQuery": "Fund", "poolStatus": "CURRENT" }
Limitations
- No CRD-number search. NFA BASIC's own search UI indexes firms/individuals only by name, NFA ID/Pool ID, and (for individuals) last name — it does not offer a CRD-number lookup axis, so this actor doesn't either.
- No employment/exam history. Unlike FINRA BrokerCheck, NFA BASIC's public registry does not publish an individual's employment history or proficiency-exam history — NFA simply doesn't expose this data publicly.
hasRegulatoryActionsOnlydoesn't apply tosearchPools. NFA's own pool-name-search API doesn't return a regulatory-actions column on pool rows at all (firms and individuals do carry one). Combiningmode=searchPoolswithhasRegulatoryActionsOnly=truereturns 0 records immediately with an explanatory status message rather than silently paginating the whole result set. Usemode=entityProfilewith the pool's ID to check for regulatory actions on a specific pool.
Use cases
- Due diligence — verify a futures broker, advisor, or pool operator's registration and disciplinary history
- Compliance monitoring — track membership-status changes for a watchlist of firms/individuals
- Fintech vetting — confirm NFA membership before onboarding a futures-industry counterparty
- Journalism & research — bulk-analyze regulatory actions across the futures industry
- Fund due diligence — trace a commodity pool back to its registered operator
FAQ
What's NFA BASIC? The National Futures Association's public registry of every firm and individual registered with the CFTC to conduct futures/derivatives business — the futures-industry counterpart to FINRA BrokerCheck / SEC IAPD, mandated to be freely and publicly searchable.
What's an NFA ID? A unique 7-digit identifier assigned to every registered firm and individual. Commodity pools use a P-prefixed Pool ID instead (e.g. P207559).
Why do full profiles have more fields than search results? The search endpoint returns a lightweight summary row; entityProfile calls the full BASIC profile API, which includes address, registration history, and structured disciplinary/regulatory action records. Use search to discover NFA IDs, then look up the ID for the full picture.
Can I look up a commodity pool's full profile too? Yes — pass its Pool ID (e.g. P207559) to entityProfile; the actor auto-detects the entity type.
Is this data official? Yes — sourced live from the NFA's own nfa.futures.org/BasicNet JSON backend, the same data that powers the public BASIC search tool.
How fresh is the data? Real-time — every request hits the live NFA API.