# Investment Entity Resolver: VC & Fund Profiles from SEC Records (`yungstentech/investment-entity-resolver`) Actor

Resolve a messy investor name to a CRD-anchored, SEC-validated adviser-firm profile: legal name, aliases, CRD, registration status, and address from the filing, plus cited extras. Ambiguous names get ranked candidates; unfiled entities get an honest no-match. US-filed RIA/ERA only.

- **URL**: https://apify.com/yungstentech/investment-entity-resolver.md
- **Developed by:** [Paul Mikulskis](https://apify.com/yungstentech) (community)
- **Categories:** Lead generation, Developer tools, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $350.00 / 1,000 resolved profiles

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

### What does Investment Entity Resolver do?

Investment Entity Resolver turns a **messy investor name into a CRD-anchored, SEC-validated adviser-firm profile**. You give it a fund or VC-firm name, even a brand or alias like `a16z` or `Homebrew`, and it anchors that name to a US-filed investment adviser in the public [SEC IAPD](https://adviserinfo.sec.gov) record: legal name, filed aliases, CRD number, SEC number, registration scope and status, registration history, and office address, all read straight from the filing. On top of that identity core it layers best-effort, cited synthesized extras (thesis, stage, sectors, check size, partners, portfolio, recent activity) from a named list of public press sources.

It resolves **US-filed adviser firms only** (RIA or ERA, each carrying a CRD number). When a name legitimately spans several registered advisers, you get a **ranked shortlist with a computed confidence** instead of one confidently-wrong row. When the public record cannot support an answer, you get an **honest no-match**. Individual angels, foreign-only funds, and unfiled syndicates are out of scope and return `no_match_unsupported` for the request fee only.

Running on the Apify platform gives you API access, scheduling, and integrations with the rest of your stack, plus one structured JSON row per lookup that a CRM or an AI agent can consume directly.

### Why use Investment Entity Resolver?

- **A CRD anchor, not a guess.** Every charged profile is tied to exactly one legal entity in a public SEC filing. Raw investor scrapers hand you a name and a row; this hands you the filing the name maps to.
- **Honest ambiguity.** A shared brand like `Sequoia Capital` returns a ranked shortlist (Sequoia Capital Operations, the Peak XV entities formerly filed as Sequoia Capital India, and others), so you disambiguate on real filings rather than trusting a single row.
- **Honest unknowns.** Opinion fields such as thesis and check size carry `source_type: synthesized`, cite their sources, and never affect billing. Where the public record runs out, the value is `null`, not fabricated.
- **You do not pay for misses.** No-matches, empty input, and upstream failures are not charged beyond the request fee.
- **Agent-callable.** Structured JSON in, structured JSON out, one row per lookup, suitable for fundraising CRMs, deal-sourcing workflows, and AI agents that need investor identity as data rather than a search-results page.

### How to use Investment Entity Resolver

1. Enter a firm, fund, or brand name in **Investor / fund / VC-firm name**, for example `Homebrew`, `a16z`, or `Sequoia Capital`. A messy name is fine.
2. Optionally add **hints** (`country`, `stage`, `sector`, `website`, `knownPartner`, `knownPortfolioCompany`). In v1 only `country` is checked against the filing; the rest sharpen the synthesized enrichment.
3. Optionally set **Max candidates** (1 to 10, default 10) and **Include recent activity**.
4. Run it. Read the resolved profile, the ranked shortlist, or the honest no-match in the dataset. You can download the dataset as JSON, CSV, Excel, or HTML.

### Try it for free (no charge)

The prefilled Store example is a **locked, zero-cost preview**. Run it exactly as shown and it resolves the real SEC identity core for Andreessen Horowitz using only the free public IAPD lookup, never the enrichment/Sonar backend, and charges nothing, not even the $0.02 request fee:

```json
{ "name": "Andreessen Horowitz", "hints": {}, "maxCandidates": 10, "includeRecentActivity": true, "dryRun": true }
````

`dryRun` is locked to this **exact** body. Any other name, a populated hint, or any other field alongside `dryRun: true` is rejected in validation before any lookup runs, so it cannot be turned into a free way to resolve arbitrary firms. The output row is marked `dry_run: true`, `charged_event` is always `null`, and no Sonar/enrichment call is ever made. Leave `dryRun` at its default (`false`, or simply omit it) to resolve any name you want, billed per the pricing below. Note that a dry run still runs on your own Apify account, so ordinary Apify platform compute, storage, and Dataset/OUTPUT writes are billed by Apify as usual, independent of this actor's own event pricing.

### Input

| Field | Type | Default | Notes |
|---|---|---|---|
| `name` | string (required) | `Andreessen Horowitz` | The name to resolve. A brand, alias, or full legal name all work. |
| `hints` | object | `{}` | Optional context. Only `country` is checked against the filing; the rest sharpen enrichment. |
| `maxCandidates` | integer 1 to 10 | `10` | How many ranked candidates to return. Selection scores a wide internal set regardless; this only caps the returned list. |
| `includeRecentActivity` | boolean | `true` | Ask for a cited `recent_activity` note (synthesized, uncharged). |
| `dryRun` | boolean | `false` | Locked free preview: valid only for the exact sample above. Any other input combined with `dryRun: true` is rejected before any lookup. Charges nothing; never calls Sonar. |

```json
{ "name": "Sequoia Capital", "hints": { "country": "United States" }, "maxCandidates": 6 }
```

### Output

One row per lookup. Every field carries provenance. The `best_match` object is entirely `sec_filing`-sourced from the IAPD search and firm-detail endpoints. The synthesized fields are provenance objects `{ value, source_type, source_urls, as_of, confidence }`, always `synthesized`, uncharged, and `null` when no allowlisted source supports them.

`outcome` is one of `resolved`, `shortlist`, `sec_core_only`, `no_match`, `no_match_unsupported`, `error_upstream`. The `charged_event` field reports exactly which event billed the run (`null` means nothing beyond the request fee).

The public demo dataset is at <https://api.apify.com/v2/datasets/6IiJN4RJq2wl1flpS/items?clean=true&format=json>. It was produced by live runs of this actor and holds the four lookups worked below: a resolved profile (`a16z`), an SEC identity core (`Homebrew`), a ranked shortlist (`Sequoia Capital`), and an honest no-match (`Nimbus Peak Ventures`). No Apify account is needed to read it.

#### Example 1: a clean resolve

Input `{ "name": "a16z" }` on a paid run. The brand maps to Andreessen Horowitz through its filed alias `A16Z CAPITAL MANAGEMENT, L.L.C.`, which is an exact match, so it resolves to one firm and leads the runner-up (A16Z Perennial) by more than the tie margin. The best-match core below is exactly what a live lookup returns. The eight synthesized fields are best-effort: they carry a value, `source_urls`, and `confidence: 0.4` when an allowlisted press source supports them, and are `null` (as they are for a16z here) when none does; they never affect billing.

```json
{
  "query_name": "a16z",
  "outcome": "resolved",
  "best_match": {
    "legal_name": "ANDREESSEN HOROWITZ",
    "crd": "160489",
    "sec_number": "114985",
    "registration_scope": "RIA",
    "registration_status": "Approved",
    "registration_history": [
      { "kind": "RIA", "jurisdiction": "SEC", "status": "Approved", "effectiveDate": "2019-04-11" },
      { "kind": "ERA", "jurisdiction": "SEC", "status": "ERA - Withdrawn", "effectiveDate": "2019-03-11" },
      { "kind": "ERA", "jurisdiction": "California", "status": "ERA - Withdrawn", "effectiveDate": "2019-03-11" }
    ],
    "other_names": ["A16Z CAPITAL MANAGEMENT, L.L.C.", "AH CAPITAL MANAGEMENT, L.L.C.", "ANDREESSEN HOROWITZ"],
    "address": "2865 SAND HILL ROAD, MENLO PARK, CA 94025-7022, United States",
    "adv_filing_date": "2026-03-30",
    "brochure_url": "https://reports.adviserinfo.sec.gov/reports/ADV/160489/PDF/160489.pdf",
    "iapd_url": "https://adviserinfo.sec.gov/firm/summary/160489"
  },
  "investment_thesis": { "value": null, "source_type": "synthesized", "source_urls": [], "as_of": "2026-07-10", "confidence": 0 },
  "typical_check_size": { "value": null, "source_type": "synthesized", "source_urls": [], "as_of": "2026-07-10", "confidence": 0 },
  "ranked_candidates": [
    { "legal_name": "ANDREESSEN HOROWITZ", "crd": "160489", "confidence": 0.9, "evidence_urls": ["https://adviserinfo.sec.gov/firm/summary/160489"], "reason": "IAPD-validated RIA; deterministic score 0.900 (top); Sonar pick." },
    { "legal_name": "A16Z PERENNIAL MANAGEMENT, L.P.", "crd": "324429", "confidence": 0.72, "evidence_urls": ["https://adviserinfo.sec.gov/firm/summary/324429"], "reason": "IAPD-validated RIA; deterministic score 0.720." }
  ],
  "match_confidence": 0.9,
  "ambiguity_level": "none",
  "warnings": [],
  "charged_event": "investment-profile-resolved"
}
```

The other six synthesized fields (`stage_focus`, `sector_focus`, `geography_focus`, `named_partners`, `notable_portfolio`, `recent_activity`) are the same `{ value, source_type, source_urls, as_of, confidence }` shape and are omitted above for length. Enrichment is sparse by design: a synthesized field ships only when the server verifies a verbatim supporting quote on the page it cites, and everything it cannot verify returns an honest null. In the pre-launch census on the shipped build (21 live lookups, 2026-07-10), 2 of 21 lookups carried at least one populated enrichment field, roughly one in ten. A populated field's citation always checks out; most fields are null, and the SEC-validated identity core is the product. Three fields, `geography_focus`, `notable_portfolio`, and `typical_check_size`, are always null in the current version: a firm-level geography, a multi-company list, and a multi-figure check size are shapes quote-verification cannot yet police element by element, so they ship only once that stricter check exists.

#### Example 2: the SEC identity core (no synthesized layer)

Input `{ "name": "Homebrew" }`. The name maps to one US-filed adviser and returns its full SEC identity core. When the run is on the free tier, has no budget for the synthesized layer, or the enrichment step returns nothing rankable, the resolver bills the lower **SEC core** price ($0.08) instead of the resolved price and omits the synthesized fields. Note `brochure_url` is `null` here (this ERA filed no Part 2 brochure) and `sec_number` is present.

```json
{
  "query_name": "Homebrew",
  "outcome": "sec_core_only",
  "best_match": {
    "legal_name": "HOMEBREW VENTURES",
    "crd": "168123",
    "sec_number": "114972",
    "registration_scope": "ERA",
    "registration_status": "Active",
    "registration_history": [
      { "kind": "ERA", "jurisdiction": "SEC", "status": "ERA - Active", "effectiveDate": "2019-03-08" },
      { "kind": "ERA", "jurisdiction": "California", "status": "ERA - Active", "effectiveDate": "2013-06-19" }
    ],
    "other_names": ["HOMEBREW MANAGEMENT, LLC", "HOMEBREW VENTURES"],
    "address": "409 PRIMROSE ROAD, BURLINGAME, CA 94010, United States",
    "adv_filing_date": "2026-03-24",
    "brochure_url": null,
    "iapd_url": "https://adviserinfo.sec.gov/firm/summary/168123"
  },
  "ranked_candidates": [
    { "legal_name": "HOMEBREW VENTURES", "crd": "168123", "confidence": 0.9, "evidence_urls": ["https://adviserinfo.sec.gov/firm/summary/168123"], "reason": "IAPD-validated ERA; deterministic score 0.900 (top)." }
  ],
  "match_confidence": 0.9,
  "ambiguity_level": "none",
  "warnings": [],
  "charged_event": "sec-core-profile"
}
```

The eight synthesized field objects are still present in the row (all `null` on this SEC-core path); they are omitted above for length.

#### Example 3: a genuinely ambiguous name

Input `{ "name": "Sequoia Capital" }`. The `Sequoia Capital` brand is shared across many advisers, so you get a ranked shortlist rather than one confidently-wrong row: Sequoia Capital Operations (the US venture entity, CRD 157373), the two Peak XV entities formerly filed as Sequoia Capital India (305299, 163626), HongShan (formerly Sequoia China), Sequoia Global Equities, and Sequoia Capital IV Israel all tie at the top. Every candidate is IAPD-validated and carries its CRD and a link to the filing, which is what lets you pick the right one. The row below is from a free-tier run, so `charged_event` is `null`; a paid run bills `candidate-shortlist` ($0.18). Lower-scoring generic "Sequoia" advisers (wealth-management firms, etc.) round out the ranked list and are trimmed here.

```json
{
  "query_name": "Sequoia Capital",
  "outcome": "shortlist",
  "best_match": null,
  "ranked_candidates": [
    { "legal_name": "SEQUOIA CAPITAL IV ISRAEL LTD.", "crd": "161213", "confidence": 0.72, "evidence_urls": ["https://adviserinfo.sec.gov/firm/summary/161213"], "reason": "IAPD-validated ERA; deterministic score 0.720 (top)." },
    { "legal_name": "SEQUOIA GLOBAL EQUITIES", "crd": "157402", "confidence": 0.72, "evidence_urls": ["https://adviserinfo.sec.gov/firm/summary/157402"], "reason": "IAPD-validated RIA; deterministic score 0.720." },
    { "legal_name": "SEQUOIA CAPITAL OPERATIONS, LLC", "crd": "157373", "confidence": 0.72, "evidence_urls": ["https://adviserinfo.sec.gov/firm/summary/157373"], "reason": "IAPD-validated RIA; deterministic score 0.720." },
    { "legal_name": "PEAK XV PARTNERS OPERATIONS LLC", "crd": "305299", "confidence": 0.72, "evidence_urls": ["https://adviserinfo.sec.gov/firm/summary/305299"], "reason": "IAPD-validated RIA; deterministic score 0.720." },
    { "legal_name": "PEAK XV PARTNERS I LLC", "crd": "163626", "confidence": 0.72, "evidence_urls": ["https://adviserinfo.sec.gov/firm/summary/163626"], "reason": "IAPD-validated ERA; deterministic score 0.720." },
    { "legal_name": "HONGSHAN CAPITAL ADVISORS LIMITED", "crd": "161562", "confidence": 0.72, "evidence_urls": ["https://adviserinfo.sec.gov/firm/summary/161562"], "reason": "IAPD-validated ERA; deterministic score 0.720." }
  ],
  "match_confidence": 0.72,
  "ambiguity_level": "high",
  "warnings": ["Multiple IAPD-validated candidates are within the confidence tie band; returned a ranked shortlist rather than a single charged profile."],
  "charged_event": null
}
```

#### Example 4: an honest no-match

Input `{ "name": "Nimbus Peak Ventures" }`. No US-filed adviser matches, so the resolver says so plainly and charges nothing beyond the request fee. It never invents a profile to fill the gap.

```json
{
  "query_name": "Nimbus Peak Ventures",
  "outcome": "no_match",
  "best_match": null,
  "ranked_candidates": [],
  "match_confidence": 0,
  "ambiguity_level": "none",
  "warnings": ["No US-filed adviser (RIA or ERA) matches this name. Individual angels, unfiled syndicates, and funds with no US-filed adviser are out of v1 scope."],
  "charged_event": null
}
```

### Output fields

| Field | Source | Description |
|---|---|---|
| `query_name` | echo | The name you submitted. |
| `outcome` | computed | `resolved`, `shortlist`, `sec_core_only`, `no_match`, `no_match_unsupported`, or `error_upstream`. |
| `best_match` | `sec_filing` | The CRD-anchored identity core: legal name, CRD, SEC number, registration scope and status, registration history, filed aliases, address, ADV filing date, brochure and IAPD links. Present only on `resolved` and `sec_core_only`. |
| `investment_thesis`, `stage_focus`, `sector_focus`, `geography_focus`, `typical_check_size`, `named_partners`, `notable_portfolio`, `recent_activity` | `synthesized` | Best-effort cited extras, each a `{ value, source_type, source_urls, as_of, confidence }` object. Always uncharged. `null` when no allowlisted source supports them. |
| `ranked_candidates` | `sec_filing` | Every IAPD-validated candidate with its CRD, computed confidence, filing link, and the reason it was ranked. |
| `match_confidence` | computed | The deterministic selection score of the top candidate. See the formula below. |
| `ambiguity_level` | computed | `none`, `low`, or `high`. |
| `warnings` | computed | Budget, policy, and ambiguity notices. |
| `charged_event` | computed | Which event billed the run, or `null`. |
| `dry_run` | echo | `true` only on the locked free preview run; `false` on every normal run. |

### Match confidence: the published formula

`match_confidence` is a deterministic score computed from the filing data, never a model assertion, so you can reproduce it yourself:

```
match_confidence = 0.6 × name_score + 0.2 × status_score + 0.2 × hint_score
                   (× 0.5 if a supplied hint hard-contradicts the filing)
```

- **name\_score** is scored against the legal name and every filed alias, best match wins: `1.0` for an exact normalized match, `0.70` when every query token appears in the name, otherwise a token-set (Jaccard) similarity capped at `0.60`.
- **status\_score** is `1.0` for active or approved, `0.7` for pending, `0.3` for terminated, withdrawn, or inactive.
- **hint\_score** is `0.5` when no checkable hint is supplied, otherwise the fraction of checkable hints that agree. In v1 only `country` is checkable against the filing.
- The `× 0.5` hard-contradiction factor applies when a `country` hint disagrees with the filed office address.

A single resolution requires the top score **above `0.6`** (strictly) and a lead of `≥ 0.15` over the runner-up. A top scoring exactly at `0.6`, or a lead inside that `0.15` tie band, does not resolve to a single charged profile; what you get instead depends on the candidate set: two or more validated candidates return a ranked shortlist, and a single validated candidate returns the SEC-core identity (outcome `sec_core_only`). Candidates scoring below `0.5` against your query are name-irrelevant and are dropped entirely.

### How much does it cost?

Pricing is pay-per-event and stated plainly: **$0.02 per validated run; result events bill only when produced.** The request fee is an honest charge for accepting and validating your input and running the free SEC lookups; it is not a charge-only-after-value promise. Result events below bill only when their deterministic predicate holds.

| Event | Price | Fires when |
|---|---|---|
| Request fee | $0.02 | Every run that passes input validation. |
| Resolved profile | $0.35 | A unique, IAPD-validated, CRD-anchored firm with a fully populated registration core and `match_confidence` above `0.6`. |
| Candidate shortlist | $0.18 | Two or more IAPD-validated candidates, no single resolution. |
| SEC core profile | $0.08 | The filing identity core for a unique match, without the synthesized layer (free-tier or budget-limited path). |
| Authoritative profile | $0.59 | Reserved for a future complete-ADV release. Defined now, never charged by this version. |

So a resolved lookup costs $0.37 in total ($0.02 request fee plus $0.35), a shortlist $0.20, and a SEC-core profile $0.10. Empty input, upstream failures, and honest no-matches are charged the $0.02 request fee at most. To keep costs down, leave `maxCandidates` at its default and pass a `country` hint when you know it, which sharpens selection. The one exception is the locked `dryRun: true` preview above, which charges nothing: no request fee, no result event.

### Data sources and provenance

Every output field records where it came from through its `source_type`.

- **Filing-backed fields** (`source_type: sec_filing`): the entire `best_match` object and every `ranked_candidates` entry come from the public SEC IAPD firm search and firm-detail endpoints (`adviserinfo.sec.gov`) and nothing else.
- **Synthesized fields** (`source_type: synthesized`): the opinion extras are drawn under an allowlist of ten public domains: `sec.gov`, `adviserinfo.sec.gov`, `techcrunch.com`, `axios.com`, `fortune.com`, `venturebeat.com`, `businesswire.com`, `prnewswire.com`, `globenewswire.com`, and `wikipedia.org`. A fact citable only to an off-allowlist domain does not populate a field; that field returns `null`.
- **Licensed databases are structurally excluded.** Crunchbase, PitchBook, LinkedIn, Harmonic, Tracxn, CB Insights, Dealroom, Preqin, and everything else off the allowlist are never queried and never appear in output. This resolver does not resell licensed-database data.

### Limitations

- **US-filed advisers only.** It resolves RIA and ERA firms that carry a CRD. Individual angels, foreign-only funds, and unfiled syndicates return an honest no-match.
- **The registration core must be complete to charge.** A resolved or SEC-core profile requires legal name, CRD, registration scope and status, address, and at least one filed alias. An **SEC file number is not required**: state-registered advisers (and some exempt reporting advisers) file without one, so `sec_number` is returned `null` for them and the row carries a warning saying so. The firm still resolves on its CRD.
- **No money-shaped fields in v1.** Regulatory AUM, custody and disclosure flags, owners, and fund type are not carried by the keyless endpoints and are not in this version. They are reserved for a future complete-ADV release.
- **Thesis and check size have no authoritative registry.** They are synthesized, cited, uncharged, and marked with a lower confidence. The adviser's own website is not in the fixed allowlist, so fields with no allowlisted source return `null` rather than a guess.

### FAQ

**Is a resolved profile always available?** No. Ambiguous names return a ranked shortlist and unmatched names return an honest no-match. This is by design: the resolver refuses over guessing.

**Why did a famous fund return a shortlist?** Because its brand is shared across several registered advisers, or it operates more than one registered entity. Use the CRD and filing link on each candidate to pick the right one, or pass a `country` hint.

**Do I pay when there is no match?** No. No-matches, empty input, and upstream failures are charged the $0.02 request fee at most.

**Are the confidence scores calibrated?** The score is a deterministic function of the filing data, published above so you can reproduce it. It is a selection score, not a probability.

**Can I call this from an agent or another tool?** Yes. Input and output are structured JSON, one row per lookup, and the actor is callable through the Apify API and integrations.

### Monitor the firms you resolve

Resolution pairs naturally with monitoring. Every resolved profile and every shortlist candidate carries a CRD, and a CRD is exactly what [RIA Change Radar](https://apify.com/yungstentech/ria-adv-change-radar) takes as input: it watches the filed Form ADV of the advisers you name, on your own schedule, and returns typed change events such as AUM band crossings, adviser headcount changes, custody changes, new disclosures, registration-scope changes, and office moves. Resolve the messy name here, then enroll the CRD there to hear when the filing changes.

### Support

Found a wrong resolution, a missing firm, or a field you expected? Open an issue on the actor's **Issues** tab with the input name and what you expected. Feedback on coverage and ambiguity handling directly shapes what ships next.

# Actor input Schema

## `name` (type: `string`):

The name to resolve. Messy is fine: a brand ("a16z"), an alias ("Calm Company Fund"), or the full legal name all work. The resolver anchors it to a US-filed adviser firm (RIA or ERA) by its SEC CRD number. Individual angels, foreign-only funds, and unfiled entities return an honest no-match for the $0.02 run fee only.

## `hints` (type: `object`):

Optional context to sharpen selection and enrichment. In v1 only `country` is checked against the SEC filing (the keyless endpoints carry an office address but not website/stage/sector/partner/portfolio fields); the others sharpen the synthesized enrichment only. Fields: country, stage, sector, website, knownPartner, knownPortfolioCompany.

## `maxCandidates` (type: `integer`):

How many ranked candidates to return for an ambiguous name. 1 to 10 (default 10). Selection scores and ranks a wide internal set regardless; this only caps the returned list.

## `includeRecentActivity` (type: `boolean`):

Ask the enrichment step for a best-effort, cited `recent_activity` note (synthesized, uncharged, null when no allowlisted source supports it).

## `dryRun` (type: `boolean`):

Zero-cost preview of the SEC identity core, locked to the exact example above (name "Andreessen Horowitz", empty hints, maxCandidates 10, includeRecentActivity true). Any other input combined with dryRun is rejected before any lookup. A dry run charges nothing (no request fee, no result event) and never calls the enrichment/Sonar backend, but your Apify platform compute, storage, and Dataset/OUTPUT writes are billed as usual by Apify, independent of this actor's own pricing.

## Actor input object example

```json
{
  "name": "Andreessen Horowitz",
  "hints": {},
  "maxCandidates": 10,
  "includeRecentActivity": true,
  "dryRun": false
}
```

# Actor output Schema

## `profiles` (type: `string`):

No description

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

No description

# 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 = {
    "name": "Andreessen Horowitz",
    "hints": {}
};

// Run the Actor and wait for it to finish
const run = await client.actor("yungstentech/investment-entity-resolver").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 = {
    "name": "Andreessen Horowitz",
    "hints": {},
}

# Run the Actor and wait for it to finish
run = client.actor("yungstentech/investment-entity-resolver").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 '{
  "name": "Andreessen Horowitz",
  "hints": {}
}' |
apify call yungstentech/investment-entity-resolver --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Investment Entity Resolver: VC & Fund Profiles from SEC Records",
        "description": "Resolve a messy investor name to a CRD-anchored, SEC-validated adviser-firm profile: legal name, aliases, CRD, registration status, and address from the filing, plus cited extras. Ambiguous names get ranked candidates; unfiled entities get an honest no-match. US-filed RIA/ERA only.",
        "version": "0.0",
        "x-build-id": "QC8pVglKN9fV5acib"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/yungstentech~investment-entity-resolver/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-yungstentech-investment-entity-resolver",
                "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/yungstentech~investment-entity-resolver/runs": {
            "post": {
                "operationId": "runs-sync-yungstentech-investment-entity-resolver",
                "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/yungstentech~investment-entity-resolver/run-sync": {
            "post": {
                "operationId": "run-sync-yungstentech-investment-entity-resolver",
                "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",
                "required": [
                    "name"
                ],
                "properties": {
                    "name": {
                        "title": "Investor / fund / VC-firm name",
                        "type": "string",
                        "description": "The name to resolve. Messy is fine: a brand (\"a16z\"), an alias (\"Calm Company Fund\"), or the full legal name all work. The resolver anchors it to a US-filed adviser firm (RIA or ERA) by its SEC CRD number. Individual angels, foreign-only funds, and unfiled entities return an honest no-match for the $0.02 run fee only."
                    },
                    "hints": {
                        "title": "Optional hints",
                        "type": "object",
                        "description": "Optional context to sharpen selection and enrichment. In v1 only `country` is checked against the SEC filing (the keyless endpoints carry an office address but not website/stage/sector/partner/portfolio fields); the others sharpen the synthesized enrichment only. Fields: country, stage, sector, website, knownPartner, knownPortfolioCompany."
                    },
                    "maxCandidates": {
                        "title": "Max candidates",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "How many ranked candidates to return for an ambiguous name. 1 to 10 (default 10). Selection scores and ranks a wide internal set regardless; this only caps the returned list.",
                        "default": 10
                    },
                    "includeRecentActivity": {
                        "title": "Include recent activity",
                        "type": "boolean",
                        "description": "Ask the enrichment step for a best-effort, cited `recent_activity` note (synthesized, uncharged, null when no allowlisted source supports it).",
                        "default": true
                    },
                    "dryRun": {
                        "title": "Dry run (locked free preview, no charge)",
                        "type": "boolean",
                        "description": "Zero-cost preview of the SEC identity core, locked to the exact example above (name \"Andreessen Horowitz\", empty hints, maxCandidates 10, includeRecentActivity true). Any other input combined with dryRun is rejected before any lookup. A dry run charges nothing (no request fee, no result event) and never calls the enrichment/Sonar backend, but your Apify platform compute, storage, and Dataset/OUTPUT writes are billed as usual by Apify, independent of this actor's own pricing.",
                        "default": false
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
