Skip to content

ir

The ir.* commands find investor-relations presentation links and read presentation or filing document text. Use this namespace when company materials outside structured filings are useful for research.

All examples use --output json so results are stable to parse in terminals, scripts, and automation workflows.

Discover IR and investor day presentations from SEC 8-K Exhibit 99 filings.

finance ir.presentations discovers IR and investor day presentations from SEC 8-K Exhibit 99 filings. It returns ok, data, error, and warnings in JSON output. The result payload includes symbol, presentations, count, source, sources_used, notes, warnings.

Use this command when you need to find investor presentations, investor-day decks, or earnings slide decks before extracting text from one candidate.

Behavior details: Scans recent 8-K filings for Exhibit 99 files with presentation or slides keywords. source=auto uses SEC first, then company IR fallback when SEC finds no candidates. source=all combines SEC and company IR candidates. Press releases and earnings releases are filtered unless a distinct deck/slides signal is present. confidence: high = strong presentation signal, medium = weaker or conflicting signal. kind: investor_day | earnings_presentation | ir_presentation | exhibit_99. Use ir.read url=URL to extract text from a candidate.

Terminal window
finance ir.presentations SYMBOL [limit=20 source=auto|sec|company_ir|all] [--output json]
ArgumentRequiredDefaultAccepted valuesDescription
symbolYesNoneStringTicker symbol to query, such as AAPL or NVDA.
sourceNoNoneauto, sec, company_ir, allProvider/source key accepted by this command.
limitNo20IntegerMaximum number of records returned.
Terminal window
finance ir.presentations IOT --output json

This output was generated with finance ir.presentations IOT --output json.

{
"ok": true,
"data": {
"symbol": "IOT",
"presentations": [
{
"title": "Investor Presentation of Q4 2026, PDF file, (opens in new window)",
"date": "2026",
"kind": "earnings_presentation",
"source": "company_ir",
"url": "https://s29.q4cdn.com/853855404/files/doc_financials/2026/q4/Q4-FY26-Investor-Presentation-3.pdf",
"page_url": "https://investors.samsara.com/",
"page_title": "Samsara Inc. - Investor Relations",
"company_name": "Samsara Inc.",
"symbol": "IOT",
"confidence": "high",
"why_matched": "IR page link fuzzy-matches 'investor presentation'",
"warnings": [
"document is hosted on an external CDN linked from the IR page"
]
}
],
"count": 1,
"source": "auto",
"sources_used": [
"sec_edgar",
"company_ir"
],
"notes": [
"SEC candidates are scored from Exhibit 99 description and filename keywords.",
"Company IR fallback is conservative and only crawls company/IR domains.",
"Press releases and earnings releases are filtered unless a distinct deck/slides signal is present.",
"Confidence 'high' = strong presentation signal; 'medium' = weaker or conflicting signal.",
"kind: investor_day | earnings_presentation | ir_presentation | exhibit_99"
],
"warnings": []
},
"error": null,
"warnings": []
}
FieldTypeDescription
okbooleanWhether the command completed successfully.
dataobject or nullCommand-specific result payload. It is null when ok is false.
errorstring or nullHuman-readable error message when ok is false; otherwise null.
warningsarrayNon-fatal warnings returned by the command.
data.countintegerNumber of records included in the adjacent result array.
data.notesarrayAdditional notes that affect interpretation.
data.notes[]stringAdditional notes that affect interpretation.
data.presentationsarrayInvestor-relations presentation records.
data.presentations[]objectInvestor-relations presentation records.
data.sourcestringProvider or source identifier for the returned data.
data.sources_usedarraySource families used to build the result.
data.sources_used[]stringSource families used to build the result.
data.symbolstringTicker symbol used by the command.
data.warningsarrayNon-fatal warnings returned by the command.
data.presentations[].company_namestringCompany name returned by the provider.
data.presentations[].confidencestringMatch confidence for the presentation candidate.
data.presentations[].datestringPresentation or filing date when available.
data.presentations[].kindstringPresentation or document kind.
data.presentations[].page_titlestringTitle of the linked page.
data.presentations[].page_urlstringSource page URL.
data.presentations[].sourcestringProvider or source identifier for the returned data.
data.presentations[].symbolstringCompany ticker associated with the presentation.
data.presentations[].titlestringPresentation title or link text.
data.presentations[].urlstringSource URL.
data.presentations[].warningsarrayNon-fatal warnings returned by the command.
data.presentations[].warnings[]stringNon-fatal warnings returned by the command.
data.presentations[].why_matchedstringReason a record matched the requested query.

Extract text from an IR presentation exhibit URL.

finance ir.read extracts text from an IR presentation exhibit URL. It returns ok, data, error, and warnings in JSON output. The result payload includes url, text, char_count, returned_chars, truncated, format, pages, warnings.

Use this command when you need to extract text from a presentation URL returned by finance ir.presentations or from a filing-hosted document URL.

Behavior details: HTML exhibits/pages are fetched and parsed to plain text. PDF extraction uses pypdf and returns page-level text when possible. ocr=auto or ocr=force uses the default PaddleOCR/PP-StructureV3 stack. Pass the url from ir.presentations output.

Terminal window
finance ir.read url=URL [max_chars=12000 ocr=off|auto|force] [--output json]
ArgumentRequiredDefaultAccepted valuesDescription
urlYesNoneURLDocument URL to fetch and read.
max_charsNo12000IntegerMaximum text characters returned.
ocrNoNoneoff, auto, forceOCR mode for PDFs or image-heavy documents. Use off for text-native documents, auto to fallback when text extraction is weak, and force to run OCR directly.
Terminal window
finance ir.read url=https://www.sec.gov/Archives/edgar/data/320193/000032019326000013/aapl-20260328.htm ocr=off max_chars=800 --output json

This output was generated with finance ir.read url=https://www.sec.gov/Archives/edgar/data/320193/000032019326000013/aapl-20260328.htm ocr=off max_chars=800 --output json.

{
"ok": true,
"data": {
"url": "https://www.sec.gov/Archives/edgar/data/320193/000032019326000013/aapl-20260328.htm",
"text": "aapl-20260328\nfalse\n2026\nQ2\n0000320193\n--09-26\nP1Y\nP1Y\nP1Y\nP1Y\nhttp://fasb.org/us-gaap/2025#LongTermDebtCurrent http://fasb.org/us-gaap/2025#LongTermDebtNoncurrent\nhttp://fasb.org/us-gaap/2025#LongTermDebtCurrent http://fasb.org/us-gaap/2025#LongTermDebtNoncurrent\nP329D\nxbrli:shares\niso4217:USD\niso4217:USD\nxbrli:shares\nxbrli:pure\naapl:Customer\naapl:Vendor\n0000320193\n2025-09-28\n2026-03-28\n0000320193\nus-gaap:CommonStockMember\n2025-09-28\n2026-03-28\n0000320193\naapl:A1.625NotesDue2026Member\n2025-09-28\n2026-03-28\n0000320193\naapl:A2.000NotesDue2027Member\n2025-09-28\n2026-03-28\n0000320193\naapl:A1.375NotesDue2029Member\n2025-09-28\n2026-03-28\n0000320193\naapl:A3.050NotesDue2029Member\n2025-09-28\n2026-03-28\n0000320193\naapl:A0.500Notesdue2031Member\n2025-09-28\n2026-03-28\n0000320193\naapl:A3.600NotesDue2042M",
"char_count": 98063,
"returned_chars": 800,
"truncated": true,
"format": "html",
"pages": [
{
"page": 1,
"text": "aapl-20260328\nfalse\n2026\nQ2\n0000320193\n--09-26\nP1Y\nP1Y\nP1Y\nP1Y\nhttp://fasb.org/us-gaap/2025#LongTermDebtCurrent http://fasb.org/us-gaap/2025#LongTermDebtNoncurrent\nhttp://fasb.org/us-gaap/2025#LongTermDebtCurrent http://fasb.org/us-gaap/2025#LongTermDebtNoncurrent\nP329D\nxbrli:shares\niso4217:USD\niso4217:USD\nxbrli:shares\nxbrli:pure\naapl:Customer\naapl:Vendor\n0000320193\n2025-09-28\n2026-03-28\n0000320193\nus-gaap:CommonStockMember\n2025-09-28\n2026-03-28\n0000320193\naapl:A1.625NotesDue2026Member\n2025-09-28\n2026-03-28\n0000320193\naapl:A2.000NotesDue2027Member\n2025-09-28\n2026-03-28\n0000320193\naapl:A1.375NotesDue2029Member\n2025-09-28\n2026-03-28\n0000320193\naapl:A3.050NotesDue2029Member\n2025-09-28\n2026-03-28\n0000320193\naapl:A0.500Notesdue2031Member\n2025-09-28\n2026-03-28\n0000320193\naapl:A3.600NotesDue2042M",
"char_count": 98063,
"returned_chars": 800,
"truncated": true
}
],
"warnings": []
},
"error": null,
"warnings": []
}
FieldTypeDescription
okbooleanWhether the command completed successfully.
dataobject or nullCommand-specific result payload. It is null when ok is false.
errorstring or nullHuman-readable error message when ok is false; otherwise null.
warningsarrayNon-fatal warnings returned by the command.
data.char_countintegerTotal extracted character count before truncation.
data.formatstringDocument format used by the reader.
data.pagesarrayPage metadata or page count.
data.pages[]objectPage metadata or page count.
data.returned_charsintegerCharacters included in this response.
data.textstringExtracted document text after truncation.
data.truncatedbooleanWhether the command truncated the result.
data.urlstringSource URL.
data.warningsarrayNon-fatal warnings returned by the command.
data.pages[].char_countintegerTotal extracted character count before truncation.
data.pages[].pageintegerPage number when available.
data.pages[].returned_charsintegerCharacters included in this response.
data.pages[].textstringExtracted text for that page or page-like chunk.
data.pages[].truncatedbooleanWhether the command truncated the result.