NFA CPO / CTA Registry - Commodity Pool Operators & Advisors
NFA CPO/CTA Registry Scraper — Pool Operators and Trading Advisors
Crawl the NFA BASIC registry for every NFA-registered Commodity Pool Operator (CPO) and Commodity Trading Advisor (CTA). Returns firm identity, principal lists (officers and 10%+ owners), per-pool detail (pool ID, name, exemption type, status), and regulatory action history. No API key required — NFA BASIC is a public government registry.
Also pairs well with an NFA BASIC broker crawler for a complete compliance data stack covering FCMs, IBs, CPOs, and CTAs from the same source.
What does the NFA CPO/CTA Registry Scraper do?
The scraper hits NFA BASIC's public JSON-RPC endpoints (DataHandlerSearch.ashx for listing, DataHandler.ashx for per-firm enrichment). It enumerates matching firms alphabetically — or filters by name — then optionally fetches principal lists, pool detail, and regulatory actions for each firm. Each enrichment type is a separate toggle so you can run lean during universe enumeration and enrich only flagged firms in a second pass.
What data does it extract?
| Field | Type | Description |
|---|---|---|
nfa_id |
string | NFA registration ID (7-digit zero-padded) |
firm_name |
string | Firm name as listed in NFA BASIC |
location |
string | City and state (e.g. NEW YORK, NY) |
registration_type |
string | CPO, CTA, or both comma-separated |
registration_status |
string | NFA membership status (e.g. NFA Member Approved) |
registration_date |
string | Earliest active registration date (MM/DD/YYYY) |
principals |
array | Principals as NAME|TITLE|10pct_owner strings |
pool_count |
number | Number of active pools registered under this firm |
pools |
array | Per-pool detail as POOL_ID|NAME|EXEMPTION_TYPE|STATUS strings |
has_regulatory_actions |
boolean | Firm has any regulatory actions on record |
regulatory_actions_count |
number | Count of regulatory actions on record |
regulatory_actions |
string | Full action history serialized as JSON |
profile_url |
string | URL to the NFA BASIC firm profile |
scraped_at |
string | ISO timestamp when the record was scraped |
NFA exemption type codes in the pools array:
| Code | Description |
|---|---|
4.7 |
Exemption for pools offered only to qualified eligible persons |
4.13(a)(1) |
Small pool exemption (< $400k / < 15 participants) |
4.13(a)(3) |
De minimis trading exemption |
4.5 |
Certain investment company exclusion |
These exemption codes are the primary compliance filter buyers use to assess which pools are open to retail investors versus QEPs.
How to use it
All CPOs and CTAs with full enrichment:
{
"registrationType": "both",
"includePools": true,
"includePrincipals": true,
"includeRegulatoryActions": true,
"maxItems": 0
}
CPO-only, lightweight (no enrichment):
{
"registrationType": "CPO",
"includePools": false,
"includePrincipals": false,
"includeRegulatoryActions": false,
"maxItems": 1000
}
Prospect list — growing fund managers registered in the last 2 years:
Set registrationType: CPO, run the full enumeration, then filter downstream to pool_count > 5 and registration_date within the last 2 years. These are growing fund managers actively adding pools — high-priority prospects for fund administrators and fintech vendors.
| Field | Type | Default | Description |
|---|---|---|---|
registrationType |
string | both |
both, CPO, or CTA |
firmName |
string | — | Name search filter (leave empty for all) |
includePools |
boolean | true |
Fetch per-firm pool list (one extra API call per firm) |
includePrincipals |
boolean | true |
Fetch principal list (one extra API call per firm) |
includeRegulatoryActions |
boolean | true |
Fetch regulatory action history (one extra API call per firm) |
maxItems |
integer | 10 |
Maximum firms to return |
Use cases
- Compliance teams at clearing firms and FCMs — Screen counterparty CPOs and CTAs against the authoritative NFA register before onboarding. The
registration_statusandhas_regulatory_actionsfields are the first-pass flags. - Fund administrators and prime brokers — Verify principal lists and pool counts before quoting administration or financing terms.
- Allocators and fund-of-fund managers — Track new pool registrations and regulatory actions across the manager universe without manual NFA BASIC searches.
- Sales teams at fintech and SaaS vendors — Filter to firms with
pool_count > 5registered in the last 2 years for a prospect list of growing fund managers likely to need compliance, reporting, or admin tooling. - Financial researchers — Map the structure of the US commodity-pool industry by registration category, exemption type, and geographic distribution.
FAQ
Is this data public? Yes. NFA BASIC is the public regulatory database for NFA-registered firms. No authentication is required.
How do I get pool-level rows rather than firm-level rows?
The actor returns one record per firm with a pools array. To get one row per pool, post-process the pools field by splitting the pipe-delimited strings and exploding the array. The pool_count field tells you how many rows to expect.
Can I skip the enrichment calls to run faster?
Yes. Set includePools, includePrincipals, and includeRegulatoryActions to false to skip those API calls. This reduces run time significantly for large universe pulls.
What formats can I export to? Apify supports JSON, CSV, and Excel export from the dataset view.