openapi: 3.0.3
info:
title: Barchart OnDemand API
description: >-
The Barchart OnDemand API is a commercially licensed market-data and
commodity-data service hosted at https://ondemand.websol.barchart.com.
It exposes a broad catalog of REST endpoints for quotes, historical time
series, reference/instrument metadata, futures and options, fundamentals,
corporate actions, cryptocurrencies, physical-commodity and agricultural
data, technicals, news, and weather. Every call is authenticated with an
`apikey` query parameter issued by Barchart, and each endpoint responds in
JSON, XML, or CSV selected by the path suffix (for example
`/getQuote.json`, `/getQuote.xml`, `/getQuote.csv`); GET, POST, and SOAP
transports are supported.
ACCESS NOTE - Barchart OnDemand is subscription and enterprise gated. The
endpoint names, HTTP method, `apikey` auth, format suffixes, and the
documented request parameters below are taken from Barchart's public
OnDemand documentation and are accurate. Because request quotas, the exact
field catalogs, and full response payloads are entitlement-specific and
not publicly published in machine-readable form, the response schemas in
this document are HONESTLY MODELED (endpointsModeled) rather than captured
from live authenticated responses. Field sets returned depend on your
Barchart data license.
version: '1.0'
contact:
name: Barchart OnDemand
url: https://www.barchart.com/ondemand/api
x-access-model: subscription-and-enterprise (apikey required; contact sales / free trial)
x-endpoints-modeled: true
servers:
- url: https://ondemand.websol.barchart.com
description: Barchart OnDemand production host
security:
- apiKeyQuery: []
tags:
- name: Quotes
description: Real-time, delayed, and end-of-day price quotes.
- name: History
description: Historical tick, minute, and end-of-day time series.
- name: Reference & Equities
description: Instrument metadata and bulk equities by exchange.
- name: Futures & Options
description: Futures and options market data and analytics.
- name: Fundamentals
description: Company profiles and financial statements.
- name: Corporate Actions & Earnings
description: Splits, dividends, earnings, and calendars.
- name: Cryptocurrency
description: Spot crypto quotes and history.
- name: Commodities & Agriculture
description: Grain bids, commodity statistics, fuel, and crop data.
- name: Technicals & Charts
description: Technical studies, signals, and chart images.
- name: News & Filings
description: Financial news and SEC filings.
- name: Weather
description: Current conditions and forecasts.
paths:
/getQuote.json:
get:
operationId: getQuote
tags:
- Quotes
summary: Get quotes
description: >-
Request real-time, delayed, or end-of-day price data by symbol for
stocks, indexes, mutual funds, ETFs, futures, forex, or
cryptocurrencies. Multiple comma-separated symbols are supported, as is
futures notation such as `ESZ25`, `ES*0` (active), and `ES^F` (all
contracts).
parameters:
- $ref: '#/components/parameters/ApiKey'
- name: symbols
in: query
required: true
description: One or more comma-separated instrument symbols.
schema:
type: string
example: AAPL,GOOG,ESZ25
- name: fields
in: query
required: false
description: Comma- or semicolon-delimited list of additional fields to return.
schema:
type: string
example: fiftyTwoWkHigh,fiftyTwoWkLow
responses:
'200':
$ref: '#/components/responses/QuoteResults'
'401':
$ref: '#/components/responses/Unauthorized'
/getQuoteEod.json:
get:
operationId: getQuoteEod
tags:
- Quotes
summary: Get end-of-day quotes
description: End-of-day price data by exchange and symbol.
parameters:
- $ref: '#/components/parameters/ApiKey'
- name: symbols
in: query
required: true
schema:
type: string
- name: exchange
in: query
required: false
description: Exchange acronym to scope the request.
schema:
type: string
responses:
'200':
$ref: '#/components/responses/QuoteResults'
'401':
$ref: '#/components/responses/Unauthorized'
/getHistory.json:
get:
operationId: getHistory
tags:
- History
summary: Get historical time series
description: >-
Historical time series (tick, minute bars, or end-of-day) for stocks,
indexes, mutual funds, ETFs, futures, forex, or crypto, with daily,
weekly, monthly, quarterly, yearly and nearest/continuation variants.
parameters:
- $ref: '#/components/parameters/ApiKey'
- name: symbol
in: query
required: true
description: A single instrument symbol.
schema:
type: string
example: IBM
- name: type
in: query
required: true
description: >-
Time series type, e.g. ticks, minutes, nearbyMinutes, formTMinutes,
daily, dailyNearest, dailyContinue, weekly, monthly, quarterly,
yearly (and their Nearest/Continue variants).
schema:
type: string
example: daily
- name: startDate
in: query
required: false
description: Inclusive start date/time (YYYYMMDD or YYYYMMDDHHmmss).
schema:
type: string
- name: endDate
in: query
required: false
description: Inclusive end date/time.
schema:
type: string
- name: maxRecords
in: query
required: false
description: Maximum number of records to return.
schema:
type: integer
responses:
'200':
$ref: '#/components/responses/HistoryResults'
'401':
$ref: '#/components/responses/Unauthorized'
/getEquitiesByExchange.json:
get:
operationId: getEquitiesByExchange
tags:
- Reference & Equities
summary: Get all equities by exchange
description: Returns market data for all equities on a given exchange in a single query.
parameters:
- $ref: '#/components/parameters/ApiKey'
- name: exchange
in: query
required: true
description: Exchange acronym (e.g. NYSE, NASDAQ, AMEX).
schema:
type: string
example: NYSE
- name: fields
in: query
required: false
schema:
type: string
responses:
'200':
$ref: '#/components/responses/QuoteResults'
'401':
$ref: '#/components/responses/Unauthorized'
/getInstrumentDefinition.json:
get:
operationId: getInstrumentDefinition
tags:
- Reference & Equities
summary: Get instrument definitions
description: Instrument metadata by symbol, exchange, or MIC (names, codes, tick increments).
parameters:
- $ref: '#/components/parameters/ApiKey'
- name: symbols
in: query
required: false
schema:
type: string
- name: exchange
in: query
required: false
schema:
type: string
responses:
'200':
$ref: '#/components/responses/GenericResults'
'401':
$ref: '#/components/responses/Unauthorized'
/getFuturesOptions.json:
get:
operationId: getFuturesOptions
tags:
- Futures & Options
summary: Get futures options
description: >-
Intraday options data on futures - strike price, volume, open interest,
implied volatility and greeks - for a given root futures symbol.
parameters:
- $ref: '#/components/parameters/ApiKey'
- name: root
in: query
required: true
description: Root futures symbol.
schema:
type: string
example: CL
- name: fields
in: query
required: false
schema:
type: string
responses:
'200':
$ref: '#/components/responses/GenericResults'
'401':
$ref: '#/components/responses/Unauthorized'
/getFuturesByExchange.json:
get:
operationId: getFuturesByExchange
tags:
- Futures & Options
summary: Get futures by exchange
description: Real-time, delayed, or end-of-day futures data for all contracts on an exchange.
parameters:
- $ref: '#/components/parameters/ApiKey'
- name: exchange
in: query
required: true
schema:
type: string
example: CME
responses:
'200':
$ref: '#/components/responses/QuoteResults'
'401':
$ref: '#/components/responses/Unauthorized'
/getOptionsScreener.json:
get:
operationId: getOptionsScreener
tags:
- Futures & Options
summary: Screen equity/ETF options
description: Screen equity and ETF options using filters to surface unusual activity.
parameters:
- $ref: '#/components/parameters/ApiKey'
- name: baseSymbol
in: query
required: false
schema:
type: string
- name: fields
in: query
required: false
schema:
type: string
responses:
'200':
$ref: '#/components/responses/GenericResults'
'401':
$ref: '#/components/responses/Unauthorized'
/getProfile.json:
get:
operationId: getProfile
tags:
- Fundamentals
summary: Get company profile
description: Company information - sector, industry, CEO, earnings, P/E ratio, and address.
parameters:
- $ref: '#/components/parameters/ApiKey'
- name: symbols
in: query
required: true
schema:
type: string
example: MSFT
responses:
'200':
$ref: '#/components/responses/GenericResults'
'401':
$ref: '#/components/responses/Unauthorized'
/getFinancialHighlights.json:
get:
operationId: getFinancialHighlights
tags:
- Fundamentals
summary: Get financial highlights
description: Key financial metrics such as market cap, revenue, net income, and EPS.
parameters:
- $ref: '#/components/parameters/ApiKey'
- name: symbols
in: query
required: true
schema:
type: string
responses:
'200':
$ref: '#/components/responses/GenericResults'
'401':
$ref: '#/components/responses/Unauthorized'
/getIncomeStatements.json:
get:
operationId: getIncomeStatements
tags:
- Fundamentals
summary: Get income statements
description: Public-company income statement data.
parameters:
- $ref: '#/components/parameters/ApiKey'
- name: symbols
in: query
required: true
schema:
type: string
- name: frequency
in: query
required: false
description: annual or quarter.
schema:
type: string
responses:
'200':
$ref: '#/components/responses/GenericResults'
'401':
$ref: '#/components/responses/Unauthorized'
/getRatings.json:
get:
operationId: getRatings
tags:
- Fundamentals
summary: Get analyst ratings
description: Analyst ratings from strong buy through strong sell.
parameters:
- $ref: '#/components/parameters/ApiKey'
- name: symbols
in: query
required: true
schema:
type: string
responses:
'200':
$ref: '#/components/responses/GenericResults'
'401':
$ref: '#/components/responses/Unauthorized'
/getCorporateActions.json:
get:
operationId: getCorporateActions
tags:
- Corporate Actions & Earnings
summary: Get corporate actions
description: Splits, dividends, and earnings data for the requested symbols.
parameters:
- $ref: '#/components/parameters/ApiKey'
- name: symbols
in: query
required: true
schema:
type: string
- name: eventType
in: query
required: false
description: splits, dividends, or earnings.
schema:
type: string
responses:
'200':
$ref: '#/components/responses/GenericResults'
'401':
$ref: '#/components/responses/Unauthorized'
/getEarningsCalendar.json:
get:
operationId: getEarningsCalendar
tags:
- Corporate Actions & Earnings
summary: Get earnings calendar
description: Upcoming earnings totals and data by date.
parameters:
- $ref: '#/components/parameters/ApiKey'
- name: date
in: query
required: false
description: Calendar date (YYYYMMDD).
schema:
type: string
responses:
'200':
$ref: '#/components/responses/GenericResults'
'401':
$ref: '#/components/responses/Unauthorized'
/getCrypto.json:
get:
operationId: getCrypto
tags:
- Cryptocurrency
summary: Get crypto quotes
description: Spot-market cryptocurrency price data (Bitcoin, Ethereum, Ripple, Litecoin, etc.).
parameters:
- $ref: '#/components/parameters/ApiKey'
- name: symbols
in: query
required: true
schema:
type: string
example: ^BTCUSD,^ETHUSD
responses:
'200':
$ref: '#/components/responses/QuoteResults'
'401':
$ref: '#/components/responses/Unauthorized'
/getCryptoHistory.json:
get:
operationId: getCryptoHistory
tags:
- Cryptocurrency
summary: Get crypto history
description: Historical price data for spot cryptocurrencies.
parameters:
- $ref: '#/components/parameters/ApiKey'
- name: symbol
in: query
required: true
schema:
type: string
- name: type
in: query
required: false
schema:
type: string
responses:
'200':
$ref: '#/components/responses/HistoryResults'
'401':
$ref: '#/components/responses/Unauthorized'
/getGrainBids.json:
get:
operationId: getGrainBids
tags:
- Commodities & Agriculture
summary: Get grain cash bids
description: Cash bid data for the 30 closest grain locations to a point.
parameters:
- $ref: '#/components/parameters/ApiKey'
- name: zipCode
in: query
required: false
description: US zip code used to find nearby grain locations.
schema:
type: string
- name: commodities
in: query
required: false
schema:
type: string
responses:
'200':
$ref: '#/components/responses/GenericResults'
'401':
$ref: '#/components/responses/Unauthorized'
/getCmdtyStats.json:
get:
operationId: getCmdtyStats
tags:
- Commodities & Agriculture
summary: Get commodity statistics
description: Fundamentals, commodity statistics, and economic data with historical records.
parameters:
- $ref: '#/components/parameters/ApiKey'
- name: symbols
in: query
required: false
schema:
type: string
responses:
'200':
$ref: '#/components/responses/GenericResults'
'401':
$ref: '#/components/responses/Unauthorized'
/getFuelPrices.json:
get:
operationId: getFuelPrices
tags:
- Commodities & Agriculture
summary: Get fuel prices
description: Refined fuel price data and reference data by location or coordinates.
parameters:
- $ref: '#/components/parameters/ApiKey'
- name: zipCode
in: query
required: false
schema:
type: string
responses:
'200':
$ref: '#/components/responses/GenericResults'
'401':
$ref: '#/components/responses/Unauthorized'
/getTechnicals.json:
get:
operationId: getTechnicals
tags:
- Technicals & Charts
summary: Get technicals
description: Technical data and statistics for equities, indices, futures, and currencies.
parameters:
- $ref: '#/components/parameters/ApiKey'
- name: symbols
in: query
required: true
schema:
type: string
responses:
'200':
$ref: '#/components/responses/GenericResults'
'401':
$ref: '#/components/responses/Unauthorized'
/getSignal.json:
get:
operationId: getSignal
tags:
- Technicals & Charts
summary: Get technical signal
description: Technical Opinion/Signal (buy, sell, hold) based on aggregated indicators.
parameters:
- $ref: '#/components/parameters/ApiKey'
- name: symbols
in: query
required: true
schema:
type: string
responses:
'200':
$ref: '#/components/responses/GenericResults'
'401':
$ref: '#/components/responses/Unauthorized'
/getNews.json:
get:
operationId: getNews
tags:
- News & Filings
summary: Get news
description: News headlines, articles, and photos by source, category, or keyword.
parameters:
- $ref: '#/components/parameters/ApiKey'
- name: sources
in: query
required: false
schema:
type: string
- name: symbols
in: query
required: false
schema:
type: string
- name: maxRecords
in: query
required: false
schema:
type: integer
responses:
'200':
$ref: '#/components/responses/GenericResults'
'401':
$ref: '#/components/responses/Unauthorized'
/getSECFilings.json:
get:
operationId: getSECFilings
tags:
- News & Filings
summary: Get SEC filings
description: Quarterly, annual, and regulatory SEC filings.
parameters:
- $ref: '#/components/parameters/ApiKey'
- name: symbols
in: query
required: true
schema:
type: string
responses:
'200':
$ref: '#/components/responses/GenericResults'
'401':
$ref: '#/components/responses/Unauthorized'
/getWeather.json:
get:
operationId: getWeather
tags:
- Weather
summary: Get weather
description: Current conditions, forecasts, and maps by zip code.
parameters:
- $ref: '#/components/parameters/ApiKey'
- name: zipCode
in: query
required: true
schema:
type: string
example: '60654'
- name: fields
in: query
required: false
schema:
type: string
responses:
'200':
$ref: '#/components/responses/GenericResults'
'401':
$ref: '#/components/responses/Unauthorized'
components:
securitySchemes:
apiKeyQuery:
type: apiKey
in: query
name: apikey
description: >-
Barchart-issued API key passed as the `apikey` query parameter on every
request (for example `?apikey=YOUR_API_KEY`). Keys are provisioned with
a Barchart OnDemand subscription or enterprise agreement.
parameters:
ApiKey:
name: apikey
in: query
required: true
description: Barchart-issued API key.
schema:
type: string
responses:
Unauthorized:
description: Missing, invalid, or unentitled API key.
content:
application/json:
schema:
$ref: '#/components/schemas/Status'
QuoteResults:
description: >-
A status envelope plus an array of quote records. Field set depends on
your data entitlement (modeled).
content:
application/json:
schema:
type: object
properties:
status:
$ref: '#/components/schemas/Status'
results:
type: array
items:
$ref: '#/components/schemas/Quote'
HistoryResults:
description: A status envelope plus an array of historical bars (modeled).
content:
application/json:
schema:
type: object
properties:
status:
$ref: '#/components/schemas/Status'
results:
type: array
items:
$ref: '#/components/schemas/Bar'
GenericResults:
description: >-
A status envelope plus an array of result objects whose fields vary by
endpoint and entitlement (modeled).
content:
application/json:
schema:
type: object
properties:
status:
$ref: '#/components/schemas/Status'
results:
type: array
items:
type: object
additionalProperties: true
schemas:
Status:
type: object
description: Standard Barchart OnDemand status envelope.
properties:
code:
type: integer
example: 200
message:
type: string
example: Success.
Quote:
type: object
description: Modeled quote record; the exact fields returned depend on entitlement.
properties:
symbol:
type: string
name:
type: string
exchange:
type: string
lastPrice:
type: number
netChange:
type: number
percentChange:
type: number
open:
type: number
high:
type: number
low:
type: number
volume:
type: integer
tradeTimestamp:
type: string
format: date-time
additionalProperties: true
Bar:
type: object
description: Modeled historical bar.
properties:
symbol:
type: string
timestamp:
type: string
format: date-time
tradingDay:
type: string
open:
type: number
high:
type: number
low:
type: number
close:
type: number
volume:
type: integer
openInterest:
type: integer
additionalProperties: true