# SEC Investment Adviser Scraper — RIA Firm Leads & Form ADV (`scrapersdelight/sec-adviser-scraper`) Actor

One row per registered investment adviser FIRM, from the SEC's own Form ADV feed: firm name, CRD and SEC number, office address, phone, website, LinkedIn, regulatory AUM, employees, client counts, fees, custody and Item 11 disciplinary flags. 17,108 SEC-registered RIAs. No login.

- **URL**: https://apify.com/scrapersdelight/sec-adviser-scraper.md
- **Developed by:** [Scrapers Delight](https://apify.com/scrapersdelight) (community)
- **Categories:** Lead generation, Business, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$4.00 / 1,000 per adviser firm returneds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## SEC Investment Adviser Scraper — RIA Firm Leads & Form ADV

> **Every registered investment adviser firm in the United States, from the regulator's own Form ADV feed. 17,108 SEC-registered RIAs (or 43,370 including state-registered firms), each with firm name, CRD and SEC number, main-office address, phone, website, LinkedIn, regulatory AUM, employees, client counts, fee structure, custody and Form ADV Item 11 disciplinary flags. $0.004 per firm — $4 per 1,000, the whole SEC list for about $68. No login, no API key, no account with the SEC.**

One row per **adviser firm**, parsed from the nightly compilation feed that sits behind [adviserinfo.sec.gov](https://adviserinfo.sec.gov) — the SEC's own Investment Adviser Public Disclosure system. Each row carries **firmName, legalName, crdNumber, secNumber, iapdUrl, phone, fax, website, linkedinUrl, address, city, state, zip, aumTotal, aumDiscretionary, accountsTotal, totalEmployees, investmentAdviserReps, totalClients, clientsByType, compensationTypes, advisoryServices, hasCustody, custodyAssetsUsd, hasDisclosure, criminalDisclosure, regulatoryDisclosure, civilDisclosure, registrationDate** and **lastFilingDate** — 78 fields in all.

Filter by regulator, state, AUM band, headcount, website, disciplinary status, registration date and last-filing date — or paste a list of CRD numbers and verify just those firms.

**No login. No API key. No CAPTCHA solving. No per-firm page crawling** — the whole industry arrives as one 7.25 MB file, and a full 17,108-firm run takes under a minute.

```json
{
  "registrationType": "sec",
  "maxItems": 100
}
```

Click **Try for free** and hit **Start** — that is the input the Actor ships with, and it returns 100 SEC-registered adviser firms for about $0.40. Set `maxItems` to `0` for the whole list.

***

### What is in the corpus — measured on the 2026-08-12 feed

Every number on this page was measured by running this Actor against the live `IA_FIRM_SEC_Feed_08_12_2026` and `IA_FIRM_STATE_Feed_08_12_2026` files. Nothing here is quoted from a marketing page.

| Set | Firms | What they are |
|---|---|---|
| **SEC-registered advisers** | **17,108** | The classic RIA list. Full Form ADV Part 1A: AUM, employees, clients, fees, custody, discipline. |
| State-registered advisers | 16,510 | Smaller, local advisers regulated by their state, not the SEC. |
| Both feeds, deduplicated by CRD | **43,370** | 2,173 firms appear in both feeds and are emitted once. |
| *Exempt reporting advisers* | *6,632 SEC + 5,293 state* | *Private-fund/VC managers. **Excluded by default** — see "Read this before you run it".* |

Combined regulatory AUM across those 17,108 SEC-registered firms: **$177.4 trillion** (`$177,415.8B`, printed by the run itself).

#### Where the money sits — AUM bands

Measured on the 16,757 SEC-registered firms that report regulatory AUM (97.9% of 17,108):

| Regulatory AUM | Firms | Share |
|---|---|---|
| Under $25M | 638 | 3.8% |
| $25M – $100M | 760 | 4.5% |
| $100M – $250M | 4,250 | 25.4% |
| **$250M – $1B** | **5,720** | **34.1%** |
| $1B – $10B | 4,023 | 24.0% |
| $10B – $100B | 1,105 | 6.6% |
| $100B or more | 261 | 1.6% |

270 of the "Under $25M" firms report exactly `$0` — a real filing state (a newly-registered or wind-down firm), not a parsing miss.

#### Top 25 SEC-registered advisers by regulatory AUM

Straight out of a `registrationType: "sec"` run with no filters — this is what a sort on `aumTotal` gives you:

| # | Firm | CRD | State | Regulatory AUM | Employees |
|---|---|---|---|---|---|
| 1 | VANGUARD GROUP INC | 105958 | PA | $11.09tn | 1,702 |
| 2 | VANGUARD CAPITAL MANAGEMENT, LLC | 338002 | PA | $8.44tn | 235 |
| 3 | FIDELITY MANAGEMENT & RESEARCH COMPANY LLC | 108281 | MA | $5.69tn | 1,427 |
| 4 | BLACKROCK FUND ADVISORS | 105247 | CA | $4.28tn | 128 |
| 5 | CAPITAL RESEARCH AND MANAGEMENT COMPANY | 110885 | CA | $3.75tn | 1,417 |
| 6 | PACIFIC INVESTMENT MANAGEMENT COMPANY LLC | 104559 | CA | $3.67tn | 1,968 |
| 7 | J.P. MORGAN INVESTMENT MANAGEMENT INC. | 107038 | NY | $3.52tn | 3,194 |
| 8 | VANGUARD PORTFOLIO MANAGEMENT, LLC | 338003 | PA | $2.66tn | 105 |
| 9 | GOLDMAN SACHS ASSET MANAGEMENT, L.P. | 107738 | NY | $2.65tn | 2,059 |
| 10 | T. ROWE PRICE ASSOCIATES, INC. | 105496 | MD | $2.20tn | 3,760 |
| 11 | MORGAN STANLEY | 149777 | NY | $1.96tn | 29,481 |
| 12 | MERRILL LYNCH, PIERCE, FENNER & SMITH INCORPORATED | 7691 | NY | $1.78tn | 32,960 |
| 13 | GEODE CAPITAL MANAGEMENT, LLC | 115504 | MA | $1.74tn | 194 |
| 14 | CHARLES SCHWAB INVESTMENT MANAGEMENT, INC | 106753 | CA | $1.72tn | 946 |
| 15 | BLACKROCK FINANCIAL MANAGEMENT, INC | 107105 | NY | $1.60tn | 7,987 |
| 16 | WELLINGTON MANAGEMENT COMPANY LLP | 106595 | MA | $1.43tn | 1,868 |
| 17 | SSGA FUNDS MANAGEMENT, INC. | 111242 | MA | $1.42tn | 241 |
| 18 | STRATEGIC ADVISERS LLC | 104555 | MA | $1.37tn | 17,112 |
| 19 | NORTHERN TRUST INVESTMENTS, INCORPORATED | 105780 | IL | $1.25tn | 662 |
| 20 | CAPTRUST | 175112 | NC | $1.24tn | 1,841 |
| 21 | PGIM, INC. | 105676 | NJ | $1.13tn | 1,990 |
| 22 | BLACKROCK ADVISORS, LLC | 106614 | NY | $1.10tn | 146 |
| 23 | DIMENSIONAL FUND ADVISORS LP | 106482 | TX | $1.02tn | 1,168 |
| 24 | EDWARD JONES | 250 | MO | $1.01tn | 36,317 |
| 25 | MANAGED ACCOUNT ADVISORS LLC | 142558 | NJ | $0.99tn | 61 |

#### Segments you can cut with the inputs on this page

Across the 33,334 **registered** firms in a `both` run (exempt reporting advisers excluded):

- **19,224** report under $250M of regulatory AUM — of which 1,591 report exactly zero, so the real "small practice" list is **17,633**
- **5,389** manage $1B or more
- **18,712** offer financial planning services (Item 5.G)
- **11,093** report custody of client cash or securities (Item 9.A)
- **3,282** carry at least one Item 11 disciplinary disclosure
- **15,886** publish a LinkedIn page

And inside the 17,108 SEC-registered firms specifically:

- **995** are one-person shops; **6,660** have five employees or fewer; **1,201** have 100 or more
- **2,019** (11.8%) carry a disciplinary disclosure: 157 criminal, 1,894 regulatory, 271 civil (a firm can carry more than one)
- **16,330** charge a percentage of AUM, 7,728 charge fixed fees, 6,129 charge performance fees, 4,935 charge hourly, 330 take commissions
- **2,580** are headquartered in New York, 1,870 in California, 1,081 in Florida, 1,076 in Texas — and **2,273** publish no US state at all (mostly non-US offices)

***

### Read this before you run it

Five things that would otherwise turn into a refund request.

1. **"45,543 records" is not 45,543 registered advisers.** The SEC feed holds 23,740 records, and 6,632 of them (27.9%) are **exempt reporting advisers** — private-fund and venture managers with SEC numbers starting `802-`, who file only Items 1, 2, 3, 6, 7, 10 and 11 of Form ADV. Measured on those 6,632 records: **0.0%** report regulatory AUM, **0.0%** report an employee count, **0.0%** report client counts, and only **49.0%** carry a US address. That is why `includeExemptReporting` defaults to **false** and the default run gives you the 17,108 firms that actually carry the fields you are paying for.
2. **State-registered firms publish a street address on only 50.1% of records** (SEC-registered: 91.9%). Phone is 100% on both. If you need mailing addresses, `registrationType: "sec"` is the reliable set. The 8,254 state-registered firms with no main-office state are still matched by state, because a row with no office state falls back to the state securities regulator it is registered with — that is why a Texas state-registered run returns **2,827** rows rather than the 712 that publish a Texas office address.
3. **This is a firm-level product.** Form ADV Part 1A is filed by the firm. There are no individual adviser names and no personal e-mail addresses in this feed — see [Honest limits](#honest-limits) for what to use instead.
4. **Values are as filed, not as of today.** AUM and client counts come from the firm's most recent annual updating amendment. `lastFilingDate` tells you exactly how stale that is, and `filedAfter` lets you keep only fresh ones.
5. **The bucket keeps roughly the last 8 days.** The Actor discovers the current file at run time, so you always get this week's snapshot; there is no way to ask it for last quarter's.

***

### The wedge: the Form ADV filing itself, not a contact list

There are two kinds of RIA product on this Store, and it is worth being blunt about which one you are looking at.

**Person-level products** sell you named advisers with e-mail addresses and LinkedIn profiles, assembled in a vendor's own database. If your job is "e-mail 5,000 advisers", buy one of those.

**This Actor sells the regulatory filing.** It is the only thing here that carries, for every firm, in one row:

| Field | Fill on 17,108 SEC-registered firms | Why a buyer pays for it |
|---|---|---|
| `aumTotal` (Item 5.F.(2)(c)) | **97.9%** | Segment the entire industry by AUM band; the single strongest RIA-buying signal there is |
| `totalEmployees`, `investmentAdviserReps` (Item 5.A/5.B) | **100%** | Headcount-based pricing and territory sizing |
| `totalClients` + `clientsByType` (Item 5.D) | **97.4%** | Retail vs institutional vs pooled-vehicle mix in 14 named client types |
| `compensationTypes` (Item 5.E) | **100%** | Fee-only, commission or performance-fee — decoded to plain English |
| `advisoryServices` (Item 5.G) | **100%** | The 12 advisory activities the firm actually reports doing |
| `hasCustody` / `custodyAssetsUsd` (Item 9.A) | 50.0% / **53.4%** | Custody status is the qualifying question for custodians and auditors |
| `hasDisclosure` + the three flags (Item 11) | **11.8% flagged** | Compliance screening and adviser due diligence |
| `registrationDate` | **100%** | New-registration triggers: 46 SEC-registered firms registered in the 7 days before this feed |

None of that exists on a contact list, and none of it exists on Google Maps or a firm's website. It exists because the SEC makes the firm file it, and it is refreshed nightly.

The honest flip side, up front: **if you need a named human being's e-mail address, this Actor cannot give you one and no filter will make it appear.** Use the sibling actors listed at the bottom of this page.

***

### Quick start

1. Open the Actor and click **Try for free**.
2. Leave the input exactly as it is (`registrationType: "sec"`, `maxItems: 100`) — or pick states, an AUM band, or paste CRD numbers.
3. Click **Start**. The default run finishes in about **4 seconds**.
4. Open the **Dataset** tab, click **Export**, choose CSV, Excel, JSON or XML.
5. Happy with the shape? Set **Max results** to `0` and run it again for the whole 17,108-firm list (about $68).

No coding, no proxy setup, no SEC account.

#### Run it from code

**Python** (`pip install apify-client`):

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run = client.actor("scrapersdelight/sec-adviser-scraper").call(run_input={
    "registrationType": "sec",
    "states": ["NY", "CT", "NJ"],
    "minAum": 250_000_000,
    "maxAum": 5_000_000_000,
    "maxItems": 0,
})

for firm in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(firm["firmName"], firm["aumTotal"], firm["phone"], firm["website"])
```

**Node.js** (`npm i apify-client`):

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('scrapersdelight/sec-adviser-scraper').call({
    registrationType: 'both',
    withDisclosuresOnly: true,
    maxItems: 0,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, 'firms with an Item 11 disclosure');
```

**cURL** — run and get the rows back in one request (good for a handful of CRD lookups):

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapersdelight~sec-adviser-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"registrationType":"both","crdNumbers":["105958","104559","110194"],"maxItems":0}'
```

***

### What you get — one row per adviser firm

78 fields per row, grouped:

**Identity** — `crdNumber` (the regulator's unique firm id), `secNumber` (`801-…` registered, `802-…` exempt reporting), `firmName`, `legalName`, `iapdUrl` (deep link to the firm's IAPD page).

**Registration** — `registrationType` (`sec`/`state`), `firmType`, `isExemptReportingAdviser`, `registrationStatus`, `registrationDate`, `secRegion`, `umbrellaRegistration`, `noticeFiledStates[]` (SEC feed), `stateRegistrations[]` with per-state status and date (state feed).

**Contact** — `phone`, `fax`, `website`, `websites[]`, `linkedinUrl`, `twitterUrl`, `facebookUrl`, `instagramUrl`, `youtubeUrl`, `otherSocialUrls[]`.

**Address** — `address`, `address2`, `city`, `state`, `zip`, `country`, plus the same six `mailing*` fields.

**Entity** — `organizationType`, `organizedInState`, `organizedInCountry`, `fiscalYearEnd`.

**Size (Item 5.F)** — `aumTotal`, `aumDiscretionary`, `aumNonDiscretionary`, `aumNonUsClients`, `accountsTotal`, `accountsDiscretionary`, `accountsNonDiscretionary`.

**Headcount (Item 5.A/5.B)** — `totalEmployees`, `advisoryEmployees`, `brokerDealerReps`, `investmentAdviserReps`, `insuranceAgents`, `solicitors`.

**Clients (Item 5.C/5.D/5.H)** — `totalClients`, `clientsByType` (14 named types), `clientsWithoutRegulatoryAum`, `nonUsClientPercent`, `financialPlanningClientsRange`.

**Money and services (Item 5.E/5.G)** — `compensationTypes[]`, `compensationOther`, `advisoryServices[]`, `advisoryServicesOther`.

**Custody (Item 9)** — `hasCustody`, `custodyAssetsUsd`, `custodyClients`, `relatedPersonHasCustody`.

**Discipline (Item 11)** — `hasDisclosure`, `criminalDisclosure`, `regulatoryDisclosure`, `civilDisclosure`, `disclosureFlags[]`.

**Provenance** — `hasWebsite`, `websiteReported`, `lastFilingDate`, `formVersion`, `sourceFeed`, `feedDate`, `scrapedAt`.

Conventions, stated once: all dates are `YYYY-MM-DD` as filed with the regulator; `scrapedAt` is ISO-8601 UTC; all money fields are plain numbers in USD; `null` means the firm did not file that item, `0` means it filed a zero.

***

### Field fill — measured on a full run of both feeds

Two tables, because the two feeds are genuinely different products. Plan against the one you are going to run.

| Field | SEC-registered (17,108) | State-registered (16,510) |
|---|---|---|
| Firm name, CRD number, IAPD link | 100% | 100% |
| **Phone** | **100%** | **100%** |
| Total employees | 100% | 99.8% |
| Fee structure (Item 5.E) | 100% | 100% |
| Advisory services (Item 5.G) | 100% | 100% |
| Registration date, last filing date | 100% | 100% |
| **Regulatory AUM** | **97.9%** | 84.0% |
| Client count (Item 5.D) | 97.4% | 81.4% |
| Street address / city | 91.9% | 50.1% |
| ZIP | 91.4% | 50.0% |
| **Website** | **91.0%** | 69.9% |
| SEC number | 100% | 11.1% |
| **LinkedIn URL** | **62.5%** | 32.2% |
| Fax | 54.3% | 40.1% |
| Custody amount (Item 9.A) | 53.4% | 19.5% |
| Facebook / X / Instagram | 26.1% / 20.1% / 12.8% | 21.4% / 10.6% / 8.9% |
| **Disciplinary flag (Item 11)** | **11.8% flagged** | 7.8% flagged |

**The headline that could mislead you: this is a firm switchboard, not a direct dial.** `phone` is 100% filled on both feeds because the SEC requires a main-office number — it is the number on the firm's Form ADV cover, not a named adviser's mobile.

Every run prints its own measured fill in the log, for exactly the rows it returned:

```
INFO  Done: 17,108 adviser firms emitted from 23,740 scanned
INFO  Field fill in this result set — AUM 97.9% · website 91.0% · street address 91.9% · Item 11 disciplinary flag 11.8%
INFO  Combined regulatory AUM in this result set: $177,415.8B
```

***

### Recipes

Named, copy-pasteable inputs for the jobs people actually run.

**Recipe 1 — The whole SEC RIA list.** 17,108 rows, about $68, under a minute.

```json
{ "registrationType": "sec", "maxItems": 0 }
```

**Recipe 2 — Mid-market wealth managers in the tri-state area.** The classic wealthtech ICP: big enough to buy software, small enough to answer the phone.

```json
{
  "registrationType": "sec",
  "states": ["NY", "NJ", "CT"],
  "minAum": 250000000,
  "maxAum": 5000000000,
  "minEmployees": 5,
  "withWebsiteOnly": true,
  "maxItems": 0
}
```

**Recipe 3 — RIA M\&A target list.** Sub-$250M practices with a real website to research. `maxAum` alone leaves 19,224 firms across both feeds, of which 17,633 report AUM above zero; the headcount and website switches narrow it further.

```json
{
  "registrationType": "both",
  "maxAum": 250000000,
  "minEmployees": 2,
  "withWebsiteOnly": true,
  "maxItems": 0
}
```

**Recipe 4 — New registrations this month.** 213 SEC-registered firms registered in the 30 days before the 2026-08-12 feed. Schedule it weekly and you have a trigger feed.

```json
{ "registrationType": "both", "registeredAfter": "2026-07-14", "maxItems": 0 }
```

**Recipe 5 — What changed since my last pull.** 1,898 SEC-registered firms filed a Form ADV amendment in the 30 days before this feed.

```json
{ "registrationType": "sec", "filedAfter": "2026-07-14", "maxItems": 0 }
```

**Recipe 6 — Compliance screen.** Every firm carrying an Item 11 disciplinary answer: 3,282 across both feeds.

```json
{ "registrationType": "both", "withDisclosuresOnly": true, "maxItems": 0 }
```

**Recipe 7 — Verify a list you already hold.** Paste CRD numbers; the log tells you which ones were not found.

```json
{
  "registrationType": "both",
  "crdNumbers": ["105958", "104559", "110194", "132274"],
  "maxItems": 0
}
```

**Recipe 8 — Name search.** 3,005 SEC-registered firms have "wealth" in their name; 56 have "fiduciary".

```json
{ "registrationType": "sec", "firmNameQuery": "fiduciary", "maxItems": 0 }
```

**Recipe 9 — Private-fund and VC managers.** Adds the 6,632 exempt reporting advisers to the SEC list. Do not combine this with `minAum` or `minEmployees`: those filters require a reported number, and exempt reporting advisers report none, so any value would silently remove every one of them again.

```json
{ "registrationType": "sec", "includeExemptReporting": true, "maxItems": 0 }
```

***

### Sample row — a real SEC-registered firm

Pulled verbatim from a run against the 2026-08-12 feed, trimmed only of the `mailing*` fields (all `null` on this firm) and the empty client types.

```jsonc
{
  "crdNumber": "110194",
  "secNumber": "801-55488",
  "firmName": "WINCH FINANCIAL",
  "legalName": "WINCH ADVISORY SERVICES, LLC",
  "iapdUrl": "https://adviserinfo.sec.gov/firm/summary/110194",

  "registrationType": "sec",
  "firmType": "SEC Registered",
  "isExemptReportingAdviser": false,
  "registrationStatus": "APPROVED",
  "registrationDate": "1998-04-30",
  "secRegion": "CHRO",
  "umbrellaRegistration": false,
  "noticeFiledStates": ["CA", "LA", "MN", "NE", "WI", "TX", "FL"],

  "phone": "(920) 739-8577",
  "fax": "(920) 954-5499",
  "website": "http://www.winchfinancial.com",
  "websites": ["http://www.winchfinancial.com"],
  "linkedinUrl": "https://www.linkedin.com/company/490256",
  "facebookUrl": "https://www.facebook.com/WINCHFINANCIAL",
  "instagramUrl": "https://www.instagram.com/WINCHFINANCIAL",
  "twitterUrl": null,

  "address": "424 E. WISCONSIN AVENUE",
  "city": "APPLETON",
  "state": "WI",
  "zip": "54911",
  "country": "United States",

  "organizationType": "Limited Liability Company",
  "organizedInState": "WI",
  "fiscalYearEnd": "DECEMBER",

  "aumTotal": 580178144,
  "aumDiscretionary": 580178144,
  "aumNonDiscretionary": 0,
  "accountsTotal": 2323,

  "totalEmployees": 18,
  "advisoryEmployees": 17,
  "investmentAdviserReps": 7,
  "insuranceAgents": 3,

  "totalClients": 851,
  "clientsByType": { "individuals": 704, "highNetWorthIndividuals": 147 },
  "clientsWithoutRegulatoryAum": 1,
  "financialPlanningClientsRange": "More than 500",

  "compensationTypes": [
    "A percentage of assets under management",
    "Hourly charges",
    "Fixed fees (other than subscription fees)"
  ],
  "advisoryServices": [
    "Financial planning services",
    "Portfolio management for individuals and/or small businesses",
    "Portfolio management for businesses or institutional clients",
    "Educational seminars/workshops"
  ],

  "hasCustody": false,
  "custodyAssetsUsd": null,
  "hasDisclosure": false,
  "criminalDisclosure": false,
  "regulatoryDisclosure": false,
  "civilDisclosure": false,
  "disclosureFlags": [],

  "lastFilingDate": "2026-03-04",
  "formVersion": "10/2021",
  "sourceFeed": "IA_FIRM_SEC_Feed",
  "feedDate": "2026-08-12",
  "scrapedAt": "2026-08-13T02:01:19.870Z"
}
```

#### And a state-registered firm, which is a different shape

Note `stateRegistrations[]` instead of `noticeFiledStates[]`, and the per-state status — `CONDREST` on the Texas line is the regulator's own code for a conditional restriction.

```jsonc
{
  "crdNumber": "132274",
  "secNumber": "801-69127",
  "firmName": "TIMPE & TIMPE FINANCIAL ADVISORY SERVICES, L.L.C.",
  "registrationType": "state",
  "firmType": "State Registered",
  "registrationStatus": "APPROVED",
  "registrationDate": "2011-12-20",
  "stateRegistrations": [
    { "state": "FL", "status": "APPROVED", "date": "2021-03-29" },
    { "state": "IL", "status": "APPROVED", "date": "2014-11-10" },
    { "state": "IN", "status": "APPROVED", "date": "2012-01-03" },
    { "state": "OH", "status": "APPROVED", "date": "2012-01-03" },
    { "state": "TX", "status": "CONDREST", "date": "2011-12-20" }
  ],
  "phone": "(317) 217-1660",
  "website": "https://www.timpefas.com",
  "linkedinUrl": "https://www.linkedin.com/IN/ARTTIMPE3/",
  "address": "4801 NORTHWESTERN DRIVE",
  "city": "ZIONSVILLE",
  "state": "IN",
  "zip": "46077",
  "aumTotal": 61164051,
  "totalEmployees": 2,
  "totalClients": 133,
  "advisoryServices": [
    "Financial planning services",
    "Portfolio management for individuals and/or small businesses"
  ],
  "hasDisclosure": false,
  "lastFilingDate": "2026-04-07",
  "sourceFeed": "IA_FIRM_STATE_Feed",
  "feedDate": "2026-08-12"
}
```

#### Fields people misread

- `aumTotal` is **regulatory** AUM (Item 5.F.(2)(c)), the SEC's definition — not the marketing "assets under advisement" a firm puts on its website. It splits into `aumDiscretionary` / `aumNonDiscretionary`.
- `totalClients` is **derived**: the feed has no single "number of clients" field, so it is the sum of the 14 Item 5.D client-type counts. `clientsByType` keeps the breakdown. `clientsWithoutRegulatoryAum` (Item 5.C.(1)) is a different question — clients the firm advises but reports no AUM for, typically financial-planning-only clients.
- `null` vs `0`: `aumTotal: null` means the firm did not file Item 5.F at all (every exempt reporting adviser). `aumTotal: 0` means it filed a zero — 270 SEC-registered firms did.
- `hasCustody` (50.0% true on SEC-registered firms) is the Item 9.A yes/no; `custodyAssetsUsd` is filled on 53.4%, because the amount box is also completed by firms whose custody arises through a related person.
- `disclosureFlags` holds the raw Item 11 question codes answered YES (e.g. `Q11D2`). `criminalDisclosure` rolls up 11.A/11.B, `regulatoryDisclosure` 11.C–11.G, `civilDisclosure` 11.H.
- `website` is the first non-social URL. Form ADV Item 1.I collects websites **and** social accounts in one list — 14,864 of the 23,740 SEC-feed records list more than one address — so LinkedIn/X/Facebook/Instagram/YouTube go to their own fields rather than polluting the website column.

***

### Input

Every field ships with a default or a prefill, so a run with zero edits works. Fields appear here in the same order as the Console form.

| Field | Type | Default | What it does |
|---|---|---|---|
| `registrationType` | select | `"sec"` | `sec` (17,108 firms, richest fields), `state` (16,510), or `both` (43,370 unique, deduplicated by CRD). `both` costs one extra 5.07 MB download; scanning every record in both feeds took 10.6 seconds end to end. |
| `includeExemptReporting` | checkbox | `false` | Adds the 6,632 SEC + 5,293 state private-fund/VC managers that report **no** AUM, employees or clients. A firm requested by CRD is returned regardless. |
| `crdNumbers` | stringList | `[]` | Paste CRD numbers to return only those firms — the verification path. Any format (`104559`, `CRD #104559`, `0104559`). The log names every CRD it could not find. Only searches the feed you picked, so use `both` for lookups. |
| `firmNameQuery` | textfield | `""` | Case-insensitive substring on business or legal name. `"wealth"` → 3,005 SEC-registered firms, `"fiduciary"` → 56. |
| `states` | multi-select | `[]` | Main-office states, 53 values with firm counts in the labels. Empty = nationwide. Address-less state-registered rows fall back to their state regulator, so a Texas state run returns 2,827 rows, not 712. |
| `minAum` | number | *(none)* | Regulatory AUM floor in USD. `1000000000` leaves 5,389 firms across both feeds. Excludes every exempt reporting adviser, which report no AUM. |
| `maxAum` | number | *(none)* | Regulatory AUM ceiling. `250000000` leaves 19,224 firms; `100000000` leaves 14,641. |
| `minEmployees` | number | *(none)* | Item 5.A headcount floor. `6` removes about 39% of the SEC list (6,660 firms have ≤5 employees). |
| `withWebsiteOnly` | checkbox | `false` | Keeps only firms with a real website (91.0% SEC / 69.9% state). Drops the 166 SEC-registered firms whose only web address is a social profile. |
| `withDisclosuresOnly` | checkbox | `false` | Keeps only firms with ≥1 Item 11 disciplinary YES: 2,019 SEC-registered (11.8%), 1,292 state-registered (7.8%). |
| `registeredAfter` | textfield | *(none)* | `YYYY-MM-DD`. New-registration trigger: 46 SEC-registered firms registered in the 7 days before the 2026-08-12 feed, 213 in 30 days, 477 in 90. A malformed date stops the run. |
| `filedAfter` | textfield | *(none)* | `YYYY-MM-DD`. Last Form ADV filing on or after this date: 331 SEC-registered firms in 7 days, 1,898 in 30, 4,958 in 90. 17,026 filed within a year, so a 12-month window is not a filter. |
| `maxItems` | number | `100` | Hard cap and hard cost cap: 100 = $0.40, 1,000 = $4, the whole SEC list ≈ $68. `0` = no cap. |
| `proxyConfiguration` | proxy | *(off)* | Off on purpose — see the transport ladder below. Set it only if your account needs a fixed egress IP. |

Nothing is required. The prefilled input (`registrationType: "sec"`, `maxItems: 100`) returns rows on its own in about 4 seconds.

***

### Pricing

**$0.004 per adviser firm returned — $4 per 1,000.** Charged on the `firm-scraped` event. There is no monthly platform fee from this Actor and no charge for starting a run.

| Run | Firms | Cost |
|---|---|---|
| Default first click | 100 | **$0.40** |
| One state, e.g. every SEC-registered firm in New York | 2,580 | $10.32 |
| Every firm carrying a disciplinary disclosure (both feeds) | 3,282 | $13.13 |
| **The whole SEC-registered RIA list** | **17,108** | **≈ $68** |
| Everything, both feeds, deduplicated | 43,370 | ≈ $173 |

What you are **not** charged for:

- **Rows your filters removed.** A `states: ["MT"]` run reads all 23,740 SEC records and bills you for the 24 SEC-registered Montana firms it returns — $0.10.
- **The same firm twice.** Records are deduplicated on CRD number before anything is pushed, so a `both` run never bills you for the 2,173 firms that appear in both feeds.
- **Retries or downloads.** The 7.25 MB feed download, the integrity checks and any re-download attempt are ours.
- **Empty results.** A run that matches nothing throws instead of quietly finishing, and throws before it pushes anything.

Rows are charged as they are pushed (`Actor.pushData(items, 'firm-scraped')`), so if you hit a budget cap you get whole rows and a stop, never a half-billed dataset. `maxItems` is your cost dial: it is the number of firms you can be charged for in that run.

***

### Honest limits

- **No individual advisers, and no e-mail addresses — for anyone.** Form ADV Part 1A is a *firm* filing. The individual adviser records live in a separate IAPD feed that is not published in this bucket, and no part of this feed carries a personal e-mail address. If you need named people, use [NAPFA Advisor Scraper](https://apify.com/scrapersdelight/napfa-advisor-scraper) (about 4,000 fee-only advisers with individual e-mail and phone) and join it to this one on the firm name.
- **State-registered rows are half-addressed: 50.1% carry a street address**, versus 91.9% for SEC-registered. If your workflow needs postal addresses, run `registrationType: "sec"` and accept 17,108 firms instead of 33,334.
- **2,273 SEC-registered firms publish no US state** (`state: null`) — mostly non-US head offices; 888 report a non-US country outright. A `states` filter will never return them. Leave `states` empty if you want the full universe.
- **`website` is 91.0% filled, and 11 of those 17,108 values still contain a `linkedin.com` string** — because the adviser typed a malformed URL into Form ADV (`www.linkedin.company/…`, `wwwlinkedin.com`, a tracking-gateway redirect). That is 0.06% of rows, it is the filer's typo rather than a parsing failure, and the value is passed through exactly as filed.
- **Exempt reporting advisers report nothing quantitative.** 0.0% AUM, 0.0% employees, 0.0% clients across all 6,632 SEC records. They are excluded by default and no filter will fix them; they are in the feed for name, address, phone and Item 11 only.
- **A disciplinary flag is an answer, not a story.** `hasDisclosure: true` means the firm answered YES to an Item 11 question. The narrative disclosure reporting pages (DRPs) behind that answer are not in this feed — open the `iapdUrl` to read them. Never publish "this firm has been disciplined" off the flag alone.
- **The data is as filed, and filings are annual.** 17,026 of 17,108 SEC-registered firms filed something in the last year, but a firm's AUM is normally its most recent annual updating amendment, not today's number. `lastFilingDate` is on every row so you can see for yourself.
- **Only the current week exists.** The SEC's bucket keeps roughly the last 8 days (`IA_FIRM_SEC_Feed_08_03_2026` already 403s), so there is no historical back-run. If you want history, schedule this Actor and keep your own snapshots.
- **US only.** This is the US federal and state adviser registry. There is no UK, EU or Canadian equivalent in this feed.
- **No login, no API key, no CAPTCHA solving service.** The Actor reads one public government file. It does not authenticate to anything and there is nothing behind a login that it tries to reach.

***

### How it works, and what was measured

1. The compilation feed filename is **dated** (`IA_FIRM_SEC_Feed_MM_DD_YYYY.xml.gz`) and the bucket keeps only about the last 8 days, so the Actor **discovers the current file** by HEAD-walking back from today rather than hardcoding a date. If it cannot find one in 12 days it stops with the list of URLs it tried.
2. It downloads the gzipped XML (**7.25 MB compressed, 82.0 MB expanded** for the SEC feed; 5.07 MB / 72.3 MB for the state feed) and **proves the download is complete before parsing anything**: gzip integrity, the closing `</IAPDFirmSECReport>` root tag, and a record-count floor. A truncated regulator file is never emitted as a short-but-plausible dataset.
3. Each `<Firm>` record is read straight off the decompressed buffer by byte offset — no DOM, no 160 MB string — and mapped from Form ADV attribute codes onto readable fields (`Q5F2C` → `aumTotal`, `Q5G1` → `"Financial planning services"`), deduplicated by CRD, filtered, and pushed in batches of 1,000.

#### Transport ladder — measured through Apify

| Rung | Result |
|---|---|
| Direct, no proxy | **15/15 HEAD (100%)** + 2/2 full 7.25 MB GET, whole file in ~0.3 s |
| Apify Proxy, auto/datacenter | 14/15 (93%) — one `595 ECONNRESET`; the full GET took 25 s |
| Apify Proxy, RESIDENTIAL | 14/15 (93%) — one Cloudflare 403 |

Cloudflare fronts the host but does not challenge a plain client. **Proxying a public government bucket only adds a failure mode**, so the proxy default is off — which is also the cheapest rung there is. The proxy input stays available for accounts that need a fixed egress IP.

#### Run time — measured 2026-08-12

| Run | Records scanned | Rows out | Wall clock |
|---|---|---|---|
| Default (`sec`, `maxItems: 100`) | 160 | 100 | **3.0–4.0 s** (three consecutive runs) |
| CRD lookup across both feeds | 45,543 | 4 | 10.6 s |
| Whole SEC list (`maxItems: 0`) | 23,740 | 17,108 | 48 s in the reference run on the platform (58.6 s locally with every row written to disk) |

Memory is 2 GB by default, which is what the 82 MB expanded XML plus the parse needs.

***

### Uniqueness and duplicates

Measured on complete feeds, not samples — every record in both files was keyed:

- **Zero duplicate CRD numbers inside either feed.** 23,740 SEC records → 23,740 unique keys. 21,803 state records → 21,803 unique keys. Zero records with a missing CRD.
- **2,173 firms appear in both feeds** (277 of them registered rather than exempt-reporting), because a firm mid-transition between SEC and state registration files with both. In a `both` run they are deduplicated on CRD **before anything is pushed**, so the dataset — and your bill — never holds the same firm twice. The run logs the count: `WARN 2173 duplicate CRD records skipped.`
- **Across runs**, use `filedAfter` or `registeredAfter` rather than re-downloading: they are exact, because the registration and filing dates are ISO-formatted on 100% of records in both feeds (0 of 17,108 and 0 of 16,510 deviate).

***

### When a run fails

This Actor is built to fail loudly rather than hand you a quiet, plausible, wrong dataset.

- **Zero rows throws.** The error names the feed, the number of records scanned and every filter that was active — e.g. `0 of 23,740 firms in the SEC feed matched your filters (firmNameQuery="zzzznotafirm" · includeExemptReporting=false)` — plus the three reasons that are usually to blame. There is no "successful" empty run.
- **A truncated download throws.** gzip integrity, root-tag closure and a record-count floor are all checked; the Actor retries up to four times and then refuses to emit a partial regulator dataset.
- **A missing feed file throws** with the list of dated URLs it tried, so you can see immediately whether the SEC renamed the file or the bucket is down.
- **A malformed date throws** before any download: `registeredAfter must be a date in YYYY-MM-DD form, e.g. "2026-01-01" — got "last week"`.
- **A CRD that does not exist does not fail the run** — it is reported by number in the log, with the three reasons a CRD can be absent (registered with the other regulator, not an adviser firm, or withdrawn).

***

### Who buys this

- **Wealthtech and fintech vendors selling into RIAs** — custodians, portfolio accounting, rebalancing, performance reporting, CRM, planning and billing software. `aumTotal` + `totalEmployees` + `advisoryServices` is a complete segmentation of the buying universe; the 5,720 firms in the $250M–$1B band are the classic mid-market ICP.
- **RIA M\&A aggregators and advisor recruiters** — `maxAum` plus `minEmployees` builds a sub-$250M independent-practice target list in one run (17,633 firms report AUM above zero and below $250M), and `registrationDate` tells you how long the practice has existed.
- **Compliance, risk and due-diligence teams** — `withDisclosuresOnly` returns the 3,282 firms that answered YES to an Item 11 question, split into criminal / regulatory / civil, each with the `iapdUrl` to read the underlying DRPs.
- **Custodians and fund administrators** — `hasCustody` and `custodyAssetsUsd` are the qualifying questions, and they are on every row.
- **GTM and revenue-ops teams building trigger feeds** — `registeredAfter` on a weekly schedule is a "new RIA registered" alert (46 in the last 7 days of this feed), which is the moment a new firm buys its first tech stack.
- **Market researchers and financial journalists** — AUM distribution, fee models, client-type mix and disciplinary rates by state, from the primary regulatory source with the filing date attached.

***

### Which Actor should I use?

| Actor | What it is | Use it instead when |
|---|---|---|
| **This one** | 43,370 adviser **firms** with Form ADV financials | You need AUM, headcount, clients, fees, custody or disciplinary flags — or the whole universe |
| [NAPFA Advisor Scraper](https://apify.com/scrapersdelight/napfa-advisor-scraper) | ~4,000 fee-only NAPFA advisers, **individual** people | You need a named adviser with an e-mail address and will trade universe size for it |
| [SEC EDGAR Funding & Exec-Change Monitor](https://apify.com/scrapersdelight/sec-edgar-gtm-monitor) | Form D raises and 8-K executive changes | You want the *event*, not the registry — funding and leadership triggers rather than adviser firmographics |

Honest one-liner: **NAPFA is where you go for a person's e-mail; this is where you go for a firm's balance sheet.**

***

### Integrations

- **Schedule it.** Save a [task](https://docs.apify.com/platform/actors/running/tasks) with `registeredAfter` or `filedAfter` and attach a [schedule](https://docs.apify.com/platform/schedules) — `0 9 * * 1` for Monday mornings. Each run then returns only what is new.
- **Google Sheets / Excel / CSV** — the Dataset tab exports directly, and the overview view is pre-configured with firm name, CRD, phone, website, LinkedIn, city, state, AUM, employees, clients and the disclosure flag.
- **Make, Zapier, n8n** — trigger on a schedule, run the Actor, route the rows into your CRM. See [Apify integrations](https://docs.apify.com/platform/integrations).
- **Webhooks** — add an [Apify webhook](https://docs.apify.com/platform/integrations/webhooks) on `ACTOR.RUN.SUCCEEDED` to POST the dataset to your endpoint the moment a run finishes.
- **HubSpot / Salesforce / Postgres / BigQuery** — the row is flat apart from `clientsByType`, `stateRegistrations` and the URL arrays, so it loads into a relational table without reshaping.
- **AI agents** — the Actor is callable through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp), so an agent can answer "which RIAs in Colorado manage over $1B" without leaving the chat.

***

### Comparison

| | This Actor | Looking firms up on adviserinfo.sec.gov | Writing your own Form ADV parser |
|---|---|---|---|
| Time to a full RIA list | Under a minute | Days of manual lookups | A day or two of work, then maintenance |
| Coverage | 43,370 firms in one run | One firm per search | Whatever you finish |
| AUM / clients / fees / custody | Every row | Buried in the PDF-like filing view | Requires decoding ~70 Form ADV attribute codes |
| Exempt reporting advisers | Identified and excluded by default | Mixed in with no warning | You will not notice until your AUM column is 28% empty |
| Truncated-download protection | gzip + root tag + record floor, retried 4× | n/a | Usually missing |
| Cost | $4 per 1,000 firms | Free, and unusable at scale | Your time |

***

### FAQ

**Does this need an account, an API key or a login?**
No. The SEC publishes the compilation feed as a public file. The Actor performs no authentication of any kind and reads nothing behind a login.

**Can I get the whole RIA universe in one run?**
Yes. `{"registrationType": "both", "maxItems": 0}` returns all 43,370 unique firms for about $173, or `{"registrationType": "sec", "maxItems": 0}` returns the 17,108 SEC-registered ones for about $68 in roughly a minute.

**Does it include individual advisers or their e-mail addresses?**
No, and nothing in the input will make it. Form ADV Part 1A is a firm filing, and no e-mail address appears anywhere in it. The firm's main-office phone (100% filled) and website (91.0%) are the contact route here.

**How fresh is the data?**
The feed is compiled nightly and the Actor always fetches the newest file that exists — the reference run used `IA_FIRM_SEC_Feed_08_12_2026`, generated 2026-08-12, and `feedDate` is written onto every row. The *filings* inside it are as recent as each firm's last amendment: 1,898 SEC-registered firms filed within 30 days of that feed.

**Do I get charged for rows my filters removed?**
No. You are billed per firm returned, on push. A narrow filter costs the Actor a download and costs you nothing.

**Two runs — will I get duplicates?**
Within a run, never: dedupe on CRD happens before anything is pushed, and there are zero duplicate CRDs inside either feed. Across runs, use `filedAfter` or `registeredAfter` to pull only what changed.

**Can I look up specific firms instead of downloading everything?**
Yes — paste CRD numbers into `crdNumbers`, or search a name with `firmNameQuery`. Use `registrationType: "both"` for lookups, since a CRD lookup only searches the feed you select. The log lists any CRD it could not find and why.

**Does it need a proxy?**
No, and turning one on makes it slightly worse: 15/15 direct requests succeeded versus 14/15 through the datacenter proxy and 14/15 residential. The default is direct.

**What is an "exempt reporting adviser" and why are they excluded?**
Private-fund and VC managers that file only part of Form ADV. All 6,632 of them in the SEC feed report no AUM, no employees and no clients, so including them by default would put 28% empty rows in your export. Set `includeExemptReporting: true` if they are what you want.

**Why is my state filter returning fewer firms than I expected?**
Two reasons, both measured: 2,273 SEC-registered firms publish no US state at all (mostly non-US offices), and half of the state-registered feed publishes no office address — those rows are matched by their state regulator instead, which is why Texas returns 2,827 state-registered rows rather than 712.

**Will a run ever succeed with zero rows?**
No. A zero-row result throws an error naming the feed, the number of records scanned and every active filter. There is no quiet empty dataset.

**Can I schedule it?**
Yes. Save a task with `registeredAfter` or `filedAfter` and attach an Apify schedule; each run then returns only new registrations or fresh filings.

**Something looks wrong — how do I debug it?**
Every run prints the feed file it used, its byte counts, the record count, the completeness check, the number scanned versus emitted, and the measured field fill for exactly the rows you got. Compare a row against its `iapdUrl` — that is the same filing, rendered by the SEC.

**Can I resell the data?**
It is public record published by a US federal agency, but you are responsible for your own compliance — see the legal note below.

***

### Legal and fair use

- The Actor reads one public file published by the SEC/FINRA **Investment Adviser Public Disclosure** programme at `reports.adviserinfo.sec.gov`, which exists to be downloaded in bulk. It does not log in, does not solve CAPTCHAs, does not touch paths any robots directive disallows, and collects nothing behind authentication.
- Every field is data the adviser firm itself filed with a regulator on Form ADV and that the regulator publishes.
- Rows describe **firms**, not private individuals — but a sole-proprietor adviser's business address and phone can be their home address and mobile. Treat those rows accordingly.
- **You are responsible for complying with IAPD's terms and with how you use this data** — including CAN-SPAM, TCPA and state do-not-call rules for outreach, GDPR/CCPA where a row is personal data, and FINRA/SEC/state advertising and solicitation rules if you are a regulated firm yourself.
- A disciplinary flag is a YES answer to a Form ADV question. Read the underlying disclosure pages at the `iapdUrl` before making any published claim about a firm.
- This Actor is not affiliated with, endorsed by, or sponsored by the U.S. Securities and Exchange Commission, FINRA, or any state securities regulator.

***

### Changelog

| Date | Change |
|---|---|
| 2026-08-12 | Added CRD-number lookup (`crdNumbers`), name search (`firmNameQuery`), and the recency filters `registeredAfter` / `filedAfter`. `states` is now a 53-value dropdown with firm counts. `maxItems` default lowered from 1,000 to 100 (a $0.40 first run) and `0` now means "no cap". All corpus numbers re-measured against the 2026-08-12 feeds, and the six `both`-run aggregates re-derived from an actual deduplicated run rather than by arithmetic. |
| 2026-08-12 | Verified against the live source: 23,740 SEC and 21,803 state records, 17,108 SEC-registered firms, $177.4tn combined AUM. |

***

### Support

Found a missing field, want a new filter, or hit something odd? Open an issue on the **Issues** tab — feed-shape changes get fixed fast, because the SEC republishes this file every night.

If this saved you a day of work, a rating on the Store helps other people find it.

***

**Keywords:** SEC registered investment adviser list · RIA list · RIA database · Form ADV data · Form ADV scraper · IAPD scraper · adviserinfo.sec.gov · investment adviser registration · registered investment advisor leads · RIA leads · financial advisor firm list · wealth management firm database · RIA AUM data · assets under management by firm · CRD number lookup · SEC number lookup · 801 number · investment adviser CRD · RIA M\&A target list · advisor recruiting data · RIA compliance screening · Form ADV Item 11 disclosures · disciplinary disclosure data · adviser custody data · state registered investment adviser · exempt reporting adviser list · private fund adviser list · new RIA registrations · RIA firmographics · wealthtech lead generation · custodian prospecting · financial services B2B data · investment adviser representatives · fee-only advisor list · advisory fee structure data · Form ADV Part 1A · IAPD compilation feed · SEC investment adviser API

# Actor input Schema

## `registrationType` (type: `string`):

Which regulator's feed to pull. SEC = the 17,108 SEC-registered adviser firms (the classic RIA list: 97.9% report regulatory AUM, 91.9% publish a street address). State = the 16,510 state-registered firms (smaller, local advisers; 84.0% report AUM, only 50.1% publish a street address). Both = all 43,370 unique firms across the two feeds, deduplicated by CRD number (2,173 firms appear in both feeds and are emitted once, 277 of them registered rather than exempt-reporting). Both costs one extra 5.07 MB download; scanning every record in both feeds took 10.6 seconds end to end.

## `includeExemptReporting` (type: `boolean`):

OFF by default, and it matters: 6,632 of the 23,740 records in the SEC feed (and 5,293 in the state feed) are EXEMPT REPORTING ADVISERS — private-fund and venture managers that file only part of Form ADV. Measured on those 6,632 records: 0.0% report regulatory AUM, 0.0% report an employee count, 0.0% report client counts, and only 49.0% carry a US address. Turn this on only if you specifically want private-fund and VC managers. A firm you request by CRD number is always returned regardless of this switch.

## `crdNumbers` (type: `array`):

Paste firm CRD numbers to return just those firms — the compliance/due-diligence path. Hundreds in one run costs the same per firm as a bulk pull, and the run log reports exactly which CRDs were NOT found and why. Any format works (104559, CRD #104559, 0104559). A CRD lookup only searches the feed you picked above, so choose Both for lookups. Leave empty to enumerate in bulk.

## `firmNameQuery` (type: `string`):

Case-insensitive substring match on the firm's business name or legal name — e.g. "wealth" returns 3,005 of the 17,108 SEC-registered firms, "fiduciary" returns 56, "vanguard" returns 8. Leave empty for no name filter.

## `states` (type: `array`):

Main-office states. Counts in the list are records with that main-office state across both feeds on the 2026-08-12 feed, counted before CRD deduplication, so a Both run returns slightly fewer. Empty = nationwide. The 8,254 state-registered firms that publish no main-office state at all fall back to the state securities regulator they are registered with, so you still get them — that is why a Texas state-registered run returns 2,827 rows and not 712. The fallback is deliberately NOT applied to SEC notice filings: a $50B New York firm notice-files in all 50 states, and counting it as "located in Montana" would poison a territory list.

## `minAum` (type: `integer`):

Only firms whose total regulatory assets under management (Form ADV Item 5.F.(2)(c)) are at least this much — e.g. 1000000000 leaves 5,389 firms across both feeds, 100000000 leaves most of the SEC list. Leave empty for no floor. 97.9% of SEC-registered firms report AUM; the 2.1% that do not are dropped by any value here.

## `maxAum` (type: `integer`):

Only firms at or below this regulatory AUM — the fastest way to build an RIA M\&A or small-practice prospect list. 250000000 leaves 19,224 firms across both feeds; 100000000 leaves 14,641.

## `minEmployees` (type: `integer`):

Only firms with at least this many total employees (Form ADV Item 5.A, filled on 100% of SEC-registered firms). 995 SEC-registered firms are one-person shops and 6,660 have five employees or fewer, so setting 6 here removes about 39% of the SEC list; 1,201 firms have 100 or more.

## `withWebsiteOnly` (type: `boolean`):

Keep only firms that list a real website. Social-only profiles do not count: Form ADV collects websites and social accounts in one list, so LinkedIn/X/Facebook pages are split into their own fields and 166 SEC-registered firms whose ONLY web address is social are dropped by this switch. 91.0% of SEC-registered advisers have a real website; 69.9% of state-registered ones do.

## `withDisclosuresOnly` (type: `boolean`):

Keep only firms that answered YES to at least one Form ADV Item 11 disciplinary question. 2,019 of the 17,108 SEC-registered firms (11.8%) and 1,292 of the 16,510 state-registered firms (7.8%) do — a ready-made compliance, due-diligence or advisor-recruiting screen. The row tells you which kind: 157 SEC-registered firms carry a criminal flag, 1,894 a regulatory one and 271 a civil one (a firm can carry more than one).

## `registeredAfter` (type: `string`):

Only firms whose registration date is on or after this date — the "new RIA registrations" trigger. Measured on the 2026-08-12 feed: 46 SEC-registered firms registered in the previous 7 days, 213 in 30 days, 477 in 90 days and 1,570 in a year (state-registered: 51 / 210 / 529 / 1,697). Registration date is present on 100% of firms in both feeds. Format YYYY-MM-DD; a malformed date stops the run instead of silently returning everything.

## `filedAfter` (type: `string`):

Only firms whose most recent Form ADV filing is on or after this date — use it for "what changed since my last pull" instead of re-downloading the whole registry. Measured on the 2026-08-12 feed: 331 SEC-registered firms filed in the previous 7 days, 1,898 in 30 days, 4,958 in 90 days. Note the annual updating amendment season: 17,026 of the 17,108 SEC-registered firms filed something in the last year, so a 12-month window is not a filter.

## `maxItems` (type: `integer`):

Hard cap on firms returned this run, and therefore your hard cost cap at $0.004 per firm: 100 = $0.40, 1,000 = $4, the whole 17,108-firm SEC list = about $68. Set 0 for no cap. Rows removed by your filters are never fetched twice and never billed, and duplicate CRDs are dropped before billing.

## `proxyConfiguration` (type: `object`):

Not needed, and off by default. The SEC compilation bucket is public and this Actor runs direct: measured 15/15 clean direct requests versus 14/15 through Apify's datacenter proxy (one 595 ECONNRESET) and 14/15 residential (one Cloudflare 403). Proxying a public government file only adds a failure mode. Set this only if your account requires a fixed egress IP.

## Actor input object example

```json
{
  "registrationType": "sec",
  "includeExemptReporting": false,
  "crdNumbers": [],
  "firmNameQuery": "wealth",
  "states": [],
  "withWebsiteOnly": false,
  "withDisclosuresOnly": false,
  "registeredAfter": "2026-01-01",
  "filedAfter": "2026-07-01",
  "maxItems": 100,
  "proxyConfiguration": {}
}
```

# Actor output Schema

## `items` (type: `string`):

One row per adviser firm: name, CRD/SEC number, address, phone, website, AUM, employees, clients, fees, custody and Form ADV Item 11 disciplinary flags.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "registrationType": "sec",
    "crdNumbers": [],
    "states": [],
    "maxItems": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapersdelight/sec-adviser-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "registrationType": "sec",
    "crdNumbers": [],
    "states": [],
    "maxItems": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapersdelight/sec-adviser-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "registrationType": "sec",
  "crdNumbers": [],
  "states": [],
  "maxItems": 100
}' |
apify call scrapersdelight/sec-adviser-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapersdelight/sec-adviser-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/OCQontt1UXTl5mR8E/builds/2PXFschbxHAxdWaRP/openapi.json
