GET/filings/text

Read SEC filing section text — chunks, full sections, or tables — straight from the source filing. The verify-to-source primitive behind the MCP get_filing_section tool.

Example Request

https://api.metricduck.com/api/v1/filings/text?ticker=AAPL&section_id=risk_factors&row_type=section&limit=3

Query Parameters

ParameterTypeDescription
ticker
stringCompany ticker (e.g., AAPL). Provide ticker or cik.
cik
string10-digit CIK (alternative to ticker).
accession_number
stringSpecific filing (e.g., 0000320193-26-000013). Omit for the latest filing.
form_type
stringSEC form type (10-K, 10-Q, 8-K, …).
section_id
stringSection filter, e.g. risk_factors, mda_full, footnote_revenue (IDs come from /filings/sections/summary).
row_type
string"chunk" (512–1024-token passages), "section" (full sections), or "table" (structured tables as JSON).
keyword
stringReturn only chunks containing this text (case-insensitive; 2–200 chars).
vantage_date
stringAs-of date (YYYY-MM-DD): resolve the latest filing filed on or before this date (point-in-time).
from_date / to_date
stringFiling-date window (YYYY-MM-DD). Defaults to the last 2 years.
limit
integerMax results (1–1000).
offset
integerPagination offset.

Response

Returns matched filing-text rows plus the served-filing vintage. Each row carries its section id, source accession, and text.

Fields

FieldTypeDescription
total_results
integer
Number of rows matched.
results
array
Filing text rows (see fields below).
results[].section_id
stringnullable
Canonical section id (e.g. risk_factors).
results[].section_display_name
stringnullable
Human-readable section name.
results[].content_text
stringnullable
Section/chunk text (with context prefix). Null for table rows.
results[].accession_number
string
Source filing accession.
results[].form_type
string
Form type of the source filing.
results[].filing_date
string
Filing date (YYYY-MM-DD).
served_filing
objectnullable
The filing actually served (accession, filing_date, form_type) — the vintage of what you received.
keyword_matched
booleannullable
True when the keyword matched ≥1 row; False when the service fell back to the full section.

Example Response

{
  "total_results": 3,
  "results": [
    {
      "chunk_id": "0000320193-26-000013:risk_factors:0",
      "ticker": "AAPL",
      "accession_number": "0000320193-26-000013",
      "form_type": "10-Q",
      "filing_date": "2026-05-01",
      "fiscal_year": 2026,
      "fiscal_period": "Q2",
      "section_id": "risk_factors",
      "section_display_name": "Risk Factors",
      "content_text": "The Company's business, results of operations ..."
    }
  ],
  "served_filing": {
    "accession_number": "0000320193-26-000013",
    "filing_date": "2026-05-01",
    "form_type": "10-Q"
  },
  "keyword_matched": null,
  "execution_time_ms": 142.0
}

Code Examples

cURL

curl "https://api.metricduck.com/api/v1/filings/text?ticker=AAPL&section_id=risk_factors&row_type=section&limit=3" \
  -H "Authorization: Bearer fda_your_api_key"

Python

import requests

BASE_URL = "https://api.metricduck.com/api/v1"

# Read Apple's latest Risk Factors section
resp = requests.get(
    f"{BASE_URL}/filings/text",
    params={"ticker": "AAPL", "section_id": "risk_factors", "row_type": "section", "limit": 3},
    headers={"Authorization": "Bearer fda_your_api_key"},  # optional — raises guest caps
)
data = resp.json()
for row in data["results"]:
    print(row["section_display_name"], "→", row["content_text"][:120])

Notes

  • - Public — callable without a key (guest per-request caps); a free key raises the caps and the daily quota.
  • - row_type: chunk (retrieval-sized passages), section (full narrative), table (structured JSON).
  • - Always pass ticker (or a narrow date range) to keep scan cost low.
  • - Use vantage_date for point-in-time reads (the filing as it stood on a past date).
  • - Discover valid section_id values via /filings/sections/summary.