NFA BASIC Futures Broker, CTA, CPO & Swap Dealer Scraper
Pricing
from $12.75 / 1,000 results
NFA BASIC Futures Broker, CTA, CPO & Swap Dealer Scraper
Scrape CFTC-registered futures firms and individuals from NFA BASIC: FCM, IB, CPO, CTA, swap dealer and forex dealer records with office address, phone, principals, 10% owners, disciplinary actions with fine amounts, funds and net-capital figures. Export to JSON, CSV or Excel.
Pricing
from $12.75 / 1,000 results
Rating
0.0
(0)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
NFA BASIC Futures Broker, CTA, CPO & Swap Dealer Scraper
Here is one real result, with every field the actor returns for a firm:
{"nfaId": "0240154","entityType": "firm","name": "CAPITAL FUND MANAGEMENT SA","membershipStatus": "NFA Member Approved","isNfaMember": true,"registrationTypes": ["Commodity Trading Advisor","Swap Firm","Commodity Pool Operator"],"profileUrl": "https://www.nfa.futures.org/BasicNet/basic-profile.aspx?nfaid=0240154","source": "NFA BASIC","inputQuery": "capital","observedAt": "2026-08-11T21:21:46.616Z","hasRegulatoryActions": false,"addressStreet1": "23 RUE DE L'UNIVERSITE","addressStreet2": null,"addressStreet3": null,"addressCity": "PARIS","addressState": null,"addressPostalCode": "75007","addressCountry": "FR","addressCountryName": "FRANCE","phone": "+33 1 4949 5949","additionalPhones": [],"officeLocationsCount": 4,"dbaNames": [],"formerNames": ["CAPITAL FUTURES MANAGEMENT SA","CAPITAL FUTURES MANAGEMENT SNC"],"registrationTypeCodes": ["CTA", "SF", "CPO"],"isFcm": false,"isIntroducingBroker": false,"isCommodityPoolOperator": true,"isCommodityTradingAdvisor": true,"isSwapDealer": false,"isRetailForexDealer": false,"isFloorTrader": false,"isSoleProprietor": false,"isHoldingCompany": true,"holdsCustomerFunds": false,"firstRegisteredDate": "1992-01-23","lastRegistrationEventDate": "2013-01-01","registrationEventsCount": 12,"nfaMemberSince": "1992-05-05","principalsCount": 7,"principalNames": ["JEAN PHILIPPE BOUCHAUD","PHILIPPE JORDAN","LAURENT MARIE LALOUX","NGI STRATEGIC AUSTRALIA PTY LTD","MARC POTTERS","JACQUES CHARLES SAULIERE","MARTIN WALDEMAR TORNQVIST"],"principalTitles": ["PRESIDENT","DIRECTOR HEAD OF A BUSINESS UNIT, DIVISION OR FUNCTION","DIRECTOR","CHIEF EXECUTIVE OFFICER","CHIEF COMPLIANCE OFFICER"],"tenPercentOwnerNames": ["JEAN PHILIPPE BOUCHAUD","PHILIPPE JORDAN","NGI STRATEGIC AUSTRALIA PTY LTD","MARC POTTERS","JACQUES CHARLES SAULIERE"],"topPrincipalName": "JACQUES CHARLES SAULIERE","topPrincipalTitle": "CHIEF EXECUTIVE OFFICER","topPrincipalNfaId": "0315749","currentPoolsCount": 16,"ceasedPoolsCount": 10,"currentPoolNames": [],"exemptionTypes": ["4.7", "4.13(a)(4)"],"hasExemptions": true,"regActionsNfa": 0,"regActionsCftc": 0,"regActionsExchange": 0,"regActionsForeign": 0,"regActionsTotal": 0,"arbitrationsCount": 0,"reparationsCount": 0,"hasCommodityCustomers": true,"solicitsCustomers": true,"directsCustomerAccounts": true,"operatesCommodityPools": true,"regulatoryActionsListed": 0,"totalFinesUsd": 0,"largestFineUsd": 0,"regulatoryActions": []}
The most complete NFA BASIC scraper available. It returns every field the NFA BASIC registration and disciplinary record exposes for each firm, individual and commodity pool, plus derived flags and totals, and gives you nine filters to target exactly the registrants you need.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor searches NFA BASIC, the public registration and disciplinary record of firms and individuals registered with the CFTC and/or members of the National Futures Association (futures commission merchants, introducing brokers, commodity pool operators, commodity trading advisors, swap dealers and retail forex dealers). You can search firms, individuals or commodity pools by keyword, or look up exact NFA IDs. Each match is optionally enriched with the full profile (address, phone, principals, 10% owners, registration history, exemptions), every disciplinary action with fine amounts, and (for FCMs) the latest net-capital and customer-funds figures. Dates are normalized to YYYY-MM-DD, and missing source values are returned as null.
Data covers CFTC / NFA registrants only. No account, key or login is required.
Quickstart
Open the actor, paste this into the input, and press Run. It returns up to 10 firms matching the keyword capital, with full profiles, disciplinary actions and financials.
{"recordType": "firms","searchQueries": ["capital"],"maxRegistrants": 10}
Leave searchQueries empty to sweep the registry alphabetically. For individuals, use Lastname or Lastname, Firstname. Pass nfaIds to look up exact records instead of searching.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
recordType | enum | no | firms | What to scrape. One of firms (CFTC-registered companies), individuals (associated persons and principals), pools (commodity pools with their operating CPO). |
searchQueries | string[] | no | ["capital"] | Firm, fund or person name keywords, one search per item. Matching is on word starts. For individuals use Lastname or Lastname, Firstname. Leave empty to sweep the whole registry alphabetically. |
nfaIds | string[] | no | (empty) | Look up exact NFA ID numbers directly, for example 0002014. Leading zeros are added automatically. When given, these are fetched instead of running searches. |
registrationTypes | enum[] | no | (any) | Keep only registrants currently holding these CFTC registrations (for example Commodity Pool Operator, Swap Dealer). |
membershipStatuses | enum[] | no | (any) | Keep only registrants with these NFA membership statuses, for example NFA Member Approved, Permanent Bar. |
onlyWithRegulatoryActions | boolean | no | false | Return only registrants carrying at least one NFA, CFTC, exchange or foreign-regulator disciplinary action. |
usStates | string[] | no | (any) | Keep only registrants whose business address is in these two-letter states, for example NY, IL, TX. Requires full profiles. |
requirePhone | boolean | no | false | Return only registrants that have a business phone on record. Requires full profiles. |
fetchProfiles | boolean | no | true | Fetch the full profile for every match (address, phone, DBAs, former names, principals, 10% owners, history, pools, exemptions). |
fetchRegulatoryActions | boolean | no | true | Fetch every NFA, CFTC, exchange and foreign-regulator case with reference, date, violations, outcome and fine amount. |
fetchFinancials | boolean | no | true | For FCMs, fetch the latest net-capital and segregated, secured and cleared-swaps customer funds figures. |
maxRegistrants | integer | no | 30 | Maximum number of registrant records to return. Free Apify plans are capped at 10 per run. |
All filters are optional and combine with logical AND.
Output reference
One dataset item per registrant. Types: string, number, integer, boolean, string[], or null when the source value is absent. Fields present depend on recordType and which enrichment toggles are on.
Core fields (all record types)
| Field | Type | Description |
|---|---|---|
nfaId | string | 7-digit NFA ID (unique per registrant). |
entityType | string | firm, individual or pool. |
name | string | Current legal name of the firm, person or pool. |
membershipStatus | string | NFA membership status, for example NFA Member Approved. |
isNfaMember | boolean | true when membership status is member approved. |
registrationTypes | string[] | CFTC registration types currently held. |
profileUrl | string | Link to the NFA BASIC profile. |
source | string | Data source. Always NFA BASIC. |
inputQuery | string | The search query or NFA ID that produced this record. |
observedAt | string | ISO 8601 collection timestamp. |
hasRegulatoryActions | boolean | true when any disciplinary action is on record. |
Profile fields (when fetchProfiles is on)
| Field | Type | Description |
|---|---|---|
addressStreet1 / addressStreet2 / addressStreet3 | string | Business street address lines, or null. |
addressCity | string | Business city. |
addressState | string | State or province code, or null. |
addressPostalCode | string | Postal / ZIP code. |
addressCountry | string | Country code, for example FR, US. |
addressCountryName | string | Country name. |
phone | string | Business phone, or null. |
additionalPhones | string[] | Other phones on record. |
officeLocationsCount | integer | Number of address records. |
dbaNames | string[] | Doing-business-as names. |
formerNames | string[] | Prior legal names. |
registrationTypeCodes | string[] | Registration type codes, for example CTA, CPO, SF. |
isFcm / isIntroducingBroker / isCommodityPoolOperator / isCommodityTradingAdvisor / isSwapDealer / isRetailForexDealer / isFloorTrader | boolean | Registration-type flags. |
isSoleProprietor / isHoldingCompany / holdsCustomerFunds | boolean | Structure and custody flags. |
firstRegisteredDate | string | Earliest registration event date (YYYY-MM-DD). |
lastRegistrationEventDate | string | Most recent registration event date. |
registrationEventsCount | integer | Number of registration history events. |
nfaMemberSince | string | NFA member approval date, or null. |
principalsCount | integer | Number of listed principals. |
principalNames | string[] | Listed principal names. |
principalTitles | string[] | Principal titles. |
tenPercentOwnerNames | string[] | Names of listed 10% owners. |
topPrincipalName / topPrincipalTitle / topPrincipalNfaId | string | Most senior principal (decision-maker). |
currentPoolsCount / ceasedPoolsCount | integer | Counts of operated commodity pools. |
currentPoolNames | string[] | Names of current pools operated. |
exemptionTypes | string[] | CFTC exemptions claimed, for example 4.7. |
hasExemptions | boolean | true when any exemption is claimed. |
regActionsNfa / regActionsCftc / regActionsExchange / regActionsForeign / regActionsTotal | integer | Disciplinary action counts by regulator. |
arbitrationsCount / reparationsCount | integer | Arbitration and reparation counts. |
hasCommodityCustomers / solicitsCustomers / directsCustomerAccounts / operatesCommodityPools | boolean | Business activity flags. |
Disciplinary fields (when fetchRegulatoryActions is on)
| Field | Type | Description |
|---|---|---|
regulatoryActionsListed | integer | Number of disciplinary cases returned. |
totalFinesUsd | number | Sum of imposed fines (waived fines excluded). |
largestFineUsd | number | Largest single fine imposed. |
regulatoryActions | string[] | One human-readable line per case (date, regulator, reference, violations, outcome). |
hasBarrableOffense | boolean | Present when a case involves a barrable offense. |
latestRegActionDate / latestRegActionRegulator / latestRegActionReference / latestRegActionViolations / latestRegActionOutcome | string | Most recent case details. Present when cases exist. |
Financial fields (FCMs, when fetchFinancials is on): financialsAsOf, adjustedNetCapitalUsd, requiredNetCapitalUsd, excessNetCapitalUsd, segregatedFundsUsd, segregatedRequiredUsd, segregatedExcessUsd, securedFundsUsd, clearedSwapsCollateralUsd and related figures (numbers, or absent for non-FCMs).
Individual fields: firstName, lastName, sponsorFirmName, sponsorNfaId, sponsorRelationship, sponsorSince, sponsorFirmNames, sponsorFirmsCount.
Pool fields: poolId, poolStatus, isCurrentPool, cpoName, cpoNfaId, cpoMembershipStatus, plus the operating CPO's contact and principals when profiles are on.
On a failed run, a single item with a populated error field is written instead.
Example output record
Real record from a live run (input {"recordType":"firms","searchQueries":["capital"],"maxRegistrants":10}). See the hero record above for the full field set; this is the same registrant.
{"nfaId": "0240154","entityType": "firm","name": "CAPITAL FUND MANAGEMENT SA","membershipStatus": "NFA Member Approved","isNfaMember": true,"registrationTypes": ["Commodity Trading Advisor", "Swap Firm", "Commodity Pool Operator"],"addressCity": "PARIS","addressCountryName": "FRANCE","phone": "+33 1 4949 5949","firstRegisteredDate": "1992-01-23","nfaMemberSince": "1992-05-05","topPrincipalName": "JACQUES CHARLES SAULIERE","topPrincipalTitle": "CHIEF EXECUTIVE OFFICER","currentPoolsCount": 16,"exemptionTypes": ["4.7", "4.13(a)(4)"],"regActionsTotal": 0,"totalFinesUsd": 0,"profileUrl": "https://www.nfa.futures.org/BasicNet/basic-profile.aspx?nfaid=0240154","source": "NFA BASIC","inputQuery": "capital","observedAt": "2026-08-11T21:21:46.616Z"}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~nfa-basic-futures-registrants-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"recordType":"firms","searchQueries":["Goldman Sachs"],"registrationTypes":["Swap Dealer"],"maxRegistrants":25}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~nfa-basic-futures-registrants-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"nfaIds":["0240154"]}'
Apify CLI:
apify call scrapers_lat/nfa-basic-futures-registrants-scraper \--input '{"recordType":"firms","onlyWithRegulatoryActions":true,"maxRegistrants":50}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per record returned (
resultevent). See the pricing tab for the current per-result price. - No charge on failure. If a run errors, the actor writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 records per run. Upgrade for higher
maxRegistrants.
FAQ and troubleshooting
A run returned 0 records. Why?
The keyword matched nothing, or your filters excluded everything. Broaden the query, remove registrationTypes/membershipStatuses/usStates, or leave searchQueries empty to sweep the registry. Zero-result runs are not charged.
How do I screen only registrants with disciplinary history?
Set onlyWithRegulatoryActions to true. Each returned record includes case references, violations, outcomes and totalFinesUsd.
Can I look up an exact firm or person?
Yes. Pass its 7-digit NFA ID in nfaIds (leading zeros are added automatically). These are fetched directly instead of searching.
Which fields need full profiles?
Address, phone, principals, 10% owners, history, exemptions and the usStates/requirePhone filters all need fetchProfiles. It is on by default; the actor fetches profiles anyway when those filters are set.
Do all firms have financials? No. Net-capital and customer-funds filings exist only for futures commission merchants (FCMs). For other registrants those fields are absent.
Is this an official NFA tool? No. This actor is independent and has no affiliation with the NFA or CFTC. It reads only data that is publicly available through NFA BASIC. Use the results in accordance with the source's terms.
Related scrapers
- FINRA BrokerCheck Scraper: US securities brokers and firms from FINRA.
- SEC EDGAR Company Filings Scraper: SEC filings by ticker or CIK.
- CFPB Complaints Scraper: US consumer financial complaints.
- FDIC Banks Scraper: US FDIC-insured bank records.
- OFAC Sanctions List Scraper: US Treasury OFAC sanctions lists.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with the NFA or CFTC. Accesses only publicly available NFA BASIC data. Use the results in accordance with the source's terms.
