drillr.ai
API keys →

Ownership · US only

Institutional holdings

GET/api/v2/institutional-holdingsUS only
Coverage
US
Billing
20 cr / thousand calls

Query institutional investors’ reported quarterly holdings, quantities and market values. Each row is one holding record from an SEC 13F-HR filing or amendment, rather than an aggregated institution–security position.

Start with investor_cik to retrieve an institution’s holdings. Queries by ticker return only records with a mapped CUSIP and may have incomplete coverage; queries by institution also retain unmapped records, where ticker is null.

Quick example

Request
curl -H "X-API-KEY: $DRILLR_API_KEY" \
  "https://gateway.drillr.ai/api/v2/institutional-holdings?investor_cik=0001067983&report_period=2026-06-30"

Query parameters

At least one of ticker or investor_cik is required.

ParameterTypeRequiredDescription
tickerstringone ofA single ticker; provide this or investor_cik, or both. Returns mapped records only.
investor_cikstringone ofInstitution CIK (the unique key of a 13F filer); returns 404 when there is no match. When only the institution name is known, use SEC EDGAR company search to obtain the CIK.
report_perioddateoptionalQuarter-end report period in YYYY-MM-DD format, for example 2026-06-30; returns that period only, or all ingested quarters when omitted. Default: all quarters.
limitintoptionalMaximum 500. Default: 50.
pageintoptionalStarts at 1. Default: 1.

Sort order: report_period desc, investor_name asc, accession_number desc. Paged with limit and page (pages start at 1); fewer rows than limit means the last page.

Response fields

FieldTypeDescription
tickerstringThe security's canonical ticker; null on rows whose CUSIP could not be mapped to a ticker (these rows appear only in the results of a query by investor_cik)
investor_namestringHolder name (as filed)
investor_cikstringHolder CIK (10 digits, zero-padded)
report_perioddateQuarter-end report period
sharesnumberShares held
market_valuenumberReported market value, in base US dollar units (not thousands of dollars)
change_in_sharesnumberQuantity difference from the most recent earlier matching holding record; may span missing quarters, or be null when no match exists. See Data notes
accession_numberstringSEC accession number (e.g. 0000320193-25-000123) identifying this filing
form_typestringenumSEC form name, either 13F-HR or 13F-HR/A
filing_urlstringDeep link to the filing on SEC EDGAR; opens directly
filing_datedateFiling date: the date the filing became public on EDGAR

Common queries

  • An institution’s holdings for one quarter: investor_cik=0001067983&report_period=2026-06-30. Use a zero-padded, 10-digit CIK; look up an institution by name with SEC EDGAR company search.
  • Holders of a stock: ticker=AAPL&report_period=2026-06-30. Covers mapped records only; an empty array does not establish that there are no institutional holdings.
  • An institution’s holdings in a stock: investor_cik=0001067983&ticker=AAPL&report_period=2026-06-30. Both filters apply together, subject to the same ticker mapping coverage.

Data notes

  • report_period is the quarter-end holding date in YYYY-MM-DD format, for example 2026-06-30; filing_date is the public disclosure date. Omitting the report period returns all ingested quarters, not just the latest quarter. from / to are not accepted.
  • The same institution, quarter and security may have multiple rows for different share classes, investment discretion or other managers. Amendments, 13F-HR/A, are retained separately. Review corrections and holding categories before aggregation; do not simply add originals and amendments or assume the latest amendment replaces the entire filing.
  • market_value is normalized to base US dollars; do not multiply it by 1000. change_in_shares subtracts the quantity in the most recent earlier matching holding record from the current row. Matching considers institution, CUSIP, share class, quantity unit, investment discretion and other managers. Missing quarters can cause comparisons across a gap; no matching record gives null. It is not a strict measure of quarterly net trading.
  • A null value for ticker means the symbol is unmapped, not that the holding is zero. The response example illustrates field structure; use filing_url to verify security identity and corrections in the original filing.
  • For 13D / 13G ownership disclosures, use Stake changes.

Pagination

  • The default page contains 50 rows and may cover only part of an institution’s portfolio. Start with limit=50&page=1, keep the institution, report period and other filters unchanged, then request limit=50&page=2. Stop when data contains fewer than 50 rows.
  • accession_number identifies the whole filing, not a unique holding row. Do not deduplicate by it alone or add together holdings from different quarters when the report period is omitted.

No key yet? Create one under API Keys — it is shown once, so store it where your shell can read it. Connecting an agent over MCP instead? That signs in through the browser and needs no key at all.

Authentication, conventions, rate limits and error shapes are the same for every endpoint — they live on REST API.