# Investment Finance Professionals (`johnvc/secinvestmentadvisorcontacts`) Actor

Find and filter 250,000+ investment professionals and 15,000+ financial firms by location, firm name, and more. Get structured contact data with emails, LinkedIn profiles, and firm associations for lead generation and market research.

- **URL**: https://apify.com/johnvc/secinvestmentadvisorcontacts.md
- **Developed by:** [John](https://apify.com/johnvc) (community)
- **Categories:** Lead generation, Real estate, Other
- **Stats:** 30 total users, 2 monthly users, 100.0% runs succeeded, 7 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.01 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 Advisors Search - Find RIA Firms & Finance Contacts

> **Find SEC-registered investment advisors. Search 250,000+ finance professionals and 15,000+ RIA firms by name, location, CRD number, or update date. Pay-per-contact pricing, structured JSON, MCP-ready - built for lead generation, market research, and CRM enrichment.**

### Python Quick Start Example

A complete Python example using the Apify client is available on GitHub:

**[github.com/johnisanerd/Apify-SEC-Investment-Advisors](https://github.com/johnisanerd/Apify-SEC-Investment-Advisors)**

Clone the repo, run `uv sync`, add your API key, and you are pulling SEC investment advisor data in minutes.

---

### 💡 What is SEC Investment Advisors Search?

SEC Investment Advisors Search is an Apify Actor that turns the SEC investment advisor registry (IAPD) into a queryable contact and firm database. Search **250,000+ SEC-registered investment advisor representatives** and **15,000+ Registered Investment Advisor (RIA) firms** by name, location (city/state/country), organization CRD numbers, contact IDs, or recent update date.

This Actor transforms investment and finance professional data into actionable lead lists for sales outreach, market research, business development, and relationship building. Whether you're building CRM integrations, conducting market analysis, or expanding your network in the financial services industry, you'll get clean, structured JSON data ready for immediate use ⚡.

✅ **Massive Database**: Access over **250,000 investment professionals** and **15,000+ firms** - and growing! Our database is continuously updated with new contacts and firms.

### 📊 Database Statistics & Leaderboard

- **Total Firms**: 15,963
- **Total Contacts**: 259,024

#### 🏆 Top 10 Firms by Contact Count

| Rank | Firm Name | Organization CRD## | Contact Count |
|------|-----------|-------------------|---------------|
| 1 | MERRILL LYNCH, PIERCE, FENNER & SMITH INCORPORATED | 7691 | 25,710 |
| 2 | EDWARD JONES | 250 | 23,568 |
| 3 | MORGAN STANLEY | 149777 | 22,956 |
| 4 | LPL FINANCIAL LLC | 6413 | 22,864 |
| 5 | STRATEGIC ADVISERS LLC | 104555 | 16,890 |
| 6 | WELLS FARGO ADVISORS | 19616 | 14,516 |
| 7 | J.P. MORGAN SECURITIES LLC | 79 | 13,414 |
| 8 | AMERIPRISE FINANCIAL SERVICES, LLC | 6363 | 12,900 |
| 9 | CETERA INVESTMENT ADVISERS LLC | 105644 | 10,382 |
| 10 | UBS FINANCIAL SERVICES INC. | 8174 | 9,538 |



### 📦 What Data Can You Extract?

| 🏷️ Data Type | 📋 Description |
|-------------|----------------|
| 🏢 **Firm Information** | Organization identifiers, primary business name, office addresses, website, and company details |
| 👤 **Contact Details** | Finance professionals and leadership with names, emails, phone numbers, LinkedIn profiles, and firm associations |
| 📍 **Location Data** | City, state, country, postal codes, and street addresses for main offices |
| 🔗 **Relationships** | Links between contacts and their firms via organization identifiers |
| 📅 **Timestamps** | Created and updated timestamps for tracking data freshness |
| 🆔 **Identifiers** | Organization identifiers, contact IDs for deduplication and tracking |

This structured finance professional dataset can be exported for analysis, CRM integration, or lead generation workflows.

---

### ⚙️ Key Features

✨ **Massive Database** - Access 250,000+ investment professionals and 15,000+ firms, continuously growing

🔍 **Dual Query Types** - Query firms only, contacts only, or both in a single run

🎯 **Advanced Filtering** - Filter by firm name, location (city/state/country), organization identifiers, contact IDs, and date updates

📊 **Incremental Updates** - Use `date_updated` filter to get only new or updated contacts since your last pull

💰 **Pay-Per-Result Pricing** - Transparent pricing: setup fee + per-contact charge (firms are free)

🔄 **Include/Exclude Filters** - Include specific contacts or firms, or exclude unwanted records

🌍 **Location-Based Queries** - Find firms and contacts by city, state, or country

📈 **Pagination Support** - Automatic pagination handling for large result sets

🛡️ **Production-Ready** - Built-in error handling, retry logic, and data validation

📦 **Structured Output** - Clean JSON output with query metadata and results

---

### 📖 Usage Examples

#### Example 0: Basic Contacts Query

Get finance professionals and leadership contacts from our database of 250,000+ professionals with a simple limit.

```json
{
  "query_type": "contacts",
  "contacts_limit": 10
}
````

#### Example 1: Query Firms by Location

Find investment and financial firms from our database of 15,000+ firms in a specific city and state.

```json
{
  "query_type": "firms",
  "firm_name": "Investment",
  "firm_city": "New York",
  "firm_state": "NY",
  "firm_country": "US",
  "firms_limit": 20
}
```

#### Example 2: Query Contacts by Firm Name

Get all contacts from firms matching a name pattern.

```json
{
  "query_type": "contacts",
  "contact_firm_name": "Investment",
  "contacts_limit": 50
}
```

#### Example 3: Incremental Update (Date-Based Filtering)

Get only contacts updated since your last pull. Perfect for scheduled updates.

```json
{
  "query_type": "contacts",
  "date_updated": "2025-01-15",
  "contacts_limit": 1000
}
```

**Note**: Use the `updated_at` timestamp from your previous query results to get only new or updated contacts.

#### Example 4: Query by Organization CRD Numbers

Get contacts from specific firms using their organization CRD numbers.

```json
{
  "query_type": "contacts",
  "organization_crds": "104518,105477,105642",
  "contacts_limit": 100
}
```

#### Example 5: Include/Exclude Filters

Get contacts from specific firms while excluding certain contact IDs.

```json
{
  "query_type": "contacts",
  "organization_crds": "104518,105477",
  "exclude_contact_ids": "123,456,789",
  "contacts_limit": 50
}
```

#### Example 6: Query Both Firms and Contacts

Get both firms and their contacts in a single run.

```json
{
  "query_type": "both",
  "firm_name": "Investment",
  "firm_city": "New York",
  "firm_state": "NY",
  "firms_limit": 10,
  "contact_firm_name": "Investment",
  "contacts_limit": 50
}
```

#### Example 7: Comprehensive Query (All Parameters)

Use all available filters for precise data extraction.

```json
{
  "query_type": "both",
  "firm_name": "Investment",
  "firm_city": "New York",
  "firm_state": "NY",
  "firm_country": "US",
  "firms_limit": 10,
  "contact_ids": "123,456",
  "exclude_contact_ids": "789",
  "contact_firm_name": "Investment",
  "organization_crds": "104518,105477",
  "exclude_organization_crds": "111111",
  "date_updated": "2025-01-01",
  "contacts_limit": 100,
  "output_file": "investment_advisors_results.json"
}
```

***

### 🔍 Input Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `query_type` | `string` | ❌ | `"contacts"` | Type of data to query: `"firms"` for firms only, `"contacts"` for contacts only, or `"both"` for both. See **Query Type Options** below. |
| `firm_name` | `string` | ❌ | - | Filter firms by primary business name (partial match, case-insensitive). Only applies when `query_type` is `"firms"` or `"both"`. |
| `firm_city` | `string` | ❌ | - | Filter firms by main office city (exact match, case-insensitive). Only applies when `query_type` is `"firms"` or `"both"`. |
| `firm_state` | `string` | ❌ | - | Filter firms by main office state (exact match, case-insensitive). Use standard 2-letter state codes (e.g., `"CA"`, `"NY"`, `"TX"`). Only applies when `query_type` is `"firms"` or `"both"`. |
| `firm_country` | `string` | ❌ | - | Filter firms by main office country (exact match, case-insensitive). Use ISO 3166-1 alpha-2 country codes (e.g., `"US"`, `"CA"`, `"GB"`). Only applies when `query_type` is `"firms"` or `"both"`. |
| `firms_limit` | `integer` | ❌ | - | Maximum number of firms to return. Only applies when `query_type` is `"firms"` or `"both"`. Set to `null` or omit for no limit. Minimum: 1. |
| `contact_ids` | `string` | ❌ | - | Include only contacts with these contact\_id values. Can be a comma-separated string (e.g., `"123,456,789"`) or JSON array. Only applies when `query_type` is `"contacts"` or `"both"`. |
| `exclude_contact_ids` | `string` | ❌ | - | Exclude contacts with these contact\_id values. Can be a comma-separated string (e.g., `"123,456,789"`) or JSON array. Only applies when `query_type` is `"contacts"` or `"both"`. |
| `contact_firm_name` | `string` | ❌ | - | Filter contacts by their firm's primary business name (partial match, case-insensitive). Only applies when `query_type` is `"contacts"` or `"both"`. |
| `organization_crds` | `string` | ❌ | - | Include only contacts from firms with these organization CRD numbers. Can be a comma-separated string (e.g., `"123456,789012"`) or JSON array. Only applies when `query_type` is `"contacts"` or `"both"`. |
| `exclude_organization_crds` | `string` | ❌ | - | Exclude contacts from firms with these organization CRD numbers. Can be a comma-separated string (e.g., `"123456,789012"`) or JSON array. Only applies when `query_type` is `"contacts"` or `"both"`. |
| `date_updated` | `string` | ❌ | - | Filter contacts updated on or after this date. Use for incremental updates. Format: `YYYY-MM-DD` (e.g., `"2025-01-15"`) or ISO datetime `YYYY-MM-DDTHH:MM:SS`. Only applies when `query_type` is `"contacts"` or `"both"`. |
| `contacts_limit` | `integer` | ❌ | - | Maximum number of contacts to return. Only applies when `query_type` is `"contacts"` or `"both"`. Set to `null` or omit for no limit. Minimum: 1. |
| `output_file` | `string` | ❌ | - | Optional filename to save results as JSON file locally. If not provided, results are only pushed to Apify dataset. |

***

### 📊 Query Type Options

The `query_type` parameter controls what data is queried:

| Value | Description | When to Use |
|-------|-------------|-------------|
| `"firms"` | Query only investment and financial firms | Search through 15,000+ firms. When you need firm information only (no contacts). Firms queries are free (only setup fee applies). |
| `"contacts"` | Query only finance professionals and leadership (contacts) | Search through 250,000+ professionals. When you need contact information only. Each contact returned is charged separately. |
| `"both"` | Query both firms and contacts | When you need both firm and contact data in a single run. Useful for comprehensive lead generation. |

**Default**: If `query_type` is not specified, it defaults to `"contacts"`.

***

### 📤 Output Format

#### Dataset Structure

Each query returns a structured JSON object with the following structure:

```json
{
  "query_type": "both",
  "query_timestamp": "2025-12-05T14:26:04.739640",
  "firms": {
    "query_parameters": {
      "name": "Investment",
      "city": "New York",
      "state": "NY",
      "country": null,
      "limit": 5,
      "page_size": 1000
    },
    "query_metadata": {
      "firms_count": 5,
      "pages_processed": 1,
      "limit_reached": true
    },
    "results": {
      "firms": [
        {
          "organization_crd": "104518",
          "primary_business_name": "DWS INVESTMENT MANAGEMENT AMERICAS, INC.",
          "main_office_street_address_1": "875 THIRD AVENUE",
          "main_office_street_address_2": null,
          "main_office_city": "NEW YORK",
          "main_office_state": "NY",
          "main_office_country": "United States",
          "main_office_postal_code": "10022",
          "website_address": "HTTPS://WWW.LINKEDIN.COM/COMPANY/DWS-GROUP-COM",
          "updated_at": "2025-12-05T08:17:31.041463+00:00",
          "created_at": "2025-12-04T15:11:38.534422+00:00"
        }
      ]
    }
  },
  "contacts": {
    "query_parameters": {
      "contact_ids": null,
      "exclude_contact_ids": null,
      "firm_name": "Investment",
      "organization_crds": null,
      "exclude_organization_crds": null,
      "date_updated": null,
      "limit": 10,
      "page_size": 1000
    },
    "query_metadata": {
      "contacts_count": 10,
      "pages_processed": 1,
      "limit_reached": false
    },
    "results": {
      "contacts": [
        {
          "contact_id": 12345,
          "organization_crd": "104518",
          "first_name": "John",
          "last_name": "Doe",
          "email": "john.doe@example.com",
          "email_verified": "true",
          "phone": "+1-555-123-4567",
          "linkedin_url": "https://www.linkedin.com/in/johndoe",
          "firm_name": "DWS INVESTMENT MANAGEMENT AMERICAS, INC.",
          "updated_at": "2025-12-05T08:17:31.041463+00:00",
          "created_at": "2025-12-04T15:11:38.534422+00:00",
          "firms": {
            "primary_business_name": "DWS INVESTMENT MANAGEMENT AMERICAS, INC."
          }
        }
      ]
    }
  },
  "partial_failure": false
}
```

#### Output Fields

##### Top-Level Fields

- **`query_type`**: The type of query executed (`"firms"`, `"contacts"`, or `"both"`)
- **`query_timestamp`**: ISO timestamp when the query was executed
- **`firms`**: Firms query results (present when `query_type` is `"firms"` or `"both"`, `null` otherwise)
- **`contacts`**: Contacts query results (present when `query_type` is `"contacts"` or `"both"`, `null` otherwise)
- **`partial_failure`**: Boolean indicating if one query type failed but the other succeeded (only relevant when `query_type` is `"both"`)

##### Firms Object Fields

- **`query_parameters`**: The filters and parameters used for the firms query
- **`query_metadata`**: Summary statistics including `firms_count`, `pages_processed`, and `limit_reached`
- **`results.firms`**: Array of firm objects with complete firm information

##### Contacts Object Fields

- **`query_parameters`**: The filters and parameters used for the contacts query
- **`query_metadata`**: Summary statistics including `contacts_count`, `pages_processed`, and `limit_reached`
- **`results.contacts`**: Array of contact objects with complete contact information

##### Firm Object Fields

- **`organization_crd`**: Organization identifier (unique firm identifier from our database of 15,000+ firms)
- **`primary_business_name`**: Official firm name
- **`main_office_street_address_1`**: Primary street address
- **`main_office_street_address_2`**: Secondary address line (if applicable)
- **`main_office_city`**: City name
- **`main_office_state`**: State code (2-letter)
- **`main_office_country`**: Country name
- **`main_office_postal_code`**: Postal/ZIP code
- **`website_address`**: Firm website URL
- **`updated_at`**: ISO timestamp when record was last updated
- **`created_at`**: ISO timestamp when record was created

##### Contact Object Fields

- **`contact_id`**: Unique contact identifier
- **`organization_crd`**: Organization CRD of the firm this contact belongs to
- **`first_name`**: Contact's first name
- **`last_name`**: Contact's last name
- **`email`**: Email address
- **`email_verified`**: Email verification status (`"true"` or `"false"`)
- **`phone`**: Phone number
- **`linkedin_url`**: LinkedIn profile URL
- **`firm_name`**: Name of the firm this contact belongs to (convenience field)
- **`updated_at`**: ISO timestamp when record was last updated
- **`created_at`**: ISO timestamp when record was created
- **`firms`**: Nested object with firm information (contains `primary_business_name`)

***

### 💰 Pricing

This Actor uses a **pay-per-event** pricing model with transparent pricing:

- **Setup Fee**: per Actor run (one-time charge for instance setup and initialization)
- **Contact Returned**: per contact returned in query results
- **Firms**: Free (no per-firm charge, only setup fee applies)

You only pay for contacts you actually receive, making it cost-effective for both small and large-scale queries. Firms queries are free (only the setup fee applies), making them ideal for initial research and firm discovery.

**Note**: The Actor performs a pre-run credit check to ensure you have sufficient funds. If insufficient funds are detected, the Actor will exit gracefully with an error message.

***

### 🎯 Use Cases

- **Lead Generation**: Build targeted lists of finance professionals and leadership for sales outreach
- **Market Research**: Analyze the distribution of investment and financial firms by location, size, or specialization
- **Business Development**: Identify potential partners, clients, or acquisition targets in the financial services industry
- **CRM Integration**: Sync finance professional data into your CRM system for relationship management
- **Network Analysis**: Map relationships between finance professionals and their firms
- **Competitive Intelligence**: Monitor competitor firms and their leadership teams
- **Incremental Updates**: Use `date_updated` filter to get only new or updated contacts since your last pull
- **Data Enrichment**: Enhance existing contact databases with investment and financial firm associations
- **Geographic Analysis**: Analyze finance professional presence by city, state, or country
- **Email Verification**: Access verified email addresses for finance professionals and leadership

***

### 🚀 Ready to Find Finance Professionals?

Start using Investment and Finance Professional Search today and discover investment and financial firms and their leadership teams from our database of **250,000+ professionals** and **15,000+ firms**. Whether you're building lead generation pipelines, conducting market research, expanding your network, or enriching CRM systems, you'll have clean, structured data in minutes!

**Made with ❤️**

*Transform your finance professional lead generation with reliable, production-ready search capabilities. Access one of the largest databases of investment and finance professionals available.*

***

Last Updated: 2026.05.11

# Actor input Schema

## `query_type` (type: `string`):

Type of data to return: 'firms' for RIA firms only, 'contacts' for investment advisor representatives only, or 'both'. Defaults to 'contacts'.

## `firm_name` (type: `string`):

Filter firms by primary business name (partial match, case-insensitive). Applies when query\_type is 'firms' or 'both'.

## `firm_city` (type: `string`):

Filter firms by main office city (exact match, case-insensitive). Applies when query\_type is 'firms' or 'both'.

## `firm_state` (type: `string`):

Filter firms by main office state. Use standard 2-letter state codes (e.g., 'CA', 'NY', 'TX'). Applies when query\_type is 'firms' or 'both'.

## `firm_country` (type: `string`):

Filter firms by main office country. Use ISO 3166-1 alpha-2 country codes (e.g., 'US', 'CA', 'GB'). Applies when query\_type is 'firms' or 'both'.

## `firms_limit` (type: `integer`):

Maximum number of firms to return. Applies when query\_type is 'firms' or 'both'. Set to null or omit for no limit.

## `contact_ids` (type: `string`):

Include only contacts with these contact\_id values. Comma-separated integers (e.g., '123,456,789') or JSON array. Applies when query\_type is 'contacts' or 'both'.

## `exclude_contact_ids` (type: `string`):

Exclude contacts with these contact\_id values. Comma-separated integers (e.g., '123,456,789') or JSON array. Applies when query\_type is 'contacts' or 'both'.

## `contact_firm_name` (type: `string`):

Filter contacts by their firm's primary business name (partial match, case-insensitive). Applies when query\_type is 'contacts' or 'both'.

## `organization_crds` (type: `string`):

Include only contacts from firms with these organization CRD (Central Registration Depository) numbers. Comma-separated (e.g., '7691,250') or JSON array. Applies when query\_type is 'contacts' or 'both'.

## `exclude_organization_crds` (type: `string`):

Exclude contacts from firms with these organization CRD numbers. Comma-separated (e.g., '7691,250') or JSON array. Applies when query\_type is 'contacts' or 'both'.

## `date_updated` (type: `string`):

Return only contacts updated on or after this date. Use for incremental syncs. Format: YYYY-MM-DD (e.g., '2025-01-15') or ISO datetime YYYY-MM-DDTHH:MM:SS. Applies when query\_type is 'contacts' or 'both'.

## `contacts_limit` (type: `integer`):

Maximum number of contacts to return. Applies when query\_type is 'contacts' or 'both'. Set to null or omit for no limit.

## `output_file` (type: `string`):

Optional filename to save results as a local JSON file. If not provided, results are only pushed to the Apify dataset.

## Actor input object example

```json
{
  "query_type": "contacts",
  "firm_name": "Vanguard",
  "firm_city": "New York",
  "firm_state": "NY",
  "firm_country": "US",
  "firms_limit": 100,
  "contact_firm_name": "Morgan Stanley",
  "organization_crds": "7691,250",
  "contacts_limit": 10
}
```

# Actor output Schema

## `allResults` (type: `string`):

Complete dataset with all search results including firms, contacts, search parameters, metadata, and timestamps. Each item represents the full search result with nested structures for firms and contacts.

## `firms` (type: `string`):

Investment advisor firms data with search parameters, metadata (firms count, pages processed, limit reached), and results array containing firm records. Only present when search\_type is 'firms' or 'both'.

## `contacts` (type: `string`):

Investment advisor representatives (contacts) data with query parameters, metadata (contacts count, pages processed, limit reached), and results array containing contact records. Only present when query\_type is 'contacts' or 'both'.

## `summary` (type: `string`):

Query metadata and summary information including query type, timestamp, firms count, contacts count, pages processed, and query parameters used.

# 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 = {
    "firm_name": "Vanguard",
    "firm_city": "New York",
    "firm_state": "NY",
    "firm_country": "US",
    "contact_firm_name": "Morgan Stanley",
    "organization_crds": "7691,250"
};

// Run the Actor and wait for it to finish
const run = await client.actor("johnvc/secinvestmentadvisorcontacts").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 = {
    "firm_name": "Vanguard",
    "firm_city": "New York",
    "firm_state": "NY",
    "firm_country": "US",
    "contact_firm_name": "Morgan Stanley",
    "organization_crds": "7691,250",
}

# Run the Actor and wait for it to finish
run = client.actor("johnvc/secinvestmentadvisorcontacts").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "firm_name": "Vanguard",
  "firm_city": "New York",
  "firm_state": "NY",
  "firm_country": "US",
  "contact_firm_name": "Morgan Stanley",
  "organization_crds": "7691,250"
}' |
apify call johnvc/secinvestmentadvisorcontacts --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=johnvc/secinvestmentadvisorcontacts",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Investment Finance Professionals",
        "description": "Find and filter 250,000+ investment professionals and 15,000+ financial firms by location, firm name, and more. Get structured contact data with emails, LinkedIn profiles, and firm associations for lead generation and market research.",
        "version": "0.0",
        "x-build-id": "fXZEilvgYqMf3ocfx"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/johnvc~secinvestmentadvisorcontacts/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-johnvc-secinvestmentadvisorcontacts",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/johnvc~secinvestmentadvisorcontacts/runs": {
            "post": {
                "operationId": "runs-sync-johnvc-secinvestmentadvisorcontacts",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/johnvc~secinvestmentadvisorcontacts/run-sync": {
            "post": {
                "operationId": "run-sync-johnvc-secinvestmentadvisorcontacts",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "query_type": {
                        "title": "Data Type",
                        "enum": [
                            "firms",
                            "contacts",
                            "both"
                        ],
                        "type": "string",
                        "description": "Type of data to return: 'firms' for RIA firms only, 'contacts' for investment advisor representatives only, or 'both'. Defaults to 'contacts'.",
                        "default": "contacts"
                    },
                    "firm_name": {
                        "title": "Firm Name",
                        "type": "string",
                        "description": "Filter firms by primary business name (partial match, case-insensitive). Applies when query_type is 'firms' or 'both'."
                    },
                    "firm_city": {
                        "title": "Firm City",
                        "type": "string",
                        "description": "Filter firms by main office city (exact match, case-insensitive). Applies when query_type is 'firms' or 'both'."
                    },
                    "firm_state": {
                        "title": "Firm State",
                        "pattern": "^[A-Z]{2}$",
                        "type": "string",
                        "description": "Filter firms by main office state. Use standard 2-letter state codes (e.g., 'CA', 'NY', 'TX'). Applies when query_type is 'firms' or 'both'."
                    },
                    "firm_country": {
                        "title": "Firm Country",
                        "pattern": "^[A-Z]{2}$",
                        "type": "string",
                        "description": "Filter firms by main office country. Use ISO 3166-1 alpha-2 country codes (e.g., 'US', 'CA', 'GB'). Applies when query_type is 'firms' or 'both'."
                    },
                    "firms_limit": {
                        "title": "Firms Limit",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of firms to return. Applies when query_type is 'firms' or 'both'. Set to null or omit for no limit.",
                        "default": 100
                    },
                    "contact_ids": {
                        "title": "Contact IDs",
                        "pattern": "^\\d+(,\\d+)*$",
                        "type": "string",
                        "description": "Include only contacts with these contact_id values. Comma-separated integers (e.g., '123,456,789') or JSON array. Applies when query_type is 'contacts' or 'both'."
                    },
                    "exclude_contact_ids": {
                        "title": "Exclude Contact IDs",
                        "pattern": "^\\d+(,\\d+)*$",
                        "type": "string",
                        "description": "Exclude contacts with these contact_id values. Comma-separated integers (e.g., '123,456,789') or JSON array. Applies when query_type is 'contacts' or 'both'."
                    },
                    "contact_firm_name": {
                        "title": "Contact Firm Name",
                        "type": "string",
                        "description": "Filter contacts by their firm's primary business name (partial match, case-insensitive). Applies when query_type is 'contacts' or 'both'."
                    },
                    "organization_crds": {
                        "title": "Organization CRDs",
                        "pattern": "^\\d+(,\\d+)*$",
                        "type": "string",
                        "description": "Include only contacts from firms with these organization CRD (Central Registration Depository) numbers. Comma-separated (e.g., '7691,250') or JSON array. Applies when query_type is 'contacts' or 'both'."
                    },
                    "exclude_organization_crds": {
                        "title": "Exclude Organization CRDs",
                        "pattern": "^\\d+(,\\d+)*$",
                        "type": "string",
                        "description": "Exclude contacts from firms with these organization CRD numbers. Comma-separated (e.g., '7691,250') or JSON array. Applies when query_type is 'contacts' or 'both'."
                    },
                    "date_updated": {
                        "title": "Date Updated",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2})?$",
                        "type": "string",
                        "description": "Return only contacts updated on or after this date. Use for incremental syncs. Format: YYYY-MM-DD (e.g., '2025-01-15') or ISO datetime YYYY-MM-DDTHH:MM:SS. Applies when query_type is 'contacts' or 'both'."
                    },
                    "contacts_limit": {
                        "title": "Contacts Limit",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of contacts to return. Applies when query_type is 'contacts' or 'both'. Set to null or omit for no limit.",
                        "default": 10
                    },
                    "output_file": {
                        "title": "Output File",
                        "type": "string",
                        "description": "Optional filename to save results as a local JSON file. If not provided, results are only pushed to the Apify dataset."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
