openapi: 3.0.3 info: title: StockData API description: >- StockData.org provides free real-time, intraday, and historical stock, forex, and cryptocurrency market data along with global financial news and sentiment analysis. The API delivers market data for US-listed stocks including OHLCV data, splits, dividends, and entity-level news sentiment from 5,000+ sources in 30+ languages. All endpoints require an api_token parameter. version: '1.0' contact: url: https://www.stockdata.org/ termsOfService: https://www.stockdata.org/terms servers: - url: https://api.stockdata.org/v1 description: Production Server tags: - name: Stock Data description: Real-time and historical stock market price data - name: News description: Global financial news with sentiment analysis - name: Entities description: Entity search and metadata paths: /data/quote: get: operationId: getStockQuote summary: Get Stock Quote description: >- Get real-time prices for US-listed stocks, updated from trade reports from IEX. Includes pre and post market data. tags: - Stock Data parameters: - name: api_token in: query required: true schema: type: string description: Your API token from the StockData dashboard. - name: symbols in: query required: true schema: type: string description: >- Comma-separated list of stock ticker symbols (e.g., AAPL,MSFT,TSLA). - name: extended_hours in: query required: false schema: type: boolean description: Include pre/post market extended hours data. - name: key_by_ticker in: query required: false schema: type: boolean description: Key response data by ticker symbol instead of array index. responses: '200': description: Stock quote data returned successfully. content: application/json: schema: $ref: '#/components/schemas/QuoteResponse' '401': description: Invalid or missing API token. '429': description: Rate limit exceeded. /data/intraday/adjusted: get: operationId: getIntradayAdjusted summary: Get Adjusted Intraday Data description: >- Get historical intraday data adjusted for splits, spanning 7+ years. Returns OHLCV data at minute or hour intervals. tags: - Stock Data parameters: - name: api_token in: query required: true schema: type: string description: Your API token from the StockData dashboard. - name: symbols in: query required: true schema: type: string description: Comma-separated list of stock ticker symbols. - name: interval in: query required: false schema: type: string enum: [minute, hour] description: Data interval (minute or hour). - name: date_from in: query required: false schema: type: string format: date-time description: Start date/time for the data range (ISO 8601). - name: date_to in: query required: false schema: type: string format: date-time description: End date/time for the data range (ISO 8601). - name: sort in: query required: false schema: type: string enum: [asc, desc] description: Sort order for results. responses: '200': description: Adjusted intraday data returned successfully. content: application/json: schema: $ref: '#/components/schemas/IntradayResponse' '401': description: Invalid or missing API token. '429': description: Rate limit exceeded. /data/intraday: get: operationId: getIntradayRaw summary: Get Raw Intraday Data description: >- Get historical intraday data without split adjustments, spanning 7+ years. Returns OHLCV data at minute or hour intervals. tags: - Stock Data parameters: - name: api_token in: query required: true schema: type: string description: Your API token from the StockData dashboard. - name: symbols in: query required: true schema: type: string description: Comma-separated list of stock ticker symbols. - name: interval in: query required: false schema: type: string enum: [minute, hour] description: Data interval (minute or hour). - name: date_from in: query required: false schema: type: string format: date-time description: Start date/time for the data range (ISO 8601). - name: date_to in: query required: false schema: type: string format: date-time description: End date/time for the data range (ISO 8601). - name: sort in: query required: false schema: type: string enum: [asc, desc] description: Sort order for results. responses: '200': description: Raw intraday data returned successfully. content: application/json: schema: $ref: '#/components/schemas/IntradayResponse' '401': description: Invalid or missing API token. '429': description: Rate limit exceeded. /data/eod: get: operationId: getEndOfDayData summary: Get End-of-Day Historical Data description: >- Get historical end-of-day data for US stocks, adjusted for splits. Supports daily, weekly, monthly, quarterly, and yearly intervals. tags: - Stock Data parameters: - name: api_token in: query required: true schema: type: string description: Your API token from the StockData dashboard. - name: symbols in: query required: true schema: type: string description: Comma-separated list of stock ticker symbols. - name: interval in: query required: false schema: type: string enum: [day, week, month, quarter, year] description: Data interval. - name: date_from in: query required: false schema: type: string format: date description: Start date for the data range. - name: date_to in: query required: false schema: type: string format: date description: End date for the data range. - name: sort in: query required: false schema: type: string enum: [asc, desc] description: Sort order for results. responses: '200': description: End-of-day data returned successfully. content: application/json: schema: $ref: '#/components/schemas/EodResponse' '401': description: Invalid or missing API token. '429': description: Rate limit exceeded. /data/splits: get: operationId: getStockSplits summary: Get Stock Splits description: Retrieve historical stock split information for US-listed stocks. tags: - Stock Data parameters: - name: api_token in: query required: true schema: type: string description: Your API token from the StockData dashboard. - name: symbols in: query required: true schema: type: string description: Comma-separated list of stock ticker symbols. responses: '200': description: Stock splits data returned successfully. content: application/json: schema: $ref: '#/components/schemas/SplitsResponse' '401': description: Invalid or missing API token. /data/dividends: get: operationId: getStockDividends summary: Get Stock Dividends description: Access historical dividend payment records for US-listed stocks. tags: - Stock Data parameters: - name: api_token in: query required: true schema: type: string description: Your API token from the StockData dashboard. - name: symbols in: query required: true schema: type: string description: Comma-separated list of stock ticker symbols. responses: '200': description: Dividend data returned successfully. content: application/json: schema: $ref: '#/components/schemas/DividendsResponse' '401': description: Invalid or missing API token. /news/all: get: operationId: getFinancialNews summary: Get Financial News description: >- Get all the latest global financial news filtered by entities identified within articles, with sentiment analysis for each entity. tags: - News parameters: - name: api_token in: query required: true schema: type: string description: Your API token from the StockData dashboard. - name: symbols in: query required: false schema: type: string description: Filter news by comma-separated ticker symbols. - name: entity_types in: query required: false schema: type: string description: Filter by entity types (e.g., index, equity, etf). - name: industries in: query required: false schema: type: string description: Filter by industry classification. - name: countries in: query required: false schema: type: string description: Filter by country code. - name: sentiment_gte in: query required: false schema: type: number format: float description: Minimum sentiment score filter. - name: sentiment_lte in: query required: false schema: type: number format: float description: Maximum sentiment score filter. - name: search in: query required: false schema: type: string description: Full-text search query across article titles and descriptions. - name: language in: query required: false schema: type: string description: Filter by language code (e.g., en, de, fr). - name: page in: query required: false schema: type: integer description: Page number for pagination. - name: limit in: query required: false schema: type: integer description: Number of results per page (max 50). responses: '200': description: News articles returned successfully. content: application/json: schema: $ref: '#/components/schemas/NewsResponse' '401': description: Invalid or missing API token. '429': description: Rate limit exceeded. /news/similar/{uuid}: get: operationId: getSimilarNews summary: Get Similar News Articles description: >- Find articles similar to a specific article identified by its UUID, with relevance scores and entity data. tags: - News parameters: - name: uuid in: path required: true schema: type: string description: UUID of the reference article. - name: api_token in: query required: true schema: type: string description: Your API token from the StockData dashboard. - name: symbols in: query required: false schema: type: string description: Filter similar articles by ticker symbols. - name: language in: query required: false schema: type: string description: Filter by language code. responses: '200': description: Similar articles returned successfully. content: application/json: schema: $ref: '#/components/schemas/NewsResponse' '401': description: Invalid or missing API token. '404': description: Article not found. /news/uuid/{uuid}: get: operationId: getNewsByUuid summary: Get News Article By UUID description: Retrieve a specific news article by its unique identifier. tags: - News parameters: - name: uuid in: path required: true schema: type: string description: UUID of the article to retrieve. - name: api_token in: query required: true schema: type: string description: Your API token from the StockData dashboard. responses: '200': description: News article returned successfully. content: application/json: schema: $ref: '#/components/schemas/NewsArticle' '401': description: Invalid or missing API token. '404': description: Article not found. /news/stats/intraday: get: operationId: getNewsStatsIntraday summary: Get Entity News Stats Intraday description: >- Get an intraday time-series view of entity performance based on news sentiment, grouped by intervals. tags: - News parameters: - name: api_token in: query required: true schema: type: string description: Your API token from the StockData dashboard. - name: interval in: query required: false schema: type: string enum: [minute, hour, day, week, month, quarter, year] description: Aggregation interval for the time series. - name: group_by in: query required: false schema: type: string description: Field to group results by (e.g., symbol). - name: symbols in: query required: false schema: type: string description: Filter by comma-separated ticker symbols. - name: sentiment_gte in: query required: false schema: type: number format: float description: Minimum sentiment score filter. - name: min_doc_count in: query required: false schema: type: integer description: Minimum number of articles required to include an entity. responses: '200': description: Intraday entity news stats returned successfully. content: application/json: schema: $ref: '#/components/schemas/NewsStatsResponse' '401': description: Invalid or missing API token. /news/stats/aggregation: get: operationId: getNewsStatsAggregation summary: Get Entity News Stats Aggregation description: >- Get a single-timeframe aggregation showing best and worst performing entities based on news sentiment. tags: - News parameters: - name: api_token in: query required: true schema: type: string description: Your API token from the StockData dashboard. - name: group_by in: query required: false schema: type: string description: Field to group results by. - name: symbols in: query required: false schema: type: string description: Filter by comma-separated ticker symbols. - name: sentiment_gte in: query required: false schema: type: number format: float description: Minimum sentiment score filter. - name: min_doc_count in: query required: false schema: type: integer description: Minimum number of articles required. responses: '200': description: Aggregated entity news stats returned successfully. content: application/json: schema: $ref: '#/components/schemas/NewsAggregationResponse' '401': description: Invalid or missing API token. /news/stats/trending: get: operationId: getTrendingEntities summary: Get Trending Entities description: >- Identify trending entities based on news volume and sentiment within a specified timeframe. tags: - News parameters: - name: api_token in: query required: true schema: type: string description: Your API token from the StockData dashboard. - name: group_by in: query required: false schema: type: string description: Field to group results by. - name: sentiment_gte in: query required: false schema: type: number format: float description: Minimum sentiment score filter. - name: date_from in: query required: false schema: type: string format: date-time description: Start date/time for the trending window. - name: date_to in: query required: false schema: type: string format: date-time description: End date/time for the trending window. - name: min_doc_count in: query required: false schema: type: integer description: Minimum number of articles required. responses: '200': description: Trending entities returned successfully. content: application/json: schema: $ref: '#/components/schemas/TrendingResponse' '401': description: Invalid or missing API token. /news/sources: get: operationId: getNewsSources summary: Get News Sources description: >- View all available news sources that can be used to filter other API requests. Sources span 5,000+ outlets in 30+ languages. tags: - News parameters: - name: api_token in: query required: true schema: type: string description: Your API token from the StockData dashboard. - name: distinct_domain in: query required: false schema: type: boolean description: Return only distinct domains. - name: language in: query required: false schema: type: string description: Filter sources by language code. - name: page in: query required: false schema: type: integer description: Page number for pagination. responses: '200': description: News sources returned successfully. content: application/json: schema: $ref: '#/components/schemas/SourcesResponse' '401': description: Invalid or missing API token. /entity/search: get: operationId: searchEntities summary: Search Entities description: >- Dynamic search for financial entities (stocks, ETFs, indices, crypto, currencies) with filtering by type, industry, exchange, and country. tags: - Entities parameters: - name: api_token in: query required: true schema: type: string description: Your API token from the StockData dashboard. - name: search in: query required: false schema: type: string description: Search query matching entity name or symbol. - name: symbols in: query required: false schema: type: string description: Filter by comma-separated ticker symbols. - name: exchanges in: query required: false schema: type: string description: Filter by exchange codes. - name: types in: query required: false schema: type: string description: Filter by entity type (equity, etf, index, etc.). - name: industries in: query required: false schema: type: string description: Filter by industry classification. - name: countries in: query required: false schema: type: string description: Filter by country code. responses: '200': description: Entity search results returned successfully. content: application/json: schema: $ref: '#/components/schemas/EntitySearchResponse' '401': description: Invalid or missing API token. /entity/type/list: get: operationId: listEntityTypes summary: List Entity Types description: >- Returns all supported entity types including equity, index, ETF, mutual fund, currency, and cryptocurrency. tags: - Entities parameters: - name: api_token in: query required: true schema: type: string description: Your API token from the StockData dashboard. responses: '200': description: Entity types list returned successfully. content: application/json: schema: $ref: '#/components/schemas/TypeListResponse' '401': description: Invalid or missing API token. /entity/industry/list: get: operationId: listIndustries summary: List Industries description: Retrieve all supported industry classifications for entity filtering. tags: - Entities parameters: - name: api_token in: query required: true schema: type: string description: Your API token from the StockData dashboard. responses: '200': description: Industry list returned successfully. content: application/json: schema: $ref: '#/components/schemas/IndustryListResponse' '401': description: Invalid or missing API token. components: schemas: QuoteResponse: type: object properties: meta: $ref: '#/components/schemas/Meta' data: type: array items: $ref: '#/components/schemas/Quote' Quote: type: object properties: ticker: type: string description: Stock ticker symbol. name: type: string description: Company name. exchange_short: type: string description: Exchange short code. mic_code: type: string description: Market identifier code. currency: type: string description: Trading currency. price: type: number format: float description: Current price. day_high: type: number format: float description: Intraday high price. day_low: type: number format: float description: Intraday low price. day_open: type: number format: float description: Opening price for the day. 52_week_high: type: number format: float description: 52-week high price. 52_week_low: type: number format: float description: 52-week low price. market_cap: type: integer description: Market capitalization in USD. last_trade_time: type: string format: date-time description: Timestamp of the last trade. is_extended_hours_price: type: boolean description: Whether the price is from extended hours trading. volume: type: integer description: Today's trading volume. previous_close_price: type: number format: float description: Previous day's closing price. IntradayResponse: type: object properties: meta: $ref: '#/components/schemas/Meta' data: type: array items: $ref: '#/components/schemas/OHLCV' EodResponse: type: object properties: meta: $ref: '#/components/schemas/Meta' data: type: array items: $ref: '#/components/schemas/OHLCV' OHLCV: type: object properties: date: type: string format: date-time description: Timestamp of the data point. ticker: type: string description: Stock ticker symbol. open: type: number format: float description: Opening price. high: type: number format: float description: High price. low: type: number format: float description: Low price. close: type: number format: float description: Closing price. volume: type: integer description: Trading volume. is_extended_hours: type: boolean description: Whether data is from extended hours. SplitsResponse: type: object properties: meta: $ref: '#/components/schemas/Meta' data: type: array items: $ref: '#/components/schemas/Split' Split: type: object properties: ticker: type: string description: Stock ticker symbol. date: type: string format: date description: Date of the split. numerator: type: number description: Split numerator. denominator: type: number description: Split denominator. ratio: type: string description: Human-readable split ratio (e.g., 4:1). DividendsResponse: type: object properties: meta: $ref: '#/components/schemas/Meta' data: type: array items: $ref: '#/components/schemas/Dividend' Dividend: type: object properties: ticker: type: string description: Stock ticker symbol. date: type: string format: date description: Dividend payment date. amount: type: number format: float description: Dividend amount per share. NewsResponse: type: object properties: meta: $ref: '#/components/schemas/Meta' data: type: array items: $ref: '#/components/schemas/NewsArticle' NewsArticle: type: object properties: uuid: type: string description: Unique identifier for the article. title: type: string description: Article headline. description: type: string description: Article summary or excerpt. keywords: type: string description: Keywords associated with the article. snippet: type: string description: Short snippet from the article body. url: type: string format: uri description: URL of the original article. image_url: type: string format: uri description: URL of the article's featured image. language: type: string description: Language code of the article. published_at: type: string format: date-time description: Publication timestamp. source: type: string description: News source domain. relevance_score: type: number format: float description: Relevance score for the query. entities: type: array items: $ref: '#/components/schemas/NewsEntity' similar: type: array items: $ref: '#/components/schemas/NewsArticle' NewsEntity: type: object properties: symbol: type: string description: Entity ticker symbol. name: type: string description: Entity name. exchange: type: string description: Exchange name. exchange_long: type: string description: Exchange full name. mic_code: type: string description: Market identifier code. country: type: string description: Country code. type: type: string description: Entity type. industry: type: string description: Industry classification. match_score: type: number format: float description: Entity match confidence score. sentiment_score: type: number format: float description: Entity sentiment score for this article (-1 to 1). highlights: type: array items: $ref: '#/components/schemas/Highlight' Highlight: type: object properties: highlight: type: string description: Highlighted text excerpt. sentiment: type: number format: float description: Sentiment score for this highlight. highlighted_in: type: string description: Article section where highlight appears. NewsStatsResponse: type: object properties: meta: $ref: '#/components/schemas/Meta' data: type: object description: Date-keyed time series of entity stats. NewsAggregationResponse: type: object properties: meta: $ref: '#/components/schemas/Meta' data: type: array items: $ref: '#/components/schemas/EntityStats' EntityStats: type: object properties: entity_key: type: string description: Entity identifier (symbol or key). total_documents: type: integer description: Total number of articles mentioning this entity. sentiment_avg: type: number format: float description: Average sentiment score across all articles. TrendingResponse: type: object properties: meta: $ref: '#/components/schemas/Meta' data: type: array items: $ref: '#/components/schemas/TrendingEntity' TrendingEntity: type: object properties: entity_key: type: string description: Entity identifier. document_count: type: integer description: Number of articles mentioning this entity. sentiment_avg: type: number format: float description: Average sentiment score. relevance_score: type: number format: float description: Trending relevance score. SourcesResponse: type: object properties: meta: $ref: '#/components/schemas/Meta' data: type: array items: $ref: '#/components/schemas/NewsSource' NewsSource: type: object properties: source_id: type: string description: Unique source identifier. domain: type: string description: Source domain name. language: type: string description: Primary language of the source. EntitySearchResponse: type: object properties: meta: $ref: '#/components/schemas/Meta' data: type: array items: $ref: '#/components/schemas/Entity' Entity: type: object properties: symbol: type: string description: Entity ticker symbol. name: type: string description: Entity name. type: type: string description: Entity type (equity, etf, index, crypto, currency). industry: type: string description: Industry classification. exchange: type: string description: Exchange short code. exchange_long: type: string description: Exchange full name. mic_code: type: string description: Market identifier code. country: type: string description: Country code. currency: type: string description: Trading currency. TypeListResponse: type: object properties: data: type: array items: type: string description: List of supported entity type strings. IndustryListResponse: type: object properties: data: type: array items: type: string description: List of supported industry classification strings. Meta: type: object properties: found: type: integer description: Total number of records matching the query. returned: type: integer description: Number of records returned in this response. limit: type: integer description: Maximum records per page. page: type: integer description: Current page number. securitySchemes: ApiToken: type: apiKey in: query name: api_token description: API token obtained from the StockData dashboard. security: - ApiToken: []