List, search, and read 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. The SEC filings MCP server page covers the same corpus from Claude, ChatGPT or any MCP client.
/v1/stocks/
List captured CNMV interim financial reports for an exact verified listing and issuer. Supported coverage is the 2019 general-company, bank and insurance taxonomies; the result does not claim complete history or all report formats. Reports retain their source periods and publication dates. The existing financial-report catalogue endpoint below remains the French DILA catalogue.
Parameters: exchange (MIC), ticker, offset (0–1000000, default 0), limit (1–100, default 20).
Returns: reports with each report's id, exact periodStart and periodEnd, publishedOn, sourceUrl, originalSha256, taxonomySchemaUrl, factCount and capturedAt; total, offset, limit, hasMore and coverage describe the returned inventory. An empty list is a coverage gap, not evidence that the authority has no reports.
curl "https://api.equibles.com/v1/stocks/xmad/tub/financial-reports/native?limit=1" \
-H "Authorization: Bearer $EQUIBLES_API_KEY"import os, requests
response = requests.get("https://api.equibles.com/v1/stocks/xmad/tub/financial-reports/native?limit=1", headers={"Authorization": f"Bearer {os.environ['EQUIBLES_API_KEY']}"})
response.raise_for_status()
print(response.json())const response = await fetch("https://api.equibles.com/v1/stocks/xmad/tub/financial-reports/native?limit=1", {
headers: { Authorization: `Bearer ${process.env.EQUIBLES_API_KEY}` }
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
console.log(await response.json());Response (coverage and attribution fields omitted):
{
"total": 3,
"offset": 0,
"limit": 1,
"reports": [
{
"id": "5ee5fcb3-0a59-4bcb-8fe9-6de4fd4985d8",
"periodStart": "2026-01-01",
"periodEnd": "2026-06-30",
"publishedOn": "2026-07-24",
"sourceUrl": "https://www.cnmv.es/webservices/verdocumento/ver?e=yP7Zp6FO6DILpqIhm9Arks91t3Nb2RqEdEj6lAPnuJ62FGB2bQQQoGWeusV07h53",
"originalSha256": "A2205D7BF08BC380BB85ED30FEF8FFB297F9971E291676AEA01D5FAD6F97E58F",
"taxonomySchemaUrl": "http://www.cnmv.es/xbrl/ipp/ge/2019-01-01/ipp_ge_2019-01-01.xsd",
"factCount": 827,
"capturedAt": "2026-09-23T22:51:45.568329Z"
}
],
"hasMore": true
}
/v1/stocks/
Read a report ID returned by the native report list. The same exact listing and issuer must own the report; an unrelated, superseded or identity-ambiguous report returns 404. Reads use retained snapshots and do not fetch the authority on demand.
Parameters: exchange (MIC), ticker, reportId, offset (0–1000000, default 0), limit (1–200, default 100).
Returns: report provenance and a facts page in retained source order, with offset, limit, hasMore and coverage. Every occurrence preserves its namespace, source tag and label, context ID, exact dates, isInstant, unit, nullable value, decimals or precision, dimensions and authority statement roles. Numeric values are unscaled amounts; decimals describe precision, not a multiplier. Null is not zero. Individual and consolidated figures, comparative dates and duplicate reported occurrences remain separate. Use hasMore and the next offset to read the complete retained report; a report is not a set of canonical comparable accounting aliases.
curl "https://api.equibles.com/v1/stocks/xmad/tub/financial-reports/native/5ee5fcb3-0a59-4bcb-8fe9-6de4fd4985d8?offset=0&limit=2" \
-H "Authorization: Bearer $EQUIBLES_API_KEY"import os, requests
response = requests.get("https://api.equibles.com/v1/stocks/xmad/tub/financial-reports/native/5ee5fcb3-0a59-4bcb-8fe9-6de4fd4985d8?offset=0&limit=2", headers={"Authorization": f"Bearer {os.environ['EQUIBLES_API_KEY']}"})
response.raise_for_status()
print(response.json())const response = await fetch("https://api.equibles.com/v1/stocks/xmad/tub/financial-reports/native/5ee5fcb3-0a59-4bcb-8fe9-6de4fd4985d8?offset=0&limit=2", {
headers: { Authorization: `Bearer ${process.env.EQUIBLES_API_KEY}` }
});
if (!response.ok) throw new Error(`HTTP ${response.status}`);
console.log(await response.json());Response (coverage and attribution fields omitted):
{
"report": {
"id": "5ee5fcb3-0a59-4bcb-8fe9-6de4fd4985d8",
"periodStart": "2026-01-01",
"periodEnd": "2026-06-30",
"publishedOn": "2026-07-24",
"sourceUrl": "https://www.cnmv.es/webservices/verdocumento/ver?e=yP7Zp6FO6DILpqIhm9Arks91t3Nb2RqEdEj6lAPnuJ62FGB2bQQQoGWeusV07h53",
"originalSha256": "A2205D7BF08BC380BB85ED30FEF8FFB297F9971E291676AEA01D5FAD6F97E58F",
"taxonomySchemaUrl": "http://www.cnmv.es/xbrl/ipp/ge/2019-01-01/ipp_ge_2019-01-01.xsd",
"factCount": 827,
"capturedAt": "2026-09-23T22:51:45.568329Z"
},
"offset": 0,
"limit": 2,
"facts": [
{
"namespace": "http://www.cnmv.es/xbrl/ipp/ge/2019-01-01",
"tag": "I0040",
"label": "A) ACTIVO NO CORRIENTE",
"contextId": "Icur_PeriodoActualBalanceMiembro",
"periodStart": "2026-06-30",
"periodEnd": "2026-06-30",
"isInstant": true,
"unit": "{http://www.xbrl.org/2003/iso4217}EUR",
"value": 638744000.0,
"decimals": "-3",
"precision": null,
"dimensions": "{\"{http://www.cnmv.es/xbrl/ipp/ge/dim/2019-01-01}PeriodoBalanceEje\":\"{http://www.cnmv.es/xbrl/ipp/ge/dim/2019-01-01}PeriodoActualMiembro\"}",
"statements": [
"Capítulo IV - 1. Balance Individual"
]
},
{
"namespace": "http://www.cnmv.es/xbrl/ipp/ge/2019-01-01",
"tag": "I0040",
"label": "A) ACTIVO NO CORRIENTE",
"contextId": "Ipre_PeriodoCierreAnteriorBalanceMiembro",
"periodStart": "2025-12-31",
"periodEnd": "2025-12-31",
"isInstant": true,
"unit": "{http://www.xbrl.org/2003/iso4217}EUR",
"value": 638333000.0,
"decimals": "-3",
"precision": null,
"dimensions": "{\"{http://www.cnmv.es/xbrl/ipp/ge/dim/2019-01-01}PeriodoBalanceEje\":\"{http://www.cnmv.es/xbrl/ipp/ge/dim/2019-01-01}PeriodoCierreAnteriorMiembro\"}",
"statements": [
"Capítulo IV - 1. Balance Individual"
]
}
],
"hasMore": true
}
/v1/stocks/
Lists official annual, half-year and quarterly financial-report publication attachments from France's DILA / AMF archive, matched to the verified issuer LEI or security ISIN. These are original-source download links, not extracted financial figures. One publication ID can carry multiple PDF/ZIP attachments, which are counted separately. Publication dates are not reporting periods; revision statuses and related references are source-stated and do not identify a single current report.
Parameters: exchange and ticker (path); limit (default 20, allowed 1–100). Requires the normal API key and shares the REST/MCP quota.
curl "https://api.equibles.com/v1/stocks/xpar/tff/financial-reports?limit=20" \
-H "Authorization: Bearer eq_your_api_key"import requests
response = requests.get(
"https://api.equibles.com/v1/stocks/xpar/tff/financial-reports",
params={"limit": 20},
headers={"Authorization": "Bearer eq_your_api_key"},
)
print(response.json())const response = await fetch("https://api.equibles.com/v1/stocks/xpar/tff/financial-reports?limit=20", {
headers: { Authorization: "Bearer eq_your_api_key" },
});
console.log(await response.json());Trimmed from the isolated September 21, 2026 source rehearsal:
{
"source": "fr-dila-financial-reports",
"sourceName": "DILA / AMF — info-financière",
"sourceUrl": "https://www.info-financiere.gouv.fr/",
"coverageStatus": "available",
"issuerLei": "969500N6BAT2PU986341",
"isin": "FR0013295789",
"capturedPublicationMonths": 4,
"firstCapturedPublicationMonth": "2026-06-01",
"lastCapturedPublicationMonth": "2026-09-01",
"totalReports": 1,
"reports": [{
"sourceRecordId": "083041_20260831",
"issuerLei": "969500N6BAT2PU986341",
"isin": "FR0013295789",
"issuerName": "TONNELLERIE FRANCOIS FRERES",
"title": "RAPPORT FINANCIER ANNUEL 25/26 TFF GROUP",
"reportType": "Annual financial and audit report",
"categoryCode": "003000",
"publishedAt": "2026-08-31T16:00:00Z",
"language": "Français",
"revisionStatus": "NEW",
"relatedReference": null,
"downloadUrl": "https://fr.ftp.opendatasoft.com/datadila/INFOFI/ECO/2026/08/FCECO083041_20260831.zip"
}]
}
The full response also includes coverage, checkedAt and isStale. checkedAt is the oldest captured-month check; any captured month overdue for its six-hour current/previous-month or thirty-day historical refresh makes isStale true. Captured months can have gaps; the current month is captured only through its check cutoff. unresolved_identity, not_captured and no_matching_reports are distinct coverage states, never a claim that the issuer publishes no reports.
/v1/filings
Lists stored SEC filings and earnings-call transcripts newest first across the market. Add ticker for one company, or omit it for an event-driven feed. Exact itemNumber filtering makes SEC current-report events such as Item 2.02 results or Item 5.02 executive changes directly queryable. Investor-relations news and European ESEF reports are excluded unless requested explicitly with documentType=IrNews, documentType=EsefAnnualReport or documentType=EsefReport. The general ESEF type does not imply an annual period.
Parameters: optional ticker; documentType (value such as EightK or form label such as 8-K); itemNumber (exact SEC item such as 2.02); startDate, endDate (yyyy-MM-dd filing dates); limit (default 10, max 500); offset (max 2,000).
curl "https://api.equibles.com/v1/filings?documentType=EightK&itemNumber=2.02&limit=3" \
-H "Authorization: Bearer eq_your_api_key"import requests
r = requests.get(
"https://api.equibles.com/v1/filings",
params={"documentType": "EightK", "itemNumber": "2.02", "limit": 3},
headers={"Authorization": "Bearer eq_your_api_key"},
)
print(r.json())const params = new URLSearchParams({ documentType: "EightK", itemNumber: "2.02", limit: "3" });
const res = await fetch(`https://api.equibles.com/v1/filings?${params}`, {
headers: { Authorization: "Bearer eq_your_api_key" },
});
console.log(await res.json());{
"data": [
{ "id": "fe397a7c-cd5a-45b1-b67d-b77cd3af7dc5", "ticker": "GLTK", "companyName": "GlobalTech Corp", "documentType": "EightK", "documentTypeName": "8-K", "filedDate": "2026-08-28", "reportingForDate": "2026-08-28", "itemNumbers": ["2.02", "9.01"], "lineCount": 180 },
{ "id": "329f494d-db4c-4b37-b3e0-3eda4fcbdbbe", "ticker": "IBIO", "companyName": "iBio, Inc.", "documentType": "EightK", "documentTypeName": "8-K", "filedDate": "2026-08-28", "reportingForDate": "2026-08-28", "itemNumbers": ["2.02", "9.01"], "lineCount": 326 },
{ "id": "fa2bbfe2-ef62-42df-857f-c0635381d2a9", "ticker": "ESTC", "companyName": "Elastic N.V.", "documentType": "EightK", "documentTypeName": "8-K", "filedDate": "2026-08-27", "reportingForDate": "2026-08-27", "itemNumbers": ["2.02", "9.01"], "lineCount": 595 }
],
"meta": { "limit": 3, "offset": 0, "count": 3, "hasMore": true }
}
`/v1/stocks/
Compatibility route for the same filing list scoped to one stock or ETF ticker. For an ETF it returns the linked SEC registrant's filings because forms such as NPORT-P and N-CEN are filed by the trust/registrant, not by the exchange listing; the response keeps the requested ticker for navigation. It returns the same fields, filters, ordering, and pagination as /v1/filings?ticker={ticker}.
Parameters: {ticker} (path) · optional documentType, itemNumber, startDate, endDate (yyyy-MM-dd) · limit, offset (paging).
curl "https://api.equibles.com/v1/stocks/NVDA/filings?limit=3" \
-H "Authorization: Bearer eq_your_api_key"import requests
r = requests.get(
"https://api.equibles.com/v1/stocks/NVDA/filings?limit=3",
headers={"Authorization": "Bearer eq_your_api_key"},
)
print(r.json())const res = await fetch("https://api.equibles.com/v1/stocks/NVDA/filings?limit=3", {
headers: { Authorization: "Bearer eq_your_api_key" },
});
console.log(await res.json());{
"data": [
{
"id": "b317696d-c12f-41fc-adce-4ac6be16c072",
"ticker": "NVDA",
"companyName": "Nvidia Corp",
"documentType": "TenQ",
"documentTypeName": "10-Q",
"filedDate": "2026-08-26",
"reportingForDate": "2026-07-26",
"itemNumbers": [],
"lineCount": 2266
},
{
"id": "4696883f-618a-4289-8774-197b667ccb5c",
"ticker": "NVDA",
"companyName": "Nvidia Corp",
"documentType": "EarningsCallTranscript",
"documentTypeName": "Earnings Call",
"filedDate": "2026-08-26",
"reportingForDate": "2026-07-31",
"itemNumbers": [],
"lineCount": 135
},
{
"id": "0a3857e9-00a6-4fdb-91fb-311b70af3f4a",
"ticker": "NVDA",
"companyName": "Nvidia Corp",
"documentType": "EightK",
"documentTypeName": "8-K",
"filedDate": "2026-08-26",
"reportingForDate": "2026-08-26",
"itemNumbers": ["2.02", "9.01"],
"lineCount": 691
}
],
"meta": { "limit": 3, "offset": 0, "count": 3, "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.jpgimport 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 }
}