Dashboard

Workforce Cost

GET/api/footnotes/workforce-cost

Pro

Returns what a company's workforce costs, assembled from the disclosures filers actually tag: the direct labor expense line where one exists (airlines, banks, railroads, insurers), the accrued compensation balances almost every filer carries (accrued salaries, bonuses, vacation, payroll taxes, workers compensation), and 401(k) / defined-contribution plan cost. Labor expense by business segment is served as separate series where disclosed.

Response blocks:

Monetary values default to US dollars (currency parameter as on the statements endpoints: balances at spot, flows at the period-average rate, fx audit block, currency=original for as-filed).

What this data can tell you:

Data honesty notes:

Get API key Try it live in the API explorer

Query parameters

Example request

curl 'https://api.stockfit.io/v1/api/footnotes/workforce-cost?symbol=AAPL&cik=320193&cusip=037833100&composite_figi=BBG000B9XRY4&share_class_figi=BBG001S5N8V8&currency=USD' \
  -H 'Authorization: Bearer YOUR_API_TOKEN'

Responses

200 OK

Workforce cost periods plus per-segment and per-caption series

Response schema

  • periods array of object

    Company-level workforce cost per fiscal period, newest first. Fields the filer did not tag are omitted.

    array of:
    • period string (date)
    • fiscalYear integer
    • fiscalPeriod string (enum)

      Fiscal period of a reported value: `FY` (annual) or `Q1`-`Q4` (quarterly).

      Allowed values: FY, Q1, Q2, Q3, Q4
    • currency string | null

      Currency of this period's monetary values after conversion; null when mixed

    • laborExpense number

      Salaries, wages and related expense line (flow). Sourced from the labor-expense concept family, IFRS employee benefits expense for 20-F filers

    • employeeCompensation number

      DISE employee compensation excluding one-time termination benefits (flow), when tagged without a caption breakdown

    • directLabor number

      Direct labor within cost of goods sold (flow)

    • otherLaborExpense number

      Other labor-related expenses (flow)

    • definedContributionPlanCost number

      401(k) / defined-contribution plan cost recognized (flow)

    • accruedCompensation number

      Employee-related liabilities (balance)

    • accruedSalaries number

      Accrued salaries and wages (balance)

    • accruedBonuses number

      Accrued bonuses (balance)

    • accruedVacation number

      Accrued vacation (balance)

    • accruedPayrollTaxes number

      Accrued payroll taxes (balance)

    • accruedEmployeeBenefits number

      Accrued employee benefits (balance)

    • workersCompensationLiability number

      Workers compensation liability (balance)

    • numberOfEmployees number

      Employee headcount where tagged (voluntary disclosure, sparse)

    • dateFiled string (date) | null

      SEC filing acceptance date of the newest filing contributing to this period. Use this to gate point-in-time data and avoid lookahead bias.

  • perSegment array of object

    Labor expense by business segment, most recently disclosed first. Subtotal rollup members are excluded.

    array of:
    • member string

      Raw XBRL member QName of the segment

    • name string

      Derived display label

    • role string (enum)

      What the member contributes to the consolidated figure: `segment` rows are additive, `elimination` and `reconciling` rows bridge to the total.

      Allowed values: segment, elimination, reconciling
    • history array of object

      Newest first, up to `limit` points.

      array of:
      • period string (date)
      • fiscalYear integer
      • fiscalPeriod string (enum)

        Fiscal period of a reported value: `FY` (annual) or `Q1`-`Q4` (quarterly).

        Allowed values: FY, Q1, Q2, Q3, Q4
      • value number

        Labor expense of this segment in the period (flow)

      • currency string | null
      • dateFiled string (date) | null
  • byExpenseCaption array of object

    DISE employee compensation per income-statement caption (ASU 2024-03), same shape as `perSegment` without `role`. Sparse until fiscal 2027 filings arrive.

    array of:
    • member string

      Raw XBRL member QName identifying the expense caption

    • name string

      Derived display label

    • history array of object
      array of:
      • period string (date)
      • fiscalYear integer
      • fiscalPeriod string (enum)

        Fiscal period of a reported value: `FY` (annual) or `Q1`-`Q4` (quarterly).

        Allowed values: FY, Q1, Q2, Q3, Q4
      • value number

        Employee compensation within this caption (flow)

      • currency string | null
      • dateFiled string (date) | null
  • fx object

    Foreign-currency conversion audit for this period. Every monetary value in `facts` is in the requested `currency` (default **US dollars**). This block is absent when the period was already wholly in the target currency (e.g. a US filer with the default USD, nothing to convert). It is present when one or more line items were originally filed in a different currency and converted on the fly, and it records the exact rate(s) applied so the conversion can be reproduced. Rates come from the Frankfurter API (api.frankfurter.dev). Instant balance-sheet items use the spot rate at period end; flow income/cash-flow items use the day-weighted average rate over the period.

    • targetCurrency string

      The currency (ISO 4217) every `facts` value was converted INTO, the value of the request `currency` parameter (default USD). The literal `original` here means no conversion was requested: each fact stays in its as-reported currency (see `unconverted` for the per-fact mapping).

    • originalCurrencies array of string

      Every source currency (ISO 4217) that appeared in this period, the union of converted, unconverted, and already-in-target. The target currency itself is listed when some facts were natively in it (e.g. a foreign filer reporting some lines in USD alongside its converted local currency), so a mixed period reflects its true composition rather than appearing wholly converted.

    • rates array of object

      One entry per (source currency, method) actually applied. `rate` is the multiplier: `target = original * rate`.

      array of:
      • from string

        ISO 4217 source currency that was converted.

      • method string (enum)

        `spot` for instant balance-sheet items (rate at period end); `average` for flow income/cash-flow items (day-weighted mean over the period).

        Allowed values: spot, average
      • rate number

        Multiply the original-currency amount by this to get the `targetCurrency` amount.

      • effectiveDate string (date)

        Spot only: the date (YYYY-MM-DD) the applied rate was published (≤ period end).

      • start string (date)

        Average only: period start (YYYY-MM-DD).

      • end string (date)

        Average only: period end (YYYY-MM-DD).

    • unconverted map of string to array of string

      Facts that could NOT be converted (no published rate within tolerance, or an unsupported code/date), grouped by the currency they remain in: each key is a source ISO 4217 code, each value lists the curated fact names in `facts` still in that currency (NOT `targetCurrency`). Absent when everything converted. Use it to know exactly which figures to treat as native currency.

      • * (additional properties) array of string

Example response

{
  "periods": [
    {
      "period": "2025-12-31",
      "fiscalYear": 2025,
      "fiscalPeriod": {},
      "currency": "USD",
      "laborExpense": 17520000000,
      "employeeCompensation": 0,
      "directLabor": 0,
      "otherLaborExpense": 0,
      "definedContributionPlanCost": 1250000000,
      "accruedCompensation": 4906000000,
      "accruedSalaries": 0,
      "accruedBonuses": 0,
      "accruedVacation": 0,
      "accruedPayrollTaxes": 0,
      "accruedEmployeeBenefits": 0,
      "workersCompensationLiability": 0,
      "numberOfEmployees": 103000,
      "dateFiled": "2026-02-11"
    }
  ],
  "perSegment": [
    {
      "member": "bwin:InsuranceAdvisorySolutionsMember",
      "name": "Insurance Advisory Solutions",
      "role": "segment",
      "history": [
        {
          "period": "2025-12-31",
          "fiscalYear": 2025,
          "fiscalPeriod": {},
          "value": 510028000,
          "currency": "USD",
          "dateFiled": "string"
        }
      ]
    }
  ],
  "byExpenseCaption": [
    {
      "member": "string",
      "name": "Cost Of Revenue",
      "history": [
        {
          "period": "string",
          "fiscalYear": 0,
          "fiscalPeriod": {},
          "value": 0,
          "currency": "string",
          "dateFiled": "string"
        }
      ]
    }
  ],
  "fx": {}
}

400 Bad Request

Invalid parameters or symbol not found

Response schema

  • error string

    Human-readable error message

Example response

{}

403 Forbidden

Feature not available on current plan

Response schema

  • error string

    Human-readable error message

Example response

{}