/screener/initial-holdings
Full-library screening of initial holdings (Form 3). Holding-level conditions plus company-level aggregate gates; returns the matching holdings. Requires Pro or higher.
Request:
start_date, as_of_dateISO dateWindow on filing_date. as_of_date ≤ today; start_date ≤ as_of_date.
tickers, exclude_tickersstring[]≤ 100 each.
sectorsstring[]The 12 canonical buckets (Industry classification (Pro+)).
holding_filtersobjectSee below.
aggregate_filtersobject[]≤ 8. Company-level gates — see below.
group_by_tickerbooltrue → grouped by company. false → flat rows.
sort_bystringGrouped: ticker, holdings_count, shares_owned_total. Flat: filing_date, shares_owned, split_adjusted_shares_owned, underlying_security_shares, conversion_or_exercise_price.
sort_order"desc" | "asc"pageint ≥ 1page_sizeint 1–100Counts holdings in both modes: with group_by_ticker=true a page holds that many holdings, however few companies they come from.
detailstring"light" leaves out each row's footnote_refs and the start_date_applied echo; "minimal" also leaves out accession_number and company_id. See Response detail.
Pagination cap: page × page_size ≤ 500 (422 above it). When the next page would pass the cap, has_more is false, next_page is null, and _warnings says the limit was reached.
holding_filters:
relationshipstring[]is_director, is_officer, is_ten_percent_owner, is_other. OR semantics.
is_derivativebooldirect_or_indirect"D" | "I"include_anomaliesboolDefault false.
exclude_likely_mergedboolDefault false.
include_unresolved_amendmentsboolDefault false.
conditionsobject[]≤ 8. {field, op, value}. field ∈ shares_owned, split_adjusted_shares_owned, underlying_security_shares, split_adjusted_underlying_security_shares, conversion_or_exercise_price.
aggregate_filters: {metric, op, value}, metric ∈ filing_count, no_securities_filing_count, distinct_insiders, holdings_count, shares_owned_total. filing_count and no_securities_filing_count count filings, including filings that report no holdings; holdings_count and shares_owned_total are measured on the matching holdings.
Operators (both filter types): >, >=, <, <=, between ([lo, hi], lo ≤ hi).
Response:
page, page_size, has_more, next_pagePagination.
as_of_date_applied, start_date_appliedWindow actually used.
resultsgroup_by_ticker=true. Each entry: ticker, issuer, issuer_cik, holdings_count and shares_owned_total (the company's full hit values), holdings.
holdingsgroup_by_ticker=false. Flat rows, each additionally carrying ticker, issuer, issuer_cik and company_id.
anomalies_excluded_countHoldings excluded by the consistency checks; 0 when holding_filters.include_anomalies=true.
credits_used, _warningsEvery row carries accession_number, filing_date, period_of_report, no_securities_owned, source_url_prefix, insiders, and the holding object.
Credits: the Credit formula (/screener/ownership) formula, with conditions = holding conditions + aggregate filters. Range 65–920.
Errors: 422 VALIDATION_ERROR, 402 CREDITS_INSUFFICIENT, 403 PLAN_TIER_INSUFFICIENT below Pro, 504 QUERY_TIMEOUT at the 30-second server timeout (charged).