Skip to content
Eden Engine

Stock Dividend History & Yield (by Symbol)

omnial/get-stock-dividend-history

Given a stock symbol, returns its dividend profile: ex-dividend date, dividend yield, annualized dividend, P/E ratio, payout ratio, and the full history of past dividend payments (date, type, amount, declaration/record/payment dates, currency). For a symbol that Nasdaq does not track dividend history for -- observed on an ETF -- every field comes back as the literal string 'N/A' alongside an explanatory message, rather than an error.

activeper callv1
Provider
Web & Business Data Network
Category
equities
Provider price
$0.01365 per call
Latency p50 / p95
— / —
Success rate
—
Verified
—

Provider list price; Omnial MCP charges provider cost plus a platform markup on top.

Contract

input_schema.json
{
  "type": "object",
  "required": [
    "symbol"
  ],
  "properties": {
    "symbol": {
      "type": "string",
      "description": "Stock symbol (e.g. AAPL)."
    },
    "asset_class": {
      "type": "string",
      "description": "Asset class: stocks, etf, mutualfunds."
    }
  },
  "additionalProperties": false
}
output_schema.json
{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "message": {
          "type": [
            "string",
            "null"
          ],
          "description": "Null on a normal Nasdaq-listed symbol (aapl-dividend-history.json). A short explanatory string, e.g. 'Dividend History for Non-Nasdaq symbols is not available', on a symbol the endpoint has no dividend data for (observed on the SPY ETF) -- read this before trusting the 'N/A' fields below."
        },
        "dividend": {
          "type": "object",
          "properties": {
            "yield": {
              "type": "string",
              "description": "Formatted percentage string, e.g. '0.32%', or 'N/A'."
            },
            "history": {
              "type": "object",
              "properties": {
                "asOf": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "Observed as null on every real call made so far, both fixtures."
                },
                "rows": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "description": "e.g. 'Cash', the only value observed."
                      },
                      "amount": {
                        "type": "string",
                        "description": "Formatted currency string, e.g. '$0.27'."
                      },
                      "currency": {
                        "type": "string",
                        "description": "ISO currency code, e.g. 'USD'."
                      },
                      "recordDate": {
                        "type": "string",
                        "description": "e.g. '08/10/2026'."
                      },
                      "exOrEffDate": {
                        "type": "string",
                        "description": "e.g. '08/10/2026'."
                      },
                      "paymentDate": {
                        "type": "string",
                        "description": "e.g. '08/13/2026', or 'N/A' on older rows."
                      },
                      "declarationDate": {
                        "type": "string",
                        "description": "e.g. '07/30/2026', or 'N/A' on older rows."
                      }
                    },
                    "additionalProperties": true
                  },
                  "description": "One entry per historical dividend payment, most recent first. 84 entries observed on a real Nasdaq-listed stock going back to 1988; absent when the symbol has no dividend history."
                }
              },
              "description": "Absent/empty when the endpoint has no dividend data for the symbol (observed on the SPY ETF, where the raw `dividends.rows` value is null rather than an array) -- not an error condition, see `data.message`.",
              "additionalProperties": true
            },
            "payoutRatio": {
              "type": "string",
              "description": "Formatted numeric string, e.g. '55.07', or 'N/A'."
            },
            "headerValues": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "label": {
                    "type": "string"
                  },
                  "value": {
                    "type": "string"
                  }
                },
                "additionalProperties": true
              },
              "description": "A 4-entry display summary on every real call observed: Ex-Dividend Date, Dividend Yield, Annual Dividend, and P/E Ratio. The first three duplicate the scalar fields above; P/E Ratio is not available anywhere else in this response. All four values come back as the literal string 'N/A' on a symbol with no dividend data."
            },
            "exDividendDate": {
              "type": "string",
              "description": "e.g. '08/10/2026', or the literal string 'N/A' when unavailable."
            },
            "annualizedDividend": {
              "type": "string",
              "description": "Formatted numeric string, e.g. '1.08', or 'N/A'."
            },
            "dividendPaymentDate": {
              "type": "string",
              "description": "e.g. '08/13/2026', or the literal string 'N/A' when unavailable."
            }
          },
          "additionalProperties": true
        }
      },
      "additionalProperties": true
    },
    "status": {
      "type": "string",
      "description": "'success' on both fixtures observed."
    }
  },
  "description": "The dividend record, as returned at routing.responseResultPath ($.output).",
  "additionalProperties": true
}

Pricing

Every real charge, itemised. A model that quietly omits one is a slow financial leak, so nothing here is rolled up, and a charge that only applies to some inputs says so rather than being added in.

Prices in this catalog are the provider's own list price, not your bill: Omnial MCP charges provider cost plus a platform markup on top, so what you are charged is higher than the figure shown. For the exact amount a specific call will cost, run omnial_execute with dry_run: true; that number includes the markup and is what we hold while the call runs. It is a quote, not a cap on the charge.

ChargeRate
Per call
Flat, regardless of what comes back
$0.01365
Cost basis
Not recorded

This tool's catalog entry does not record how its final bill is determined, so we will not tell you whether its cost is fixed before the call or reported by the provider afterwards. Either way what is held is a quote rather than a cap: you are charged what the call actually costs, bounded at 2x the quote.

Updated
Sep 23, 2026