Skip to main content
Press ⌘K to search

Filings & documents

List, search, and read a company’s SEC filings and transcripts, serve an image stored inside one of them, plus Reg D private placements. Full-text search blends semantic (embedding) and keyword matching over the whole SEC corpus, and every document is line-numbered so you can locate and quote exact passages.

`/v1/stocks/

Lists a stock’s SEC filings and earnings-call transcripts, newest first, each with the document id, type, filing date, and line count used by the reader endpoints below. Investor-relations news items are excluded from the unfiltered list (they are news, not filings) — request them explicitly with documentType=IrNews.

Parameters: {ticker} (path) · optional documentType (value like TenK or form label like 10-K; an unknown value returns a 400 listing every valid value, including EarningsCallTranscript and IrNews), startDate, endDate (yyyy-MM-dd) · limit, offset (paging).

curl "https://api.equibles.com/v1/stocks/NVDA/filings?limit=2" \
  -H "Authorization: Bearer eq_your_api_key"
import requests
r = requests.get(
    "https://api.equibles.com/v1/stocks/NVDA/filings?limit=2",
    headers={"Authorization": "Bearer eq_your_api_key"},
)
print(r.json())
const res = await fetch("https://api.equibles.com/v1/stocks/NVDA/filings?limit=2", {
  headers: { Authorization: "Bearer eq_your_api_key" },
});
console.log(await res.json());
{
  "data": [
    {
      "id": "bd5d7724-a2df-4b0a-9868-c5a4d918bfe1",
      "documentType": "EightK",
      "documentTypeName": "8-K",
      "filedDate": "2026-07-02",
      "reportingForDate": "2026-06-28",
      "lineCount": 83
    },
    {
      "id": "8524e376-1abc-4317-af50-55c1603cc2a7",
      "documentType": "EightK",
      "documentTypeName": "8-K",
      "filedDate": "2026-06-30",
      "reportingForDate": "2026-06-24",
      "lineCount": 193
    }
  ],
  "meta": { "limit": 2, "offset": 0, "count": 2, "hasMore": true }
}

/v1/filings/search

Runs a hybrid keyword + semantic search across every company’s filings and transcripts, returning the best-matching passages; add excludeTickers or maxResultsPerCompany to shape discovery-style queries. Each excerpt carries a url: a portal deep link that opens the filing on equibles.com and scrolls straight to the highlighted passage (null when the document has no resolvable ticker). When too few passages match every query word, the search automatically broadens to match any of the words — precise matches keep their rank and broader hits only fill the remainder, so short natural-language phrases work, though concise filing-phrased terms (data center revenue) still rank best.

Parameters: query (required) · optional documentType, startDate, endDate · limit · optional excludeTickers (up to 25 bounded ASCII symbols), maxResultsPerCompany. This search is not paged — there is no offset; raise limit for more passages.

curl "https://api.equibles.com/v1/filings/search?query=data%20center%20revenue&limit=2" \
  -H "Authorization: Bearer eq_your_api_key"
import requests
r = requests.get(
    "https://api.equibles.com/v1/filings/search?query=data%20center%20revenue&limit=2",
    headers={"Authorization": "Bearer eq_your_api_key"},
)
print(r.json())
const res = await fetch("https://api.equibles.com/v1/filings/search?query=data%20center%20revenue&limit=2", {
  headers: { Authorization: "Bearer eq_your_api_key" },
});
console.log(await res.json());
{
  "limit": 2,
  "count": 2,
  "data": [
    {
      "documentId": "aec9b1b4-f2d0-45fc-b8e6-85e37cdf36f3",
      "ticker": "RIOT",
      "companyName": "Riot Platforms, Inc.",
      "documentType": "TenK",
      "documentTypeName": "10-K",
      "filedDate": "2024-02-23",
      "chunkIndex": 41,
      "startLineNumber": 1197,
      "text": ", investors, and our board of directors to evaluate and compare our operating results, including our operating efficiencies, from period-to-period by making such adjustments. We have allocated the benefit of the power sales to our Bitcoin Mining and Data Center Hosting segments based on their …",
      "url": "https://equibles.com/stocks/riot/documents/aec9b1b4-f2d0-45fc-b8e6-85e37cdf36f3#fromLine=1197&toLine=1197&citedText=%2C%20investors%2C%20and%20our%20board%20of%20directors%20to%20evaluate%20and%20compare%20our%20operating%20results%2C%20including%20our%20operating%20efficiencies%2C%20from%20period-to-period%20by%20making%20such%20adjustments.%20We%20have%20allocated%20the"
    },
    {
      "documentId": "dbf5862d-f9c2-4ee3-a237-a04a97e782c5",
      "ticker": "LTH",
      "companyName": "Life Time Group Holdings, Inc.",
      "documentType": "TenQ",
      "documentTypeName": "10-Q",
      "filedDate": "2023-10-31",
      "chunkIndex": 18,
      "startLineNumber": 698,
      "text": "| | | | Nine Months Ended | | | | | | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | | September 30, | | | | | September 30, | | | | | | | | 2023 | | 2022 | | | 2023 | | | 2022 | | | | | \\( in thousands, except for Average Center revenue per center membership data\\) | | …",
      "url": "https://equibles.com/stocks/lth/documents/dbf5862d-f9c2-4ee3-a237-a04a97e782c5#fromLine=698&toLine=698&citedText=%7C%20%7C%20%7C%20%7C%20Nine%20Months%20Ended%20%7C%20%7C%20%7C%20%7C%20%7C%20%7C%20%7C%20---%20%7C%20---%20%7C%20---%20%7C%20---%20%7C%20---%20%7C%20---%20%7C%20---%20%7C%20---%20%7C%20---%20%7C%20---%20%7C%20---%20%7C%20---%20%7C%20%7C%20%7C%20September%2030%2C%20%7C%20%7C%20%7C%20%7C%20%7C%20September%2030%2C%20%7C%20%7C%20%7C%20%7C%20%7C%20%7C%20%7C%20%7C%202023%20%7C%20%7C%202022%20%7C%20%7C%20%7C%202023%20%7C%20%7C"
    }
  ]
}

`/v1/stocks/

Runs the same hybrid keyword + semantic search but scoped to a single company’s filings and transcripts. Each excerpt carries the same url deep link as /v1/filings/search.

Parameters: {ticker} (path) · query (required) · optional documentType, startDate, endDate · limit. This search is not paged — there is no offset; raise limit for more passages.

curl "https://api.equibles.com/v1/stocks/NVDA/filings/search?query=gross%20margin&limit=2" \
  -H "Authorization: Bearer eq_your_api_key"
import requests
r = requests.get(
    "https://api.equibles.com/v1/stocks/NVDA/filings/search?query=gross%20margin&limit=2",
    headers={"Authorization": "Bearer eq_your_api_key"},
)
print(r.json())
const res = await fetch("https://api.equibles.com/v1/stocks/NVDA/filings/search?query=gross%20margin&limit=2", {
  headers: { Authorization: "Bearer eq_your_api_key" },
});
console.log(await res.json());
{
  "limit": 2,
  "count": 2,
  "data": [
    {
      "documentId": "dc96fb5e-db4a-475b-8f34-fffbc74d8851",
      "ticker": "NVDA",
      "companyName": "Nvidia Corp",
      "documentType": "TenQ",
      "documentTypeName": "10-Q",
      "filedDate": "2021-11-22",
      "chunkIndex": 28,
      "startLineNumber": 1117,
      "text": "total revenue for the third quarter and first nine months of fiscal years 2022 or 2021. Gross Margin Our overall gross margin increased to 65.2% and 64.7% for the third quarter and first nine months of fiscal year 2022, respectively, from 62.6% and 62.0% for the third quarter and first nine months …",
      "url": "https://equibles.com/stocks/nvda/documents/dc96fb5e-db4a-475b-8f34-fffbc74d8851#fromLine=1117&toLine=1117&citedText=total%20revenue%20for%20the%20third%20quarter%20and%20first%20nine%20months%20of%20fiscal%20years%202022%20or%202021.%20Gross%20Margin%20Our%20overall%20gross%20margin%20increased%20to%2065.2%25%20and%2064.7%25%20for%20the%20third%20quarter%20and%20first%20nine%20months"
    },
    {
      "documentId": "63b167a8-6704-460f-a5db-add2ef380bf1",
      "ticker": "NVDA",
      "companyName": "Nvidia Corp",
      "documentType": "EightK",
      "documentTypeName": "8-K",
      "filedDate": "2025-05-28",
      "chunkIndex": 10,
      "startLineNumber": 443,
      "text": "income | | | | | | Total pre-tax impact of non-GAAP adjustments and H20 excess inventory and purchase obligation charges | 6,351 | | | | Income tax impact of non-GAAP adjustments and H20 excess inventory and purchase obligation charges | \\(1,491\\) | | | Non-GAAP net income \\(as adjusted to exclude …",
      "url": "https://equibles.com/stocks/nvda/documents/63b167a8-6704-460f-a5db-add2ef380bf1#fromLine=443&toLine=443&citedText=income%20%7C%20%7C%20%7C%20%7C%20%7C%20%7C%20Total%20pre-tax%20impact%20of%20non-GAAP%20adjustments%20and%20H20%20excess%20inventory%20and%20purchase%20obligation%20charges%20%7C%206%2C351%20%7C%20%7C%20%7C%20%7C%20Income%20tax%20impact%20of%20non-GAAP%20adjustments%20and%20H20%20excess"
    }
  ]
}

`/v1/filings/

Runs the hybrid search within a single filing or transcript, ranking that document’s own chunks against the query. When too few excerpts match every query word, the search automatically broadens to match any of the words — precise matches keep their rank and broader hits only fill the remainder, so short natural-language phrases work here. Each excerpt carries the same url deep link as /v1/filings/search.

Parameters: {documentId} (path) · query (required) · limit. This search is not paged — there is no offset; raise limit for more excerpts.

curl "https://api.equibles.com/v1/filings/dac5371f-5fe7-4dbf-bd4e-4d4213f2e8cb/search?query=gross%20margin&limit=2" \
  -H "Authorization: Bearer eq_your_api_key"
import requests
r = requests.get(
    "https://api.equibles.com/v1/filings/dac5371f-5fe7-4dbf-bd4e-4d4213f2e8cb/search?query=gross%20margin&limit=2",
    headers={"Authorization": "Bearer eq_your_api_key"},
)
print(r.json())
const res = await fetch("https://api.equibles.com/v1/filings/dac5371f-5fe7-4dbf-bd4e-4d4213f2e8cb/search?query=gross%20margin&limit=2", {
  headers: { Authorization: "Bearer eq_your_api_key" },
});
console.log(await res.json());
{
  "limit": 2,
  "count": 2,
  "data": [
    {
      "documentId": "dac5371f-5fe7-4dbf-bd4e-4d4213f2e8cb",
      "ticker": "NVDA",
      "companyName": "Nvidia Corp",
      "documentType": "TenQ",
      "documentTypeName": "10-Q",
      "filedDate": "2026-05-20",
      "chunkIndex": 23,
      "startLineNumber": 1076,
      "text": "solutions. Graphics revenue – The year-over-year increase in the first quarter of fiscal year 2027 was driven by sales of our Blackwell architecture. Reportable segment operating income – The year-over-year increase in Compute & Networking segment operating income in the first quarter of fiscal …",
      "url": "https://equibles.com/stocks/nvda/documents/dac5371f-5fe7-4dbf-bd4e-4d4213f2e8cb#fromLine=1076&toLine=1076&citedText=solutions.%20Graphics%20revenue%20%E2%80%93%20The%20year-over-year%20increase%20in%20the%20first%20quarter%20of%20fiscal%20year%202027%20was%20driven%20by%20sales%20of%20our%20Blackwell%20architecture.%20Reportable%20segment%20operating%20income%20%E2%80%93%20The"
    },
    {
      "documentId": "dac5371f-5fe7-4dbf-bd4e-4d4213f2e8cb",
      "ticker": "NVDA",
      "companyName": "Nvidia Corp",
      "documentType": "TenQ",
      "documentTypeName": "10-Q",
      "filedDate": "2026-05-20",
      "chunkIndex": 21,
      "startLineNumber": 975,
      "text": "| | Operating income | | | $ | 44,299 | | $ | 21,638 | | 21 | % | 147 | % | | Net income | | | $ | 42,960 | | $ | 18,775 | | 36 | % | 211 | % | | Net income per diluted share | | | $ | 1.76 | | $ | 0.76 | | 36 | % | 214 | % | *All values are in US Dollars.* We specialize in markets where our …",
      "url": "https://equibles.com/stocks/nvda/documents/dac5371f-5fe7-4dbf-bd4e-4d4213f2e8cb#fromLine=975&toLine=975&citedText=%7C%20%7C%20Operating%20income%20%7C%20%7C%20%7C%20%24%20%7C%2044%2C299%20%7C%20%7C%20%24%20%7C%2021%2C638%20%7C%20%7C%2021%20%7C%20%25%20%7C%20147%20%7C%20%25%20%7C%20%7C%20Net%20income%20%7C%20%7C%20%7C%20%24%20%7C%2042%2C960%20%7C%20%7C%20%24%20%7C%2018%2C775%20%7C%20%7C%2036%20%7C%20%25%20%7C%20211%20%7C%20%25%20%7C%20%7C%20Net%20income%20per%20diluted%20share%20%7C%20%7C%20%7C%20%24%20%7C%201.76%20%7C%20%7C%20%24%20%7C"
    }
  ]
}

`/v1/filings/

Returns an exact, numbered range of text lines from one filing or transcript — the way to pull a passage verbatim after search points you to a line number (blank lines are preserved).

Parameters: {documentId} (path) · startLine, endLine (both required).

curl "https://api.equibles.com/v1/filings/dac5371f-5fe7-4dbf-bd4e-4d4213f2e8cb/lines?startLine=1&endLine=5" \
  -H "Authorization: Bearer eq_your_api_key"
import requests
r = requests.get(
    "https://api.equibles.com/v1/filings/dac5371f-5fe7-4dbf-bd4e-4d4213f2e8cb/lines?startLine=1&endLine=5",
    headers={"Authorization": "Bearer eq_your_api_key"},
)
print(r.json())
const res = await fetch("https://api.equibles.com/v1/filings/dac5371f-5fe7-4dbf-bd4e-4d4213f2e8cb/lines?startLine=1&endLine=5", {
  headers: { Authorization: "Bearer eq_your_api_key" },
});
console.log(await res.json());
{
  "documentId": "dac5371f-5fe7-4dbf-bd4e-4d4213f2e8cb",
  "ticker": "NVDA",
  "companyName": "Nvidia Corp",
  "documentType": "TenQ",
  "documentTypeName": "10-Q",
  "filedDate": "2026-05-20",
  "startLine": 1,
  "endLine": 5,
  "totalLines": 1622,
  "lines": [
    { "number": 1, "text": "### UNITED STATES" },
    { "number": 2, "text": "" },
    { "number": 3, "text": "### SECURITIES AND EXCHANGE COMMISSION" },
    { "number": 4, "text": "" },
    { "number": 5, "text": "### Washington, D.C. 20549" }
  ]
}

`/v1/filings/

Finds every exact, case-insensitive occurrence of a keyword within one filing, returning each match’s line number with the lines immediately before and after for context. Each match carries a url: a portal deep link that opens the filing and scrolls to the highlighted matching line (null when the line cannot anchor a citation). Typographic punctuation is matched interchangeably with ASCII (an ASCII world's finds the filing’s curly world’s). matchCount is the number of rows returned (bounded by limit); totalMatchingLines is the document-wide total, with hasMore signalling truncation (data here is trimmed to two rows).

Parameters: {documentId} (path) · keyword (required) · limit (default 20, max 500).

curl "https://api.equibles.com/v1/filings/dac5371f-5fe7-4dbf-bd4e-4d4213f2e8cb/keyword-search?keyword=revenue" \
  -H "Authorization: Bearer eq_your_api_key"
import requests
r = requests.get(
    "https://api.equibles.com/v1/filings/dac5371f-5fe7-4dbf-bd4e-4d4213f2e8cb/keyword-search?keyword=revenue",
    headers={"Authorization": "Bearer eq_your_api_key"},
)
print(r.json())
const res = await fetch("https://api.equibles.com/v1/filings/dac5371f-5fe7-4dbf-bd4e-4d4213f2e8cb/keyword-search?keyword=revenue", {
  headers: { Authorization: "Bearer eq_your_api_key" },
});
console.log(await res.json());
{
  "documentId": "dac5371f-5fe7-4dbf-bd4e-4d4213f2e8cb",
  "ticker": "NVDA",
  "companyName": "Nvidia Corp",
  "documentType": "TenQ",
  "documentTypeName": "10-Q",
  "filedDate": "2026-05-20",
  "keyword": "revenue",
  "matchCount": 20,
  "totalMatchingLines": 75,
  "hasMore": true,
  "totalLines": 1622,
  "data": [
    {
      "lineNumber": 123,
      "text": "| Revenue | $ | 81,615 | $ | 44,062 |",
      "contextBefore": "|  | Apr 26, 2026 |  | Apr 27, 2025 |  |",
      "contextAfter": "| Cost of revenue | 20,458 |  | 17,394 |  |",
      "url": "https://equibles.com/stocks/nvda/documents/dac5371f-5fe7-4dbf-bd4e-4d4213f2e8cb#fromLine=123&toLine=123&citedText=%7C%20Revenue%20%7C%20%24%20%7C%2081%2C615%20%7C%20%24%20%7C%2044%2C062%20%7C"
    },
    {
      "lineNumber": 124,
      "text": "| Cost of revenue | 20,458 |  | 17,394 |  |",
      "contextBefore": "| Revenue | $ | 81,615 | $ | 44,062 |",
      "contextAfter": "| Gross profit | 61,157 |  | 26,668 |  |",
      "url": "https://equibles.com/stocks/nvda/documents/dac5371f-5fe7-4dbf-bd4e-4d4213f2e8cb#fromLine=124&toLine=124&citedText=%7C%20Cost%20of%20revenue%20%7C%2020%2C458%20%7C%20%7C%2017%2C394%20%7C%20%7C"
    }
  ]
}

`/v1/filings/

Serves one image stored inside a filing exactly as filed — a company logo on an 8-K cover, a chart or figure in an exhibit, or a slide of an earnings deck that was filed as images. This is the one endpoint in the family that does not return JSON: the body is the raw image bytes with the stored Content-Type, and because a filing never changes the response is cached as immutable, so it can be linked or embedded directly rather than proxied through your own storage.

{name} is the image’s bare EDGAR filename inside that filing — not a path and not a URL — so it has to come from the filing rather than be guessed. For an earnings deck captured as an image slideshow, /v1/investor-events/{eventId}/slides hands you these exact paths, in deck order, in its imageUrls; for any other stored image the name is the src filename in the filing’s own as-filed HTML. A name the document does not carry is a 404 naming both the document and the name, never an empty image.

Parameters: {documentId} (path — the id from /v1/stocks/{ticker}/filings) · {name} (path — the image’s bare EDGAR filename). Takes no query parameters. The example is NVIDIA’s 8-K of 2026-05-20 (its Q1 FY2027 earnings release), whose cover logo is stored as nvdalogoa19a.jpg.

curl "https://api.equibles.com/v1/filings/9ab0a248-e65a-46ad-abc2-db37abbf4a22/assets/nvdalogoa19a.jpg" \
  -H "Authorization: Bearer eq_your_api_key" \
  -o nvdalogoa19a.jpg
import requests
r = requests.get(
    "https://api.equibles.com/v1/filings/9ab0a248-e65a-46ad-abc2-db37abbf4a22/assets/nvdalogoa19a.jpg",
    headers={"Authorization": "Bearer eq_your_api_key"},
)
with open("nvdalogoa19a.jpg", "wb") as f:
    f.write(r.content)
import { writeFile } from "node:fs/promises";
const res = await fetch("https://api.equibles.com/v1/filings/9ab0a248-e65a-46ad-abc2-db37abbf4a22/assets/nvdalogoa19a.jpg", {
  headers: { Authorization: "Bearer eq_your_api_key" },
});
await writeFile("nvdalogoa19a.jpg", Buffer.from(await res.arrayBuffer()));

The response is the file itself, so there is no JSON body to show — these are the headers that come back with those 13,441 bytes of JPEG:

HTTP/1.1 200 OK
Content-Type: image/jpeg
Content-Length: 13441
Cache-Control: public, max-age=31536000, immutable
X-Content-Type-Options: nosniff

`/v1/stocks/

Lists a company’s Reg D private placements (Form D) — offering and sold amounts, investor counts, and the claimed federal exemption; the example uses Robinhood (HOOD) because most large listed issuers have no Form D filings. A "D/A" amendment row (isAmendment: true) restates a prior notice for the same offering — issuers re-amend annually — so summing amounts across rows overcounts capital raised: group rows by dateOfFirstSale and keep only the latest filing per offering (both HOOD rows below share dateOfFirstSale 2020-08-13 — the amendment supersedes the original).

Parameters: {ticker} (path) · optional startDate, endDate (yyyy-MM-dd filing dates) · limit, offset (paging).

curl "https://api.equibles.com/v1/stocks/HOOD/exempt-offerings?limit=2" \
  -H "Authorization: Bearer eq_your_api_key"
import requests
r = requests.get(
    "https://api.equibles.com/v1/stocks/HOOD/exempt-offerings?limit=2",
    headers={"Authorization": "Bearer eq_your_api_key"},
)
print(r.json())
const res = await fetch("https://api.equibles.com/v1/stocks/HOOD/exempt-offerings?limit=2", {
  headers: { Authorization: "Bearer eq_your_api_key" },
});
console.log(await res.json());
{
  "data": [
    {
      "filedDate": "2020-10-01",
      "accessionNumber": "0001783879-20-000004",
      "isAmendment": true,
      "dateOfFirstSale": "2020-08-13",
      "industryGroup": "Other Technology",
      "totalOfferingAmount": 688300000,
      "isOfferingAmountIndefinite": false,
      "totalAmountSold": 668299844,
      "totalRemaining": 20000156,
      "isRemainingIndefinite": false,
      "minimumInvestmentAccepted": 0,
      "totalInvestors": 26,
      "federalExemptions": "06b"
    },
    {
      "filedDate": "2020-08-21",
      "accessionNumber": "0001783879-20-000003",
      "isAmendment": false,
      "dateOfFirstSale": "2020-08-13",
      "industryGroup": "Other Technology",
      "totalOfferingAmount": 300000000,
      "isOfferingAmountIndefinite": false,
      "totalAmountSold": 208299974,
      "totalRemaining": 91700026,
      "isRemainingIndefinite": false,
      "minimumInvestmentAccepted": 0,
      "totalInvestors": 2,
      "federalExemptions": "06b"
    }
  ],
  "meta": { "limit": 2, "offset": 0, "count": 2, "hasMore": true }
}

Try it with a real key

Every example on this page runs against the live API. A free account includes an API key and MCP access — set up in under a minute.

Get your free API key