SEC Form ADV Investment Adviser Scraper
Pricing
from $53.60 / 1,000 adviser records
SEC Form ADV Investment Adviser Scraper
Scrape SEC Form ADV investment adviser records: firm, AUM, offices and registration changes. Every run returns the current records as a dataset. Optional watch mode returns only what changed since your last run. Pay per result.
Pricing
from $53.60 / 1,000 adviser records
Rating
0.0
(0)
Developer
NexGen Watch
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
8 days ago
Last modified
Categories
Share
ποΈ SEC Form ADV Investment Adviser Scraper
Scrape SEC Form ADV investment adviser records β firm, regulatory AUM, main office, employees, private funds and registration status β straight from the SEC's monthly Investment Adviser Information Reports. Every run returns the current records that match your filters as a dataset; that is the default. Turn on watch mode and a scheduled run returns only what changed since the last run.
Each adviser_record row is one registered investment adviser (RIA) or exempt reporting adviser (ERA) as the SEC's latest report lists it: CRD number, SEC file number, legal and business name, main office address and phone, website, latest ADV filing date, regulatory AUM in US dollars, employee count, private-fund count, the report edition, the exact SEC archive it came from and the IAPD firm link. Filter by class, state, firm name, CRD numbers and an AUM band, and cap the run with maxItems.
Watch mode turns the same reports into a change feed. The first watch run seeds a private baseline and returns zero rows; every later run returns only confirmed changes β new and removed advisers, RIA/ERA class changes, AUM-band crossings and selected profile changes β each with before/after profiles and the source edition.
The reports derive from Form ADV, contain a subset of Form ADV data, and are not guaranteed by the SEC for filer accuracy.
Output is one adviser_record row per adviser (snapshot, the default) or one adviser_delta row per confirmed change (watch mode). Billing is pay-per-event: a $0.02 start fee per run, then $0.08 per adviser record delivered β a snapshot row or a confirmed delta (Free tier). Source: www.sec.gov.
No login, no API key and no CAPTCHA solving are involved: the source is read logged-out.
Who buys this
Buyers usually search for Form ADV or RIA list.
- Sales and business-development teams building an RIA list by state, size and name β wealth-tech, custody, fund-distribution and compliance vendors.
- Analysts and researchers who need Form ADV adviser data as rows instead of the SEC's monthly zip files.
- Compliance and data teams that keep a watch on a set of advisers and want only the changes each month.
π Sample Output
Real rows from run EtCYPggzY5VpdjB2q on build 0.1.43 (2026-10-05), the same input as the Quick start below β every value is as the source published it. The run read the SEC report edition of 2026-10-02, found 2,591 RIAs with a New York main office, and delivered the first 10 (the cap); 8 are shown:
| firm_name | crd_number | sec_file_number | principal_city | regulatory_aum_usd | adviser_url |
|---|---|---|---|---|---|
| J.P. MORGAN SECURITIES LLC | 79 | 801-3702 | NEW YORK | 429694491042 | https://adviserinfo.sec.gov/firm/summary/79 |
| BNY MELLON SECURITIES CORPORATION | 231 | 801-54739 | NEW YORK | 8448676677 | https://adviserinfo.sec.gov/firm/summary/231 |
| OPPENHEIMER & CO. INC. | 249 | 801-887 | NEW YORK | 36710705748 | https://adviserinfo.sec.gov/firm/summary/249 |
| GOLDMAN SACHS & CO. LLC | 361 | 801-16048 | NEW YORK | 133644228926 | https://adviserinfo.sec.gov/firm/summary/361 |
| AMOVA ASSET MANAGEMENT AMERICAS, INC. | 824 | 801-60881 | NEW YORK | 7784114094 | https://adviserinfo.sec.gov/firm/summary/824 |
| GILDER GAGNON HOWE & CO. LLC | 2002 | 801-65667 | NEW YORK | 12115058755 | https://adviserinfo.sec.gov/firm/summary/2002 |
| KIMELMAN & BAIRD, LLC | 2440 | 801-9182 | NEW YORK | 1478705000 | https://adviserinfo.sec.gov/firm/summary/2440 |
| R. F. LAFFERTY & CO., INC. | 2498 | 801-107428 | NEW YORK | 129823421 | https://adviserinfo.sec.gov/firm/summary/2498 |
regulatory_aum_usd is the adviser's own Item 5F(2)(c) figure in whole US dollars; adviser_url is the SEC's IAPD summary page for the firm (emitted, never fetched).
β What you get
The dataset holds one of two paid row types, chosen by watchMode:
Snapshot mode (watchMode: false, the default) β adviser_record, one per adviser:
record_type(string) βadviser_record.crd_number(integer) β Organization CRD number.sec_file_number(string/null) β SEC file number (801- for RIAs, 802- for ERAs).adviser_class(string) βRIAorERA.firm_name/primary_business_name(string) β primary business name.legal_name(string/null) β legal name.sec_current_status(string/null) β SEC status as reported (e.g.Approved).principal_city,principal_state,principal_country,principal_postal_code(string/null) β main office.phone,website(string/null) β main office telephone and website as published.latest_adv_filing_date(string/null) β latest ADV filing date as published.regulatory_aum_usd(integer/null) β regulatory AUM, null when not reported.total_employees(integer/null) β Item 5A.has_custody(boolean/null) β custody flag; null when the report leaves it blank.private_fund_count(integer/null) β Item 7B(1).report_as_of_date/source_edition(string) β the report edition date.adviser_url(string) β IAPD firm summary link.source_url(string) β the exact SEC archive the row came from;source_row_numberandsource_row_hashlocate and fingerprint the row.run_id,observed_at(string) β provenance.
Watch mode (watchMode: true) β adviser_delta, one per confirmed change: change_id (deterministic SHA-256, the billing dedup key), delta_type, crd_number, sec_file_number, firm_name, adviser_class_before, adviser_class_after, changed_fields (sorted JSON Pointers), before and after profiles, source_edition, adviser_url, source_url, observed_at.
Every run also writes a RUN_RECEIPT record to its key-value store with the mode, the source checks it made and the counts it delivered β diagnostics never land in the paid dataset.
βοΈ Sample inputs
1. Quick start β the Store example (snapshot)
{"watchMode": false,"adviserClasses": ["RIA"],"states": ["NY"],"maxItems": 10}
Returns up to 10 current RIA records with a New York main office β one billed adviser_record row each, about $0.82 at the Free tier. The Console form starts in the same snapshot mode with maxItems 100 (at most $8.02); leave maxItems out over the API and you get the same 100-row cap.
2. A filtered snapshot: large California RIAs with "capital" in the name
{"watchMode": false,"adviserClasses": ["RIA"],"states": ["CA"],"firmNameContains": ["capital"],"minRegulatoryAumUsd": 1000000000,"maxItems": 25}
Returns up to 25 current records whose name contains "capital" and whose regulatory AUM is at least $1 billion β at most $2.02 at the Free tier.
3. Watch mode for a schedule (RIAs and ERAs in New York)
{"watchMode": true,"adviserClasses": ["RIA","ERA"],"states": ["NY"],"baselineKey": "ria-era-ny-registration","maxItems": 5000}
The first run seeds the baseline ria-era-ny-registration and returns zero rows (start fee + one $0.10 watch check). Every later run returns only the changes since the previous run, billed per delta.
π§Ύ JSON sample record
One real record from run EtCYPggzY5VpdjB2q, exactly as it lands in the dataset:
{"record_type": "adviser_record","schema_version": "1.0","crd_number": 79,"sec_file_number": "801-3702","adviser_class": "RIA","legal_name": "J.P. MORGAN SECURITIES LLC","primary_business_name": "J.P. MORGAN SECURITIES LLC","sec_current_status": "Approved","principal_city": "NEW YORK","principal_state": "NY","principal_country": "United States","principal_postal_code": "10017","phone": "800-999-2000","website": "https://wealthpartners.jpmorgan.com/","latest_adv_filing_date": "09/30/2026","regulatory_aum_usd": 429694491042,"total_employees": 8703,"has_custody": null,"private_fund_count": 0,"report_as_of_date": "2026-10-02","source_row_number": 3,"adviser_url": "https://adviserinfo.sec.gov/firm/summary/79","source_url": "https://www.sec.gov/files/investment/data/other/information-about-registered-investment-advisers-exempt-reporting-advisers/ia100226.zip","observed_at": "2026-10-05T02:12:29Z","run_id": "EtCYPggzY5VpdjB2q","source_row_hash": "5aa3ab1d218ed339c3728b3dce779ada36cd4e811a4684a4a39cb3afb5e7ec05","firm_name": "J.P. MORGAN SECURITIES LLC","source_edition": "2026-10-02"}
π§ How it works
Source. The actor reads the SEC's public manifest page https://www.sec.gov/data-research/sec-markets-data/information-about-registered-investment-advisers-exempt-reporting-advisers, discovers the latest RIA and ERA report archives from its same-origin download links (never constructed from your input), checks the manifest is current, downloads each archive, extracts the single CSV inside safely and parses it.
Normalize and filter. Each row becomes a typed adviser profile: blank or ambiguous values become null, never zero or false. Your filters (class, state, CRD numbers, firm-name substrings with any/all matching, AUM band) are applied before anything is delivered or billed.
Snapshot mode (default). The matching advisers are delivered as adviser_record rows in report order, up to maxItems. A snapshot run never reads, writes or resets a saved baseline, and it does not charge the watch check.
Watch mode. The first run with a given baselineKey (or the auto-derived key for your filters) stores a private baseline in a named key-value store and returns zero rows. Each later run compares the newest report with that baseline and emits one adviser_delta per confirmed change: added_to_scope, removed_from_scope, registration_class_changed, profile_changed, entered_filter, exited_filter. Precedence: class change, then add/remove, then filter crossing, then profile change; one delta per adviser per edition. A source that is not complete is never used to declare removals, so an outage cannot show up as a mass removal. resetBaseline archives the old baseline and re-seeds.
Transport. Plain HTTPS from the Apify platform, no proxy; a descriptive User-Agent, one request per second, concurrency 1, bounded retries with backoff.
Charging. Each row is charged at the moment it is pushed (adviser_delta event, titled "Adviser record"); a row that fails to charge is not delivered, so the dataset count always equals the charged count. Watch runs also charge one watch_check once the sources validate (seed and no-change runs included).
Terminal states. A run ends NORMAL, PARTIAL_MAX_ITEMS (your cap was reached β the message says how many were in scope), PARTIAL_SOURCE (one class was degraded), GENUINE_EMPTY (the source was read and truly had nothing in scope), BASELINE_SEEDED (first watch run) or fails loud as BLOCKED (the SEC refused or changed shape β no value event is charged).
What is not done. No login, no cookie or CAPTCHA bypass, no brochures, Form CRS, IAPD scraping, EDGAR, state sites or personal contacts, no browser automation.
β° Set it on a schedule
Use watch mode for a schedule. Open the actor in Apify Console β Schedules β Create new, add input 3 above (watchMode: true) and pick a cadence:
- Monthly β
0 7 3 * *(the SEC publishes the reports monthly; this checks early each month). - Weekly β
0 7 * * 1(catches a new edition within a week).
The baseline persists between runs in its named key-value store; keep the same baselineKey and filters so each run compares like with like. Schedules can also POST results to a webhook (Console β Integrations).
π° Pricing example
| Event | Free | Bronze | Silver | Gold |
|---|---|---|---|---|
Actor Start (apify-actor-start) | $0.02 | $0.02 | $0.02 | $0.02 |
Adviser record (adviser_delta) | $0.08 | $0.072 | $0.064 | $0.0536 |
Watch check (watch_check) | $0.10 | $0.09 | $0.08 | $0.067 |
Worked at the live Free-tier price:
- Snapshot, 10 records (the Quick start): $0.02 start + 10 Γ $0.08 = $0.82
- Snapshot, 25 records: $0.02 start + 25 Γ $0.08 = $2.02
- Watch, first (seed) run: $0.02 start + 1 Γ $0.10 watch check = $0.12
- Watch, a later run with 8 changes: $0.02 + $0.10 + 8 Γ $0.08 = $0.76
A run that delivers zero rows charges the start fee only (plus the watch check in watch mode). A BLOCKED run fails loud and charges no value event. The start fee is charged once per GB of run memory; the default run memory is 1024 MB.
maxItems is a hard ceiling on what is delivered and billed, never a target. Leave it out and a run delivers at most 100 rows β at most $8.02 at the Free tier ($0.02 start + 100 Γ $0.08); type a higher number, up to 25,000, for a bigger run.
Coverage note: the SEC reports cover SEC-registered and exempt reporting advisers only β state-registered advisers are not in them. Fields the SEC leaves blank (often custody and AUM for ERAs) are null. Data is monthly, not real-time; removal means absence from the report, not firm closure.
βοΈ Legal & ToS
This actor reads public, logged-out files published by the U.S. Securities and Exchange Commission at www.sec.gov. It collects only what the SEC publishes to any visitor, identifies itself, follows the SEC's fair-access pacing, and does not access accounts, private data or anything behind authentication. Use the output in line with the SEC's terms and your local law; the intended use is B2B research, prospecting and monitoring. Not investment, legal or compliance advice.
β FAQ
Q: What is the difference between snapshot and watch mode?
A: Snapshot (the default) returns the advisers that match your filters right now. Watch mode returns only what changed since your last watch run, after a first run that seeds the baseline and returns nothing.
Q: Why did my run return 0 rows?
A: In watch mode the first run always seeds the baseline and returns zero rows, and later runs return zero when the SEC has not published a new edition with changes. In snapshot mode zero rows means GENUINE_EMPTY β nothing matched your filters. BLOCKED means the SEC refused and the run failed without a value charge.
Q: Do I need an API key or a login?
A: No. The SEC files are read logged-out; the input has no key field.
Q: How many rows can one run return?
A: Up to maxItems β 100 if you leave it out (the Console form starts at 100 too), maximum 25,000. You pay per delivered row.
Q: How fresh is the data?
A: Every run reads the latest monthly SEC report at run time; source_edition on each row says which edition.
Q: Does a snapshot run disturb my watch baseline?
A: No. Snapshot runs never read, write or reset a baseline, so you can mix both on the same account.
Q: What formats can I export?
A: JSON, CSV, Excel, XML or RSS from the run's Dataset tab or the Apify API, and any run can push to a webhook or integration.
π Troubleshooting
- Status says PARTIAL_MAX_ITEMS β your
maxItemscap was reached β the message shows how many advisers were in scope; raise the cap or narrow the filters. - First watch run shows no rows β expected: it seeds the baseline; changes appear from the next edition.
- Run FAILED with BLOCKED β the SEC refused the request or changed the file shape β nothing was charged beyond the start fee; retry later, and open an Issue with the run id if it persists.
- Input validation error on start β a field is outside the schema's allowed values β start from the Quick start block and change one field at a time.
- Fewer rows than expected β the run stopped at
maxItems(100 unless you set it) β the status message shows how many advisers were in scope; raisemaxItemsto get more.
π Related Actors
- SEC 8-K Filings Scraper β Scrape SEC 8-K current reports: company, item codes, event type, filing date and document link. Every run returns the current records as a dataset. Oβ¦
- SEC 13F Portfolio Holdings Scraper β Scrape SEC 13F institutional holdings: manager, security, shares, value and quarter-over-quarter changes. Every run returns the current records as aβ¦
- SEC 13D and 13G Beneficial Ownership Scraper β Scrape SEC Schedule 13D and 13G filings: filer, issuer, percent owned, filing date and threshold crossings. Every run returns the current records asβ¦
- SEC Form 4 Insider Transactions Scraper β Scrape SEC Form 4 insider transactions: insider, company, transaction type, shares, price and date. Every run returns the current records as a dataseβ¦
- π’ About NexGen Watch β NexGen Watch is a catalog of more than 300 public data actors built on official sources, pay-per-result. Browse the catalog at apify.com/nexgenwatch.
β Found this useful?
If this actor saved you a manual check, a quick review on the Apify Store helps other teams find it. Feature request or a source that changed? Open it from the Issues tab β every one is read.
