QVeris
SEC Data API Guide

Free 13F API
for SEC Holdings Data

Use a free 13F API or SEC source data to retrieve filings, normalize XML holdings into JSON, preserve amendments, and build an auditable point-in-time workflow.

Free 13F API whiteboard showing SEC EDGAR data, CIK and CUSIP normalization, JSON holdings, and application use

TL;DR

The lowest-cost source-first route is to use public SEC EDGAR filings and Form 13F datasets, then build your own parsing, identity mapping, versioning, and quality controls. A free vendor API can reduce that engineering work by exposing normalized JSON, ticker search, reverse holder lookup, and historical aggregation. Evaluate the value of the normalization—not merely whether an endpoint costs zero.

Keep the filing as the authority. A Form 13F submission can include a cover page, summary page, and information table, while holdings, notice, combination, and amendment forms require different handling. The API should expose enough filing identity and source evidence to reconcile every normalized row back to the correct submission version.

Best match

A free 13F API should return structured institutional holdings and preserve links or identifiers back to SEC filings.

Core lookup

Test manager portfolios by CIK and stock holders by CUSIP or ticker before committing to a provider.

Timing

13F is quarterly and filed after period end under the applicable deadline; fast parsing does not make the underlying positions real time.

Selection rule

Compare free quota, history, amendments, pagination, identifiers, licensing, and source traceability.

Free 13F API data, fields, and filing timing

Form 13F is filed by qualifying institutional investment managers to disclose specified Section 13(f) securities. A developer-oriented API turns EDGAR submission metadata, cover and summary data, and XML information-table rows into queryable records while retaining report period, filing and amendment times, accession number, form type, reporting-manager relationships, and source document URLs.

Query 13F holdings by manager CIK

A manager-centric endpoint should return every disclosed position for one report period, paginate complete portfolios, and distinguish amendments from original filings.

Find institutional holders by ticker or CUSIP

A security-centric endpoint reverses the filing data to list reporting managers. Ticker support is convenient, but CUSIP, issuer class, and mapping provenance reduce false joins.

Validate the 13F holdings JSON response

Keep manager name and CIK, issuer, title of class, CUSIP, shares or principal amount, reported value, put/call flag, discretion, voting authority, report period, filed date, and accession number when available.

Parse filing structure before holdings rows

Identify 13F-HR, 13F-NT, combination reports, and amendments before treating an empty or partial information table as a portfolio. Capture other reporting managers and confidential-treatment indicators from the filing context.

Version value units and identifier rules

Historical filings and current forms can follow different value conventions. Preserve source units and filing-era rules, store CUSIP as text, and retain optional FIGI separately when present rather than replacing the source identifier.

Compare free SEC 13F API access options

OptionWhat you getCheck firstBest use
SEC source dataPublic filings, submissions metadata, filing documents, and quarterly 13F data sets.User-Agent policy, parsing work, identifiers, and update process.Auditable source-first pipelines.
Free vendor planNormalized JSON, ticker lookup, pagination, and sometimes historical quarters.Request quota, history, licensing, amendment handling, and attribution.Prototypes and small research tools.
Sandbox or evaluationLimited institutions, quarters, or sample responses for integration testing.Whether production use and complete coverage require payment.Schema and client validation.
Source plus local normalizationImmutable SEC files plus your own parsed tables, ticker mapping, and versioned snapshots.EDGAR access policy, XML variants, form structure, QA ownership, storage and maintenance.Teams that need control, reproducibility, and source completeness.

Interpret and compare 13F holdings without creating false signals

Worked timeline: report period, filing date, and amendment date

Assume a manager's positions are measured at December 31, the original 13F is filed on February 14, and an amendment is filed on March 1. A point-in-time query as of January 31 must not expose either filing. A query as of February 20 may use only the original submission, while a query as of March 5 may use the amendment but should still retain the superseded version and explain what changed.

This distinction matters in backtests and historical screens. Key the observation by report period, but gate availability by the public filing timestamp. Keep the accession number, form type, amendment type, accepted timestamp, retrieval timestamp, and the version-selection rule. Replacing every historical quarter with the newest corrected file introduces information that was not available at the earlier decision date.

A change in reported value is not automatically a trade

Suppose a manager reports 1,000,000 shares worth 50 million USD in one quarter and the same 1,000,000 shares worth 60 million USD in the next. The 20% value increase may come entirely from the security's price. A holdings-change calculation should compare split-adjusted share or principal amounts first, then explain value changes separately.

Before labeling a position new, increased, reduced, or exited, align CUSIP, issuer, title of class, put/call status, and reporting-manager scope. Corporate actions, identifier changes, class conversions, mergers, and ticker remaps can otherwise look like a sale followed by a new purchase. Keep both the source identity and the mapping decision so the result can be reversed.

What a 13F portfolio does not show

Not a complete portfolio

Cash, short positions, many derivatives, non-reportable securities, and assets outside the Section 13(f) list may be absent. Net exposure and leverage cannot be inferred from long holdings alone.

Not current positioning

The filing describes a quarter-end snapshot disclosed later. The manager may have changed or closed a position before the filing became public.

Not always one manager, one table

Notice and combination reports, other reporting managers, shared discretion, and confidential treatment can change who reports a position and whether the visible table is complete.

When aggregating related managers, use reporting relationships from the filing instead of matching names. Deduplicate only when the same economic position is demonstrably reported through more than one relationship; preserve manager-level rows, voting authority, and investment discretion even when publishing a consolidated view.

How to integrate a free 13F holdings API

Step 1: test one manager and one security

Use a known manager CIK for a portfolio query and one CUSIP or ticker for a holder query. Confirm reporting period, pagination, empty-state behavior, and amendment flags.

Step 2: normalize identifiers and units

Store CIK and CUSIP as strings, keep the security class, confirm whether value is reported in dollars or thousands, and do not merge ticker mappings without provenance.

Step 3: preserve point-in-time history

Key records by report period and accession number. Ingest amendments as new source events, avoid overwriting older quarters, and compare only information available by each filing date.

Step 4: handle free-tier limits safely

Cache immutable filing responses, follow pagination, respect 429 and Retry-After, log retrieval time, and verify the provider's current production and redistribution terms.

Step 5: reconcile every filing version

Compare normalized row count and reported-value total with the source summary, keep unresolved rows, distinguish notice and combination reports, and apply amendments idempotently. A successful HTTP response is not a completeness check.

Step 6: build a point-in-time publication layer

Expose only filings public by the requested analysis time. Return period, filed and amendment timestamps, source accession, mapping version, and known omissions with each portfolio or holder result.

How QVeris helps find 13F data capabilities

QVeris helps agents discover and inspect callable financial-data capabilities. For a 13F task, define whether the job is filing retrieval, manager portfolio, security holder lookup, or quarter comparison; identify whether the input is CIK, ticker, CUSIP, period, or accession; then inspect form coverage, amendment handling, pagination, source evidence, historical access, and provider terms before calling it.

  • Open the QVeris tool details to inspect the required inputs.
  • Use the broader institutional holdings API guide when the task is ownership research rather than a 13F-specific developer integration.
  • Verify provider coverage, pricing, licensing, and data accuracy against current documentation and the original SEC filing.

FAQ

Is there a free API for 13F filings?

Yes. The SEC provides public EDGAR filing data, and some vendors offer free plans or sandboxes that normalize Form 13F holdings. Check quotas, history, licensing, and whether holdings are parsed.

Does the SEC have a 13F API?

SEC data endpoints and quarterly Form 13F data sets provide public source material, but developers may still need to retrieve filing documents and normalize holdings records.

Is 13F data real time?

No. It is a quarterly disclosure filed after period end under the applicable deadline. A provider can parse a new filing quickly, but the positions still describe an earlier quarter-end.

Which fields should a 13F holdings API return?

Useful fields include manager name and CIK, issuer, CUSIP, shares, reported value, security class, put or call status, report period, filing date, accession number, and amendment status.

Can I download historical 13F holdings as JSON?

Some APIs expose historical quarters or bulk JSON/JSONL downloads. Confirm coverage dates, amendments, point-in-time availability, quotas, and license terms before relying on them.

Why can a 13F filing have no holdings table?

A notice report may identify other managers reporting the positions, while combination reports split reporting. Inspect form type and filing relationships before interpreting an empty table as zero holdings.

How do I verify a normalized 13F API?

Reconcile source accession, form type, row count, reported-value total, amendments, and unresolved identifiers against the SEC filing. Test both a holdings report and a notice or combination case.

Authoritative 13F references and related guides

Use the SEC sources to verify filing obligations, timing, and original records. Vendor free plans and limits can change, so confirm them in current provider documentation.