NFA BASIC Scraper - Futures Broker & CTA/CPO Registry
Pricing
Pay per event
NFA BASIC Scraper - Futures Broker & CTA/CPO Registry
Extract US derivatives market participants from NFA BASIC: FCMs, Introducing Brokers, CTAs, CPOs, Swap Dealers, and Associated Persons. Each record includes registration status, disciplinary history, and regulatory actions. For compliance screening, enforcement research, M&A, and AML.
Pricing
Pay per event
Rating
0.0
(0)
Developer
BowTiedRaccoon
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
13 days ago
Last modified
Categories
Share
NFA BASIC Scraper - Futures Broker, CTA/CPO & CFTC Registration Lookup
Scrapes registrant data from NFA BASIC, the public regulatory database of the National Futures Association. Use it as an NFA member lookup and CFTC registration check: it returns registration status, disciplinary history, and regulatory actions for Futures Commission Merchants, Introducing Brokers, CTAs, CPOs, Swap Dealers, and Associated Persons — 282,000+ registrants in total.
NFA BASIC Scraper & Broker Registration Check Features
- Extracts firm and individual registrant records from the full NFA BASIC dataset
- Returns NFA membership status, CFTC registration types, and regulatory action counts for every record
- Fetches full disciplinary action detail — contributor, reference number, date, outcome, and action description — per registrant
- Fetches complete registration lifecycle history on request
- Filters by membership status, registration type, or "has regulatory actions" flag
- Searches by name fragment or enumerates all registrants alphabetically with a blank query
- Pure API scraping — no browser required, no proxy needed, no authentication
Who Uses NFA BASIC Data?
- Compliance teams — Run registration checks on counterparties, verify FCM/IB status, screen for disciplinary history before onboarding
- Enforcement attorneys — Pull the full regulatory action index for a firm or individual as background for CFTC reparations or NFA arbitration proceedings
- M&A due diligence teams — Screen acquisition targets in the derivatives space for NFA membership status and pending enforcement actions
- AML and KYC analysts — Check whether an entity holds current derivatives registrations and whether they carry enforcement history
- Fintech and compliance SaaS builders — Integrate NFA registration data into onboarding workflows without paying for a third-party compliance API
- Researchers — Study enforcement patterns across the US derivatives industry using the complete historical action dataset
How NFA BASIC Scraper Works
- You provide a search type (firm or individual), an optional name fragment, and optional filters. Leave the name blank to enumerate all registrants.
- The scraper pages through NFA's search API in batches of 50, collecting registration status and metadata for each result.
- If disciplinary detail is enabled (the default), it calls a second endpoint per record to fetch the full regulatory action index.
- Records are returned as structured JSON. The
regulatory_actionsfield is a JSON string you can parse;regulatory_actions_countis already an integer at the top level.
Input
{"searchType": "firm","searchQuery": "Goldman Sachs","membershipStatusFilter": "","regTypeFilter": "","hasRegulatoryActions": false,"includeDisciplinaryDetail": true,"includeRegistrationHistory": false,"maxItems": 10}
| Field | Type | Default | Description |
|---|---|---|---|
searchType | string | firm | firm for FCMs, IBs, CTAs, CPOs, Swap Dealers. individual for Associated Persons. |
searchQuery | string | "" | Name fragment to search. Empty string enumerates all registrants alphabetically. |
membershipStatusFilter | string | "" | Filter by membership status: NFA Member Approved, Not an NFA Member, or blank for all. |
regTypeFilter | string | "" | Filter by registration type (e.g. Futures Commission Merchant). Blank for all. |
hasRegulatoryActions | boolean | false | When true, only return registrants with at least one regulatory action on record. |
includeDisciplinaryDetail | boolean | true | Fetch full regulatory action detail per registrant. Adds one API call per record. |
includeRegistrationHistory | boolean | false | Fetch full registration lifecycle history per registrant. |
maxItems | integer | 10 | Maximum number of records to return. |
Example — enumerate all individuals with regulatory actions:
{"searchType": "individual","searchQuery": "","hasRegulatoryActions": true,"includeDisciplinaryDetail": true,"maxItems": 500}
NFA BASIC Scraper Output Fields
{"nfa_id": "0002014","entity_type": "firm","name": "GOLDMAN SACHS & CO LLC","location": "NEW YORK, NY","nfa_membership_status": "NFA Member Approved","registration_types": "Futures Commission Merchant, Swap Dealer","has_regulatory_actions": true,"regulatory_actions_count": 86,"regulatory_actions": "[{\"contributor\":\"NFA\",\"reference\":\"22BCC00003\",\"effective_date\":\"04/15/2022\",\"actions\":\"• GENERAL CONDUCT\",\"outcome\":\"• FINE $2,500,000\"}]","registration_history": null,"profile_url": "https://www.nfa.futures.org/BasicNet/firm.aspx?nfaId=0002014","scraped_at": "2026-05-06T18:41:09.000Z"}
| Field | Type | Description |
|---|---|---|
nfa_id | string | NFA registration ID, 7-digit zero-padded (e.g. 0002014) |
entity_type | string | firm or individual |
name | string | Registrant name |
location | string | City and state (e.g. NEW YORK, NY). Firms only — blank for individuals. |
nfa_membership_status | string | NFA membership status (NFA Member Approved, Not an NFA Member, etc.) |
registration_types | string | Comma-separated CFTC registration types: FCM, IB, CTA, CPO, Swap Dealer, etc. |
has_regulatory_actions | boolean | Whether the registrant has any regulatory actions on record |
regulatory_actions_count | number | Count of regulatory actions on record |
regulatory_actions | string | Regulatory actions as a JSON string. null if includeDisciplinaryDetail is false. Each action: contributor, reference, effective_date, actions, outcome. |
registration_history | string | Registration lifecycle events as a JSON string. null if includeRegistrationHistory is false. Each event: category, description, effective_date. |
profile_url | string | URL to the NFA BASIC profile page |
scraped_at | string | ISO timestamp when this record was scraped |
🔍 FAQ
How do I scrape NFA BASIC?
NFA BASIC Scraper handles it. Set searchType, optionally provide a searchQuery or leave it blank to get everything, configure filters, and run. It pages through the registry and returns structured JSON for each registrant.
What data can I get from NFA BASIC?
NFA BASIC Scraper returns registration status, CFTC registration types, NFA membership status, and regulatory action counts for every registrant. With includeDisciplinaryDetail: true, you also get the full action index — reference numbers, dates, action types, and outcomes. With includeRegistrationHistory: true, you get the complete registration lifecycle.
How much does NFA BASIC Scraper cost to run?
NFA BASIC Scraper costs $0.10 per run plus $0.04 per record. A Goldman Sachs search returning 5 firms with disciplinary detail costs $0.30. The full 282K-record dataset costs around $11,300 — which is cheaper than most compliance data subscriptions, depending on your vendor.
Does NFA BASIC Scraper need proxies?
No. NFA BASIC is a public regulatory site with no bot protection. Standard datacenter IPs work fine. Leave proxyConfiguration at the default.
Can I enumerate the entire NFA BASIC database?
Yes. Set searchQuery to an empty string and maxItems to however many you need. NFA BASIC Scraper pages through all 73,000+ firms or 208,000+ Associated Persons alphabetically, stopping at your limit.
How do I verify a broker's CFTC registration or pull a swap dealer list?
Run a firm search with the broker's name in searchQuery, or set regTypeFilter to Swap Dealer (or Futures Commission Merchant, Commodity Trading Advisor, etc.) with a blank query to pull the full list for that registration type. Each record returns NFA membership status and CFTC registration types, so you can confirm whether a firm holds a current registration and which one.
Why does regulatory_actions come back as a string?
Apify datasets handle nested arrays as strings in certain output configurations. Parse the field with JSON.parse() in your downstream code. The regulatory_actions_count integer is available at the top level if you only need the count.
Need More Features?
Need a specific registration type filter, additional detail endpoints, or a bulk full-dataset export mode? File an issue or get in touch.
Why Use NFA BASIC Scraper?
- No authentication required — NFA BASIC is fully public, and the scraper hits the same API the official site uses. No session management, no credentials.
- Disciplinary detail included — Returns the full action record per registrant: contributor, reference number, date, action type, and outcome text, ready to parse.
- Clean structured output — Consistent JSON with stable field names across firms and individuals, so you spend less time normalizing and more time using it.