DATA API REFERENCE

Data API

REST endpoints for ByteTrader's market data: offerings and dilution, insider intelligence, corporate filings, calendars, 13F ownership, fails-to-deliver and point-in-time fundamentals, plus the market events and trade signals. The same data is free inside the desktop app on every plan; calling it from your own code needs a PRO, Founder or Lifetime Data API key.

Authentication and plans

Every /api/v1 call needs a Data API key, passed as a Bearer token. Keys come with the PRO, Founder and Lifetime plans; create up to 10 on Account › Data API Keys. A key carries the data:read and stream:read scopes. Inside the desktop app the same data is free on every plan, with no key.

# Every call: your PRO key as a Bearer token
curl -H "Authorization: Bearer btk_..." \
  "https://api.byte-trader.com/api/v1/offerings?symbols=NXH&take=5"
  • Base URL: https://api.byte-trader.com/api/v1. HTTPS only.
  • Keep keys on your server. Don't put them in browser or mobile code, and revoke any key you think has leaked.
  • A key whose plan has no Data API gets 403 with "Your plan does not include Data API access. Upgrade to PRO."
  • Use of the data is covered by the Data API Terms: your own or your organization's internal use, no resale or redistribution.

Conventions and errors

Responses are JSON with camelCase field names. Instants are ISO-8601 UTC (2026-10-06T11:32:07Z); calendar dates are yyyy-MM-dd, and the calendar endpoints use US Eastern dates. Lists in the query string are comma-separated. Securities are identified by ticker and SEC CIK; CUSIPs are never returned.

Response envelopes

  • Offerings, insiders and filings: { data, nextCursor, schemaVersion, source }.
  • Calendars: { data, nextCursor, schemaVersion }, with source on every row.
  • Fails-to-deliver, 13F, text changes and point-in-time fundamentals: { schemaVersion, source, data, nextCursor, note }. The note explains how the dataset is built.
  • /events and /signals return a plain JSON array, with paging in the response headers.

Errors

// 400: a parameter is invalid (the message says which)
{ "error": "dateField must be 'knownAt' or 'filedAt'." }

// 403: the key's plan has no Data API, or the key lacks the data:read scope
{ "error": "Your plan does not include Data API access. Upgrade to PRO." }

// 429: over the per-key limit (see the Retry-After header)
{ "error": "Rate limit exceeded (120 requests/minute per API key)." }

// 503: that dataset is temporarily unavailable; retry (some endpoints send Retry-After: 60)
{ "error": "This dataset is temporarily unavailable. Retry shortly." }

Point in time (asOf and knownAt)

Every row records when its information became public, so a backtest can ask what was knowable at a given moment and never see a filing early.

  • knownAt (UTC) is the first instant the information was public. For an SEC filing that's its EDGAR acceptance time during EDGAR's dissemination hours (06:00 to 17:30 ET on business days, 22:00 ET for Forms 3, 4 and 5). A filing accepted after hours counts from 06:00 ET on the next business day, unless our live pipeline saw it on EDGAR sooner; then knownAt is that moment.
  • asOf (ISO-8601 UTC) returns only rows with knownAt ≤ asOf, and derived state as it stood then: a Form 144's executed shares, an offering's latest revision, what the earnings calendar said.
  • knownAtBasis on events says how knownAt was set: acceptance, dissemination (the next 06:00 ET release), observed (our pipeline saw it before the official release time), published (an agency's publication time) or detected (ByteTrader's own signals, from when they were emitted).
  • History loaded after the fact (back to 2016 for SEC filing events) carries backfill: true. It was never pushed live, and its knownAt is the filing's public time, not the load time.
  • Amendments (8-K/A, 4/A, 13D/A …) are their own rows, with amendment: true and revisionOf pointing at the original. revisions=latest keeps only the newest known version.
  • Other knownAt rules: SEC comment letters count from their public release, fails-to-deliver from the SEC's publication, 13F holdings from the filing date at 17:30 ET.

Rate limits

Each API key can make 120 requests a minute, with bursts up to the same number. Over the limit you get 429 with a Retry-After header. Bulk export also allows one export at a time per key.

  • Page with large take values (up to 1,000) instead of many small calls, and use bulk export for history.
  • A dataset that's briefly unavailable answers 503; retry after the Retry-After seconds when it's sent, or after a minute.

Sources and attribution

The data is built from US government sources, which are public domain: SEC EDGAR, the Bureau of Labor Statistics, the Bureau of Economic Analysis, the Census Bureau, the Federal Reserve (FOMC), the U.S. Treasury (FiscalData) and the Federal Register. The classifications, scores and signals are ByteTrader's own.

  • Every response or row has a source field, for example "SEC EDGAR" or "U.S. Bureau of Labor Statistics". Show it where you display the data, e.g. "Source: SEC EDGAR".
  • Filing rows link back to the original on sec.gov (secUrl or url).
  • Parsed fields carry a parserVersion, and offering terms a parseConfidence (high, partial, low). Values are as filed and can be wrong when the filing is; check the filing before acting on a number.
  • Nothing here is investment advice. Event types other than ByteTrader's trade signals are information, not signals.

Market events

Every market event ByteTrader publishes: SEC filings classified by type, and ByteTrader's own derived events. Without point-in-time parameters the endpoint behaves as it always has (windows and paging on detectedAt, no knownAt fields). Add asOf, or any other point-in-time parameter, to get the point-in-time mode: knownAt windows, history back to the backfill, linked amendments and up to 1,000 rows a page.

GET /api/v1/eventsPRO key
Parameters of GET /api/v1/events
ParameterTypeDescription
symbols string Comma-separated tickers, up to 100.
types string Comma-separated event types (up to 50 in point-in-time mode), e.g. ProposedSale,LateFiling. See the event-type list.
since / until ISO-8601 UTC Time window. Legacy mode windows on detectedAt; point-in-time mode on dateField (from / to are accepted as aliases).
take int Page size. Default 100; max 500, or 1,000 in point-in-time mode.
cursor string X-Next-Cursor from the previous page, unchanged. A legacy cursor isn't accepted in point-in-time mode, and the other way round.
order string desc (default, newest first) or asc (forward sync).
asOf ISO-8601 UTC Point in time: only events with knownAt ≤ asOf. Any of the parameters below also switches to point-in-time mode.
asOfBasis string knownAt (default) or detectedAt: also require that ByteTrader had published the event by asOf, i.e. what a live subscriber could have seen.
dateField string knownAt (default in point-in-time mode) or detectedAt: the column that since, until, order and cursor use.
cik string Comma-separated issuer CIKs, up to 100.
includeBackfill bool Include history loaded after the fact (backfill: true). Default true.
revisions string all (default) or latest: drop an original filing once an amendment to it is known.

Example request

curl -i -H "Authorization: Bearer btk_..." \
  "https://api.byte-trader.com/api/v1/events?symbols=ISRG&types=ProposedSale,InsiderTransaction&asOf=2026-09-16T00:00:00Z&take=50"

Example response

A real Form 144 (Intuitive Surgical, filed 2026-09-15); ids and the detection time are illustrative, and payloadJson is shortened.

// Headers: X-Has-More: false, X-As-Of: 2026-09-16T00:00:00Z
[
  {
    "marketEventId": 191734,
    "eventType": "ProposedSale",
    "symbolId": 2871,
    "symbol": "ISRG",
    "cik": "1035267",
    "source": "EDGAR",
    "severity": "Info",
    "title": "ISRG: FREDRIK WIDMAN (Officer) filed to sell 2,178 sh ($823.15K) (Form 144) under a 10b5-1 plan",
    "summary": "Notice of proposed sale of 2,178 sh of Common ($823.15K), 0.000617% of 353,278,038 sh outstanding. Broker: Morgan Stanley Smith Barney LLC Executive Financial Services (NASDAQ). Approximate sale date 2026-09-15. Acquired via Exercise of Stock Options. Rule 10b5-1 plan adopted 2026-06-08. Pending sale until a matching Form 4 or 2026-12-14. Source: SEC EDGAR.",
    "payloadJson": "{\"accession\":\"0001950047-26-009515\",\"formType\":\"144\",\"cik\":\"1035267\",\"symbol\":\"ISRG\",\"source\":\"SEC EDGAR\",\"knownAt\":\"2026-09-15T20:43:19Z\",\"knownAtBasis\":\"acceptance\",\"seller\":{\"cik\":\"1897970\",\"name\":\"FREDRIK WIDMAN\",\"relationships\":[\"Officer\"]},\"securityClass\":\"Common\",\"shares\":2178,\"aggregateMarketValue\":823153.32,\"is10b51\":true,\"planAdoptionDate\":\"2026-06-08\",\"status\":\"Pending\",\"pendingUntil\":\"2026-12-14T20:43:19Z\",\"executedShares\":0}",
    "accessionNumber": "0001950047-26-009515",
    "formType": "144",
    "itemNumbersCsv": null,
    "filedAt": "2026-09-15T20:43:19Z",
    "detectedAt": "2026-09-15T20:44:02Z",
    "dedupKey": "0001950047-26-009515:ProposedSale",
    "knownAt": "2026-09-15T20:43:19Z",
    "knownAtBasis": "acceptance",
    "backfill": false,
    "amendment": false,
    "revisionOf": null
  }
]

Event types are listed on the market data page. Structured detail for each type is in payloadJson, and every payload carries knownAt, accession, formType, cik and source. The live counterparts are the /marketevents SignalR hub and event webhooks.


Trade signals

ByteTrader's own derived long/short detections (event type TradeSignal), as a first-class endpoint. Parameters: symbols, from, to, take, cursor, order, plus the same point-in-time parameters as /events. Rows have the /events shape; direction, confidence and levels are in payloadJson.

GET /api/v1/signalsPRO key
# Trade signals for two symbols, as known at the open of 2026-10-01
curl -H "Authorization: Bearer btk_..." \
  "https://api.byte-trader.com/api/v1/signals?symbols=NVDA,AMD&asOf=2026-10-01T13:30:00Z&from=2026-09-01T00:00:00Z"

With asOf, a signal counts from when it was emitted (knownAtBasis: "detected"), so a backtest sees only signals that existed at that moment. Signals are model output, not advice, and past signals don't predict future results.


Bulk export (NDJSON)

Large history pulls as newline-delimited JSON: one JSON object per line, then one _meta line with the count, hasMore and the next cursor. If a body ends without its _meta line it was cut short; fetch that page again. Bulk export works with API keys only, one export at a time per key.

GET /api/v1/bulkPRO key

Lists the datasets:

{
  "data": [
    {
      "name": "events",
      "description": "Market events (SEC filings classified by ByteTrader, trade signals) with knownAt, 2016 onward.",
      "schemaVersion": 1,
      "source": "SEC EDGAR (filings); ByteTrader (classifications, signals)",
      "format": "ndjson",
      "path": "/api/v1/bulk/events"
    }
  ],
  "schemaVersion": 1
}
GET /api/v1/bulk/{dataset}PRO key
Parameters of GET /api/v1/bulk/{dataset}
ParameterTypeDescription
datasetrequired path events (the only dataset today; GET /api/v1/bulk lists them).
fromrequired ISO-8601 UTC Start of the window on dateField. Required unless you pass cursor.
to ISO-8601 UTC End of the window.
limit int Rows per page, 1 to 50,000. Default 10,000.
cursor string nextCursor from the previous page's _meta line, with the same filters.
types, symbols, cik string Comma-separated filters, as on /events.
asOf, asOfBasis, dateField, includeBackfill, revisions Point-in-time options, as on /events. Rows come oldest first (order=asc) unless you pass order=desc.

Example request

# Every Form 4 event since 2016, 10,000 rows per page, saved to a file
curl -s -H "Authorization: Bearer btk_..." \
  "https://api.byte-trader.com/api/v1/bulk/events?from=2016-01-01T00:00:00Z&types=InsiderTransaction&limit=10000" \
  -o insider-events-page1.ndjson

# The last line says whether there's more, and the cursor for the next page
tail -n 1 insider-events-page1.ndjson

Example response (application/x-ndjson)

Each line is an /events point-in-time row (values shortened here); the last line is _meta.

{"marketEventId":1204550,"eventType":"InsiderTransaction","symbolId":118,"symbol":"XMPL","cik":"1234567","source":"EDGAR","severity":"Notable","title":"…","summary":null,"payloadJson":"{…}","accessionNumber":"…","formType":"4","itemNumbersCsv":null,"filedAt":"2016-03-02T21:05:11Z","detectedAt":"2016-03-02T21:05:11Z","dedupKey":"…","knownAt":"2016-03-02T21:05:11Z","knownAtBasis":"acceptance","backfill":true,"amendment":false,"revisionOf":null}
{"_meta":{"dataset":"events","count":10000,"hasMore":true,"nextCursor":"cDF8a3w2MzU5MjU0OTUxMTAwMDAwMDB8MTIwNDU1MQ","schemaVersion":1,"source":"SEC EDGAR (filings); ByteTrader (classifications, signals)","generatedAt":"2026-10-24T18:00:00Z"}}

Offerings and dilution

Deal terms for every offering-family filing: 424B prospectuses, S-1, S-3 and F-1/F-3 registrations, SEC effectiveness notices, ATM programs, PIPEs and convertibles disclosed in 8-Ks, Form D private placements and S-8 plan registrations. Each row has the stage, size, price, discount to the last sale, warrants, lock-up and dilution as a percent of shares outstanding, with the full parsed terms in detail. Changed terms on a re-read add a revision.

GET /api/v1/offeringsPRO key
Parameters of GET /api/v1/offerings
ParameterTypeDescription
symbols string Comma-separated tickers, up to 100.
cik string Issuer CIK.
from / to ISO-8601 UTC Window on dateField.
dateField string knownAt (default) or filedAt.
stages string Filed, Effective, Priced, Closed.
types string Offering type: IPO, Underwritten, BestEfforts, RegisteredDirect, ATM, PIPE, ConvertibleNote, Shelf, Registration, Resale, Rights, DividendReinvestment, WarrantExercise, Debt, PrivatePlacement, EquityPlan, OtherIssuance, Unknown.
eventTypes string The event type the filing was published under: Offering, OfferingUpdate, IpoPricing, PrivatePlacement, EquityPlanRegistration, or the 8-K type for a raise disclosed in an 8-K.
forms string SEC form types, e.g. 424B5,S-3.
minDilutionPct decimal Only deals with dilutionPct at or above this value.
asOf ISO-8601 UTC Point in time: rows with knownAt ≤ asOf, each filing at its latest revision as of then.
detail bool Include the full parsed terms object (detail). Default true.
take / cursor / order Page size (default 100, max 1,000), nextCursor, and desc (default) or asc.

Example request

# Priced deals that diluted holders by 10% or more, newest first
curl -H "Authorization: Bearer btk_..." \
  "https://api.byte-trader.com/api/v1/offerings?stages=Priced&minDilutionPct=10&take=50"

Example response

Terms from a real registered direct offering (NXH 424B5); ids and timestamps are illustrative.

{
  "data": [
    {
      "offeringId": 4182,
      "accessionNumber": "0001140361-26-038731",
      "revision": 1,
      "revisionOf": null,
      "marketEventId": 190455,
      "eventType": "Offering",
      "symbol": "NXH",
      "cik": "1130713",
      "formType": "424B5",
      "fileNumber": "333-297978",
      "stage": "Priced",
      "type": "RegisteredDirect",
      "security": "Common",
      "isPreliminary": false,
      "shares": 11243511,
      "preFundedShares": 5241997,
      "overallotmentShares": null,
      "warrantShares": 16617754,
      "price": 2.76,
      "grossProceedsUsd": 45500002.08,
      "offeringAmountUsd": null,
      "lastSalePriceAsFiled": 2.76,
      "discountPct": 0,
      "atmCapacityUsd": null,
      "shelfSizeUsd": null,
      "shelfRemainingUsd": null,
      "sharesOutstandingBefore": 98708140,
      "sharesOutstandingSource": "Prospectus",
      "dilutionPct": 16.7,
      "dilutionPctFullyDiluted": 33.54,
      "overhangPct": null,
      "lockupDays": 90,
      "lockupExpiresOn": "2027-01-03T00:00:00",
      "proposedSymbol": null,
      "exchange": null,
      "investorCount": null,
      "exemptions": null,
      "industry": null,
      "underwriters": "Rodman & Renshaw",
      "effectiveAt": null,
      "parseConfidence": "high",
      "parserVersion": "offering-v1",
      "filedAt": "2026-10-06T11:32:07Z",
      "knownAt": "2026-10-06T11:32:07Z",
      "backfill": false,
      "detail": {
        "stage": "Priced",
        "type": "RegisteredDirect",
        "security": "Common",
        "shares": 11243511,
        "preFundedShares": 5241997,
        "price": 2.76,
        "grossProceedsUsd": 45500002.08,
        "lastSalePriceAsFiled": 2.76,
        "lastSaleDate": "2026-10-02T00:00:00",
        "discountPct": 0,
        "warrants": [
          { "kind": "Common", "shares": 16123189, "exercisePrice": 3.45, "termYears": 5 },
          { "kind": "PlacementAgent", "shares": 494565 }
        ],
        "underwriters": ["Rodman & Renshaw"],
        "agentRole": "PlacementAgent",
        "registrationFileNumber": "333-297978",
        "sharesOutstandingBefore": 98708140,
        "sharesOutstandingAsOf": "2026-10-04T00:00:00",
        "sharesOutstandingSource": "Prospectus",
        "dilutionPctOfShares": 16.7,
        "dilutionPctFullyDiluted": 33.54,
        "dilutionBasis": "Offered",
        "lockups": [{ "days": 90, "expiresOn": "2027-01-03T00:00:00" }],
        "sources": ["424B5"],
        "parseConfidence": "high",
        "parserVersion": "offering-v1"
      },
      "secUrl": "https://www.sec.gov/Archives/edgar/data/1130713/000114036126038731/0001140361-26-038731-index.htm",
      "source": "SEC EDGAR"
    }
  ],
  "nextCursor": "bzE6NjM5MjY4ODMxMjcwMDAwMDAwOjQxODI",
  "schemaVersion": "offerings-v1",
  "source": "SEC EDGAR"
}

dilutionPct is the new shares as a percent of shares outstanding before the deal; dilutionPctFullyDiluted adds pre-funded shares and warrants. sharesOutstandingSource says where the share count came from.


Offering overhang

What a company can still sell, or has recently sold, into the market: each registration's shelf size, what's been used and what's left, ATM programs in place, live warrants from priced deals, the last raise, and the dollars and dilution raised in the last 90 days.

GET /api/v1/offerings/overhangPRO key
Parameters of GET /api/v1/offerings/overhang
ParameterTypeDescription
symbolsrequired string Comma-separated tickers, up to 25.
asOf ISO-8601 UTC Point in time (default now): what was known then, and the 90-day window ends there.
curl -H "Authorization: Bearer btk_..." \
  "https://api.byte-trader.com/api/v1/offerings/overhang?symbols=NXH"
{
  "data": [
    {
      "symbol": "NXH",
      "cik": "1130713",
      "asOf": "2026-10-24T18:00:00Z",
      "shelves": [
        {
          "fileNumber": "333-297978",
          "registrationForm": null,
          "registeredAt": null,
          "effectiveAt": null,
          "shelfSizeUsd": null,
          "usedUsd": 45500002.08,
          "remainingUsd": null,
          "takedowns": 1
        }
      ],
      "atmPrograms": [],
      "warrants": [
        {
          "accessionNumber": "0001140361-26-038731",
          "filedAt": "2026-10-06T11:32:07Z",
          "kind": "Common",
          "shares": 16123189,
          "exercisePrice": 3.45,
          "termYears": 5,
          "expiresOnApprox": "2031-10-06T06:00:00"
        },
        {
          "accessionNumber": "0001140361-26-038731",
          "filedAt": "2026-10-06T11:32:07Z",
          "kind": "PlacementAgent",
          "shares": 494565,
          "exercisePrice": null,
          "termYears": null,
          "expiresOnApprox": null
        }
      ],
      "lastRaise": {
        "offeringId": 4182,
        "accessionNumber": "0001140361-26-038731"
        // … the same row shape as /api/v1/offerings
      },
      "raised90dUsd": 45500002.08,
      "dilution90dPct": 16.7,
      "raises90d": 1,
      "source": "SEC EDGAR"
    }
  ],
  "schemaVersion": "offerings-v1",
  "source": "SEC EDGAR"
}

A shelf registered before our data begins has shelfSizeUsd and remainingUsd of null; only its takedowns are counted. expiresOnApprox is the filing date plus the warrant term, so treat it as approximate.


Insider transactions

Form 4 and Form 5 lines with the insider's role, the open-market and 10b5-1 flags, ownership after the trade, and a routine or opportunistic class. The class follows Cohen, Malloy and Pomorski (2012): an insider who made open-market trades in each of the three prior years is routine if those trades share a calendar month and opportunistic if they don't; anyone else is unclassified. Purchases through ESPP, DRIP, 401(k) or ESOP plans, and buys under $25,000, are flagged so you can drop them.

GET /api/v1/insiders/transactionsPRO key

Parameters (all insider endpoints)

Parameters shared by the insider endpoints
ParameterTypeDescription
symbols string Comma-separated tickers, up to 100.
cik string Issuer CIK.
from / to ISO-8601 Window on dateField (a date or a UTC instant).
asOf ISO-8601 UTC Point in time: only filings known by then, with derived state (a Form 144's executed shares, plan links) as of then. A future asOf means now.
take / cursor / order Page size (default 100, max 1,000), nextCursor (bound to its dateField), desc or asc.

Transaction filters

Filters of GET /api/v1/insiders/transactions
ParameterTypeDescription
ownerCik string The insider's (reporting owner's) CIK.
codes string Form 4 transaction codes, e.g. P,S (P purchase, S sale, A award, M option exercise, F tax withholding, G gift).
openMarketOnly bool Open-market purchases and sales only.
opportunisticOnly bool Only trades classed Opportunistic.
traderClass string Routine, Opportunistic, Unclassified, InsufficientHistory.
exclude10b51 bool Drop trades made under a Rule 10b5-1 plan.
excludeSmallBuys bool Drop purchases flagged smallBuy (plan purchases and buys under $25,000).
excludePlanPurchases bool Drop ESPP, DRIP, 401(k) and ESOP purchases.
excludeDerivatives / excludeAmendments bool Drop derivative-table lines / amended filings.
minValue decimal Minimum transaction value (USD).
dateField string knownAt (default), filedAt or tradeDate.

Example request

# Open-market trades by officers and directors, skipping 10b5-1 plan trades
curl -H "Authorization: Bearer btk_..." \
  "https://api.byte-trader.com/api/v1/insiders/transactions?symbols=ISRG&openMarketOnly=true&from=2026-09-01"

Example response

A line from a real Form 4 (ISRG, filed 2026-09-16); ids are illustrative.

{
  "data": [
    {
      "id": 77120,
      "accession": "0001897970-26-000008",
      "lineNumber": 2,
      "formType": "4",
      "isAmendment": false,
      "issuerCik": "1035267",
      "symbol": "ISRG",
      "owner": {
        "cik": "1897970",
        "name": "Widman Fredrik",
        "roleRank": "Officer",
        "officerTitle": "VP Corporate Controller",
        "isDirector": false,
        "isOfficer": true,
        "isTenPercentOwner": false,
        "ownerCount": 1
      },
      "securityTitle": "Common Stock",
      "isDerivative": false,
      "code": "S",
      "acquiredDisposed": "D",
      "transactionDate": "2026-09-15",
      "shares": 546,
      "pricePerShare": 374.44,
      "value": 204444.24,
      "sharesOwnedAfter": 1026,
      "directIndirect": "D",
      "natureOfOwnership": null,
      "openMarket": true,
      "is10b51": true,
      "is10b51Source": "footnote",
      "planPurchase": false,
      "smallBuy": false,
      "smallBuyReason": null,
      "pctOfHoldingsChanged": 34.7328,
      "pctOfSharesOutstanding": 0.000155,
      "ownershipAfterPctOfOutstanding": 0.00029,
      "exercisePrice": null,
      "expirationDate": null,
      "underlyingShares": null,
      "traderClass": "InsufficientHistory",
      "traderClassYear": null,
      "routineMonth": null,
      "proposedSale": { "id": 3, "accession": "0001950047-26-009515", "adoptionDate": null },
      "tradingPlan": null,
      "filedAt": "2026-09-16T17:35:36Z",
      "knownAt": "2026-09-16T17:37:36Z",
      "backfill": false,
      "source": "SEC EDGAR"
    }
  ],
  "nextCursor": null,
  "schemaVersion": 1,
  "source": "SEC EDGAR"
}

traderClass is InsufficientHistory while our insider history doesn't yet cover the three years before the trade. proposedSale links the Form 144 the sale was filed under, and tradingPlan the 10b5-1 plan it ran on, when we can match them.


Form 144 proposed sales

Notices of planned sales by insiders and affiliates. Each notice is Pending until matching Form 4 sales show up, then PartiallyExecuted or Executed; it Expires after 90 days, or is Superseded by a newer notice. Once closed, outcome says whether the shares were sold or kept.

GET /api/v1/insiders/proposed-salesPRO key
Filters of GET /api/v1/insiders/proposed-sales
ParameterTypeDescription
sellerCik string The seller's CIK.
status string Pending, PartiallyExecuted, Executed, Expired, Superseded, as of asOf.
exclude10b51 bool Drop notices under a Rule 10b5-1 plan.
minValue decimal Minimum aggregate market value (USD).
excludeAmendments bool Drop 144/A amendments.
dateField string knownAt (default), filedAt or approxSaleDate.
# What the Form 144 looked like the moment before its Form 4 was filed
curl -H "Authorization: Bearer btk_..." \
  "https://api.byte-trader.com/api/v1/insiders/proposed-sales?symbols=ISRG&asOf=2026-09-16T00:00:00Z"

A real Form 144, seen as of the night before its Form 4 was filed, so it's still pending; the id is illustrative.

{
  "data": [
    {
      "id": 3,
      "accession": "0001950047-26-009515",
      "formType": "144",
      "isAmendment": false,
      "issuerCik": "1035267",
      "symbol": "ISRG",
      "issuerName": "Intuitive Surgical, Inc.",
      "seller": { "cik": "1897970", "name": "FREDRIK WIDMAN", "relationships": ["Officer"] },
      "securityClass": "Common",
      "shares": 2178,
      "aggregateMarketValue": 823153.32,
      "sharesOutstanding": 353278038,
      "pctOfSharesOutstanding": 0.000617,
      "approxSaleDate": "2026-09-15",
      "exchange": "NASDAQ",
      "broker": "Morgan Stanley Smith Barney LLC Executive Financial Services",
      "acquisitionNatures": ["Exercise of Stock Options"],
      "acquiredDate": "2026-09-15",
      "is10b51": true,
      "planAdoptionDate": "2026-06-08",
      "planAdoptionDates": ["2026-06-08"],
      "soldPast3Months": { "shares": null, "grossProceeds": null },
      "noticeDate": "2026-09-15",
      "form4Expected": true,
      "status": "Pending",
      "outcome": null,
      "executedShares": 0,
      "executedPct": null,
      "matchedTransactions": 0,
      "firstExecutionDate": null,
      "lastExecutionDate": null,
      "pendingUntil": "2026-12-14T20:43:19Z",
      "supersededBy": null,
      "tradingPlanId": null,
      "filedAt": "2026-09-15T20:43:19Z",
      "knownAt": "2026-09-15T20:45:19Z",
      "backfill": false,
      "source": "SEC EDGAR"
    }
  ],
  "nextCursor": null,
  "schemaVersion": 1,
  "source": "SEC EDGAR"
}

10b5-1 trading plans

Rule 10b5-1 and non-Rule 10b5-1 trading arrangements that officers and directors adopted or ended, read from Item 408 of each 10-Q and 10-K, with the plan's duration and share amount where the company discloses them, and the trades later linked to the plan.

GET /api/v1/insiders/plansPRO key
Filters of GET /api/v1/insiders/plans
ParameterTypeDescription
ownerCik string The insider's CIK, when the plan is linked to one.
action string Adopted or Terminated.
planType string Rule10b5-1 or NonRule10b5-1.
minValue decimal Minimum aggregate shares covered by the plan.
dateField string knownAt (default), filedAt or adoptionDate.
curl -H "Authorization: Bearer btk_..." \
  "https://api.byte-trader.com/api/v1/insiders/plans?symbols=ISRG&action=Adopted"

From a real 10-Q (ISRG, Q2 2026); the id is illustrative.

{
  "data": [
    {
      "id": 512,
      "accession": "0001035267-26-000058",
      "formType": "10-Q",
      "issuerCik": "1035267",
      "symbol": "ISRG",
      "periodStart": "2026-04-01",
      "periodEnd": "2026-06-30",
      "individual": {
        "name": "Gary S. Guthart",
        "title": "the Company’s Executive Chair of the Board of Directors",
        "ownerCik": null
      },
      "action": "Adopted",
      "planType": "Rule10b5-1",
      "adoptionDate": "2026-05-07",
      "terminationDate": null,
      "expirationDate": "2027-06-15",
      "expirationText": "June 15, 2027",
      "durationDays": 404,
      "aggregateShares": 229906,
      "linked": { "transactions": 0, "sharesSold": 0, "firstTradeDate": null, "lastTradeDate": null, "proposedSales": 0 },
      "filedAt": "2026-07-21T21:25:51Z",
      "knownAt": "2026-07-21T21:37:00Z",
      "backfill": false,
      "source": "SEC EDGAR"
    }
  ],
  "nextCursor": null,
  "schemaVersion": 1,
  "source": "SEC EDGAR"
}

Issuer and insider profiles

One issuer's insiders with their current holdings and class, a 90-day open-market summary, pending Form 144 sales, recent plan activity and a page of transactions; or one insider (by reporting-owner CIK) across every company they file for. The transaction filters apply to the transactions page.

GET /api/v1/insiders/issuer/{symbol}PRO key
GET /api/v1/insiders/{cik}PRO key
# One issuer: insiders and holdings, a 90-day summary, pending sales, plans and recent transactions
curl -H "Authorization: Bearer btk_..." \
  "https://api.byte-trader.com/api/v1/insiders/issuer/ISRG?openMarketOnly=true&take=25"

# One insider across every issuer they file for (reporting-owner CIK)
curl -H "Authorization: Bearer btk_..." \
  "https://api.byte-trader.com/api/v1/insiders/1897970"
{
  "data": {
    "symbol": "ISRG",
    "issuerCik": "1035267",
    "asOf": "2026-10-24T18:00:00Z",
    "summary": {
      "windowDays": 90,
      "openMarket": { "buys": 0, "buyValue": 0, "sells": 1, "sellValue": 204444.24, "sells10b51": 1, "distinctBuyers": 0, "distinctSellers": 1 },
      "opportunisticBuys": 0,
      "pendingSales": 0,
      "pendingSaleValue": 0,
      "planAdoptions12Months": 5,
      "planTerminations12Months": 0
    },
    "insiders": [
      {
        "ownerCik": "1897970",
        "name": "Widman Fredrik",
        "issuerCik": "1035267",
        "symbol": "ISRG",
        "roleRank": "Officer",
        "officerTitle": "VP Corporate Controller",
        "isDirector": false,
        "isOfficer": true,
        "isTenPercentOwner": false,
        "firstKnownAt": "2022-03-14T20:12:09Z",
        "lastFiledAt": "2026-09-16T17:35:36Z",
        "lastTransactionDate": "2026-09-15",
        "lastCode": "S",
        "traderClass": "InsufficientHistory",
        "traderClassYear": null,
        "commonSharesHeld": 1026,
        "pctOfSharesOutstanding": 0.00029,
        "holdings": [],
        "openMarket12Months": { "buys": 0, "buyValue": 0, "sells": 1, "sellValue": 204444.24, "sells10b51": 1, "distinctBuyers": 0, "distinctSellers": 1 }
      }
    ],
    "pendingSales": [],
    "tradingPlans": [],
    "transactions": []
    // pendingSales, tradingPlans and transactions use the shapes of /proposed-sales, /plans and /transactions
  },
  "nextCursor": null,
  "schemaVersion": 1,
  "source": "SEC EDGAR"
}

Unknown symbols and CIKs answer 404.


Corporate filings

Corporate events from SEC filings, in 15 categories, each with typed kind, role and flag fields: late filings, executive changes, auditor changes, restructurings, terminated agreements, tender offers, 13D/G stake changes, delistings, deregistrations, merger votes, spin-offs, shareholder meetings, vote results, SEC comment letters and material 6-K reports.

GET /api/v1/filingsPRO key
GET /api/v1/filings/{slug}PRO key
GET /api/v1/filings/typesPRO key
GET /api/v1/filings/{marketEventId}PRO key
Parameters of GET /api/v1/filings
ParameterTypeDescription
types string Category names or slugs, comma-separated (see /api/v1/filings/types), e.g. LateFiling,stake-changes.
symbols / cik string Up to 100 tickers / an issuer CIK.
severity string Info, Notable, Critical (comma-separated).
minSeverity string The lowest severity to include.
kind / role string The category's typed fields, e.g. kind=Departure&role=CFO for executive changes. /types lists what each means.
flagged bool Only rows the category flags (abrupt departure, auditor resignation, going dark, threshold crossing …).
includeSections bool Include 8-K item sections filed inside another event (e.g. a restructuring disclosed in an earnings 8-K). Default true.
includeAmendments bool Default true.
dateField string knownAt (default), filedAt or detectedAt.
from / to / asOf ISO-8601 UTC Window, and the point in time. A comment letter counts from its public release, not its letter date.
take / cursor / order Page size (default 100, max 1,000), nextCursor, desc or asc.

Per-category routes take the same parameters: late-filings, exec-changes, auditor-changes, restructurings, agreement-terminations, tender-offers, stake-changes, delistings, deregistrations, merger-votes, spin-offs, shareholder-meetings, vote-results, comment-letters, foreign-issuer-reports. /filings/{marketEventId} returns every category row of one event.

Example request

# Abrupt CFO departures in October
curl -H "Authorization: Bearer btk_..." \
  "https://api.byte-trader.com/api/v1/filings/exec-changes?role=CFO&flagged=true&from=2026-10-01T00:00:00Z"

Example response

A real 8-K Item 5.02 (FuelCell Energy); the id is illustrative.

{
  "data": [
    {
      "id": 189377,
      "type": "ExecChange",
      "eventType": "ExecChange",
      "symbol": "FCEL",
      "cik": "886128",
      "formType": "8-K",
      "accession": "0001104659-26-114207",
      "severity": "Notable",
      "title": "FCEL: CFO departure - termination (8-K Item 5.02)",
      "summary": null,
      "filedAt": "2026-10-07T20:30:00Z",
      "knownAt": "2026-10-07T20:30:00Z",
      "detectedAt": "2026-10-07T20:32:05Z",
      "kind": "Departure",
      "role": "CFO",
      "flag": true,
      "amendment": false,
      "section": false,
      "url": "https://www.sec.gov/Archives/edgar/data/886128/000110465926114207/0001104659-26-114207-index.htm",
      "source": "SEC EDGAR",
      "details": { "parserVersion": "corp-1", "role": "CFO", "kind": "Departure", "abrupt": true, "abruptReasons": ["Termination"] }
    }
  ],
  "nextCursor": null,
  "schemaVersion": 1,
  "source": "SEC EDGAR"
}

The taxonomy: /api/v1/filings/types

Each category's event types, forms, and what its kind, role and flag mean:

{
  "schemaVersion": 1,
  "source": "SEC EDGAR",
  "types": [
    {
      "type": "LateFiling",
      "route": "/api/v1/filings/late-filings",
      "eventTypes": ["LateFiling"],
      "forms": ["NT 10-K", "NT 10-Q", "NT 10-K/A", "NT 10-Q/A"],
      "description": "Form 12b-25 notice that a 10-K / 10-Q will be late: period, reason category, grace-period expectation.",
      "kind": "reason category",
      "role": "late report form",
      "flag": "not expected within the grace period, or a non-routine reason",
      "section": false
    },
    {
      "type": "StakeChange",
      "route": "/api/v1/filings/stake-changes",
      "eventTypes": ["ActivistStake", "PassiveStake"],
      "forms": ["SCHEDULE 13D", "SCHEDULE 13G", "SCHEDULE 13D/A", "SCHEDULE 13G/A"],
      "description": "Schedule 13D/G (structured XML): % of class, delta vs the holder's previous filing, 5/10/20/50% crossings, passive→active switches.",
      "kind": "Initial | Increase | Decrease | Unchanged | Exit | Unknown",
      "role": "13D | 13G",
      "flag": "switched from 13G to 13D, or crossed a threshold upward",
      "section": false
    }
    // … 13 more categories
  ]
}

10-K and 10-Q text changes

How much a company's annual or quarterly report changed from the comparable prior report: cosine and Jaccard similarity of the whole document, the Item 1A risk factors and the MD&A, word counts, and the risk-factor headings that are new. Research on 'Lazy Prices' studied this kind of change; ByteTrader publishes the measurements, not a prediction.

GET /api/v1/filings/text-changesPRO key
Parameters of GET /api/v1/filings/text-changes
ParameterTypeDescription
symbol / cik string / int One company. Without either, pass from for every company in the window.
form string 10-K or 10-Q.
from / to ISO-8601 UTC Window on knownAt.
asOf ISO-8601 UTC Only scores public by then.
take / cursor Page size (default 100, max 1,000) and nextCursor.
curl -H "Authorization: Bearer btk_..." \
  "https://api.byte-trader.com/api/v1/filings/text-changes?symbol=XMPL&form=10-K"

Illustrative values (XMPL is a placeholder ticker).

{
  "schemaVersion": 1,
  "source": "Derived from 10-K/10-Q filings (Source: SEC EDGAR)",
  "data": [
    {
      "accession": "0001234567-26-000012",
      "cik": "1234567",
      "symbol": "XMPL",
      "formType": "10-K",
      "periodOfReport": "2025-12-31",
      "acceptedAt": "2026-02-24T21:10:44Z",
      "knownAt": "2026-02-24T21:10:44Z",
      "priorAccession": "0001234567-25-000009",
      "priorPeriodOfReport": "2024-12-31",
      "simCosineFull": 0.9412,
      "simJaccardFull": 0.7735,
      "simCosineRisk": 0.8826,
      "simJaccardRisk": 0.6512,
      "simCosineMdna": 0.9104,
      "simJaccardMdna": 0.7021,
      "wordsFull": 61844,
      "wordsRisk": 14210,
      "wordsMdna": 9876,
      "priorWordsFull": 58302,
      "priorWordsRisk": 12655,
      "priorWordsMdna": 9420,
      "riskHeadings": 42,
      "addedRiskHeadingCount": 3,
      "removedRiskHeadingCount": 1,
      "addedRiskHeadings": ["Our customer concentration has increased", "…"],
      "status": "ok",
      "parserVersion": "lazy-1",
      "secUrl": "https://www.sec.gov/Archives/edgar/data/1234567/000123456726000012/0001234567-26-000012-index.htm"
    }
  ],
  "nextCursor": null,
  "note": null
}

status is ok, or names what couldn't be compared (e.g. no-prior, risk:missing).


Calendars

Forward-looking dates: earnings (estimated from each company's filing history, then confirmed from its own announcement), IPOs and lock-up expirations, FDA target action dates and advisory committees, macro releases, shareholder meetings and ex-dividend dates. Estimated and confirmed earnings dates are told apart by status.

GET /api/v1/calendarPRO key
GET /api/v1/calendar/{earnings|ipos|lockups|fda|macro|meetings|dividends}PRO key
GET /api/v1/calendar/macro/riskPRO key

Common parameters

Parameters shared by the calendar endpoints
ParameterTypeDescription
from / to date US Eastern calendar dates, inclusive. Default today to +30 days; at most 400 days.
symbols / cik string Up to 100 tickers / CIKs (not on /macro).
take / cursor Page size (default 100, max 1,000) and nextCursor. Rows come in date order.

Endpoints and their own parameters

Calendar endpoints
ParameterTypeDescription
/calendar types, importance Combined calendar. types: earnings, ipos, lockups, fda, macro, meetings, dividends (default all; macro is skipped when you filter by symbol). Each row carries its type's own item in detail.
/calendar/earnings status, session, asOf status: Estimated, Confirmed, Reported, Overdue. session: BMO, AMC, DMH. asOf: what the calendar said at that UTC instant.
/calendar/ipos status Filed, Effective, Priced, Trading, Withdrawn.
/calendar/lockups IPO lock-up expirations: pricing date plus the prospectus's lock-up period (180 days assumed, with lockupStated: false, when none is stated).
/calendar/fda type, status type: PDUFA (company-disclosed target action dates) or AdComm (advisory committees, from the Federal Register). status: Upcoming, Extended, Approved, CRL.
/calendar/macro importance, agency importance: the minimum (High, Medium, Low). agency: BLS, BEA, Census, FederalReserve, Treasury, Computed (options expirations).
/calendar/macro/risk at, withinMinutes, importance blocked: true when a release of at least importance (default High) is within ±withinMinutes (default 30, max 1,440) of at (default now).
/calendar/meetings kind Shareholder meetings from DEF 14A proxies: Annual or Special.
/calendar/dividends Ex-dividend dates parsed from 8-K dividend declarations.

Earnings

# Confirmed earnings dates for the next two weeks
curl -H "Authorization: Bearer btk_..." \
  "https://api.byte-trader.com/api/v1/calendar/earnings?from=2026-10-26&to=2026-11-06&status=Confirmed"

Illustrative values. date is the best current date: reported, else company-confirmed, else estimated.

{
  "data": [
    {
      "id": 5521,
      "cik": "1234567",
      "symbol": "XMPL",
      "periodKey": "FY2026Q3",
      "fiscalPeriod": "Q3 FY2026",
      "periodEnd": "2026-09-30",
      "date": "2026-11-06",
      "session": "AMC",
      "status": "Confirmed",
      "estimate": {
        "date": "2026-11-05",
        "windowLo": "2026-11-03",
        "windowHi": "2026-11-09",
        "priorPatternDate": "2026-11-05",
        "confidence": "High",
        "method": "YoY364",
        "historyCount": 12,
        "meanAbsErrorDays": 0.83
      },
      "confirmation": {
        "date": "2026-11-06",
        "session": "AMC",
        "sessionInferred": false,
        "releaseTimeEt": "16:05",
        "callDate": "2026-11-06",
        "callTimeEt": "16:30",
        "pattern": "ReleaseVerb",
        "statedFiscalPeriod": "Q3 FY2026",
        "accession": "0001234567-26-000072",
        "formType": "8-K",
        "confirmedAt": "2026-10-23T20:17:08Z"
      },
      "reported": null,
      "knownAt": "2026-08-01T10:00:00Z",
      "updatedAt": "2026-10-23T20:19:00Z",
      "source": "SEC EDGAR"
    }
  ],
  "nextCursor": "MjAyNjExMDY6MTo1NTIx",
  "schemaVersion": 1
}

Macro releases

// GET /api/v1/calendar/macro?importance=High
{
  "data": [
    {
      "id": 3307,
      "eventKey": "BLS:consumer-price-index:20261110",
      "agency": "BLS",
      "name": "Consumer Price Index",
      "category": "Inflation",
      "importance": "High",
      "scheduledAt": "2026-11-10T13:30:00Z",
      "period": null,
      "status": "Scheduled",
      "timeIsStandard": false,
      "details": null,
      "sourceUrl": "https://www.bls.gov/schedule/news_release/bls.ics",
      "knownAt": "2026-10-24T10:00:00Z",
      "source": "U.S. Bureau of Labor Statistics"
    }
  ],
  "nextCursor": null,
  "schemaVersion": 1
}

Macro risk window

For a strategy rule such as "no new entries around CPI, payrolls or FOMC":

# Is a high-impact release within 30 minutes of now?
curl -H "Authorization: Bearer btk_..." \
  "https://api.byte-trader.com/api/v1/calendar/macro/risk?withinMinutes=30&importance=High"
{
  "at": "2026-11-10T13:15:00Z",
  "withinMinutes": 30,
  "minImportance": "High",
  "blocked": true,
  "events": [
    {
      "eventKey": "BLS:consumer-price-index:20261110",
      "name": "Consumer Price Index",
      "agency": "BLS",
      "importance": "High",
      "scheduledAt": "2026-11-10T13:30:00Z",
      "minutesFromNow": 15
    }
  ],
  "schemaVersion": 1
}

FDA

// GET /api/v1/calendar/fda?type=PDUFA&from=2026-11-01&to=2026-12-31
{
  "data": [
    {
      "id": 214,
      "kind": "PDUFA",
      "cik": "1234567",
      "symbol": "XMPL",
      "drug": "XMP-101",
      "indication": "…",
      "applicationType": "NDA",
      "date": "2026-11-28",
      "datePrecision": "Day",
      "previousDate": null,
      "priorityReview": false,
      "status": "Upcoming",
      "outcomeDate": null,
      "outcomeAccession": null,
      "sourceAccession": "0001234567-26-000031",
      "sourceFormType": "10-Q",
      "frDocumentNumber": null,
      "committee": null,
      "sponsor": null,
      "snippet": "… a Prescription Drug User Fee Act (PDUFA) target action date of November 28, 2026 …",
      "knownAt": "2026-08-06T20:15:31Z",
      "updatedAt": "2026-08-06T20:20:00Z",
      "source": "SEC EDGAR"
    }
  ],
  "nextCursor": null,
  "schemaVersion": 1
}

FDA dates are the ones companies disclose in their SEC filings, plus advisory committee meetings published in the Federal Register; outcomes are recorded as the company discloses them. Macro times are the agencies' published schedules; timeIsStandard: true means the time is the agency's usual time for that release, not one stated for the event.


13F institutional ownership

Holdings reported by institutional managers on Form 13F, from the SEC's 13F data sets: who holds a symbol and how that changed quarter over quarter, and each manager's portfolio. 13F reports are filed up to 45 days after quarter end, so this is a lagged view.

GET /api/v1/institutions/issuer/{symbol}PRO key
GET /api/v1/institutions/holdingsPRO key
GET /api/v1/institutions/managersPRO key
GET /api/v1/institutions/managers/{cik}PRO key
13F endpoints
ParameterTypeDescription
/institutions/issuer/{symbol} period, asOf, top, history A symbol's 13F holders for one report period (default the latest; with asOf, the latest whose filing deadline had passed): holders, shares, value, new/added/reduced/exited counts, institutional %, the top holders (default 25, max 100) and history quarters (default 8, max 60).
/institutions/holdings cik (required), period, asOf, change, take, cursor One manager's positions for a report period with the quarter-over-quarter change. change: new, added, reduced, unchanged, exited. Paged inside data.holdings (default 200, max 1,000).
/institutions/managers search, take, cursor Manager directory, largest latest portfolio first; search matches the name (up to 80 characters).
/institutions/managers/{cik} filings One manager and its 13F filings, newest first (filings default 20, max 200).
curl -H "Authorization: Bearer btk_..." \
  "https://api.byte-trader.com/api/v1/institutions/issuer/XMPL?top=10&history=4"

Illustrative values (placeholder ticker and manager).

{
  "schemaVersion": 1,
  "source": "SEC Form 13F data sets (Source: SEC EDGAR)",
  "data": {
    "symbol": "XMPL",
    "cik": "1234567",
    "periodEnd": "2026-06-30",
    "priorPeriodEnd": "2026-03-31",
    "asOf": null,
    "holders": 412,
    "shares": 61250000,
    "valueUsd": 2817500000,
    "callHolders": 9,
    "putHolders": 7,
    "newHolders": 38,
    "addedHolders": 151,
    "reducedHolders": 143,
    "exitedHolders": 29,
    "unchangedHolders": 80,
    "priorShares": 59900000,
    "splitFactor": null,
    "sharesOutstanding": 84000000,
    "institutionalOwnershipPct": 72.92,
    "topHolders": [
      {
        "managerCik": "7654321",
        "managerName": "EXAMPLE CAPITAL MANAGEMENT LLC",
        "shares": 6100000,
        "valueUsd": 280600000,
        "pctOfInstitutionalShares": 9.96,
        "pctOfSharesOutstanding": 7.26,
        "priorShares": 5800000,
        "change": "added"
      }
    ],
    "history": [
      { "periodEnd": "2026-06-30", "holders": 412, "shares": 61250000, "valueUsd": 2817500000, "newHolders": 38, "addedHolders": 151, "reducedHolders": 143, "exitedHolders": 29 }
    ]
  },
  "note": "13F reports are filed up to 45 days after quarter end; knownAt is the filing date at 17:30 ET. Values are as reported (dollars; pre-2023 filings reported thousands and are converted). Changes are split-adjusted when a split is inferred from the holders."
}

Fails-to-deliver

The SEC's fails-to-deliver data per symbol and settlement day, with the value, the fails as a percent of shares outstanding, and a threshold-like flag. The SEC publishes it twice a month, about two to four weeks after settlement.

GET /api/v1/eod/fails-to-deliverPRO key
Parameters of GET /api/v1/eod/fails-to-deliver
ParameterTypeDescription
symbol string One symbol's series. Either symbol or date is required.
date date Every symbol on one settlement date.
from / to date Settlement-date window.
asOf ISO-8601 UTC Only rows the SEC had published by then.
thresholdLike bool Only threshold-like days (see the note).
take / cursor / order Page size (default 500, max 1,000), nextCursor, desc (default) or asc.
curl -H "Authorization: Bearer btk_..." \
  "https://api.byte-trader.com/api/v1/eod/fails-to-deliver?symbol=XMPL&from=2026-08-01"

Illustrative values.

{
  "schemaVersion": 1,
  "source": "SEC fails-to-deliver data (Source: SEC)",
  "data": [
    {
      "symbol": "XMPL",
      "cik": "1234567",
      "settlementDate": "2026-09-23",
      "quantity": 408817,
      "price": 4.55,
      "valueUsd": 1860117.35,
      "sharesOutstanding": 60000000,
      "ftdPctOfShares": 0.681362,
      "thresholdLike": true,
      "daysOverThreshold": 5,
      "knownAt": "2026-10-15T12:25:57Z"
    }
  ],
  "nextCursor": "ZTF8NzM5ODY4fFhNUEw",
  "note": "Published by the SEC about two to four weeks after settlement; knownAt is the publication time. thresholdLike approximates Reg SHO Rule 203(c)(6) (>= 10,000 shares and >= 0.5% of SEC cover-page shares outstanding for five consecutive settlement days); it is not the official exchange threshold list."
}

Point-in-time fundamentals

Fundamentals as filed, from the SEC's Financial Statement Data Sets. Each row is what was public at its knownAt, so a backtest can read a company's numbers as an investor could have on any date, without later restatements leaking in. Includes TTM revenue, EBITDA, free cash flow and net debt, margins, returns and leverage.

GET /api/v1/fundamentals/pitPRO key
Parameters of GET /api/v1/fundamentals/pit
ParameterTypeDescription
symbol / cik string / int The company. One is required.
asOf ISO-8601 UTC Default now. Returns the newest filing-based row with knownAt ≤ asOf.
history bool true: page every row known by asOf, newest first, instead of one row.
from ISO-8601 UTC With history: only rows with knownAt ≥ from.
price decimal Your own share price (USD). Fills marketCap, enterpriseValue and evToEbitda from it. API keys get these market fields only from price.
take / cursor With history: page size (default 100, max 1,000) and nextCursor.
# XMPL's fundamentals as an investor could have known them on 2025-03-03, valued at $41.20
curl -H "Authorization: Bearer btk_..." \
  "https://api.byte-trader.com/api/v1/fundamentals/pit?symbol=XMPL&asOf=2025-03-03T14:30:00Z&price=41.20"

Illustrative values. With history=true the response is a page of these rows (data is an array, with nextCursor).

{
  "schemaVersion": 1,
  "source": "SEC Financial Statement Data Sets (Source: SEC EDGAR)",
  "data": {
    "cik": "1234567",
    "symbol": "XMPL",
    "knownAt": "2025-02-25T21:04:12Z",
    "accession": "0001234567-25-000009",
    "formType": "10-K",
    "periodEnd": "2024-12-31",
    "fiscalYear": 2024,
    "fiscalPeriod": "FY",
    "filedDate": "2025-02-25",
    "acceptedAt": "2025-02-25T21:04:12Z",
    "currency": "USD",
    "latestFactPeriodEnd": "2024-12-31",
    "revenueTtm": 1284000000,
    "grossProfitTtm": 642000000,
    "operatingIncomeTtm": 171000000,
    "netIncomeTtm": 118000000,
    "depreciationAmortizationTtm": 64000000,
    "ebitdaTtm": 235000000,
    "operatingCashFlowTtm": 204000000,
    "capexTtm": 71000000,
    "freeCashFlowTtm": 133000000,
    "totalDebt": 420000000,
    "cashAndEquivalents": 188000000,
    "netDebt": 232000000,
    "stockholdersEquity": 910000000,
    "totalAssets": 1960000000,
    "sharesOutstanding": 84000000,
    "eps": 1.41,
    "epsTtm": 1.41,
    "bookValuePerShare": 10.83,
    "grossMarginTtm": 50.0,
    "operatingMarginTtm": 13.32,
    "netProfitMarginTtm": 9.19,
    "grossMarginMrq": 50.8,
    "operatingMarginMrq": 14.1,
    "netProfitMarginMrq": 9.7,
    "returnOnEquity": 12.97,
    "returnOnAssets": 6.02,
    "returnOnInvestment": 8.9,
    "currentRatio": 1.84,
    "quickRatio": 1.22,
    "interestCoverage": 9.5,
    "ltDebtToEquity": 41.76,
    "totalDebtToEquity": 46.15,
    "totalDebtToCapital": 31.58,
    "revChangeYear": 8.4,
    "revChangeTtm": 8.4,
    "revChangeIn": 6.1,
    "epsChange": 12.0,
    "epsChangeYear": 12.0,
    "epsChangePercentTtm": 12.0,
    "dividendAmount": 0.48,
    "divGrowthRate3Year": 6.3,
    "marketCap": 3460800000,
    "marketCapSource": "caller-price",
    "marketCapDate": null,
    "enterpriseValue": 3692800000,
    "evToEbitda": 15.7140,
    "pipelineVersion": "pit-1|1.0"
  },
  "note": "As filed: each row is what was public at knownAt (EDGAR dissemination time). TTM figures sum the latest four quarters; free cash flow = operating cash flow - capex; EBITDA = operating income + D&A; net debt = total debt - cash and equivalents. Amounts are in the filer's reporting currency."
}

For the latest daily snapshot of computed fundamentals, use GET /api/v1/fundamentals?symbols=AAPL,MSFT (add from/to for a daily series).


An unhandled error has occurred. Reload 🗙