> ## Documentation Index
> Fetch the complete documentation index at: https://docs.focusalpha.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Ownership & people

> 13F institutional holdings, Form 4 insider trades, executive pay, proxy ownership, and the adviser and venture-investor directories.

Six datasets answer who owns, runs, and finances companies: 13F holdings, Form 4 insider trades, proxy-statement compensation and ownership, the SEC investment-adviser directory, and a venture-investor directory.

Every call costs **1 credit**. All routes require **Professional** except `/v1/investors`, which is **Fund**.

<Note>
  Two response conventions live on this page. `/v1/institutional-holdings` and `/v1/insider-trades` belong to the SEC statement family: bare wrapper responses, `limit`-only paging, and the flat `{ "error", "message" }` body. The other four use the standard envelope with `{ data, next_cursor, coverage }` cursor paging. See [Errors](/concepts/errors) and [Pagination](/concepts/pagination).
</Note>

## GET /v1/institutional-holdings

Quarterly 13F positions, in two mutually exclusive modes: one manager's whole portfolio (`?filer_cik=`, newest period first) or every institution holding a security (`?ticker=`, latest filing per filer, value descending). Passing both, or neither, returns `400`.

Coverage is US 13F filers — managers over \$100M in US-listed equities. Long positions in 13F-reportable securities only: no shorts, no bonds, no non-US listings. Up to 8 quarters of history.

**Plan:** Professional and above · **Credits:** 1 per call

<ParamField query="filer_cik" type="string">
  The manager's SEC CIK. Exactly one of `filer_cik` or `ticker` is required.
</ParamField>

<ParamField query="ticker" type="string">
  The held security's ticker. Exactly one of `filer_cik` or `ticker` is required.
</ParamField>

<ParamField query="report_period" type="string">
  Exact quarter end, `YYYY-MM-DD` (e.g. `2026-03-31`).
</ParamField>

<ParamField query="report_period_gte" type="string">
  Quarter-end lower bound, inclusive. `report_period_lte`, `report_period_gt`, and `report_period_lt` work the same way.
</ParamField>

<ParamField query="limit" type="integer" default="1000">
  Maximum rows in the response. Bounds the **whole response**, not rows per quarter — raise it when requesting history.
</ParamField>

```bash theme={null}
curl "https://api.focusalpha.ai/v1/institutional-holdings?filer_cik=1067983" \
  -H "Authorization: Bearer $FOCUSALPHA_API_KEY"
```

```json theme={null}
{
  "filer_cik": "0001067983",
  "institutional_holdings": [
    {
      "ticker": "AAPL",
      "name_of_issuer": "APPLE INC",
      "cusip": "037833100",
      "report_period": "2026-03-31",
      "filing_date": "2026-05-14",
      "form_type": "13F-HR",
      "accession_number": "0000950123-26-005678",
      "title_of_class": "COM",
      "put_call": null,
      "shares": 300000000,
      "value_usd": 69750000000,
      "reported_price": 232.5,
      "filer_cik": 1067983,
      "filer_name": "BERKSHIRE HATHAWAY INC"
    }
  ]
}
```

By-ticker mode returns `{ "ticker": "...", "institutional_holdings": [...] }` instead.

<Note>
  By `filer_cik` with no period filter, only the **latest quarter** comes back. For history, pass `report_period_gte`/`_lte` and raise `limit`.
</Note>

## GET /v1/insider-trades

SEC Form 4 transactions — purchases, sales and grants by a company's officers, directors and 10% owners. One row per reported transaction, newest filing first. Coverage is roughly the past two years per issuer.

**Plan:** Professional and above · **Credits:** 1 per call

<ParamField query="ticker" type="string" required>
  The issuer's ticker.
</ParamField>

<ParamField query="limit" type="integer" default="10">
  Rows returned, 1–1000.
</ParamField>

```bash theme={null}
curl "https://api.focusalpha.ai/v1/insider-trades?ticker=NVDA&limit=3" \
  -H "Authorization: Bearer $FOCUSALPHA_API_KEY"
```

```json theme={null}
{
  "insider_trades": [
    {
      "ticker": "NVDA",
      "issuer": "NVIDIA CORP",
      "name": "HUANG JEN HSUN",
      "title": "President and CEO",
      "is_board_director": true,
      "transaction_date": "2026-08-20",
      "transaction_type": "S",
      "transaction_shares": 120000,
      "transaction_price_per_share": 176.42,
      "transaction_value": 21170400,
      "shares_owned_before_transaction": 75300000,
      "shares_owned_after_transaction": 75180000,
      "security_title": "Common Stock",
      "filing_date": "2026-08-22"
    }
  ]
}
```

<Warning>
  Date-range, transaction-type, name, and reporting-owner filters are **not yet available** — passing any of them returns `400`. The unfiltered newest-first feed is the launch scope; page further back by raising `limit`.
</Warning>

## GET /v1/companies/\{company\_id}/executive-compensation

Named-executive compensation from the proxy statement (DEF 14A), one row per person per fiscal year, for fiscal years from 2000. Foreign private issuers file a 20-F instead and are absent.

**Plan:** Professional and above · **Credits:** 1 per call

<ParamField path="company_id" type="string" required>
  Canonical `cmp_` id, ticker, CIK or ISIN.
</ParamField>

<ParamField query="fiscal_year" type="integer">
  Exact fiscal year, 1990–2100. `fiscal_year_gte` and `fiscal_year_lte` bound a range.
</ParamField>

<ParamField query="ceo_only" type="boolean">
  Only the chief executive's rows.
</ParamField>

<ParamField query="cursor" type="string">
  `next_cursor` from the previous page, passed back verbatim.
</ParamField>

<ParamField query="limit" type="integer" default="100">
  Rows per page, 1–1000.
</ParamField>

```bash theme={null}
curl "https://api.focusalpha.ai/v1/companies/AAPL/executive-compensation?ceo_only=true&fiscal_year_gte=2023" \
  -H "Authorization: Bearer $FOCUSALPHA_API_KEY"
```

Each row carries `id`, `company_id`, `ticker`, `person_name`, `position`, `is_ceo`, `fiscal_year`, the components (`salary`, `bonus`, `stock_award`, `option_award`, `non_equity_incentive`, `pension`, `other`), and two totals: `total_disclosed` and `total_computed`, with `component_gap`.

<Warning>
  `total_disclosed` is the figure the company printed; `total_computed` is the components summed. `component_gap: true` means they disagree — a component failed to extract — so cite the disclosed total.
</Warning>

## GET /v1/companies/\{company\_id}/proxy-ownership

Beneficial ownership from the latest proxy: insiders, the insider group line, and 5%+ holders. Latest proxy only — not a history.

**Plan:** Professional and above · **Credits:** 1 per call

<ParamField path="company_id" type="string" required>
  Canonical `cmp_` id, ticker, CIK or ISIN.
</ParamField>

<ParamField query="owner_kind" type="string">
  `insider`, `insider_group`, or `major_holder`.
</ParamField>

<ParamField query="min_percent" type="number">
  Minimum ownership percent, 0–100 — the same scale the rows carry.
</ParamField>

<ParamField query="cursor" type="string">
  `next_cursor` from the previous page, passed back verbatim.
</ParamField>

<ParamField query="limit" type="integer" default="100">
  Rows per page, 1–1000.
</ParamField>

```bash theme={null}
curl "https://api.focusalpha.ai/v1/companies/TSLA/proxy-ownership?owner_kind=major_holder" \
  -H "Authorization: Bearer $FOCUSALPHA_API_KEY"
```

Each row carries `id`, `company_id`, `ticker`, `owner_name`, `owner_role`, `owner_kind`, `security_class`, `shares_owned`, `percent`, `percent_source`, `is_group`, and `confidence`.

<Warning>
  Do not sum rows across `owner_kind`: the `insider_group` line already contains the individual insiders.
</Warning>

## GET /v1/institutions

The SEC investment-adviser directory: \~23,600 registered and exempt-reporting advisers from the monthly Form ADV roster, with contact details extracted from each firm's own ADV Part 2 brochure and, for \~1,300 13F filers, the style their actual holdings reveal. A request with no filter is legal — enumerating the whole directory page by page is the supported path.

**Plan:** Professional and above · **Credits:** 1 per call

<ParamField query="q" type="string">
  Firm-name substring, case-insensitive, minimum 2 characters. Matches legal or business name.
</ParamField>

<ParamField query="crd" type="string">
  Exact CRD number.
</ParamField>

<ParamField query="cik" type="string">
  Exact SEC CIK (13F filers only carry one here).
</ParamField>

<ParamField query="firm_type" type="string">
  Derived classification, spelled exactly: `Hedge-Fund`, `Mutual-Fund`, `Mutual-Fund (perf-fee)`, `Wealth-Manager`, `PE / VC`, `Hybrid (MF + Hedge)`, `Pension / Institutional`, `Sub-Advisor`, `Other / Mixed`. 13F filers only.
</ParamField>

<ParamField query="sec_registration_type" type="string">
  `Registered` or `ERA` (exempt reporting adviser).
</ParamField>

<ParamField query="state" type="string">
  Main-office US state code, e.g. `NY`.
</ParamField>

<ParamField query="country" type="string">
  Main-office country as the ADV spells it, e.g. `United States`.
</ParamField>

<ParamField query="style_tier" type="string">
  Revealed 13F style tier, spelled exactly: `Deep Growth`, `Growth-Biased`, `Blend / Core`, `Value-Biased`, `Deep Value`.
</ParamField>

<ParamField query="min_aum" type="number">
  Minimum total regulatory AUM, USD. `max_aum` bounds the other side.
</ParamField>

<ParamField query="has_email" type="boolean">
  Only firms with an extracted e-mail address.
</ParamField>

<ParamField query="has_style" type="boolean">
  Only firms with a revealed 13F style row.
</ParamField>

<ParamField query="cursor" type="string">
  `next_cursor` from the previous page, passed back verbatim.
</ParamField>

<ParamField query="limit" type="integer">
  Rows per page, 1–1000.
</ParamField>

```bash theme={null}
curl "https://api.focusalpha.ai/v1/institutions?firm_type=Hedge-Fund&state=NY&min_aum=1000000000" \
  -H "Authorization: Bearer $FOCUSALPHA_API_KEY"
```

Search rows carry identity and contact fields: `crd`, `cik`, `legal_name`, `business_name`, `firm_type`, `sec_registration_type`, `main_office_city` / `_state` / `_country`, `main_office_phone`, `website`, `email_primary`, `email_domain_matches_firm`, `aum_total`, the private-fund flags (`advises_private_funds`, `has_hedge_funds`, `has_pe_funds`, `has_vc_funds`), and `adv_as_of`. The full dossier — style scores, fees, services, headcount, per-address e-mail evidence — lives on the profile route.

<Note>
  ADV numbers are self-reported by the adviser; SEC receipt is not SEC endorsement. Style fields are null for \~94% of firms because most advisers do not file 13F — that is coverage, not missing data.
</Note>

## GET /v1/institutions/\{id}

One adviser's full profile, including the style read and the `emails` object where each address carries the verbatim brochure sentence it was printed in.

**Plan:** Professional and above · **Credits:** 1 per call

<ParamField path="id" type="string" required>
  `crd:105247` or `cik:0001112520`. A bare number is tried as CRD first, then CIK.
</ParamField>

```bash theme={null}
curl "https://api.focusalpha.ai/v1/institutions/crd:105247" \
  -H "Authorization: Bearer $FOCUSALPHA_API_KEY"
```

<Note>
  `email_domain_matches_firm: false` means the address sits on someone else's domain — a parent company or outsourced compliance. Often still the right mailbox, but say so when quoting it.
</Note>

## GET /v1/investors

A directory of \~10,000 venture and growth investors: stage, themes, check size, and how to pitch them. At least one filter is required.

**Plan:** Fund · **Credits:** 1 per call

<ParamField query="q" type="string">
  Firm-name substring, case-insensitive, minimum 2 characters.
</ParamField>

<ParamField query="investor_type" type="string">
  e.g. `VC firm`, `Corporate VC`, `Family office`, `Angel group`.
</ParamField>

<ParamField query="country" type="string">
  Country name as the directory spells it.
</ParamField>

<ParamField query="theme" type="string">
  Investment theme, e.g. `fin-tech`.
</ParamField>

<ParamField query="stage" type="string">
  e.g. `Seed`, `Series A`.
</ParamField>

<ParamField query="cursor" type="string">
  `next_cursor` from the previous page, passed back verbatim.
</ParamField>

<ParamField query="limit" type="integer" default="50">
  Rows per page, 1–1000.
</ParamField>

```bash theme={null}
curl "https://api.focusalpha.ai/v1/investors?stage=Seed&theme=fin-tech&country=United%20States" \
  -H "Authorization: Bearer $FOCUSALPHA_API_KEY"
```

Each row carries `record_id`, `name`, `url`, `website`, `domain`, `investor_type`, `location`, `countries`, `stages`, `themes`, `first_check`, `lead`, `reply_rate`, `submit_method`, `submit_url`, `linkedin_company`, `twitter`, `who_we_are`, `funding_requirements`, `value_add`, and `as_of`.

<Warning>
  This is a snapshot captured on 2026-07-25, not a live directory: a fund that has since closed, moved or changed thesis still reads as it did then. Say so when quoting it.
</Warning>
