# Authentication Source: https://docs.benzinga.com/api-reference/authentication How to authenticate your requests to the Benzinga API The Benzinga API uses **API Keys** to authenticate requests. Your API Key is a unique identifier that grants access to specific data and features based on your subscription. **Keep your API Key secure.** Do not share it in publicly accessible areas such as GitHub, client-side code, or unsecured communications. If you believe your key has been compromised, contact support immediately. You can view and manage your API Key in your [Benzinga Developer Console](https://www.benzinga.com/apis/licensing/register). ## Authentication Methods The Benzinga API supports two methods for authentication. We strongly recommend using the **HTTP Header** method for production applications as it is more secure and prevents your key from appearing in URL logs. ### 1. HTTP Header (Recommended) To authenticate via the header, include the `Authorization` header with the value `token `. ```http theme={null} Authorization: token ``` ### 2. Query Parameter For quick testing or when header modification isn't possible, you can pass your key as a query parameter named `token`. ```http theme={null} https://api.benzinga.com/api/v2/news?token= ``` ## Code Examples Here are production-ready examples for connecting to the Benzinga API in common languages. ```bash cURL theme={null} # Recommended: Header Authentication curl -L 'https://api.benzinga.com/api/v2/news?pageSize=1' \ -H 'Authorization: token YOUR_API_KEY' \ -H 'Accept: application/json' # Alternative: Query Parameter curl -L 'https://api.benzinga.com/api/v2/news?pageSize=1&token=YOUR_API_KEY' ``` ```python Python theme={null} import requests url = "https://api.benzinga.com/api/v2/news" # Recommended: Header Authentication headers = { "Authorization": "token YOUR_API_KEY", "Accept": "application/json" } params = { "pageSize": 1 } try: response = requests.get(url, headers=headers, params=params) response.raise_for_status() # Raise detailed error for 4xx/5xx responses data = response.json() print(data) except requests.exceptions.RequestException as e: print(f"Error fetching data: {e}") ``` ```javascript Node.js theme={null} const axios = require('axios'); const url = 'https://api.benzinga.com/api/v2/news'; const apiKey = 'YOUR_API_KEY'; async function getNews() { try { const response = await axios.get(url, { headers: { 'Authorization': `token ${apiKey}`, 'Accept': 'application/json' }, params: { pageSize: 1 } }); console.log(response.data); } catch (error) { if (error.response) { // The request was made and the server responded with a status code // that falls out of the range of 2xx console.error('Error Status:', error.response.status); console.error('Error Data:', error.response.data); } else { console.error('Error Message:', error.message); } } } getNews(); ``` ```go Go theme={null} package main import ( "fmt" "io/ioutil" "net/http" ) func main() { url := "https://api.benzinga.com/api/v2/news?pageSize=1" apiKey := "YOUR_API_KEY" req, err := http.NewRequest("GET", url, nil) if err != nil { panic(err) } // Recommended: Header Authentication req.Header.Add("Authorization", fmt.Sprintf("token %s", apiKey)) req.Header.Add("Accept", "application/json") client := &http.Client{} resp, err := client.Do(req) if err != nil { panic(err) } defer resp.Body.Close() if resp.StatusCode >= 400 { fmt.Printf("Error: Status Code %d\n", resp.StatusCode) return } body, err := ioutil.ReadAll(resp.Body) if err != nil { panic(err) } fmt.Println(string(body)) } ``` ## Troubleshooting Common authentication errors and how to resolve them. | Status Code | Message | Possible Cause | Resolution | | :---------- | :------------- | :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------- | | **401** | `Unauthorized` | Invalid API Key | Check that your API key is correct and has not been regenerated. ensure no extra spaces are copied. | | **401** | `Unauthorized` | Missing API Key | Ensure the `Authorization` header is formatted correctly as `token ` or the `token` parameter is present. | | **403** | `Forbidden` | Insufficient Permissions | Your API key is valid, but your plan does not include access to the requested endpoint. Contact sales or support to upgrade your plan. | # Analyst Insights Source: https://docs.benzinga.com/api-reference/calendar-api/analyst-insights/get-analyst-insights openapi/calendar_api.spec.yml get /api/v1/analyst/insights Returns analyst insights and research perspectives on securities, including detailed analysis and recommendations from financial analysts ```json Response (200 OK) theme={null} { "analyst-insights": [ { "action": "Upgrades", "analyst_id": "669ea49c3f2d7e0001303664", "analyst_insights": "BWS Financial upgraded Innodata's stock to Top Pick with a price target of $110.00. \n\n **Strong Financial Performance and Growth Prospects**: Innodata has demonstrated significant financial growth and potential, particularly highlighted by the announcement of $68 million in pretraining deals on its last earnings call. This reflects the company's ability to secure large contracts and its strong positioning within the rapidly evolving AI landscape, which is likely to drive further revenue growth and investor confidence.\n\n**Strategic Government Contract Win**: The acquisition of a government contract entering the fourth quarter of 2025 positions Innodata for substantial expansion into new business areas by 2026. This move is expected to contribute significantly to the company's revenue towards the end of the year, showcasing its strategic growth initiatives and enhancing its market value.", "date": "2026-01-05", "firm": "BWS Financial", "firm_id": "57f832d56b87f600016fa43f", "id": "695bdd0f7bad4dcabd14a073", "pt": "110.00", "rating": "Top Pick", "rating_id": "695bd5818f047b0001feddd2", "security": { "cik": "903651", "exchange": "NASDAQ", "isin": "US4576422053", "name": "Innodata", "symbol": "INOD" }, "updated": 1767628056 }, { "action": "Maintains", "analyst_id": "669ea49c3f2d7e0001303664", "analyst_insights": "BWS Financial maintained their Buy rating on Innodata's stock with a price target of $110.00. \n\n **Strong Revenue Growth Potential**: Innodata has demonstrated a robust financial trajectory by securing $68 million in pretraining deals, indicating a substantial demand for its AI data preparation and engineering services. This growth is a clear indicator of the company's ability to attract significant contracts, thereby bolstering investor confidence in its revenue prospects and operational strength.\n\n**Strategic Government Contract**: The company's entrance into the fourth quarter of 2025 with a government contract positions it for expanded business opportunities in 2026. This strategic move not only diversifies Innodata's revenue streams but also sets the stage for greater financial benefits towards the end of the year, showcasing the company's potential for increased market share and profitability.", "date": "2026-01-05", "firm": "BWS Financial", "firm_id": "57f832d56b87f600016fa43f", "id": "695bd5cf7bad4dcabd14a070", "pt": "110.00", "rating": "Buy", "rating_id": "695bd5818f047b0001feddd2", "security": { "cik": "903651", "exchange": "NASDAQ", "isin": "US4576422053", "name": "Innodata", "symbol": "INOD" }, "updated": 1767626200 } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Overview Source: https://docs.benzinga.com/api-reference/calendar-api/analyst-insights/overview Overview of the Analyst Insights API ## Introduction The Analyst Insights API returns research perspectives on securities, including detailed analysis and recommendations from financial analysts. It provides access to: * Analyst upgrades and downgrades * Price targets * Detailed research notes * Consensus ratings context ## Available Endpoints ### [Get Analyst Insights](/api-reference/calendar_api/analyst-insights/analyst-insights-v1) Retrieve analyst insights and research perspectives for specific securities, firms, or analysts. # Bulls VS Bears Source: https://docs.benzinga.com/api-reference/calendar-api/bulls-say-bears-say/get-bulls-say-bears-say openapi/calendar_api.spec.yml get /api/v1/bulls_bears_say Returns the latest bullish and bearish investment cases for a given stock ticker symbol. Bull cases present positive arguments for buying a stock, while bear cases present negative arguments against it. ```json Response (200 OK) theme={null} { "bulls_say_bears_say": [ { "bear_case": "The analysis highlights a 3.6% year-over-year decline in sales from China, which raises concerns about market performance in a key region. Additionally, while gross margins remain stable at approximately 47% year-over-year, increasing operating expenses pose a risk to profitability. Furthermore, potential sluggish growth in iPhone sales and the possibility of a decline in Apple's reputation could place downward pressure on the company's valuation, leading to apprehension among investors.", "bull_case": "Apple's fourth-quarter sales increased 8% to $102.5 billion, aligning closely with estimates and supporting a projected total sales growth of 10% to 12% in the upcoming quarter, driven primarily by a robust performance in iPhone sales. The company also reported an operating income of $32.4 billion, reflecting a 10% year-over-year increase, and services revenue growth of 15%, contributing positively to gross margin dynamics. Additionally, with anticipated growth in the China region and strategic investments in AI and product development, Apple is positioned for sustainable long-term growth despite rising operational expenditures.", "id": "6951d73e304f6ecd69d00189", "securities": [ { "cik": "0000320193", "exchange": "NASDAQ Global Select Consolidated", "isin": "US0378331005", "name": "APPLE INC", "symbol": "AAPL" } ], "ticker": "AAPL", "updated": 1766971198 } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Overview Source: https://docs.benzinga.com/api-reference/calendar-api/bulls-say-bears-say/overview Overview of the Bulls Say Bears Say API ## Introduction The Bulls Say Bears Say API returns the latest bullish and bearish investment cases for a given stock ticker symbol. * **Bull Cases**: Present positive arguments for buying a stock. * **Bear Cases**: Present negative arguments against investing in a stock. This data is valuable for understanding the opposing viewpoints on a security's potential performance. ## Available Endpoints ### [Get Bulls Say Bears Say](/api-reference/calendar_api/bulls-say-bears-say/latest-bull-and-bear-cases-for-a-given-ticker-symbol) Get the latest bull and bear cases for a given ticker symbol. # Blocktrade Source: https://docs.benzinga.com/api-reference/calendar-api/get-blocktrade openapi/calendar_api.spec.yml get /api/v1/signal/block_trade Returns block trade data, which includes unusually large trades that may indicate institutional trading activity ```json Response (200 OK) theme={null} { "block_trade": [ { "ask": "30.7", "bid": "30.13", "count": 1, "date": "2026-01-06", "description": "Block Trade: CFLT 2.2M @ $30.15", "exchange": "NASDAQ", "executing_exchange": "L", "id": "695d0f6d8f047b0001fefed9", "name": "Confluent", "price": "30.15", "sale_conditions": "@ TW", "size": "2216727", "ticker": "CFLT", "time": "08:34:34", "updated": 1767706477 } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Conference Calls Source: https://docs.benzinga.com/api-reference/calendar-api/get-conference-calls openapi/calendar_api.spec.yml get /api/v2.1/calendar/conference-calls Returns Conference call data for a selected period and/or security. Conference calls are scheduled calls where company management discusses quarterly or annual financial results, business updates, and answers questions from analysts and investors. ```json Response (200 OK) theme={null} { "conference": [ { "access_code": "", "cusip": "74965L101", "date": "2026-02-27", "exchange": "NYSE", "id": "69455ad26f0e8300014905ae", "importance": 2, "international_num": "(201) 493-6780", "isin": "US74965L1017", "name": "RLJ Lodging", "notes": "", "phone_num": "(877) 407-3982", "reservation_num": "", "start_time": "10:00:00", "ticker": "RLJ", "time": "09:01:54", "updated": 1766389198, "webcast_url": "https://edge.media-server.com/mmc/p/vrgtwapr/" }, { "access_code": "", "cusip": "252784301", "date": "2026-02-27", "exchange": "NYSE", "id": "6942b5867dcc070001584a3e", "importance": 2, "international_num": "", "isin": "US2527843013", "name": "Diamondrock Hospitality", "notes": "", "phone_num": "", "reservation_num": "", "start_time": "09:00:00", "ticker": "DRH", "time": "08:52:06", "updated": 1766046383, "webcast_url": "https://edge.media-server.com/mmc/p/zqijedgm/" } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Consensus Ratings Source: https://docs.benzinga.com/api-reference/calendar-api/get-consensus-ratings openapi/calendar_api.spec.yml get /api/v1/consensus-ratings Returns aggregated consensus analyst ratings data for a given ticker symbol. This endpoint provides consensus price targets, aggregate ratings distribution, and analyst counts based on recent analyst ratings. ```json Response (200 OK) theme={null} { "aggregate_ratings": { "strong_buy": 7, "buy": 12, "hold": 5, "sell": 2 }, "aggregate_type": "number", "low_price_target": 200, "high_price_target": 350, "consensus_price_target": 293.69192307692305, "consensus_rating_val": 3.923076923076923, "consensus_rating": "BUY", "updated_at": "2026-01-05T19:42:36Z", "total_analyst_count": 50, "unique_analyst_count": 26 } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Dividends Source: https://docs.benzinga.com/api-reference/calendar-api/get-dividends openapi/calendar_api.spec.yml get /api/v2.2/calendar/dividends Returns dividends data for a selected period and/or security, including both confirmed and unconfirmed dividend dates. V2.2 includes additional fields: confirmed, period, and year. This version provides more detailed information about dividend confirmation status and periodicity. ```json Response (200 OK) theme={null} { "dividends": [ { "confirmed": false, "currency": "USD", "cusip": "33740U620", "date": "2026-12-31", "dividend": "0.1636", "dividend_prior": "0.1636", "dividend_type": "Cash", "dividend_yield": "", "end_regular_dividend": false, "ex_dividend_date": "2027-01-04", "exchange": "BATS", "frequency": 12, "id": "6958d4d893cde40001ee2606", "importance": 1, "isin": "US33740U6203", "name": "First Trust Exchange-Traded Fund VIII FT Vest U.S. Equity Buffer & Premium Income ETF - March", "notes": "", "payable_date": "2027-01-05", "period": "JAN", "record_date": "2027-01-04", "ticker": "XIMR", "updated": 1767429336, "year": 2027 }, { "confirmed": false, "currency": "USD", "cusip": "33740F235", "date": "2026-12-31", "dividend": "0.1788", "dividend_prior": "0.1788", "dividend_type": "Cash", "dividend_yield": "", "end_regular_dividend": false, "ex_dividend_date": "2027-01-04", "exchange": "BATS", "frequency": 12, "id": "6958d4d393cde40001ee25f5", "importance": 1, "isin": "US33740F2359", "name": "First Trust Exchange-Traded Fund VIII FT Vest U.S. Equity Buffer & Premium Income ETF - June", "notes": "", "payable_date": "2027-01-05", "period": "JAN", "record_date": "2027-01-04", "ticker": "XIJN", "updated": 1767429331, "year": 2027 } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Earnings Source: https://docs.benzinga.com/api-reference/calendar-api/get-earnings openapi/calendar_api.spec.yml get /api/v2.1/calendar/earnings Returns earnings data for a selected period and/or security. Includes actual EPS and revenue figures, estimates, surprises, and historical comparisons. Earnings data is crucial for investors to assess company performance. ```json Response (200 OK) theme={null} { "earnings": [ { "currency": "USD", "cusip": "037833100", "date": "2026-10-29", "date_confirmed": 0, "eps": "", "eps_est": "1.990", "eps_prior": "1.850", "eps_surprise": "", "eps_surprise_percent": "", "eps_type": "", "exchange": "NASDAQ", "id": "69030cfb619d3a00015b72a3", "importance": 5, "isin": "US0378331005", "name": "Apple", "notes": "", "period": "Q4", "period_year": 2026, "revenue": "", "revenue_est": "", "revenue_prior": "102466000000.000", "revenue_surprise": "", "revenue_surprise_percent": "", "revenue_type": "", "ticker": "AAPL", "time": "16:00:00", "updated": 1766187011 } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Economics Source: https://docs.benzinga.com/api-reference/calendar-api/get-economics openapi/calendar_api.spec.yml get /api/v2.1/calendar/economics Returns economic calendar data including economic indicators, releases, and reports from various countries. Includes actual values, consensus estimates, and prior values for economic events such as GDP, employment data, inflation metrics, and more. ```json Response (200 OK) theme={null} { "economics": [ { "actual": "", "actual_t": "%", "consensus": "", "consensus_t": "", "country": "USA", "date": "2026-03-08", "description": "Challenger Job Cuts (YoY) report tracks the percentage change in layoffs reported by employers during a given month compared to the same month of the previous year. This report is used by investors and analysts to gauge the strength of the labor market and make informed decisions about their investments. The data in this report can also impact the value of the US dollar, with higher than expected numbers being seen as negative and lower than expected numbers being seen as positive.", "event_category": "Employment", "event_name": "Challenger Job Cuts (YoY)", "event_period": "", "id": "6745790147f2830001365a27", "importance": 1, "notes": "", "period_year": 2026, "prior": "", "prior_t": "%", "time": "02:30:09", "updated": 1736341667 } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # ERX Gaps Source: https://docs.benzinga.com/api-reference/calendar-api/get-erx-gaps openapi/calendar_api.spec.yml get /api/v1/erx-gaps Returns earnings reaction gap data, which tracks significant price gaps following earnings announcements ```json Response (200 OK) theme={null} {} ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Events Source: https://docs.benzinga.com/api-reference/calendar-api/get-events openapi/calendar_api.spec.yml get /api/v2/calendar/events Returns corporate events including investor meetings, conferences, and special announcements ```json Response (200 OK) theme={null} { "events": [ { "date_end": "2026-01-13", "date_start": "2026-01-13", "event_name": "28th Annual Needham Growth Conference", "event_type": "Corporate conference presentation", "id": "695b762f1bd4be000196669c", "importance": 3, "international_number": "", "location": "New York", "phone_number": "", "securities": [ { "country": "USA", "cusip": "346375108", "exchange": "NASDAQ", "isin": "US3463751087", "symbol": "FORM" } ], "source_link": "https://www.formfactor.com/events/", "start_time": "15:00:00", "tags": [ "Needham Growth Conference" ], "updated": 1767602218, "webcast_link": "" } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # FDA Source: https://docs.benzinga.com/api-reference/calendar-api/get-fda openapi/calendar_api.spec.yml get /api/v2.1/calendar/fda Returns FDA approvals, clinical trials, and PDUFA (Prescription Drug User Fee Act) dates for pharmaceutical and biotech companies. Includes information about drug development stages, trial results, approval outcomes, and regulatory milestones. ```json Response (200 OK) theme={null} { "fda": [ { "commentary": "", "companies": [ { "cik": "", "id": "62b3773a118ebc0001427b67", "name": "Alpha Tau Medical Ltd.", "securities": [ { "exchange": "NASDAQ", "symbol": "DRTS" } ] } ], "created": 1767621777, "date": "2026-01-05", "drug": { "generic": false, "id": "62b3771c9c3cd100011418ce", "indication_symptom": [ "Prostate cancer" ], "name": "Alpha DaRT" }, "event_type": "Provided Update", "id": "695bc49183cac20001bec514", "nic_number": "", "notes": "", "outcome": "Alpha Tau Medical Ltd. announced the submission of the first module of its pre-market approval (PMA) application to the U.S. Food and Drug Administration (FDA), following the FDA's previous decision to allow the Company to use the more flexible modular approach.", "outcome_brief": "", "source_link": "https://www.benzinga.com/pressreleases/26/01/g49690927/alpha-tau-submits-first-pre-market-approval-module-to-the-fda-for-alpha-dart-for-the-treatment-of-", "source_type": "Press Release", "status": "", "target_date": "", "time": "09:00:00", "updated": 1767621823 } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Guidance Source: https://docs.benzinga.com/api-reference/calendar-api/get-guidance openapi/calendar_api.spec.yml get /api/v2.1/calendar/guidance Returns company guidance data including forward-looking earnings and revenue projections provided by company management. Includes EPS guidance ranges (min/max), revenue guidance ranges, and comparisons to prior guidance. Guidance is crucial for understanding management's expectations for future performance. ```json Response (200 OK) theme={null} { "guidance": [ { "currency": "USD", "cusip": "00BMCD000", "date": "2026-01-05", "eps_guidance_est": "", "eps_guidance_max": "", "eps_guidance_min": "", "eps_guidance_prior_max": "", "eps_guidance_prior_min": "", "eps_type": "", "exchange": "NASDAQ", "id": "695bcc0c83cac20001becbd4", "importance": 1, "is_primary": "Y", "name": "RedCloud Holdings", "notes": "", "period": "FY", "period_year": 2026, "prelim": "Y", "revenue_guidance_est": "91170920.000", "revenue_guidance_max": "100000000.000", "revenue_guidance_min": "100000000.000", "revenue_guidance_prior_max": "100000000", "revenue_guidance_prior_min": "100000000.000", "revenue_type": "GAAP", "ticker": "RCT", "time": "09:30:00", "updated": 1767623735 } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Haltresume Source: https://docs.benzinga.com/api-reference/calendar-api/get-haltresume openapi/calendar_api.spec.yml get /api/v1/signal/halt_resume Returns trading halt and resume information for securities, including halt reasons and expected resumption times ```json Response (200 OK) theme={null} {} ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # IPOs Source: https://docs.benzinga.com/api-reference/calendar-api/get-ipos openapi/calendar_api.spec.yml get /api/v2.1/calendar/ipos Returns Initial Public Offering (IPO) data including pricing information, underwriters, deal status, and offering details ```json Response (200 OK) theme={null} { "ipos": [ { "currency": "USD", "date": "2026", "deal_status": "Withdrawn", "description": "", "exchange": "NASDAQ", "id": "604b6d8a36622a000186b793", "initial_filing_date": "", "insider_lockup_date": "", "insider_lockup_days": 180, "ipo_type": "SPAC Unit", "last_yr_income": 0, "last_yr_income_year": 0, "last_yr_revenue": 0, "last_yr_revenue_year": 0, "lead_underwriters": [ "Citigroup", "JP Morgan" ], "market_cap_at_offer": 0, "name": "SEP Growth Holdings Corp", "notes": "", "offering_shares": 25000000, "offering_shares_ord_adr": 0, "offering_value": 0, "open_date_verified": false, "ord_shares_out_after_offer": 0, "other_underwriters": [], "price_max": "", "price_min": "", "price_open": "", "price_public_offering": "10.000", "pricing_date": "", "pricing_date_verified": false, "sec_accession_number": "", "sec_filing_url": "", "shares_outstanding": 0, "sic": 0, "spac_converted_to_target": false, "state_location": "", "ticker": "SEPGU", "time": "08:32:58", "underwriter_quiet_expiration_date": "", "underwriter_quiet_expiration_days": 0, "updated": 1767600431 } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Merger And Acquisition Source: https://docs.benzinga.com/api-reference/calendar-api/get-ma openapi/calendar_api.spec.yml get /api/v2.1/calendar/ma Returns mergers and acquisitions (M&A) data including deal announcements, completions, and details about acquiring and target companies. Includes deal size, payment type, deal status, and expected/completed dates for corporate consolidation activities. ```json Response (200 OK) theme={null} { "ma": [ { "acquirer_cusip": "233377407", "acquirer_exchange": "NASDAQ", "acquirer_isin": "US2333774071", "acquirer_name": "DXP Enterprises", "acquirer_ticker": "DXPE", "currency": "USD", "date": "2026-01-05", "date_completed": "2026-01-05", "date_expected": "", "deal_payment_type": "", "deal_size": "", "deal_status": "Completed", "deal_terms_extra": "Terms of the transaction are not being disclosed.", "deal_type": "Acquisition", "id": "695bc1b183cac20001bec44e", "importance": 2, "notes": "", "target_exchange": "", "target_name": "PREMIERflow, LLC", "target_ticker": "", "updated": 1767621689 } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Offerings Source: https://docs.benzinga.com/api-reference/calendar-api/get-offerings openapi/calendar_api.spec.yml get /api/v2.1/calendar/offerings Returns secondary offering data for public companies issuing additional shares after their IPO. Includes offering price, proceeds, number of shares, shelf offerings, and whether securities are sold in portions over time or at the initial offering date. ```json Response (200 OK) theme={null} { "offerings": [ { "currency": "USD", "cusip": "73245B107", "date": "2025-12-29", "dollar_shares": "50000000.000", "exchange": "NASDAQ", "id": "69531bc06ab0a40001b39686", "importance": 2, "name": "SBC Medical Group Holding", "notes": "", "number_shares": 0, "offering_type": "", "price": "", "proceeds": "", "shelf": true, "ticker": "SBC", "time": "19:24:32", "updated": 1767054276, "url": "" } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Unusual Options Activity Source: https://docs.benzinga.com/api-reference/calendar-api/get-optionactivity openapi/calendar_api.spec.yml get /api/v1/signal/option_activity Returns unusual options activity data, including large or unusual options trades that may signal informed trading ```json Response (200 OK) theme={null} { "option_activity": [ { "aggressor_ind": "0.73", "ask": "5.75", "bid": "5.2", "cost_basis": "336000.0", "date": "2025-12-29", "date_expiration": "2026-09-18", "description": "Freeport-McMoRan Option Alert: Sep 18 $50 Puts at the Ask: 600 vs 636 OI; Earnings 1/22 Before Open [est] ", "description_extended": "Freeport-McMoRan Option Alert: Sep 18 $50 Puts at the Ask: 600 @ $5.6 vs 636 OI; Earnings 1/22 Before Open [est] Ref=$51.4", "exchange": "NYSE", "execution_estimate": "AT_ASK", "id": "6952ef7b6ab0a40001b39586", "midpoint": "5.475", "open_interest": "636", "option_activity_type": "TRADE", "option_symbol": "FCX260918P00050000", "price": "5.6", "put_call": "PUT", "sentiment": "BEARISH", "size": "600", "strike_price": "50.00", "ticker": "FCX", "time": "16:15:32", "trade_count": 1, "underlying_price": "51.4", "underlying_type": "STOCK", "updated": 1767042939, "volume": "1601" } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Ratings Source: https://docs.benzinga.com/api-reference/calendar-api/get-ratings openapi/calendar_api.spec.yml get /api/v2.1/calendar/ratings Returns analyst ratings data including upgrades, downgrades, initiations, and price target changes from Wall Street analysts. Includes current and prior ratings, price targets, analyst information, and ratings accuracy metrics when available. ```json Response (200 OK) theme={null} { "ratings": [ { "action_company": "Maintains", "action_pt": "Lowers", "adjusted_pt_current": "260.00", "adjusted_pt_prior": "300.00", "analyst": "Jefferies", "analyst_id": "57fe0358ac6af40001334e62", "analyst_name": "Brent Thill", "currency": "USD", "cusip": "001176213", "date": "2026-01-05", "exchange": "NASDAQ", "id": "695c16678f047b0001fee512", "importance": 3, "isin": "IL0011762130", "name": "Monday.Com", "notes": "", "pt_current": "260.0000", "pt_pct_change": "-13.33", "pt_prior": "300.00", "rating_current": "Buy", "rating_prior": "Buy", "ticker": "MNDY", "time": "14:52:07", "updated": 1767642765, "url": "https://www.benzinga.com/quote/MNDY/analyst-ratings", "url_calendar": "https://www.benzinga.com/quote/MNDY/analyst-ratings", "url_news": "https://www.benzinga.com/stock-articles/MNDY/analyst-ratings" } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Ratings Analysts Source: https://docs.benzinga.com/api-reference/calendar-api/get-ratings-analysts openapi/calendar_api.spec.yml get /api/v2.1/calendar/ratings/analysts Returns the full list of analysts that are providing ratings ```json Response (200 OK) theme={null} { "analyst_ratings_analyst": [ { "firm_id": "57f832a96b87f600016fa347", "firm_name": "Morgan Stanley", "id": "683d9c45e5343b000101a1e3", "name_first": "Lillian", "name_full": "Lillian Lou", "name_last": "Lou", "ratings_accuracy": { "1m_average_return": "0.0", "1m_smart_score": "13.81", "1m_stdev": "0.0", "1m_success_rate": "0.0", "1y_average_return": "-60.47", "1y_loss_count": 1, "1y_smart_score": "16.39", "1y_stdev": "0.0", "1y_success_rate": "0.0", "2y_average_return": "-60.47", "2y_loss_count": 1, "2y_smart_score": "13.36", "2y_stdev": "0.0", "2y_success_rate": "0.0", "3m_average_return": "0.0", "3m_smart_score": "10.68", "3m_stdev": "0.0", "3m_success_rate": "0.0", "3y_average_return": "-60.47", "3y_loss_count": 1, "3y_smart_score": "11.3", "3y_stdev": "0.0", "3y_success_rate": "0.0", "9m_average_return": "-60.47", "9m_loss_count": 1, "9m_smart_score": "17.27", "9m_stdev": "0.0", "9m_success_rate": "0.0", "overall_average_return": "-60.47", "overall_avg_return_percentile": "1.7", "overall_loss_count": 1, "overall_stdev": "0.0", "overall_success_rate": "0.0", "smart_score": "2.86", "total_ratings": 1, "total_ratings_percentile": "7.56" }, "updated": 1767619219 } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Ratings Firms Source: https://docs.benzinga.com/api-reference/calendar-api/get-ratings-firms openapi/calendar_api.spec.yml get /api/v2.1/calendar/ratings/firms Returns the available firms providing analyst ratings ```json Response (200 OK) theme={null} { "analyst_ratings_firm": [ { "id": "692d37e208782e0001f054f2", "name": "konik capital partners llc" }, { "id": "691f0b6521a45000013bb706", "name": "BNP Paribas Exane" }, { "id": "6916bad521a450000139dde8", "name": "Galaxy Digital" }, { "id": "690d8c8ed8a7a50001a7ca17", "name": "Blue Diamond Securities of America LLC" }, { "id": "690907ab6d699e0001d02d93", "name": "Aletheia Capital" } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Removed Source: https://docs.benzinga.com/api-reference/calendar-api/get-removed openapi/calendar_api.spec.yml get /api/v2.1/calendar-removed/ Returns calendar events that have been removed or cancelled from the specified event types ```json Response (200 OK) theme={null} { "removed": [ { "id": "5b5d22b5be523300016fd411", "type": "dividends", "updated": 0 }, { "id": "5c3dc573a8839f000125ef6b", "type": "dividends", "updated": 0 }, { "id": "5c3de0ffa8839f000125efd4", "type": "dividends", "updated": 0 }, { "id": "5c3e642da8839f000125f167", "type": "dividends", "updated": 0 }, { "id": "5c3d9249a8839f000125ef61", "type": "dividends", "updated": 0 } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Splits Source: https://docs.benzinga.com/api-reference/calendar-api/get-splits openapi/calendar_api.spec.yml get /api/v2.1/calendar/splits Returns stock split data including split ratios, announcement dates, ex-dates, and distribution dates. Stock splits occur when a company increases or decreases the number of outstanding shares to adjust the stock price. Includes information about whether the stock is optionable. ```json Response (200 OK) theme={null} { "splits": [ { "cusip": "87807D509", "date_announced": "2025-12-30", "date_distribution": "2025-01-06", "date_ex": "2025-01-07", "date_recorded": "2025-01-02", "exchange": "NASDAQ", "id": "677675329a903000017cb6f1", "importance": 1, "name": "TC BioPharm (Holdings)", "notes": "", "optionable": false, "ratio": "1.25:1", "split_type": "ADR Ratio Change", "ticker": "TCBP", "updated": 1735816783 } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Government Trade Reports Source: https://docs.benzinga.com/api-reference/calendar-api/government-trades/get-government-trade-reports openapi/calendar_api.spec.yml get /api/v1/government_trade_reports Returns detailed government trade disclosure reports including periodic transaction reports filed by congressional members ```json Response (200 OK) theme={null} {} ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Government Trades Source: https://docs.benzinga.com/api-reference/calendar-api/government-trades/get-government-trades openapi/calendar_api.spec.yml get /api/v1/government_trades Returns government official trades including transactions by members of the US House and Senate ```json Response (200 OK) theme={null} {} ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Overview Source: https://docs.benzinga.com/api-reference/calendar-api/government-trades/overview Overview of the Government Trades API ## Introduction The Government Trades API tracks trading activity by US government officials, including members of the US House and Senate. It provides transparency into: * Periodic transaction reports * Individual trade records * Asset types and transaction amounts ## Available Endpoints ### [Get Government Trades](/api-reference/calendar_api/government-trades/government-trades) Returns government official trades including transactions by members of Congress. ### [Get Government Trade Reports](/api-reference/calendar_api/government-trade-reports/government-trade-reports) Returns detailed government trade disclosure reports. # Insider Transaction Source: https://docs.benzinga.com/api-reference/calendar-api/insider-transaction/get-insider-transaction-filing openapi/calendar_api.spec.yml get /api/v1/sec/insider_transactions/{view_type} Returns insider transaction data from SEC Form 4 filings. Use /filings endpoint for grouped filing view (transactions nested under each filing) or /transactions endpoint for flattened individual transaction view. Both endpoints support the same query parameters. ```json Response (200 OK) theme={null} { "data": [ { "accession_number": "0000905729-26-000009", "company_cik": "0000803164", "company_name": "CHOICEONE FINANCIAL SERVICES INC", "company_symbol": "COFS", "filing_date": "2026-01-05T19:54:05Z", "footnotes": null, "form_type": "4", "html_url": "https://www.sec.gov/Archives/edgar/data/0000803164/000090572926000009//Archives/edgar/data/803164/000090572926000009/0000905729-26-000009-index.htm", "id": "695c171b1bd4be0001967659", "is_10b5": false, "owner": { "insider_cik": "0001788991", "insider_name": "Gregory McConnell", "insider_title": "", "is_director": true, "is_officer": false, "is_ten_percent_owner": false, "raw_signature": "/s/ Sarah A. Harper, by Power of Attorney" }, "remaining_shares": "34400", "traded_percentage": "0.68%", "transactions": [ { "acquired_or_disposed": "A", "conversion_exercise_price_derivative": "", "date_deemed_execution": null, "date_exercisable": null, "date_expiration": null, "date_transaction": "2026-01-01T00:00:00Z", "is_derivative": false, "ownership": "d", "post_transaction_quantity": "34400", "price_per_share": "29.52", "remaining_underlying_shares": "", "security_title": "Common Stock", "shares": "233", "transaction_code": "a", "transaction_id": "0000803164_0000905729-26-000009_nd_t_0", "underlying_security_title": "", "underlying_shares": "", "voluntarily_reported": false } ], "updated": 1767642907 } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Insider Transaction Owner Source: https://docs.benzinga.com/api-reference/calendar-api/insider-transaction/get-insider-transaction-owner openapi/calendar_api.spec.yml get /api/v1/sec/insider_transactions/owners Returns information about insider transaction owners, including company officers, directors, and beneficial owners ```json Response (200 OK) theme={null} { "data": [ { "cik": "0001462356", "name": "Katherine L Adams" } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Overview Source: https://docs.benzinga.com/api-reference/calendar-api/insider-transaction/overview Overview of the Insider Transactions API ## Introduction The Insider Transactions API provides data on stock trading by company insiders, such as officers, directors, and major shareholders. It includes data derived from SEC Form 4 filings. ## Available Endpoints ### [Get Insider Transaction Filing](/api-reference/calendar_api/insider-transaction/insider-transaction-filing) Returns insider transaction filings, including stock purchases, sales, and option exercises. ### [Get Insider Owner](/api-reference/calendar_api/insider-transaction/insider-transaction-owner) Returns information about insider owners. # Overview Source: https://docs.benzinga.com/api-reference/calendar-api/overview Overview of Benzinga Calendar APIs ## Introduction The Calendars API suite provides access to a wide range of financial calendar data, helping investors track key corporate and economic events. ## Available Groups | Group | Description | Endpoint | | :------------------- | :----------------------------------------------- | :-------------------------------------------------------------------------------- | | **Conference Calls** | Schedule and details of company conference calls | [Link](/api-reference/calendar_api/conference_calls/returns-conference-call-data) | | **Dividends** | History and schedule of dividend payments | [Link](/api-reference/calendar_api/dividends/dividends-events-v22) | | **Earnings** | Corporate earnings reports schedule | [Link](/api-reference/calendar_api/earnings/returns-the-earnings-data) | | **Economics** | Global economic events calendar | [Link](/api-reference/calendar_api/economics/returns-the-economic-calendar-data) | | **Guidance** | Corporate financial guidance | [Link](/api-reference/calendar_api/guidance/returns-guidance-data) | | **IPOs** | Initial Public Offerings data | [Link](/api-reference/calendar_api/ipos/ipos-v21) | | **Splits** | Stock split history and schedule | [Link](/api-reference/calendar_api/splits/returns-the-splits-calendar-data) | | **Ratings** | Detailed analyst ratings | [Link](/api-reference/calendar_api/ratings/returns-analyst-ratings-data) | | **M\&A** | Mergers and acquisitions activity | [Link](/api-reference/calendar_api/ma/returns-the-mergers-and-acquisitions-data) | # Historical Bars Source: https://docs.benzinga.com/api-reference/data-api-proxy-api/bars/get-bars openapi/data-api-proxy_api.spec.yml get /api/v2/bars Retrieves historical OHLCV (Open, High, Low, Close, Volume) price bar data for specified securities. Returns aggregated price data based on the specified interval. Supports multiple ticker symbols and various time ranges including relative dates. ```json Response (200 OK) theme={null} [ { "symbol": "AAPL", "interval": 7200, "candles": [ { "time": "1765202400000", "open": 278.11, "high": 279.6693, "low": 277.05, "close": 277.335, "volume": "9174901", "dateTime": "2025-12-08T09:00:00.000-05:00" }, { "time": "1765209600000", "open": 277.335, "high": 277.88, "low": 276.7, "close": 277.33, "volume": "6501561", "dateTime": "2025-12-08T11:00:00.000-05:00" }, { "time": "1765987200000", "open": 274.6, "high": 275.07, "low": 272.28, "close": 273.38, "volume": "7179965", "dateTime": "2025-12-17T11:00:00.000-05:00" }, { "time": "1766073600000", "open": 272, "high": 273.164, "low": 269.94, "close": 272.4, "volume": "8374648", "dateTime": "2025-12-18T11:00:00.000-05:00" }, { "time": "1766080800000", "open": 272.37, "high": 272.96, "low": 270.5, "close": 270.865, "volume": "6415588", "dateTime": "2025-12-18T13:00:00.000-05:00" }, { "time": "1767636000000", "open": 267.57, "high": 267.89, "low": 266.14, "close": 266.61, "volume": "5846734", "dateTime": "2026-01-05T13:00:00.000-05:00" } ] } ] ``` # Overview Source: https://docs.benzinga.com/api-reference/data-api-proxy-api/bars/overview Overview of the Bars API ## Introduction The Bars API retrieves historical OHLCV (Open, High, Low, Close, Volume) price bar data for specified securities. It returns aggregated price data based on specified intervals and supports: * Multiple ticker symbols * Various time ranges (absolute and relative dates) * Customizable time buckets (1m, 5m, 1h, 1d, etc.) * Trading session filtering (Pre-market, Regular, After-hours) ## Available Endpoints ### [Get Bars](/api-reference/data-api-proxy_api/bars/get-bars-v2) Retrieve historical bar data for analysis and charting. # Derived Figures And Ratios data Source: https://docs.benzinga.com/api-reference/data-api-proxy-api/derivedfiguresandratios/get-derived openapi/data-api-proxy_api.spec.yml get /api/v3/fundamentals/derived Retrieve derived financial figures and ratios for a list of symbols. Includes calculated metrics essential for financial analysis. ```json Response (200 OK) theme={null} { "ok": "true", "data": [] } ``` # Earning Ratios data Source: https://docs.benzinga.com/api-reference/data-api-proxy-api/earningratios/get-earning-ratios openapi/data-api-proxy_api.spec.yml get /api/v2.1/fundamentals/earningRatios Retrieve earning ratios for a list of symbols. Includes metrics like P/E ratio, EPS, and other earnings-related ratios. ```json Response (200 OK) theme={null} { "result": [ { "company": { "primarySymbol": "AAPL", "primaryExchange": "NAS", "cik": "320193", "isin": "CA03785Y1007", "cusip": "03785Y100", "standardName": "Apple", "countryId": "USA", "isReit": false, "industryTemplateCode": "N", "businessCountryId": "USA", "isLimitedPartnership": false, "yearofEstablishment": 1977, "isLimitedLiabilityCompany": false }, "earningRatios": [ { "id": { "shareClassId": "0P000000GY", "asOf": "2025-09-30", "reportType": "R", "period": "3M", "aorOrRestate": "RESTATE" }, "fiscalYearEnd": 9, "dilutedEpsGrowth": 0.907216, "dilutedContEpsGrowth": 0.907216, "dpsGrowth": 0.04, "normalizedDilutedEpsGrowth": 0.907216, "normalizedBasicEpsGrowth": 0.907216 } ], "symbol": "AAPL", "idType": "SYMBOL", "id": "AAPL" } ] } ``` # Alpha Beta Source: https://docs.benzinga.com/api-reference/data-api-proxy-api/fundamentals/get-alpha-beta openapi/data-api-proxy_api.spec.yml get /api/v2.1/fundamentals/alphaBeta Retrieve Alpha and Beta metrics for specified symbols. These metrics indicate volatility and performance relative to the market. ```json Response (200 OK) theme={null} { "result": [ { "company": { "primarySymbol": "AAPL", "primaryExchange": "NAS", "cik": "320193", "isin": "CA03785Y1007", "cusip": "03785Y100", "standardName": "Apple", "countryId": "USA", "isReit": false, "industryTemplateCode": "N", "businessCountryId": "USA", "isLimitedPartnership": false, "yearofEstablishment": 1977, "isLimitedLiabilityCompany": false }, "alphaBeta": [ { "id": { "shareClassId": "0P000000GY", "asOf": "2019-07-31", "period": "60M" }, "alpha": 0.007715, "beta": 1.249643, "nonDivAlpha": -0.24129, "nonDivBeta": 1.247545 } ], "symbol": "AAPL", "idType": "SYMBOL", "id": "AAPL" } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Asset Classification Source: https://docs.benzinga.com/api-reference/data-api-proxy-api/fundamentals/get-asset-classification openapi/data-api-proxy_api.spec.yml get /api/v2.1/fundamentals/assetClassification Retrieve asset classification details for specified symbols, including sector, industry, and other classification metadata. Useful for portfolio categorization and analysis. # Balance Sheet Source: https://docs.benzinga.com/api-reference/data-api-proxy-api/fundamentals/get-balance-sheet openapi/data-api-proxy_api.spec.yml get /api/v3/fundamentals/balance-sheet Retrieve balance sheet data for specified symbols. Includes assets, liabilities, and equity details. ```json Response (200 OK) theme={null} { "ok": "true", "data": [] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Cash Flow Source: https://docs.benzinga.com/api-reference/data-api-proxy-api/fundamentals/get-cash-flow openapi/data-api-proxy_api.spec.yml get /api/v3/fundamentals/cash-flow Retrieve detailed cash flow statement data for specified symbols. Includes operating, investing, and financing cash flows. ```json Response (200 OK) theme={null} { "ok": "true", "data": [] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Company Source: https://docs.benzinga.com/api-reference/data-api-proxy-api/fundamentals/get-company openapi/data-api-proxy_api.spec.yml get /api/v2.1/fundamentals/company Retrieves detailed company-specific financial data including key metrics, operational statistics, and historical financial performance. Provides a comprehensive view of company financials beyond basic fundamentals. ```json Response (200 OK) theme={null} { "result": [ { "company": { "primarySymbol": "AAPL", "primaryExchange": "NAS", "cik": "320193", "isin": "CA03785Y1007", "cusip": "03785Y100", "standardName": "Apple", "countryId": "USA", "isReit": false, "industryTemplateCode": "N", "businessCountryId": "USA", "isLimitedPartnership": false, "yearofEstablishment": 1977, "isLimitedLiabilityCompany": false }, "symbol": "AAPL", "idType": "SYMBOL", "id": "AAPL" } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Company Profile Source: https://docs.benzinga.com/api-reference/data-api-proxy-api/fundamentals/get-company-profile openapi/data-api-proxy_api.spec.yml get /api/v2.1/fundamentals/companyProfile Retrieves comprehensive company profile information including business description, industry classification, sector details, headquarters location, key executives, and other corporate metadata. Essential for understanding company background and organizational structure. ```json Response (200 OK) theme={null} { "result": [ { "company": { "primarySymbol": "AAPL", "primaryExchange": "NAS", "cik": "320193", "isin": "CA03785Y1007", "cusip": "03785Y100", "standardName": "Apple", "countryId": "USA", "isReit": false, "industryTemplateCode": "N", "businessCountryId": "USA", "isLimitedPartnership": false, "yearofEstablishment": 1977, "isLimitedLiabilityCompany": false }, "companyProfile": { "companyStatus": "U", "countryId": "USA", "fiscalYearEnd": "9", "shortName": "Apple", "standardName": "Apple Inc", "address1": "One Apple Park Way", "city": "Cupertino", "country": "USA", "fax": "+1 408 974-2483", "homepage": "https://www.apple.com", "phone": "+1 408 996-1010", "postalCode": "95014", "province": "CA", "totalEmployees": 166000, "legalName": "Apple Inc", "longDescription": "Apple is among the largest companies in the world, with a broad portfolio of hardware and software products targeted at consumers and businesses. Apple's iPhone makes up a majority of the firm sales, and Apple's other products like Mac, iPad, and Watch are designed around the iPhone as the focal point of an expansive software ecosystem. Apple has progressively worked to add new applications, like streaming video, subscription bundles, and augmented reality. The firm designs its own software and semiconductors while working with subcontractors like Foxconn and TSMC to build its products and chips. Slightly less than half of Apple's sales come directly through its flagship stores, with a majority of sales coming indirectly through partnerships and distribution." }, "symbol": "AAPL", "idType": "SYMBOL", "id": "AAPL" } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Earnings Reports Source: https://docs.benzinga.com/api-reference/data-api-proxy-api/fundamentals/get-earnings-reports openapi/data-api-proxy_api.spec.yml get /api/v2.1/fundamentals/earningReports Retrieves detailed earnings reports for specified securities including revenue, earnings per share (EPS), EBITDA, net income, and other key financial results from quarterly and annual reports. Essential for analyzing company financial performance and earnings trends over time. # Financials Source: https://docs.benzinga.com/api-reference/data-api-proxy-api/fundamentals/get-financials openapi/data-api-proxy_api.spec.yml get /api/v2.1/fundamentals/financials Retrieve financial statements for specified symbols. Includes data from balance sheets, income statements, and cash flow statements. ```json Response (200 OK) theme={null} { "result": [ { "company": { "primarySymbol": "AAPL", "primaryExchange": "NAS", "cik": "320193", "isin": "CA03785Y1007", "cusip": "03785Y100", "standardName": "Apple", "countryId": "USA", "isReit": false, "industryTemplateCode": "N", "businessCountryId": "USA", "isLimitedPartnership": false, "yearofEstablishment": 1977, "isLimitedLiabilityCompany": false }, "financials": [ { "asOf": "2025-09-30", "period": "3M", "reportType": "R", "aorOrRestate": "RESTATE", "balanceSheet": { "id": { "companyId": "0C00000ADA", "asOf": "2025-09-30", "reportType": "R", "period": "3M", "aorOrRestate": "RESTATE" }, "fiscalYearEnd": 9, "currencyId": "USD", "isCalculated": false, "periodEndingDate": "2025-09-27", "accountsPayable": 69860000000.0, "accountsReceivable": 39777000000.0, "currentAccruedExpenses": 8919000000.0, "accumulatedDepreciation": -76014000000.0, "totalLiabilitiesAsReported": 285508000000.0, "totalEquityAsReported": 73733000000.0, "gainsLossesNotAffectingRetainedEarnings": -5571000000.0, "availableForSaleSecurities": 77723000000.0, "capitalStock": 93568000000.0, "cash": 28267000000.0, "cashEquivalents": 7667000000.0, "cashAndCashEquivalents": 35934000000.0, "cashCashEquivalentsAndMarketableSecurities": 54697000000.0, "commonStock": 93568000000.0, "currentAssets": 147957000000.0, "currentDebt": 20329000000.0, "currentDebtAndCapitalLeaseObligation": 20329000000.0, "currentLiabilities": 165631000000.0, "currentDeferredLiabilities": 9055000000.0, "currentDeferredRevenue": 9055000000.0, "nonCurrentDeferredTaxesAssets": 20777000000.0, "grossPpe": 125848000000.0, "incomeTaxPayable": 13016000000.0, "inventory": 5718000000.0, "investmentsAndAdvances": 77723000000.0, "longTermDebt": 78328000000.0, "longTermDebtAndCapitalLeaseObligation": 78328000000.0, "netPpe": 49834000000.0, "otherCurrentLiabilities": 44452000000.0, "otherShortTermInvestments": 18763000000.0, "payables": 82876000000.0, "payablesAndAccruedExpenses": 91795000000.0, "receivables": 72957000000.0, "retainedEarnings": -14264000000.0, "stockholdersEquity": 73733000000.0, "totalTaxPayable": 13016000000.0, "totalAssets": 359241000000.0, "totalLiabilities": 285508000000.0, "totalNonCurrentAssets": 211284000000.0, "investedCapital": 172390000000.0, "nonCurrentDeferredAssets": 20777000000.0, "totalLiabilitiesNetMinorityInterest": 285508000000.0, "totalNonCurrentLiabilitiesNetMinorityInterest": 119877000000.0, "totalEquityGrossMinorityInterest": 73733000000.0, "commercialPaper": 7979000000.0, "commonStockEquity": 73733000000.0, "landAndImprovements": 27337000000.0, "leases": 15091000000.0, "machineryFurnitureEquipment": 83420000000.0, "otherCurrentAssets": 14585000000.0, "otherCurrentBorrowings": 12350000000.0, "otherEquityAdjustments": -5571000000.0, "otherNonCurrentAssets": 62950000000.0, "otherReceivables": 33180000000.0, "properties": 0.0, "totalCapitalization": 152061000000.0, "otherNonCurrentLiabilities": 41549000000.0, "tangibleBookValue": 73733000000.0, "totalEquity": 73733000000.0, "workingCapital": -17674000000.0, "totalDebt": 98657000000.0, "ordinarySharesNumber": 14773260000.0, "netTangibleAssets": 73733000000.0, "investmentinFinancialAssets": 77723000000.0, "netDebt": 62723000000.0, "shareIssued": 14773260000.0, "fiscalYearEndChange": false }, "cashFlowStatement": { "id": { "companyId": "0C00000ADA", "asOf": "2025-09-30", "reportType": "R", "period": "3M", "aorOrRestate": "RESTATE" }, "fiscalYearEnd": 9, "currencyId": "USD", "isCalculated": false, "periodEndingDate": "2025-09-27", "changeinCashSupplementalAsReported": -335000000.0, "capitalExpenditure": -3242000000.0, "cashDividendsPaid": -3862000000.0, "cashFlowFromContinuingFinancingActivities": -27476000000.0, "cashFlowFromContinuingInvestingActivities": -2587000000.0, "cashFlowFromContinuingOperatingActivities": 29728000000.0, "financingCashFlow": -27476000000.0, "investingCashFlow": -2587000000.0, "operatingCashFlow": 29728000000.0, "beginningCashPosition": 36269000000.0, "endCashPosition": 35934000000.0, "changeInAccountPayable": 19381000000.0, "changesInCash": -335000000.0, "changeInInventory": 177000000.0, "changeInPayable": 19381000000.0, "changeInPayablesAndAccruedExpense": 19381000000.0, "changeInReceivables": -26269000000.0, "changeInWorkingCapital": -5707000000.0, "depreciationAndAmortization": 3127000000.0, "depreciationAmortizationDepletion": 3127000000.0, "netCommonStockIssuance": -20132000000.0, "netIssuancePaymentsOfDebt": -3217000000.0, "netLongTermDebtIssuance": -1250000000.0, "netShortTermDebtIssuance": -1967000000.0, "netIncomeFromContinuingOperations": 27466000000.0, "commonStockPayments": -20132000000.0, "longTermDebtPayments": -1250000000.0, "longTermDebtIssuance": 0.0, "purchaseOfInvestment": -6816000000.0, "purchaseOfPpe": -3242000000.0, "netInvestmentPurchaseAndSale": 1160000000.0, "netPpePurchaseAndSale": -3242000000.0, "saleOfInvestment": 7976000000.0, "changesInAccountReceivables": -12367000000.0, "changeInOtherCurrentAssets": -3081000000.0, "changeInOtherCurrentLiabilities": 4085000000.0, "commonStockDividendPaid": -3862000000.0, "netOtherFinancingCharges": -265000000.0, "netOtherInvestingChanges": -505000000.0, "otherNonCashItems": 1659000000.0, "stockBasedCompensation": 3183000000.0, "incomeTaxPaidSupplementalData": 6037000000.0, "issuanceOfDebt": 0.0, "repaymentOfDebt": -1185000000.0, "repurchaseOfCapitalStock": -20132000000.0, "freeCashFlow": 26486000000.0, "cashFlowfromOperationsbeforeNwc": 35435000000.0, "fiscalYearEndChange": false }, "incomeStatement": { "id": { "companyId": "0C00000ADA", "asOf": "2025-09-30", "reportType": "R", "period": "3M", "aorOrRestate": "RESTATE" }, "fiscalYearEnd": 9, "currencyId": "USD", "isCalculated": false, "periodEndingDate": "2025-09-27", "costOfRevenue": 54125000000.0, "grossProfit": 48341000000.0, "netIncome": 27466000000.0, "netIncomeCommonStockholders": 27466000000.0, "netIncomeContinuousOperations": 27466000000.0, "totalRevenue": 102466000000.0, "operatingExpense": 15914000000.0, "operatingIncome": 32427000000.0, "operatingRevenue": 102466000000.0, "otherIncomeExpense": 377000000.0, "pretaxIncome": 32804000000.0, "taxProvision": 5338000000.0, "researchAndDevelopment": 8866000000.0, "sellingGeneralAndAdministration": 7048000000.0, "totalExpenses": 70039000000.0, "ebit": 32427000000.0, "ebitda": 35554000000.0, "netIncomeFromContinuingAndDiscontinuedOperation": 27466000000.0, "reconciledCostOfRevenue": 54125000000.0, "reconciledDepreciation": 3127000000.0, "normalizedIncome": 27466000000.0, "netIncomeFromContinuingOperationNetMinorityInterest": 27466000000.0, "netIncomeIncludingNoncontrollingInterests": 27466000000.0, "otherNonOperatingIncomeExpenses": 377000000.0, "taxRateForCalcs": 0.162724, "taxEffectOfUnusualItems": 0.0, "normalizedEbitda": 35554000000.0, "totalOperatingIncomeAsReported": 32427000000.0, "totalRevenueAsReported": 102466000000.0, "operatingExpenseAsReported": 15914000000.0, "dilutedNiAvailtoComStockholders": 27466000000.0, "normalizedPreTaxIncome": 32804000000.0, "fiscalYearEndChange": false } } ], "symbol": "AAPL", "idType": "SYMBOL", "id": "AAPL" } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Fundamentals Source: https://docs.benzinga.com/api-reference/data-api-proxy-api/fundamentals/get-fundamentals openapi/data-api-proxy_api.spec.yml get /api/v3/fundamentals Retrieves the latest generation of financial fundamentals data powered by Benzinga's enhanced data pipeline. Provides comprehensive financial statements, metrics, and ratios with improved data quality and coverage. Supports flexible date range queries and relative date specifications. ```json Response (200 OK) theme={null} { "ok": "true", "data": [] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Income Statement Source: https://docs.benzinga.com/api-reference/data-api-proxy-api/fundamentals/get-income-statement openapi/data-api-proxy_api.spec.yml get /api/v3/fundamentals/income-statement Retrieves comprehensive income statement data for specified securities. Includes revenue, cost of goods sold, operating expenses, operating income, interest expense, taxes, net income, and earnings per share. Essential for analyzing company profitability and operational performance over time. ```json Response (200 OK) theme={null} { "ok": "true", "data": [] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Share Class Source: https://docs.benzinga.com/api-reference/data-api-proxy-api/fundamentals/get-share-class openapi/data-api-proxy_api.spec.yml get /api/v2.1/fundamentals/shareClass Retrieve share class information for specific symbols. Returns detailed share structure data including share class IDs, currency, and other related metadata. ```json Response (200 OK) theme={null} { "result": [ { "company": { "primarySymbol": "AAPL", "primaryExchange": "NAS", "cik": "320193", "isin": "CA03785Y1007", "cusip": "03785Y100", "standardName": "Apple", "countryId": "USA", "isReit": false, "industryTemplateCode": "N", "businessCountryId": "USA", "isLimitedPartnership": false, "yearofEstablishment": 1977, "isLimitedLiabilityCompany": false }, "shareClass": { "shareClassId": "0P000000GY", "companyId": "0C00000ADA", "symbol": "AAPL", "exchangeId": "NAS", "currencyId": "USD", "ipoDate": "1980-12-12", "isDepositaryReceipt": false, "securityType": "ST00000001", "shareClassStatus": "A", "isPrimaryShare": true, "isDividendReinvest": false, "isDirectInvest": false, "investmentId": "E0USA002US", "ipoOfferPrice": 28.75, "mic": "XNAS", "exchangeSubMarketGlobalId": "EX$$$$XNGS", "conversionRatio": 1.0, "parValue": 1e-05, "suspensionStatus": false, "marketDataId": "126.1.AAPL", "isPrimaryShare1031": true, "investmentPrimaryIssuer": true }, "symbol": "AAPL", "idType": "SYMBOL", "id": "AAPL" } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Share Class Profile Source: https://docs.benzinga.com/api-reference/data-api-proxy-api/fundamentals/get-share-class-profile openapi/data-api-proxy_api.spec.yml get /api/v2.1/fundamentals/shareClassProfile Retrieve profile information for share classes, providing details about the share class characteristics and associated metadata. ```json Response (200 OK) theme={null} { "result": [ { "company": { "primarySymbol": "AAPL", "primaryExchange": "NAS", "cik": "320193", "isin": "CA03785Y1007", "cusip": "03785Y100", "standardName": "Apple", "countryId": "USA", "isReit": false, "industryTemplateCode": "N", "businessCountryId": "USA", "isLimitedPartnership": false, "yearofEstablishment": 1977, "isLimitedLiabilityCompany": false }, "shareClassProfile": { "asOf": "2025-11-30", "marketCap": 4045174397280, "enterpriseValue": 4089134397280, "sharesOutstanding": 14776353000 }, "symbol": "AAPL", "idType": "SYMBOL", "id": "AAPL" } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Share Price Ratios Source: https://docs.benzinga.com/api-reference/data-api-proxy-api/fundamentals/get-share-price-ratios openapi/data-api-proxy_api.spec.yml get /api/v3/fundamentals/share-price-ratios Retrieve share price ratios for specified symbols. Includes metrics like price-to-earnings, price-to-sales, and other price-based ratios. ```json Response (200 OK) theme={null} { "ok": "true", "data": [ { "share_price_ratios": { "type": "common", "data": [ { "id": 17790258, "symbol": "AAPL", "date": "Jan 2, 2024", "open": 187.15, "high": 188.44, "low": 183.88, "close": 185.64, "adj_close": 185.4, "volume": 82488674, "dividend": 0.0, "shares_outstanding": 15744200000.0, "market_cap": 2922760000000.0, "price_to_earnings_ratio_quarterly": 126.149, "price_to_earnings_ratio_ttm": 30.1331, "price_to_sales_ratio_quarterly": 32.3569, "price_to_sales_ratio_ttm": 7.62555, "price_to_book_value": 47.0305, "price_to_free_cash_flow_quarterly": 113.827, "price_to_free_cash_flow_ttm": 23.3774, "enterprise_value": 2972290000000.0, "ev_ebitda": 23.6234, "ev_sales": 7.75478, "ev_fcf": 23.7736, "book_to_market_value": 0.02126, "operating_income_ev": 0.03846, "altman_z_score": 8.18809, "dividend_yield": 0.00514 }, { "id": 17790259, "symbol": "AAPL", "date": "Jan 3, 2024", "open": 184.22, "high": 185.88, "low": 183.43, "close": 184.25, "adj_close": 184.02, "volume": 58414460, "dividend": 0.0, "shares_outstanding": 15744200000.0, "market_cap": 2900870000000.0, "price_to_earnings_ratio_quarterly": 125.205, "price_to_earnings_ratio_ttm": 29.9075, "price_to_sales_ratio_quarterly": 32.1146, "price_to_sales_ratio_ttm": 7.56845, "price_to_book_value": 46.6784, "price_to_free_cash_flow_quarterly": 112.975, "price_to_free_cash_flow_ttm": 23.2024, "enterprise_value": 2950410000000.0, "ev_ebitda": 23.4494, "ev_sales": 7.69769, "ev_fcf": 23.5985, "book_to_market_value": 0.02142, "operating_income_ev": 0.03874, "altman_z_score": 8.14288, "dividend_yield": 0.00518 }, { "id": 17790260, "symbol": "AAPL", "date": "Jan 4, 2024", "open": 182.15, "high": 183.09, "low": 180.88, "close": 181.91, "adj_close": 181.68, "volume": 71983570, "dividend": 0.0, "shares_outstanding": 15744200000.0, "market_cap": 2864030000000.0, "price_to_earnings_ratio_quarterly": 123.614, "price_to_earnings_ratio_ttm": 29.5276, "price_to_sales_ratio_quarterly": 31.7068, "price_to_sales_ratio_ttm": 7.47233, "price_to_book_value": 46.0856, "price_to_free_cash_flow_quarterly": 111.54, "price_to_free_cash_flow_ttm": 22.9077, "enterprise_value": 2913570000000.0, "ev_ebitda": 23.1566, "ev_sales": 7.60157, "ev_fcf": 23.3039, "book_to_market_value": 0.0217, "operating_income_ev": 0.03923, "altman_z_score": 8.06677, "dividend_yield": 0.00525 } ] } } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Overview Source: https://docs.benzinga.com/api-reference/data-api-proxy-api/fundamentals/overview Overview of the Company Fundamentals API ## Introduction The Company Fundamentals API retrieves comprehensive financial data necessary for deep company analysis. It covers: * **Financial Statements**: Balance Sheet, Income Statement, Cash Flow Statement (Original, Restated, TTM). * **Company Profile**: Business description, sector, industry, executives, and headquarters. * **Earnings Reports**: Historical revenue, EPS, EBITDA, and net income. * **Share Class & Valuation**: Share class details, alpha/beta, and valuation ratios. ## Available Endpoints ### [Get Company Profile](/api-reference/data-api-proxy_api/fundamentals/get-company-profile-v21) Get comprehensive company profile information. ### [Get Financials](/api-reference/data-api-proxy_api/fundamentals/get-financials-v21) Retrieve detailed financial statements. ### [Get Earnings Reports](/api-reference/data-api-proxy_api/fundamentals/get-earnings-reports-v21) Get historical earnings data including EPS and revenue. ### [Get Share Class](/api-reference/data-api-proxy_api/fundamentals/get-share-class) Get share class information. # Movers Source: https://docs.benzinga.com/api-reference/data-api-proxy-api/market-data/get-market-movers openapi/data-api-proxy_api.spec.yml get /api/v1/market/movers Retrieves market movers data based on specified filters. Returns stocks that have moved significantly during the specified session and time range. Supports custom screener and movers queries for advanced filtering. ```json Response (200 OK) theme={null} { "result": { "fromDate": "2026-01-14T16:00:00.000-05:00", "toDate": "2026-01-15T15:59:00.000-05:00", "snapTo": "[Snap id=1384473, date=2026-01-15T20:59:00.000Z]", "usePreviousClose": true, "gainers": [ { "symbol": "SPHL", "price": 17.6, "change": 15.35, "changePercent": 682.22, "volume": "110157546", "close": 17.6, "companyName": "Springview Holdings", "averageVolume": 54118, "previousClose": 2.25, "marketCap": "3717459", "gicsSectorName": "Consumer Discretionary", "shareFloat": "627204", "isin": "KYG837611170" }, { "symbol": "CJMB", "price": 4.23, "change": 3.11, "changePercent": 277.67, "volume": "192332880", "close": 4.23, "companyName": "Callan Jmb", "averageVolume": 38277, "previousClose": 1.12, "marketCap": "5177790", "gicsSectorName": "Industrials", "shareFloat": "1412527", "isin": "US1311001093" }, { "symbol": "MLEC", "price": 7.48, "change": 3.95, "changePercent": 111.89, "volume": "9590059", "close": 7.48, "companyName": "Moolec Science", "averageVolume": 38513, "previousClose": 3.53, "marketCap": "2563193", "gicsSectorName": "Consumer Staples", "shareFloat": "573192", "isin": "KYG6223S1259" } ] } } ``` # Short Interest Source: https://docs.benzinga.com/api-reference/data-api-proxy-api/market-data/get-short-interest-data openapi/data-api-proxy_api.spec.yml get /api/v1/shortinterest Retrieves short interest data for specified securities. Includes information about shares sold short, days to cover, and short interest ratios. Supports optional FINRA report data and date range filtering. ```json Response (200 OK) theme={null} { "shortInterestData": { "AAPL": { "data": [ { "recordDate": "2026-01-12", "symbol": "AAPL", "company": "Apple Inc. Common Stock", "totalShortInterest": "112732788", "daysToCover": 2.71, "shortPercentOfFloat": 0.77, "shortPriorMo": "122035714", "percentChangeMoMo": -7.62, "sharesFloat": "14688854878", "averageDailyVolume": "41632615", "sharesOutstanding": "14697926000", "exchange": "NNM", "sector": "Technology", "industry": "Consumer Electronics", "exchangeReceiptDate": "2026-01-05", "settlementDate": "2025-12-31" } ] } } } ``` # Overview Source: https://docs.benzinga.com/api-reference/data-api-proxy-api/market-data/overview Overview of the Market Data APIs ## Introduction The Market Data APIs provide comprehensive market information including delayed quotes, market movers, and short interest data for securities. ## Market Movers The Market Movers API provides real-time data on the top gaining, losing, and most actively traded securities. Use this endpoint to identify: * **Gainers** - Securities with the highest positive price change * **Losers** - Securities with the highest negative price change * **Volume Leaders** - Securities with the highest trading volume Each result includes price, change percentage, volume, market cap, sector, and float data. ### [Get Market Movers](/api-reference/data-api-proxy_api/market-data/market-movers) Get top market movers including gainers, losers, and volume leaders. *** ## Short Interest Data The Short Interest API provides short selling activity data for securities. This data is valuable for understanding market sentiment and identifying potential short squeeze candidates. Key metrics include: * **Total Short Interest** - Number of shares sold short * **Days to Cover** - Estimated days to cover short positions based on average volume * **Short % of Float** - Percentage of float shares sold short * **Month-over-Month Change** - Change in short interest from prior month ### [Get Short Interest Data](/api-reference/data-api-proxy_api/market-data/short-interest-data) Get short interest data for securities. # Operation Ratios Source: https://docs.benzinga.com/api-reference/data-api-proxy-api/operationratios/get-operation-ratios openapi/data-api-proxy_api.spec.yml get /api/v2/fundamentals/operationRatios Retrieves operational efficiency ratios and metrics for specified securities. Includes key performance indicators such as asset turnover, inventory turnover, receivables turnover, payables period, and other operational metrics that measure how effectively a company utilizes its assets and manages operations. # Delayed Quotes data Source: https://docs.benzinga.com/api-reference/data-api-proxy-api/quotedelayed/get-delayed-quotes openapi/data-api-proxy_api.spec.yml get /api/v2/quoteDelayed Get delayed quotes for a list of symbols ```json Response (200 OK) theme={null} { "AAPL": { "symbol": "AAPL", "exchange": "XNAS", "isoExchange": "XNAS", "bzExchange": "NASDAQ", "otcMarket": "", "otcTier": "", "type": "STOCK", "name": "Apple", "companyStandardName": "Apple Inc", "description": "Apple Inc. - Common Stock", "sector": "Information Technology", "industry": "Technology Hardware, Storage & Peripherals", "close": 273.76, "bidPrice": 272.61, "askPrice": 272.9, "askSize": 1400, "bidSize": 100, "size": 5475595, "bidTime": 1767094931000, "askTime": 1767094931000, "lastTradePrice": 272.88, "lastTradeTime": 1767094765848, "volume": 27899, "change": -0.88, "changePercent": -0.32, "previousClosePrice": 273.4, "previousCloseDate": "2025-12-26T16:00:00.000-05:00", "closeDate": "2025-12-29T16:00:00.000-05:00", "fiftyDayAveragePrice": 272.054, "hundredDayAveragePrice": 256.237, "twoHundredDayAveragePrice": 231.1605, "averageVolume": 45744505, "fiftyTwoWeekHigh": 288.62, "fiftyTwoWeekLow": 169.2101, "marketCap": 4032171206640, "sharesOutstanding": 14776353000, "sharesFloat": 14767891198, "pe": 36.697051, "forwardPE": 33.0033, "dividendYield": 0.38, "dividend": 1.04, "payoutRatio": 13.67, "ethPrice": 272.88, "ethVolume": 27899, "ethTime": 1767094765848, "currency": "USD", "issuerName": "Apple Inc", "primary": true, "shortDescription": "Ordinary Shares", "issuerShortName": "Apple" } } ``` # Overview Source: https://docs.benzinga.com/api-reference/data-api-proxy-api/quotedelayed/overview Overview of the Delayed Quotes API ## Introduction The Delayed Quotes API provides market quotes with a 15-minute delay for a list of securities. It supports retrieval by: * Symbols * ISINs * CIKs ## Available Endpoints ### [Get Delayed Quotes v2](/api-reference/data-api-proxy_api/quotedelayed/get-delayed-quotes-v2) Get delayed quotes. # Valuation Ratios data Source: https://docs.benzinga.com/api-reference/data-api-proxy-api/valuationratios/get-valuation-ratios openapi/data-api-proxy_api.spec.yml get /api/v2.1/fundamentals/valuationRatios Retrieve valuation ratios for a list of symbols. Includes metrics like P/E, P/B, P/S, and other valuation metrics essential for investment analysis. ```json Response (200 OK) theme={null} { "result": [ { "valuationRatios": [ { "id": { "shareClassId": "0P000000GY", "date": "2025-12-29" }, "payoutRatio": 0.1367, "sustainableGrowthRate": 1.4798, "cashReturn": 0.0242, "salesPerShare": 27.7354, "bookValuePerShare": 4.9899, "cfoPerShare": 7.4298, "fcfPerShare": 6.5824, "earningYield": 0.0273, "peRatio": 36.697051, "salesYield": 0.1013, "psRatio": 9.870425, "bookValueYield": 0.0182, "pbRatio": 54.862469, "cfYield": 0.0271, "pcfRatio": 36.84618, "fcfYield": 0.024, "fcfRatio": 41.589659, "trailingDividendYield": 0.0038, "forwardDividendYield": 0.0038, "forwardEarningYield": 0.0303, "forwardPeRatio": 33.0033, "pegRatio": 2.7704, "pegPayback": 13.1778, "tangibleBookValuePerShare": 4.9899, "tangibleBvPerShare3YrAvg": 3.6682, "tangibleBvPerShare5YrAvg": 3.7499, "forwardDividend": 1.04, "workingCapitalPerShare": -1.1961, "workingCapitalPerShare3YrAvg": -0.9471, "workingCapitalPerShare5YrAvg": 0.0018, "evToEbitda": 28.25, "buyBackYield": 0.0224, "totalYield": 0.0262, "ratioPe5YearAverage": 30.7147, "normalizedPeRatio": 36.697051, "pricetoEbitda": 28.378187, "divYield5Year": 0.0053, "forwardROE": 1.6613, "forwardROA": 0.341, "twoYearsForwardEarningYield": 0.0326, "twoYearsForwardPERatio": 30.6562, "forwardCalculationStyle": "Annual", "totalAssetPerShare": 24.3119, "expectedDividendGrowthRate": 0.0097, "evToRevenue": 9.8258, "evToPreTaxIncome": 30.8081, "evToTotalAssets": 11.3827, "evToFCF": 41.4018, "evToEBIT": 30.7338, "priceToCashRatio": 73.956056, "evToForwardEBITDA": 26.2562, "evToForwardRevenue": 9.0758, "evToForwardEBIT": 28.4086, "pFCFRatio1YearGrowth": 0.149078, "pBRatio1YearGrowth": -0.187251, "pERatio1YearGrowth": -0.127047, "pSRatio1YearGrowth": -0.019926, "pFCFRatio3YrAvg": 31.408487, "pBRatio3YrAvg": 47.955858, "pSRatio3YrAvg": 8.0842, "pCashRatio3YrAvg": 53.197061, "pERatio3YrAvg": 32.189697, "pFCFRatio3YrAvgChange": 1.190406, "pBRatio3YrAvgChange": 0.353891, "pSRatio3YrAvgChange": 0.839416, "pERatio3YrAvgChange": 0.729951, "pERatio1YearHigh": 41.480263, "pERatio1YearLow": 27.368254, "pERatio1YearAverage": 35.25386, "pERatio5YearHigh": 43.646341, "pERatio5YearLow": 20.461538, "pERatio5YearAverage": 30.714662, "pERatio10YearHigh": 43.646341, "pERatio10YearLow": 9.896186, "pERatio10YearAverage": 24.736982, "cAPERatio": 52.9865, "pFCFRatio3YearGrowth": 0.298698, "pBRatio3YearGrowth": 0.10627, "pERatio3YearGrowth": 0.200452, "pSRatio3YearGrowth": 0.225256, "pFCFRatio5YearGrowth": 0.05236, "pBRatio5YearGrowth": 0.095783, "pERatio5YearGrowth": -0.022497, "pSRatio5YearGrowth": 0.027661, "pFCFRatio10YearGrowth": 0.165039, "pBRatio10YearGrowth": 0.269365, "pERatio10YearGrowth": 0.120204, "pSRatio10YearGrowth": 0.138603, "twoYearsEVToForwardEBIT": 26.412, "twoYearsEVToForwardEBITDA": 24.1546, "firstYearEstimatedEpsGrowth": 0.1113, "secondYearEstimatedEpsGrowth": 0.0772, "normalizedPEGRatio": 2.054499, "trailingDividend": 1.03 } ], "company": { "primarySymbol": "AAPL", "primaryExchange": "NAS", "cik": "320193", "isin": "CA03785Y1007", "cusip": "03785Y100", "standardName": "Apple", "countryId": "USA", "isReit": false, "industryTemplateCode": "N", "businessCountryId": "USA", "isLimitedPartnership": false, "yearofEstablishment": 1977, "isLimitedLiabilityCompany": false }, "symbol": "AAPL", "idType": "SYMBOL", "id": "AAPL" } ] } ``` # Fetch Transcripts Source: https://docs.benzinga.com/api-reference/delivery-api/calls/fetch-all-calls openapi/delivery_api.spec.yml get /api/v1/transcripts/calls Retrieve a list of calls with optional filtering and pagination. By default, only COMPLETED calls are returned. Use status=ALL to return all statuses. ```json Response (200 OK) theme={null} { "data": [ { "call_id": "694bf432dd7f23000124626c", "call_title": "Aritzia achieves record $1 billion revenue, driven by digital growth and boutique expansion", "description": "Q1 2026 Aritzia (ATZ) Earnings Conference Call", "webcast_url": "https://events.q4inc.com/attendee/476349537", "headline": "Aritzia posts 43% revenue growth to $1.04 billion in Q3, fueled by strong U.S. e-commerce and strategic boutique openings", "symbol": "ATZ", "exchange": "TSX", "figis": [ "BBG00DR7R5L2" ], "name": "Aritzia", "start_time": "2026-01-08T21:29:03Z", "end_time": "2026-01-09T13:00:13Z", "duration": 0, "status": "COMPLETED", "created_at": "2026-01-08T21:29:03.225054Z", "updated_at": "2026-01-09T13:00:31.632952Z", "transcripts": [ { "transcript_id": "053c48c4-17f2-48a8-8216-68513c5c54c2", "text": "Thank you for standing by this is the conference operator .. day you may now disconnect your lines", "language": "en-US", "confidence_score": 0.41074312812500047, "segments": null, "type": "LIVE" }, { "transcript_id": "c10f465c-f09e-4661-b029-c1092b2b9d40", "text": "Thank you for standing by... Thank you for joining and have a pleasant day. You may now disconnect your lines.", "language": "en-US", "confidence_score": 0.9678800193700792, "segments": null, "type": "NON_LIVE" } ], "securities": [ { "figi": "BBG00DR7R5N0", "isin": "CA04045U1021", "name": "ARITZIA INC-SUBORDINATE VOTI", "symbol": "ATZ", "mic_code": "XTSE", "figi_composite": "BBG00DR7R5K3", "figi_share_class": "BBG00DR7R5L2", "refinitiv_exch_code": "TOR" } ] } ], "message": "Successfully fetched calls", "pagination": { "hits": 15686, "page": 1, "page_count": 15686, "page_size": 1 } } ``` ```json Response (400 Bad Request) theme={null} { "ok": false, "errors": [ { "code": "bad_request", "id": "invalid_parameter", "value": "Invalid search_keys_type parameter" } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No logos found for the specified search key" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Fetch Transcript By ID Source: https://docs.benzinga.com/api-reference/delivery-api/calls/fetch-call-by-id openapi/delivery_api.spec.yml get /api/v1/transcripts/calls/{call_id} Retrieve detailed information about a specific call by its ID ```json Response (200 OK) theme={null} { "call_id": "68c1684993d1da0001953084", "call_title": "TotalEnergies reports strong Q3 growth, boosts dividends despite market challenges", "description": "Q4 2025 TotalEnergies (TTE) Earnings Conference Call", "webcast_url": "https://edge.media-server.com/mmc/p/zfnjs6iz/", "headline": "TotalEnergies enhances shareholder returns with 4% cash flow growth as production ramps up and strategy gains traction amid fluctuating oil prices.", "symbol": "TTE", "exchange": "NYSE", "figis": [ "BBG001S6WYD9" ], "name": "TotalEnergies", "start_time": "2025-10-30T10:59:03Z", "end_time": "2025-11-02T19:56:03Z", "duration": 5427, "status": "COMPLETED", "created_at": "2025-10-30T10:59:03.695748Z", "updated_at": "2025-11-02T19:56:03Z", "transcripts": [ { "transcript_id": "df8fa7e2-37ec-4981-8e86-6715f9207ff2", "text": "Good afternoon. Good morning everyone. Before Jean Pierre goes through the details of the third quarter results, I would like to make a few opening comments ..{{truncated}}.. And frankly, board of directors and myself as you, we are quite pleased with the results of this quarter because that demonstrates and again that all what we explain you quarter and year after year is on the delivery mode and that free cash flow will increase. Thank you for your attendance.", "language": "en-US", "confidence_score": 0.948344884949495, "segments": [ { "segment_id": 0, "speaker": "OPERATOR", "start_time": "00:00:01", "end_time": "00:08:06", "confidence": 0.95141685, "text": "Good afternoon. Good morning everyone. Before Jean Pierre goes through the details of the third quarter results ..{{truncated}}.. I will now turn the call over to Jean Pierre who will go through the details of his first quarter financials.", "sentiment": 0.45 }, { "segment_id": 1, "speaker": "Jean Pierre", "start_time": "00:08:07", "end_time": "00:19:16", "confidence": 0.95684206, "text": "Thank you Patrick. I will start by commenting on the price environment in the third quarter versus the second quarter. Brent averaged $69 per barrel during the third quarter versus $68 per barrel in the second quarter ..{{truncated}}.. so please open up the line for questions.", "sentiment": 0.2 }, { "segment_id": 2, "speaker": "OPERATOR", "start_time": "00:19:18", "end_time": "00:19:49", "confidence": 0.9713833, "text": "Thank you ladies and gentlemen. We will now begin the question and answer session. As a reminder, if you wish to ask a question, please press star n1 on your telephone and wait for your name to be announced. Please kindly mute any audio sources by asking a question. If you wish to cancel your request, please press the hash key. Once Again, please press N1 if you wish to ask a question. The first question is from Lydia Rainforth, Barclays. Please go ahead.", "sentiment": 0 }, { "segment_id": 3, "speaker": "Lydia Rainforth", "start_time": "00:19:51", "end_time": "00:20:26", "confidence": 0.9671036, "text": "Thank you and good afternoon to both of you and thank you for the presentation. So when you're thinking about 2026, can you just, can you give us an indication as to how much more cash flow might grow than production for next year? And just remind us of that?", "sentiment": 0.1 }, {....}, { "segment_id": 98, "speaker": "Patrick", "start_time": "01:29:45", "end_time": "01:30:25", "confidence": 0.9567434, "text": "Okay. So thank you to all of you for your attendance. I hope that all the analysis you've done will be reflected in the stock price was not the case this morning. Thank you for your attendance.", "sentiment": 0.5 } ], "type": "NON_LIVE" }, { "transcript_id": "b4dee433-51e2-40c5-8bac-d9508b30de1a", "text": "", "language": "en-US", "confidence_score": 0, "segments": null, "type": "LIVE" } ], "recording": { "recording_id": "f18c5664-bfb5-4e50-8434-498a1f5f1080", "total_files": 42, "total_size": 7350006, "duration": 239, "location": "assets/68c1684993d1da0001953084", "bucket": "earnings-call-media", "language": "en", "formats": [ { "file_link": "assets/mp3/audio.mp3", "size": 5758476, "content_type": "audio/mpeg", "quality": "192kbps" } ], "created_at": "2025-10-30T10:59:17.801739Z", "updated_at": "2025-10-30T10:59:17.801739Z" }, "summary": { "summary_id": "d3a9f050-dcfe-4baf-b5d2-5abf3a4cd0fc", "transcript_id": "", "call_id": "68c1684993d1da0001953084", "summary": "TotalEnergies reported a 4% increase in cash flow for the third quarter despite a $10 per barrel drop in oil prices year on year.\nNew hydrocarbon projects in Brazil and the US have significantly contributed to the company's cash flow, adding $400 million year on year.\nThe board has increased the third interim dividend by close to 8% in Euro and more than 10% in dollars compared to 2024.\nThe company has authorized a share buyback program of up to $1.5 billion for the fourth quarter of 2025.\nUpstream production is forecasted to grow by more than 4% year on year, with net investments expected to decrease.\nThe company plans to begin trading ordinary shares on the New York Stock Exchange from December 8th.\nThe downstream segment saw a cash flow increase of almost $500 million due to better refining margins.\nThe company aims to maintain gearing at 15-16% by year-end, supported by disposals and working capital improvements.\nManagement highlighted the resilience in financial performance, attributing it to strategic initiatives and accretive production growth.", "symbol": "", "sentiment": 0.78, "language": "", "created_at": "2025-10-30T01:29:03Z", "updated_at": "2025-10-30T01:29:03Z" }, "participants": [ { "participant_id": "b819ea94-8ada-4d02-b7b8-dd1f013443de", "call_id": "68c1684993d1da0001953084", "name": "Patrick Pouyanné", "role": "Chairman and CEO", "organization": "TotalEnergies", "mentions": 11, "human_verified": false }, {....}, { "participant_id": "8f82b104-01fb-47f6-8554-d15fc282be4e", "call_id": "68c1684993d1da0001953084", "name": "Jean-Pierre Sbraire", "role": "Chief Financial Officer", "organization": "TotalEnergies", "mentions": 4, "human_verified": false } ], "securities": [ { "figi": "BBG000CHZ857", "isin": "US89151E1091", "name": "TOTALENERGIES SE -SPON ADR", "symbol": "TTE", "mic_code": "XNYS", "figi_composite": "BBG000CHZ857", "figi_share_class": "BBG001S6WYD9", "refinitiv_exch_code": "NYQ" } ] } ``` ```json Response (400 Bad Request) theme={null} { "ok": false, "errors": [ { "code": "bad_request", "id": "invalid_parameter", "value": "Invalid search_keys_type parameter" } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No logos found for the specified search key" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Overview Source: https://docs.benzinga.com/api-reference/delivery-api/overview Overview of the Conference Call Transcripts API ## Introduction This REST API provides endpoints to fetch conference calls and summaries. ## Available Endpoints ### [Fetch All Calls](/api-reference/delivery_api/calls/fetch-all-calls) Retrieve a list of calls with optional filtering and pagination. ### [Fetch Call by ID](/api-reference/delivery_api/calls/fetch-call-by-id) Retrieve detailed information about a specific call by its ID. ### [Fetch Summaries](/api-reference/delivery_api/summaries/fetch-summaries) Retrieve a list of summaries with pagination. ### [Fetch Summary by Call ID](/api-reference/delivery_api/summaries/fetch-summary-by-call-id) Retrieve summary details for a specific call ID. # Fetch Transcript Summaries Source: https://docs.benzinga.com/api-reference/delivery-api/summaries/fetch-summaries openapi/delivery_api.spec.yml get /api/v1/transcripts/summaries Retrieve a list of summaries with pagination ```json Response (200 OK) theme={null} { "data": [ { "summary_id": "4b0d7883-10fd-4212-9d59-d781bf5434d8", "transcript_id": "08dd94d7-ad88-430b-8402-a3cb8d82e80b", "call_id": "694bf432dd7f23000124626c", "summary": "Aritzia achieved over $1 billion in net revenue for Q3 fiscal 2026, surpassing guidance with a 43% increase year-over-year, driven by strong e-commerce and retail channel growth.\nThe company reported a 58% increase in e-commerce sales and a 35% increase in retail sales. U.S. net revenue surged by 54%, showcasing significant demand and expansion.\nStrategic initiatives included new boutique openings, a successful mobile app launch, and marketing investments, contributing to increased brand awareness and sales momentum.\nThe launch of the mobile app exceeded expectations, reaching 1.4 million downloads, and significantly boosting e-commerce engagement.\nManagement raised fiscal 2026 net revenue guidance to $3.615 to $3.64 billion, with plans for further expansion in the U.S. and digital initiatives in fiscal 2027.\nThe company maintained a healthy balance sheet with $620 million in cash and no debt, and continued share repurchases under the NCIB.\nAritzia plans to continue optimizing inventory and sourcing strategies, reducing dependency on China, and maintaining strong margin performance despite external pressures.", "symbol": "ATZ", "sentiment": 0.85, "language": "en-US", "created_at": "2026-01-09T13:00:29.963428Z", "updated_at": "2026-01-09T13:00:29.963428Z" }, { "summary_id": "f8890d3f-1c61-40ed-9ed5-2eaed75aa6fa", "transcript_id": "52769188-2cea-442b-8140-aaa57b5733bf", "call_id": "694bf432dd7f23000124626c", "summary": "Aritzia reported record net revenue of $1.04 billion in Q3 fiscal 2026, a 43% increase driven by strong e-commerce and retail performance.\nThe company saw exceptional growth in the United States, with US net revenue increasing by 54%, highlighting strong demand and brand momentum.\nAritzia successfully launched a mobile app, which significantly boosted e-commerce sales and achieved over 1 million downloads shortly after launch.\nThe company opened 13 new and 4 repositioned boutiques, mainly in the US, as part of its real estate expansion strategy, which is yielding exceptional results.\nFuture guidance suggests continued strong performance with Q4 revenue expected to be between $1.1 to $1.125 billion, and fiscal 2026 revenue forecast raised to $3.615 to $3.64 billion.\nAritzia plans to open 12 to 14 new boutiques in fiscal 2027, with a focus on the US market, and will also invest in infrastructure, including a second US distribution center.\nManagement expressed confidence in achieving fiscal 2027 revenue targets ahead of schedule, supported by strategic marketing investments and digital growth initiatives.", "symbol": "ATZ", "sentiment": 0.85, "language": "en-US", "created_at": "2026-01-09T13:00:25.721386Z", "updated_at": "2026-01-09T13:00:25.721386Z" } ], "message": "Successfully fetched summaries", "pagination": { "hits": 16110, "page": 1, "page_count": 1611, "page_size": 2 } } ``` ```json Response (400 Bad Request) theme={null} { "ok": false, "errors": [ { "code": "bad_request", "id": "invalid_parameter", "value": "Invalid search_keys_type parameter" } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No logos found for the specified search key" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Fetch Transcript Summaries by ID Source: https://docs.benzinga.com/api-reference/delivery-api/summaries/fetch-summary-by-call-id openapi/delivery_api.spec.yml get /api/v1/transcripts/summaries/{call_id} Retrieve summary details for a specific call ID ```json Response (200 OK) theme={null} { "data": [ { "summary_id": "4b0d7883-10fd-4212-9d59-d781bf5434d8", "transcript_id": "08dd94d7-ad88-430b-8402-a3cb8d82e80b", "call_id": "694bf432dd7f23000124626c", "summary": "Aritzia achieved over $1 billion in net revenue for Q3 fiscal 2026, surpassing guidance with a 43% increase year-over-year, driven by strong e-commerce and retail channel growth.\nThe company reported a 58% increase in e-commerce sales and a 35% increase in retail sales. U.S. net revenue surged by 54%, showcasing significant demand and expansion.\nStrategic initiatives included new boutique openings, a successful mobile app launch, and marketing investments, contributing to increased brand awareness and sales momentum.\nThe launch of the mobile app exceeded expectations, reaching 1.4 million downloads, and significantly boosting e-commerce engagement.\nManagement raised fiscal 2026 net revenue guidance to $3.615 to $3.64 billion, with plans for further expansion in the U.S. and digital initiatives in fiscal 2027.\nThe company maintained a healthy balance sheet with $620 million in cash and no debt, and continued share repurchases under the NCIB.\nAritzia plans to continue optimizing inventory and sourcing strategies, reducing dependency on China, and maintaining strong margin performance despite external pressures.", "symbol": "ATZ", "sentiment": 0.85, "language": "en-US", "created_at": "2026-01-09T13:00:29.963428Z", "updated_at": "2026-01-09T13:00:29.963428Z" }, { "summary_id": "f8890d3f-1c61-40ed-9ed5-2eaed75aa6fa", "transcript_id": "52769188-2cea-442b-8140-aaa57b5733bf", "call_id": "694bf432dd7f23000124626c", "summary": "Aritzia reported record net revenue of $1.04 billion in Q3 fiscal 2026, a 43% increase driven by strong e-commerce and retail performance.\nThe company saw exceptional growth in the United States, with US net revenue increasing by 54%, highlighting strong demand and brand momentum.\nAritzia successfully launched a mobile app, which significantly boosted e-commerce sales and achieved over 1 million downloads shortly after launch.\nThe company opened 13 new and 4 repositioned boutiques, mainly in the US, as part of its real estate expansion strategy, which is yielding exceptional results.\nFuture guidance suggests continued strong performance with Q4 revenue expected to be between $1.1 to $1.125 billion, and fiscal 2026 revenue forecast raised to $3.615 to $3.64 billion.\nAritzia plans to open 12 to 14 new boutiques in fiscal 2027, with a focus on the US market, and will also invest in infrastructure, including a second US distribution center.\nManagement expressed confidence in achieving fiscal 2027 revenue targets ahead of schedule, supported by strategic marketing investments and digital growth initiatives.", "symbol": "ATZ", "sentiment": 0.85, "language": "en-US", "created_at": "2026-01-09T13:00:25.721386Z", "updated_at": "2026-01-09T13:00:25.721386Z" } ], "message": "Successfully fetched summaries", "pagination": { "hits": 16110, "page": 1, "page_count": 1611, "page_size": 2 } } ``` ```json Response (400 Bad Request) theme={null} { "ok": false, "errors": [ { "code": "bad_request", "id": "invalid_parameter", "value": "Invalid search_keys_type parameter" } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No logos found for the specified search key" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Errors Source: https://docs.benzinga.com/api-reference/errors How to handle errors and status codes from the Benzinga API The Benzinga API uses conventional HTTP response codes to indicate the success or failure of an API request. In general: * **2xx**: Success. * **4xx**: Client error (e.g., missing parameter, invalid key). * **5xx**: Server error (something went wrong on Benzinga's end). Always check the **HTTP Status Code** first to determine if a request was successful. Do not rely solely on the response body, as the format can vary between different API endpoints. ## HTTP Status Codes The following table lists the standard status codes you may encounter. | Code | Status | Description | | :------ | :---------------------- | :--------------------------------------------------------------------------------- | | **200** | `OK` | The request was successful. | | **400** | `Bad Request` | The request was unacceptable, often due to a missing or invalid parameter. | | **401** | `Unauthorized` | No valid API Key provided. Check your `Authorization` header or `token` parameter. | | **402** | `Request Failed` | The parameters were valid but the request failed for business logic reasons. | | **403** | `Forbidden` | The API Key is valid, but you do not have permission to access this resource. | | **404** | `Not Found` | The requested resource (e.g., ID, endpoint) does not exist. | | **429** | `Too Many Requests` | You have exceeded your rate limit. | | **500** | `Internal Server Error` | Something went wrong on Benzinga's servers. These are rare. | | **503** | `Service Unavailable` | The service is temporarily unavailable (e.g., maintenance). | ## Error Response Bodies While the HTTP Status Code is the primary indicator of an error, the response body often contains details to help you debug. The format of this body can vary depending on which API you are calling. ### Format 1: Simple Error Message Many endpoints (like the News API) return a simple string or a flat JSON object with a message. ```json theme={null} "Invalid or Missing Query Parameters" ``` OR ```json theme={null} { "message": "Invalid page size" } ``` ### Format 2: Structured Error Object Newer APIs (like the Data API Proxy / Fundamentals) return a structured object containing a list of errors. ```json theme={null} { "data": null, "errors": [ { "code": "database_query_error", "id": "ERR_12345", "value": "Unable to fetch data for symbol: INVALID" } ], "ok": false } ``` ### Handling Errors Programmatically Because of the potential variance in response bodies, we recommend a robust error handling strategy: 1. **Check the HTTP Status Code.** If it is `>= 400`, treat it as an error. 2. **Log the Response Body.** Dump the entire body to your logs for debugging purposes. 3. **Display a Generic Message.** Unless you are integrated with a specific endpoint and know its exact error format, show a generic "Something went wrong" message to your end users alongside the Status Code. # Consensus Ratings Explained Source: https://docs.benzinga.com/api-reference/guides/consensus-ratings-explained Learn how Benzinga calculates consensus ratings from individual analyst recommendations ## Overview Consensus ratings provide a consolidated view of analyst sentiment on a stock by aggregating individual analyst ratings into a single, easy-to-understand metric. This guide explains how we calculate consensus ratings to help you make informed investment decisions. ## How Consensus Ratings Are Calculated ### Step 1: Collecting Analyst Ratings We gather all available analyst ratings for a given stock. Each rating includes: * **Analyst Name** and **Firm Name** * **Rating** (e.g., Strong Buy, Buy, Hold, Sell, Strong Sell) * **Price Target** - The analyst's projected stock price * **Date Updated** - When the rating was issued ### Step 2: Filtering for Unique Analysts To ensure accuracy and avoid double-counting, we only include the **most recent rating** from each unique analyst-firm combination. **Example:** If Morgan Stanley's analyst John Doe has rated a stock multiple times, only their latest rating is included in the calculation. Ratings without a valid price target are excluded from the analysis. ### Step 3: Categorizing Ratings Analyst ratings are categorized into five standard categories: | Category | Numeric Value | | --------------- | ------------- | | **Strong Sell** | 1 | | **Sell** | 2 | | **Hold** | 3 | | **Buy** | 4 | | **Strong Buy** | 5 | ### Step 4: Aggregating Ratings We count how many analysts fall into each category. **Example Aggregate:** * Strong Buy: 8 analysts * Buy: 12 analysts * Hold: 5 analysts * Sell: 2 analysts * Strong Sell: 1 analyst **Total:** 28 unique analysts ### Step 5: Calculating the Consensus Rating Value The consensus rating value is calculated as a weighted average: ``` Consensus Value = (Strong Buy × 5 + Buy × 4 + Hold × 3 + Sell × 2 + Strong Sell × 1) / Total Analysts ``` **Using the example above:** ``` Consensus Value = (8×5 + 12×4 + 5×3 + 2×2 + 1×1) / 28 Consensus Value = (40 + 48 + 15 + 4 + 1) / 28 Consensus Value = 108 / 28 Consensus Value = 3.86 ``` ### Step 6: Determining the Consensus Rating The consensus value is rounded to the nearest whole number and mapped to a rating: | Consensus Value | Standard Rating | Simplified Rating | | --------------- | --------------- | ----------------- | | **1** | Strong Sell | Sell | | **2** | Sell | Sell | | **3** | Hold | Hold | | **4** | Buy | Buy | | **5** | Strong Buy | Buy | **In our example:** 3.86 rounds to **4**, which translates to a **"Buy"** consensus rating. *** ## Display Options ### Standard vs. Simplified Ratings We offer two display formats: **Standard (5-category):** * Strong Sell, Sell, Hold, Buy, Strong Buy **Simplified (3-category):** * Sell (combines Strong Sell + Sell) * Hold * Buy (combines Buy + Strong Buy) ### Count vs. Percentage Display **Count Display:** Shows the actual number of analysts in each category. **Percentage Display:** Shows the proportion of analysts in each category, rounded to whole percentages that sum to exactly 100%. **Example:** * Buy: 71% (20 analysts) * Hold: 18% (5 analysts) * Sell: 11% (3 analysts) *** ## Price Target Calculations ### Consensus Price Target The average of all analyst price targets: ``` Consensus PT = Sum of all Price Targets / Number of Analysts ``` ### Low and High Price Targets * **Low Price Target:** The lowest price target among all analysts * **High Price Target:** The highest price target among all analysts These provide a range showing the spectrum of analyst expectations. *** ## Understanding the Metrics ### Total Analyst Count vs. Unique Analyst Count * **Total Analyst Count:** All ratings collected (may include multiple ratings from the same analyst) * **Unique Analyst Count:** The number of distinct analyst-firm combinations (used for calculations) The unique count ensures each analyst's voice is counted only once, providing a more accurate consensus. *** ## Important Considerations ### Rating Freshness Consensus ratings reflect the most recent analyst opinions. The **Updated At** timestamp indicates when the consensus was last calculated. ### Coverage Depth Consensus ratings are more reliable when based on a larger number of unique analysts. Stocks with limited analyst coverage (fewer than 3-5 analysts) may have less stable consensus ratings. ### Rating Distribution Pay attention to the distribution of ratings, not just the consensus. A stock with 50% Buy and 50% Sell ratings will have a "Hold" consensus, but this masks significant disagreement among analysts. *** ## Example Calculation Walkthrough Let's walk through a complete example for **XYZ Corporation**: ### Raw Data (10 analysts) | Analyst | Firm | Rating | Price Target | | --------- | --------------- | ---------- | ------------ | | Analyst A | Goldman Sachs | Buy | \$150 | | Analyst B | JP Morgan | Strong Buy | \$165 | | Analyst C | Morgan Stanley | Buy | \$155 | | Analyst D | Bank of America | Hold | \$140 | | Analyst E | Citigroup | Strong Buy | \$170 | | Analyst F | Wells Fargo | Buy | \$152 | | Analyst G | Deutsche Bank | Hold | \$145 | | Analyst H | Barclays | Sell | \$130 | | Analyst I | UBS | Buy | \$158 | | Analyst J | Credit Suisse | Strong Buy | \$168 | ### Step-by-Step Calculation **1. Filter for unique analysts:** All 10 ratings are unique (10 analysts used) **2. Aggregate counts:** * Strong Buy: 3 * Buy: 4 * Hold: 2 * Sell: 1 * Strong Sell: 0 **3. Calculate consensus value:** ``` (3×5 + 4×4 + 2×3 + 1×2 + 0×1) / 10 = (15 + 16 + 6 + 2 + 0) / 10 = 3.9 ``` **4. Determine consensus:** 3.9 rounds to **4 = "Buy"** **5. Price targets:** * Consensus PT: (150+165+155+140+170+152+145+130+158+168) / 10 = **\$153.30** * Low PT: **\$130** * High PT: **\$170** **6. Percentage breakdown:** * Buy: 70% (Strong Buy 30% + Buy 40%) * Hold: 20% * Sell: 10% ### Final Consensus Rating Output ```json theme={null} { "consensusRating": "BUY", "consensusRatingValue": 3.9, "consensusPriceTarget": 153.30, "priceTargetLow": 130, "priceTargetHigh": 170, "totalAnalysts": 10, "uniqueAnalysts": 10, "lastUpdated": "2026-01-16T10:30:00Z" } ``` *** ## Frequently Asked Questions If an analyst from the same firm updates their rating multiple times, the total count includes all instances, but only the most recent is used in calculations (reflected in the unique count). Consensus ratings are recalculated whenever new analyst ratings are published or existing ratings are updated. Without analyst coverage, a consensus rating cannot be calculated. The stock will show no consensus data. No. The consensus only changes when analysts issue new ratings or update existing ones. *** ## Related Endpoints Get consensus rating data for stocks Get individual analyst ratings # Guidance Process Explained Source: https://docs.benzinga.com/api-reference/guides/guidance-process-explained Learn how company guidance works and how to use the Guidance API for forward-looking financial analysis ## Overview * What company guidance represents * Difference between guidance vs. analyst estimates * Why guidance matters for forward-looking analysis * Data source: company management disclosures *** ## What Company Guidance Represents Company guidance represents forward-looking financial expectations issued directly by a company's management. It typically includes projected ranges or estimates for key performance metrics such as earnings per share (EPS) and revenue for a specific fiscal period. Guidance reflects management's internal forecasts, assumptions, and strategic outlook at the time it is issued. Unlike historical financial results, guidance is prospective and subject to change based on market conditions, business performance, and external factors. *** ## Difference Between Guidance vs. Analyst Estimates | Aspect | Company Guidance | Analyst Estimates | | -------------------- | ------------------------------------------- | ----------------------------------------- | | **Source** | Company management | Independent financial analysts | | **Basis** | Internal forecasts and operational insight | External research models and assumptions | | **Perspective** | Management's expected performance | Market consensus expectations | | **Update Frequency** | Issued periodically or when outlook changes | Updated continuously | | **Intent** | Communicate outlook and set expectations | Evaluate and forecast company performance | *** ## Why Guidance Matters for Forward-Looking Analysis Guidance is a critical input for forward-looking analysis because it: * **Anchors market expectations** to management's outlook * **Signals confidence or caution** about future performance * **Provides context** for interpreting earnings results * **Helps assess directional changes** such as raised, lowered, or reaffirmed outlooks Investors and analysts often compare guidance against prior guidance and analyst expectations to evaluate momentum, execution risk, and strategic direction. *** ## Data Source: Company Management Disclosures Guidance data is sourced directly from official company communications, including: * Earnings calls * Earnings press releases * Investor presentations * Regulatory filings All guidance reflects information explicitly disclosed by company management and is structured to preserve the original ranges, estimates, and timing provided at the time of announcement. *** ## Guidance API – Developer Guide ### Overview The Guidance API provides structured company-issued forward-looking guidance, including EPS and revenue projections. Guidance reflects management's expectations for a specific fiscal period and is critical for forward-looking analysis, comparison, and event-driven workflows. *** ## Guidance Metrics ### EPS Guidance Each guidance record may include: | Field | Description | | ------------------ | ----------------------------------- | | `eps_guidance_min` | Minimum EPS projection | | `eps_guidance_max` | Maximum EPS projection | | `eps_guidance_est` | Estimates midpoint EPS | | `eps_type` | Accounting basis (GAAP or Adjusted) | ### Revenue Guidance Each guidance record may include: | Field | Description | | ---------------------- | ----------------------------------- | | `revenue_guidance_min` | Minimum revenue projection | | `revenue_guidance_max` | Maximum revenue projection | | `revenue_guidance_est` | Estimates midpoint revenue | | `revenue_type` | Accounting basis (GAAP or Adjusted) | ### Prior vs Current Guidance | Field | Description | | ---------------------------- | -------------------------------- | | `eps_guidance_prior_min` | Prior minimum EPS projection | | `eps_guidance_prior_max` | Prior maximum EPS projection | | `revenue_guidance_prior_min` | Prior minimum revenue projection | | `revenue_guidance_prior_max` | Prior maximum revenue projection | Compare current guidance with prior projections to see if management has raised, lowered, or reaffirmed expectations. *** ## Timing and Period | Field | Description | | ----------------- | -------------------------------- | | `period` | Fiscal scope (e.g., Q1, FY) | | `period_year` | Fiscal year | | `date` and `time` | Announcement date and time | | `updated` | Last update timestamp (Unix UTC) | | `prelim` | Preliminary indicator | *** ## Record Classification ### Primary Guidance | Field | Description | | ------------ | --------------------------------------------------------------------------------------------- | | `is_primary` | Y/N – Marks the default record when multiple guidance entries exist for the same company/date | Adjusted guidance is prioritized over GAAP for primary selection. ### Confirmation Status | Field | Description | | ----------- | ---------------------------------------------------------------------------------------- | | `confirmed` | Y/N – Y indicates official company guidance; N indicates expected (unconfirmed) guidance | **Confirmed guidance** (`Y`) represents official company disclosure. **Unconfirmed guidance** (`N`) is automatically created for upcoming earnings, updated daily, and may include: * Expected announcement timing * Predicted metrics * Primary/secondary classification *** ## Security Identification Each record is associated with: | Field | Description | | ---------- | ---------------------------------- | | `ticker` | Stock symbol | | `name` | Company name | | `cusip` | CUSIP identifier | | `exchange` | Exchange where the security trades | This ensures accurate mapping of guidance to the correct company and security. *** ## Display & Interpretation Guidelines * Use **primary guidance** (`is_primary = Y`) for default views * Display full ranges when available; fallback to estimates when necessary * **Confirmed guidance** represents official disclosure; **unconfirmed guidance** is indicative only * Guidance should be interpreted alongside analyst estimates and historical performance *** ## Error Handling | Scenario | Behavior | | --------------------------------------- | -------------------------- | | No data returned | Empty guidance array | | Missing min/max values | Estimate-only guidance | | Multiple records without a primary flag | Resolve using `is_primary` | *** ## Frequently Asked Questions Expected guidance before official company disclosure. It is updated daily and may change. **Expected Guidance Records deliver several key advantages:** * Automatically populate as soon as upcoming earnings dates are confirmed * Identify the expected date and time of the guidance announcement * Predict the type of guidance (EPS or revenue), including GAAP versus adjusted metrics * Distinguish between primary and secondary guidance within a fiscal period * Include continuously updated estimates, refreshed daily until the official guidance announcement The record with `is_primary = Y`. Companies may issue GAAP and adjusted guidance, or guidance for multiple metrics. Yes, companies may update or withdraw guidance in later announcements. Not all companies provide formal guidance. *** ## Related APIs Track upcoming earnings events Get company guidance data Compare guidance to analyst expectations Validate guidance against historical performance # Introduction Source: https://docs.benzinga.com/api-reference/introduction A brief introduction to the Benzinga API. Welcome to the Benzinga API documentation. This guide will help you understand how to interact with the Benzinga API to create, retrieve, update, and delete Benzinga resources through HTTP requests. ## Base URL All URLs referenced in the documentation have the following base: ``` https://api.benzinga.com ``` ## Authentication The Benzinga API uses bearer authentication. When making requests, you must include your API token in the `token` query param in the format `token: `. For more details, please refer to the [Authentication](./authentication) page. ## Errors When an error occurs, the Benzinga API responds with a conventional HTTP response code and a JSON object containing more details about the error. For more information, please refer to the [Errors](./errors) page. ## Rate Limiting Please note that the Benzinga API has rate limits to prevent abuse and ensure service stability. If you exceed these limits, your requests will be throttled and you will receive a `429 Too Many Requests` response. *** We hope this guide helps you get started with the Benzinga API. If you have any questions, please don't hesitate to reach out to our support team. # Sync Logos in bulk Source: https://docs.benzinga.com/api-reference/logos-api/get-logos-sync openapi/logo-api_api.spec.yml get /api/v2.1/logos/sync Bulk logos sync ```json Response (200 OK) theme={null} { "ok": true, "data": [ { "fields": { "logo_dark": "https://image-util.benzinga.com/api/v2/logos/file/image/KYG7387B1225/logo_dark__fe4a5fc01881264700de033abe9fc151.png?x-bz-cred=...", "logo_light": "https://image-util.benzinga.com/api/v2/logos/file/image/KYG7387B1225/logo_light__3f6f778449138931036ca9c624143ff7.png?x-bz-cred=...", "mark_vector_composite_light": "https://image-util.benzinga.com/api/v2/logos/file/image/KYG7387B1225/mark_vector_composite_light__1684a8ad97472e1b9fb5b639995e8245.svg?x-bz-cred=..." }, "updated": "2025-12-09T11:36:51.357671Z", "created": "2025-12-09T11:36:51.357671Z", "securities": [ { "symbol": "QUMSU", "name": "QUANTUMSPHERE ACQUISITION CO", "cik": "2070900", "exchange": "NASDAQ", "mic_code": "XNAS", "exchange_name": "NASDAQ Global Market Consolidated", "cusip": "G7387B122", "isin": "KYG7387B1225", "country": "US", "figi_share_class": "BBG01VBMFN66", "figi": "BBG01VBMFLS6", "security_type": "Unit" } ] }, { "fields": { "logo_dark": "https://image-util.benzinga.com/api/v2/logos/file/image/KYG7387B1068/logo_dark__fe4a5fc01881264700de033abe9fc151.png?x-bz-cred=...", "logo_light": "https://image-util.benzinga.com/api/v2/logos/file/image/KYG7387B1068/logo_light__3f6f778449138931036ca9c624143ff7.png?x-bz-cred=...", "mark_vector_composite_light": "https://image-util.benzinga.com/api/v2/logos/file/image/KYG7387B1068/mark_vector_composite_light__1684a8ad97472e1b9fb5b639995e8245.svg?x-bz-cred=..." }, "updated": "2025-12-09T11:35:11.711467Z", "created": "2025-12-09T11:35:11.711467Z", "securities": [ { "symbol": "QUMS", "name": "QUANTUMSPHERE ACQUISITION CO", "cik": "2070900", "exchange": "NASDAQ", "mic_code": "XNAS", "exchange_name": "NASDAQ Global Market Consolidated", "cusip": "G7387B106", "isin": "KYG7387B1068", "country": "US", "figi_share_class": "BBG01WHBTBN4", "figi": "BBG01WHBT9P7", "security_type": "Common Stock" } ] } ] } ``` ```json Response (400 Bad Request) theme={null} { "ok": false, "errors": [ { "code": "bad_request", "id": "invalid_parameter", "value": "Invalid search_keys_type parameter" } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No logos found for the specified search key" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Search Logos Source: https://docs.benzinga.com/api-reference/logos-api/get-search-logos openapi/logo-api_api.spec.yml get /api/v2/logos/search Search Logos ```json Response (200 OK) theme={null} { "ok": true, "data": [ { "id": "efc3943a-ddac-4f59-a2cc-47a67583068b", "search_key": "TSLA", "created_at": "2022-05-18T05:19:45.008547Z", "updated_at": "2025-02-05T09:43:14.303261Z", "colors": { "background_light": "#FFFFFF", "background_dark": "#000000" }, "files": { "logo_light": "https://image-util.benzinga.com/api/v2/logos/file/image/1318605/logo_light.png?x-bz-cred=...", "logo_dark": "https://image-util.benzinga.com/api/v2/logos/file/image/1318605/logo_dark.png?x-bz-cred=...", "logo_vector_light": "https://image-util.benzinga.com/api/v2/logos/file/image/1318605/logo_vector_light.svg?x-bz-cred=...", "logo_vector_dark": "https://image-util.benzinga.com/api/v2/logos/file/image/1318605/logo_vector_dark.svg?x-bz-cred=...", "mark_light": "https://image-util.benzinga.com/api/v2/logos/file/image/1318605/mark_light.png?x-bz-cred=...", "mark_dark": "https://image-util.benzinga.com/api/v2/logos/file/image/1318605/mark_dark.png?x-bz-cred=...", "mark_composite_light": "https://image-util.benzinga.com/api/v2/logos/file/image/1318605/mark_composite_light.png?x-bz-cred=...", "mark_composite_dark": "https://image-util.benzinga.com/api/v2/logos/file/image/1318605/mark_composite_dark.png?x-bz-cred=...", "mark_vector_light": "https://image-util.benzinga.com/api/v2/logos/file/image/1318605/mark_vector_light.svg?x-bz-cred=...", "mark_vector_dark": "https://image-util.benzinga.com/api/v2/logos/file/image/1318605/mark_vector_dark.svg?x-bz-cred=...", "mark_vector_composite_light": "https://image-util.benzinga.com/api/v2/logos/file/image/1318605/mark_vector_composite_light.svg?x-bz-cred=...", "mark_vector_composite_dark": "https://image-util.benzinga.com/api/v2/logos/file/image/1318605/mark_vector_composite_dark.svg?x-bz-cred=..." }, "securities": [ { "symbol": "TSLA", "name": "TESLA INC", "cik": "1318605", "exchange": "NASDAQ", "mic_code": "XNAS", "exchange_name": "NASDAQ Global Select Consolidated", "cusip": "88160R101", "isin": "US88160R1014", "country": "US", "figi_share_class": "BBG001SQKGD7", "figi": "BBG000N9MNX3", "security_type": "Common Stock" }, { "symbol": "TL0", "name": "TESLA INC", "cik": "1318605", "exchange": "MUN", "mic_code": "XMUN", "exchange_name": "Munich Stock Exchange", "cusip": "88160R101", "isin": "US88160R1014", "country": "DE", "figi_share_class": "BBG001SQKGD7", "figi": "BBG000WGWVP7", "security_type": "Common Stock" } ] } ] } ``` ```json Response (400 Bad Request) theme={null} { "ok": false, "errors": [ { "code": "bad_request", "id": "invalid_parameter", "value": "Invalid search_keys_type parameter" } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No logos found for the specified search key" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Overview Source: https://docs.benzinga.com/api-reference/logos-api/overview Comprehensive guide to searching and retrieving company, fund, and crypto logos using various identifiers ## Introduction The Benzinga Logos API provides access to high-quality logos for companies, funds, and cryptocurrencies. You can search for logos using multiple identifier types including symbols, CIK numbers, ISIN codes, CUSIP, FIGI, and more. ## Available Endpoints ### `/logos/search` Search for logos using various identifiers. Returns logo URLs, security details, and metadata. ### `/logos/sync` Bulk synchronization endpoint for retrieving multiple logos with pagination support. ## Search Filters The API supports flexible searching through two main parameters: * `search_keys` - The identifier value you want to search for * `search_keys_type` - The type of identifier (optional; defaults to `symbol`) ### 1. Filter by Symbol Search for logos using stock ticker symbols. **Parameters:** * `search_keys`: Symbol (e.g., `AAPL`, `TSLA`, `MSFT`) * `search_keys_type`: `symbol` (optional, this is the default) **Example:** ``` GET /api/v2/logos/search?search_keys=AAPL&search_keys_type=symbol&fields=logo_light,logo_dark ``` ### 2. Filter by CIK Search using the SEC's Central Index Key. Supports both padded and unpadded values. **Parameters:** * `search_keys`: CIK number (e.g., `320193` or `0000320193`) * `search_keys_type`: `cik` **Example:** ``` GET /api/v2/logos/search?search_keys=320193&search_keys_type=cik&fields=logo_light,logo_dark ``` **Example with padded CIK:** ``` GET /api/v2/logos/search?search_keys=0000320193&search_keys_type=cik&fields=logo_light,logo_dark ``` ### 3. Filter by ISIN Search using International Securities Identification Number. **Parameters:** * `search_keys`: ISIN code (e.g., `US0378331005`) * `search_keys_type`: `isin` **Example:** ``` GET /api/v2/logos/search?search_keys=US0378331005&search_keys_type=isin&fields=logo_light,logo_dark ``` ### 4. Filter by FIGI Share Class Search using Bloomberg's Financial Instrument Global Identifier for share classes. **Parameters:** * `search_keys`: FIGI Share Class ID (e.g., `BBG001SQKGD7`) * `search_keys_type`: `figi_share_class` **Example:** ``` GET /api/v2/logos/search?search_keys=BBG001SQKGD7&search_keys_type=figi_share_class&fields=logo_light,logo_dark ``` ### 5. Filter by CUSIP Search using Committee on Uniform Securities Identification Procedures number. **Parameters:** * `search_keys`: CUSIP number (e.g., `88160R101`) * `search_keys_type`: `cusip` **Example:** ``` GET /api/v2/logos/search?search_keys=88160R101&search_keys_type=cusip&fields=logo_light,logo_dark ``` ### 6. Filter by Symbol with Currency & Country Qualify symbols with country or currency codes using colon (`:`) or period (`.`) as delimiter. **Parameters:** * `search_keys`: Symbol with qualifier (e.g., `AAPL:US`, `AAPL:USD`, `AAPL.US`) * `search_keys_type`: `symbol` **Examples:** ``` GET /api/v2/logos/search?search_keys=AAPL:US&search_keys_type=symbol&fields=logo_light,logo_dark GET /api/v2/logos/search?search_keys=AAPL:USD&search_keys_type=symbol&fields=logo_light,logo_dark GET /api/v2/logos/search?search_keys=AAPL.US&search_keys_type=symbol&fields=logo_light,logo_dark ``` ### 7. Filter by Exchange and Symbol Search by combining exchange code with symbol. Supports both Bloomberg-style (legacy) and LSEG-style formats. **Bloomberg-style mapping (legacy):** * `search_keys`: Exchange and symbol (e.g., `NASDAQ:AAPL`) * `search_keys_type`: `symbol` **LSEG 3-character code (current):** * `search_keys`: Exchange code and symbol (e.g., `NSQ:AAPL`) * `search_keys_type`: `symbol` **Examples:** ``` GET /api/v2/logos/search?search_keys=NASDAQ:AAPL&search_keys_type=symbol&fields=logo_light,logo_dark GET /api/v2/logos/search?search_keys=NSQ:AAPL&search_keys_type=symbol&fields=logo_light,logo_dark ``` ### 8. Filter by ISO MIC and Symbol Search using ISO Market Identifier Code combined with symbol. **Parameters:** * `search_keys`: MIC code and symbol (e.g., `XYNS:AAPL`) * `search_keys_type`: `symbol` **Example:** ``` GET /api/v2/logos/search?search_keys=XYNS:AAPL&search_keys_type=symbol&fields=logo_light,logo_dark ``` ### 9. Crypto Logo Filters Search for cryptocurrency logos using various formats. The API automatically recognizes crypto formats even when `search_keys_type` is not specified. **Supported formats:** * `CRYPTO:BTC` * `CRYPTO/BTC` * `$BTC` * `BTC/USD` **Examples:** ``` GET /api/v2/logos/search?search_keys=CRYPTO:BTC&fields=logo_light,logo_dark GET /api/v2/logos/search?search_keys=CRYPTO/BTC&fields=logo_light,logo_dark GET /api/v2/logos/search?search_keys=$BTC&fields=logo_light,logo_dark GET /api/v2/logos/search?search_keys=BTC/USD&fields=logo_light,logo_dark ``` ## Available Fields You can request specific logo types using the `fields` parameter. Available fields include: * `logo_light` - Light theme logo (PNG) * `logo_dark` - Dark theme logo (PNG) * `logo_vector_light` - Light theme vector logo (SVG) * `logo_vector_dark` - Dark theme vector logo (SVG) * `mark_light` - Light theme mark/icon (PNG) * `mark_dark` - Dark theme mark/icon (PNG) * `mark_vector_light` - Light theme vector mark (SVG) * `mark_vector_dark` - Dark theme vector mark (SVG) * `mark_composite_light` - Light theme composite mark (PNG) * `mark_composite_dark` - Dark theme composite mark (PNG) * `mark_vector_composite_light` - Light theme vector composite mark (SVG) * `mark_vector_composite_dark` - Dark theme vector composite mark (SVG) **Example requesting multiple fields:** ``` GET /api/v2/logos/search?search_keys=TSLA&fields=logo_light,logo_dark,mark_vector_composite_light ``` ## Additional Parameters ### Image Customization * `scale` - Scale the image (e.g., `100x100`, `300x300`) * `max_width` - Maximum width for the returned image * `composite_radius` - Border radius for composite images (integer, range `0-50`) * `composite_auto` - Automatically generate composite images (boolean) ### Pagination (bulk-sync only) * `page` - Page number (integer) * `pagesize` - Number of results per page (integer) * `updated_since` - Filter by update timestamp (ISO 8601 format) ### Security Details * `securities` - Include detailed security information in the response (boolean) ## Response Examples ### 200 Success Response ```json theme={null} { "ok": true, "data": [ { "id": "efc3943a-ddac-4f59-a2cc-47a67583068b", "search_key": "TSLA", "securities": [ { "symbol": "TSLA", "name": "TESLA INC", "cik": "1318605", "exchange": "NASDAQ", "mic_code": "XNAS", "exchange_name": "NASDAQ Global Select Consolidated", "cusip": "88160R101", "isin": "US88160R1014", "country": "US", "figi_share_class": "BBG001SQKGD7", "figi": "BBG000N9MNX3", "security_type": "Common Stock" } ], "files": { "logo_dark": "https://image-util.benzinga.com/api/v2/logos/file/image/1318605/logo_dark__53646042d4c8b507c7eddb70110ee334.png?x-bz-cred=...", "logo_light": "https://image-util.benzinga.com/api/v2/logos/file/image/1318605/logo_light__6895726d0ff148e46c238f91d033e72a.png?x-bz-cred=..." }, "created_at": "2022-05-18T05:19:45.008547Z", "updated_at": "2025-02-05T09:43:14.303261Z" } ] } ``` ### 401 Unauthorized Response ```json theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ### 404 Not Found Response ```json theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No logos found for the specified search key" } ] } ``` ### 500 Internal Server Error Response ```json theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` ## Authentication All Logos API endpoints require authentication via API key. Include your token as a query parameter: ``` ?token=YOUR_API_KEY ``` ## Best Practices 1. **Specify search\_keys\_type** - While the API defaults to `symbol`, explicitly specifying the type improves clarity and performance 2. **Request only needed fields** - Only request the logo types you need to minimize response size and improve performance 3. **Use bulk-sync for large datasets** - When retrieving multiple logos, use the `/logos/bulk-sync` endpoint with pagination 4. **Cache responses** - Logo URLs include expiration timestamps; cache appropriately to reduce API calls 5. **Handle errors gracefully** - Always check the `ok` field in responses and handle error cases appropriately ## Rate Limits Please refer to your API subscription plan for rate limit details. Contact support if you need higher rate limits for your application. ## Support For additional help or questions about the Logos API, contact Benzinga API support or refer to the detailed endpoint documentation. # Available News Channels Source: https://docs.benzinga.com/api-reference/news-api/channels/get-available-news-channels openapi/news-api_api.spec.yml get /api/v2.1/news/channels Returns a list of all available news channels that can be used to filter news items. Channels can have sub-channels, but they will all be listed as their own item. # News Source: https://docs.benzinga.com/api-reference/news-api/get-news-items openapi/news-api_api.spec.yml get /api/v2/news This REST API returns structured data for news. For optimal performance, limit the scope of the query using parameters such as tickers, date, and channels, or use updatedSince for deltas. Page offsets are limited from 0 - 100000. ```json Response (200 OK) theme={null} [ { "id": 36444586, "author": "Benzinga Insights", "created": "Mon, 01 Jan 2024 13:35:14 -0400", "updated": "Mon, 01 Jan 2024 13:35:15 -0400", "title": "10 Information Technology Stocks With Whale Alerts In Today's Session", "teaser": "", "body": "", "url": "https://www.benzinga.com/markets/options/24/01/36444586/10-information-technology-stocks-with-whale-alerts-in-todays-session", "image": [ { "size": "thumb", "url": "https://cdn.benzinga.com/files/imagecache/250x187xUP/images/story/2023/options_image_2.jpeg" }, { "size": "small", "url": "https://cdn.benzinga.com/files/imagecache/1024x768xUP/images/story/2023/options_image_2.jpeg" }, { "size": "large", "url": "https://cdn.benzinga.com/files/imagecache/2048x1536xUP/images/story/2023/options_image_2.jpeg" } ], "channels": [ { "name": "Options" } ], "stocks": [ { "name": "AAPL", "cusip": "037833100", "isin": "US0378331005", "exchange": "NASDAQ" }, { "name": "CLSK", "cusip": "18452B209", "isin": "US18452B2097", "exchange": "NASDAQ" }, { "name": "NVDA", "cusip": "67066G104", "isin": "US67066G1040", "exchange": "NASDAQ" }, { "name": "ORCL", "cusip": "68389X105", "isin": "US68389X1054", "exchange": "NYSE" }, { "name": "TSM", "cusip": "874039100", "isin": "US8740391003", "exchange": "NYSE" } ], "tags": [ { "name": "BZI-AUOA" } ] } ] ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Removed News Data Source: https://docs.benzinga.com/api-reference/news-api/get-removed-news openapi/news-api_api.spec.yml get /api/v2/news-removed Returns the removed news data. Filters the results to only include items that have been updated since the specified timestamp. # Overview Source: https://docs.benzinga.com/api-reference/news-api/overview Overview of the Newsfeed API ## Introduction The Benzinga Newsfeed API delivers real-time financial news with flexible filtering by: * Tickers, ISINs, and CUSIPs * Channels and Topics * Date ranges and updated timestamps * Content types and importance ## Available Endpoints ### [Get News](/api-reference/news-api_api/news/get-the-news-items) Returns structured data for news items. ### [Get News Channels](/api-reference/news-api_api/channels/get-available-news-channels) Returns a list of all available news channels for filtering. ### [Get Removed News](/api-reference/news-api_api/news/returns-the-removed-news-data) Returns news items that have been removed or corrected. # Press Releases Source: https://docs.benzinga.com/api-reference/news-api/press-releases/get-press-releases openapi/news-api_api.spec.yml get /api/v2/news This REST API returns structured data for news. For optimal performance, limit the scope of the query using parameters such as tickers, date, and channels, or use updatedSince for deltas. Page offsets are limited from 0 - 100000. ```json Response (200 OK) theme={null} [ { "id": 36444586, "author": "GlobeNewswire", "created": "Mon, 01 Jan 2024 13:35:14 -0400", "updated": "Mon, 01 Jan 2024 13:35:15 -0400", "title": "Company XYZ Announces Q4 2023 Earnings Results and Strategic Initiatives", "teaser": "", "body": "", "url": "https://www.benzinga.com/pressreleases/24/01/g36444586/company-xyz-announces-q4-2023-earnings-results-and-strategic-initiatives", "image": [ { "size": "thumb", "url": "https://cdn.benzinga.com/files/imagecache/250x187xUP/images/story/2023/press_release_image.jpeg" }, { "size": "small", "url": "https://cdn.benzinga.com/files/imagecache/1024x768xUP/images/story/2023/press_release_image.jpeg" }, { "size": "large", "url": "https://cdn.benzinga.com/files/imagecache/2048x1536xUP/images/story/2023/press_release_image.jpeg" } ], "channels": [ { "name": "Press Releases" } ], "stocks": [ { "name": "AAPL", "cusip": "037833100", "isin": "US0378331005", "exchange": "NASDAQ" } ], "tags": [ { "name": "Press Release" } ] } ] ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Overview Source: https://docs.benzinga.com/api-reference/news-api/press-releases/overview Overview of Press Releases API ## Introduction The Press Releases API provides access to official company press releases and corporate announcements. This dedicated endpoint delivers verified, time-sensitive company communications directly from the source, enabling you to stay informed about official company news and strategic updates. ## Key Features * **Official Communications**: Direct access to verified company press releases * **Real-time Distribution**: Immediate delivery of new press releases as they're issued * **Comprehensive Coverage**: Press releases from companies across all market capitalizations * **Structured Data**: Consistent formatting for easy integration and analysis ## Use Cases * **Compliance Monitoring**: Track official company disclosures and regulatory filings * **Investment Research**: Access primary sources for company news and announcements * **News Aggregation**: Build comprehensive news platforms with official company statements * **Alert Systems**: Create notifications for specific company press releases ## Available Endpoints ### [Get Press Releases](/api-reference/news-api_api/press-releases/get-press-releases) Returns press release data with filtering options for companies, date ranges, and content types. # Why Is It Moving (WIIMs) Source: https://docs.benzinga.com/api-reference/news-api/wiims/get-wiims openapi/news-api_api.spec.yml get /api/v2/news This REST API returns structured data for news. For optimal performance, limit the scope of the query using parameters such as tickers, date, and channels, or use updatedSince for deltas. Page offsets are limited from 0 - 100000. ```json Response (200 OK) theme={null} [ { "id": 36444586, "author": "Benzinga Insights", "created": "Mon, 01 Jan 2024 13:35:14 -0400", "updated": "Mon, 01 Jan 2024 13:35:15 -0400", "title": "10 Information Technology Stocks With Whale Alerts In Today's Session", "teaser": "", "body": "", "url": "https://www.benzinga.com/markets/options/24/01/36444586/10-information-technology-stocks-with-whale-alerts-in-todays-session", "image": [ { "size": "thumb", "url": "https://cdn.benzinga.com/files/imagecache/250x187xUP/images/story/2023/options_image_2.jpeg" }, { "size": "small", "url": "https://cdn.benzinga.com/files/imagecache/1024x768xUP/images/story/2023/options_image_2.jpeg" }, { "size": "large", "url": "https://cdn.benzinga.com/files/imagecache/2048x1536xUP/images/story/2023/options_image_2.jpeg" } ], "channels": [ { "name": "WIIM" } ], "stocks": [ { "name": "AAPL", "cusip": "037833100", "isin": "US0378331005", "exchange": "NASDAQ" }, { "name": "CLSK", "cusip": "18452B209", "isin": "US18452B2097", "exchange": "NASDAQ" }, { "name": "NVDA", "cusip": "67066G104", "isin": "US67066G1040", "exchange": "NASDAQ" }, { "name": "ORCL", "cusip": "68389X105", "isin": "US68389X1054", "exchange": "NYSE" }, { "name": "TSM", "cusip": "874039100", "isin": "US8740391003", "exchange": "NYSE" } ], "tags": [ { "name": "BZI-AUOA" } ] } ] ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # Overview Source: https://docs.benzinga.com/api-reference/news-api/wiims/overview Overview of Why Is It Moving (WIIMs) ## Introduction Why Is It Moving (WIIMs) is a specialized news feed that answers the critical question: "Why is this stock moving?" This curated content delivers contextual news and analysis explaining the catalysts behind significant stock price movements, helping you understand the "why" behind market action in real-time. ## Key Features * **Contextual News**: Stories specifically focused on explaining stock price movements * **Timely Coverage**: Real-time news about events driving immediate price action * **Actionable Insights**: Analysis of market-moving catalysts including earnings surprises, analyst upgrades/downgrades, unusual options activity, and breaking developments * **Curated Content**: Filtered news highlighting the most significant market-moving events ## Use Cases * **Understanding Market Action**: Quickly grasp the reasons behind unexpected price movements * **Trading Intelligence**: Access news explaining catalysts before making trading decisions * **Portfolio Monitoring**: Stay informed about news affecting your holdings * **Market Research**: Track patterns in what drives stock movements across different sectors ## Available Endpoints ### [Get WIIMs](/api-reference/news-api_api/news/get-wiims) Returns Why Is It Moving news articles explaining the catalysts and context behind significant stock price movements. # Newsquantified Data Source: https://docs.benzinga.com/api-reference/newsquantified-api/get-newsquantified-data openapi/newsquantified-api_api.spec.yml get /api/v2/newsquantified Retrieves quantified news analytics data with sentiment scores, relevance metrics, and market impact indicators. Returns structured data analyzing the quantitative aspects of news coverage including sentiment polarity, article counts, trending scores, and ticker-specific metrics. Use this endpoint to access machine-readable news analytics for algorithmic trading and quantitative research. ```json Response (200 OK) theme={null} [ { "_id": "6594172d58a64d26a154c976", "Date": "1/1/2024", "ResourceID": "36444586", "Provider": "Benzinga", "PID": "BZ", "RECt": "2024-01-01 17:35:14.000", "PUBt": "2024-01-01 17:35:14.000", "Ex": "NQ", "Symb": "AAPL", "Headlines": "10 Information Technology Stocks With Whale Alerts In Today's Session", "Result%": "-3.48789826286845", "Prev_Vol": "41515791", "Curr_Vol": "56363111", "Mov_Vol": "43362915", "Vol_Ratio": "1.299799863547", "Open_Vol": "1345683", "Close_Vol": "100", "AllTicks": "301347", "ATR14": "2.46036726075361", "prevDay%": "-0.660440637737991", "PrevClose": "192.53", "DayOpen": "192.54", "OpenGap%": "0.00519399574091877", "SPYLast": "475.07", "TONHigh": "202.414127", "TONLow": "189.785", "TONLast": "192.1501", "EODHigh": "193.955", "EODLow": "183.885", "EODClose": "185.4481", "SPYclose": "472.4", "PostVWAP": "192.514439559335", "PreVWAP": "189.751854093609", "MainVWAP": "185.886257541545", "AllVWAP": "186.292874726423", "EODVWAP": "186.053962602001", "MaxUpAmt": "1.8049", "maxUp%": "0.939317752111502", "MaxDnAmt": "8.26510000000002", "maxDown%": "4.30137689233574", "RangeAmt": "18.529127", "Range%": "0.100764755145879", "LS": "-1", "Result_Vs_Index%": "-2.92587582406996", "30_Seconds%": "", "1_Minute%": "", "5_Minutes%": "", "10_Minutes%": "", "30_Minutes%": "", "60_Minutes%": "", "90_Minutes%": "", "120_Minutes%": "", "L1": "", "L2": "", "L3": "", "L4": "", "L5": "", "L75": "", "L10": "", "L20": "", "S1": "925", "S2": "1165", "S3": "1255", "S4": "1546", "S5": "", "S75": "", "S10": "", "S20": "", "P1": "925", "P2": "1165", "P3": "1255", "P4": "1546", "P5": "", "P75": "", "P10": "", "P20": "", "MktCap(1000)": "", "PERatio": "31.4078", "DividendYield%": "", "ShortInterest%": "", "ReportSess": "All", "NewsSess": "Pre", "Comments": "", "HighExcStdDev": "0.626543923068907", "LowExcStdDev": "2.86910531251417", "VolumeStdDev": "0.587270404292294", "RangeStdDev": "0.823486198879295", "ATR_Ratio": "7.53104111551401", "AnalystAction": "", "AnalystActionFrom": "", "AnalystActionTo": "", "AnalystFirm": "", "EPSActual": "", "EPSAction": "", "Topics": "Options", "created": 1704238550 } ] ``` # Overview Source: https://docs.benzinga.com/api-reference/newsquantified-api/overview Overview of the NewsQuantified API ## Introduction The NewsQuantified API returns quantified news analytics data with sentiment scores, relevance metrics, and market impact indicators. It provides structured data analyzing the qualitative aspects of news coverage, including: * Sentiment polarity * Article counts * Trending scores * Ticker-specific metrics This data is designed for algorithmic trading and quantitative research. ## Available Endpoints ### [Get NewsQuantified Data](/api-reference/newsquantified-api_api/get-newsquantified-data) Retrieve quantified news analytics. # Ticker Trend Data Source: https://docs.benzinga.com/api-reference/ticker-trends-api/get-ticker-trend-data openapi/ticker-trends-api_api.spec.yml get /api/v1/trending-tickers Retrieve trending data for specific tickers, including rank and change. Returns aggregated trend scores and activity levels across different time intervals. ```json Response (200 OK) theme={null} { "ok": true, "data": [ { "ticker": "AAPL", "exchange": "NASDAQ", "metrics": [ { "time_bucket": "2025-12-30T11:00:00Z", "count": 36, "count_mavg": 738, "scaled_count": 0.008905160240828991, "scaled_count_mavg": 0.18255577981472015, "market_count_average": 0.8544670939445496 } ] } ] } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "id": "hbiGJjhsSpnfhM8aBePyTB", "code": "auth_failed", "value": "authentication failed" } ] } ``` # Ticker Trend List Data Source: https://docs.benzinga.com/api-reference/ticker-trends-api/get-ticker-trend-list-data openapi/ticker-trends-api_api.spec.yml get /api/v1/trending-tickers/list Retrieve a list of trending tickers based on various metrics. Returns securities ordered by trending score across different time intervals. ```json Response (200 OK) theme={null} { "ok": true, "data": [ { "security": { "ticker": "RVLV", "name": "Revolve Gr", "exchange": "NYSE" }, "count": 2344, "pct_chg": 23340 } ] } ``` ```json Response (400 Bad Request) theme={null} { "ok": false, "errors": [ { "id": "hbiGJjhsSpnfhM8aBePyTB", "code": "400", "value": "Bad Request" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "id": "hbiGJjhsSpnfhM8aBePyTB", "code": "500", "value": "Something went wrong" } ] } ``` # Overview Source: https://docs.benzinga.com/api-reference/ticker-trends-api/overview Overview of the Ticker Trends API ## Introduction The Ticker Trends API retrieves trending data for specified ticker symbols based on user engagement metrics. It helps identify securities generating increased interest by tracking: * Trend scores * Activity levels * Engagement across different time intervals ## Available Endpoints ### [Get Ticker Trend Data](/api-reference/ticker-trends-api_api/ticker-trends/get-ticker-trend-data) Retrieve aggregated trend scores for specified tickers. ### [Get Trending Tickers List](/api-reference/ticker-trends-api_api/ticker-trends/get-ticker-trend-list-data) Retrieve a ranked list of trending ticker symbols. # Infrastructure Architecture Source: https://docs.benzinga.com/introduction/architecture Enterprise-grade infrastructure powering Benzinga's 99.9% API availability with world-class monitoring and reliability Benzinga's infrastructure is designed for **99.9% availability**, ensuring your applications receive reliable, real-time financial data around the clock. Our production environment is battle-tested, fully monitored, and backed by 24/5 on-call engineering support. ## Overview Our platform is built on a modern, cloud-native architecture leveraging AWS managed services, Kubernetes orchestration, and GitOps deployment practices. This **production-grade infrastructure** powers millions of API requests daily while maintaining sub-100ms response times with comprehensive observability and automated scaling. Production-tested reliability with multi-AZ redundancy Real-time observability with Coralogix and Datadog Zero-downtime deployments with intelligent autoscaling Benzinga Infrastructure Architecture *** ## Core Infrastructure ### AWS Cloud Foundation Our infrastructure runs entirely on **Amazon Web Services (AWS)**, taking advantage of: Services deployed across multiple Availability Zones for fault tolerance Isolated Virtual Private Cloud with strict security group policies Global DNS with health checks and automatic failover routing AWS-managed Kubernetes control plane with 99.95% SLA ### Kubernetes Infrastructure We operate **two dedicated Kubernetes clusters** to ensure safe deployments and environment isolation: | Environment | Purpose | Deployment Flow | | ---------------------- | ----------------------------------------------------- | ------------------------------------------ | | **Staging Cluster** | Developer testing, QA validation, integration testing | Code changes deployed first for validation | | **Production Cluster** | Live customer traffic with SLA guarantees | Only verified releases are promoted | #### Key Kubernetes Components * **Karpenter** — AWS-native node autoscaler that provisions right-sized compute in seconds, not minutes * **Horizontal Pod Autoscaler (HPA)** — Automatic pod scaling based on CPU, memory, and custom metrics * **Kong Gateway** — Enterprise API gateway handling ingress/egress, rate limiting, and authentication * **ArgoCD** — GitOps-based deployment controller for declarative, auditable releases *** ## API Gateway & Traffic Management ### Kong Gateway All API traffic flows through **Kong Gateway**, providing: API key validation and JWT token verification at the edge Per-client request throttling to ensure fair resource allocation Intelligent traffic distribution across healthy service pods All traffic encrypted with TLS 1.3, certificates auto-renewed ### Route 53 DNS AWS Route 53 provides: * **Global latency-based routing** — Users automatically routed to the fastest endpoint * **Health checks** — Continuous monitoring with automatic failover on failure * **100% uptime SLA** — AWS-backed availability guarantee for DNS resolution *** ## CI/CD Pipeline Our deployment pipeline enforces strict quality gates before any code reaches production. ### Development Workflow ```mermaid theme={null} flowchart LR A[Developer Commit] --> B[GitLab CI Pipeline] B --> C{Linting & Tests} C -->|Pass| D[Build Container Image] C -->|Fail| E[Reject & Notify] D --> F[Push to Registry] F --> G[Peer Review Required] G -->|2 Approvals| H[Update GitOps Repo] H --> I[ArgoCD Sync] I --> J[Deploy to Staging] J -->|Validated| K[Promote to Production] ``` ### Pipeline Stages | Stage | Description | Quality Gate | | ----------------- | -------------------------------------------- | ---------------------- | | **Lint** | Code style and static analysis checks | Must pass all rules | | **Unit Tests** | Automated test suite execution | 100% tests passing | | **Security Scan** | Container vulnerability scanning | No critical/high CVEs | | **Build** | Docker image creation tagged with commit SHA | Successful build | | **Peer Review** | Manual code review by 2 developers | Dual approval required | | **GitOps Update** | Image tag updated in ArgoCD repository | Manual promotion | ### GitOps with ArgoCD All deployments are managed through **ArgoCD**, following GitOps principles: * **Declarative** — Desired state defined in Git, single source of truth * **Automated sync** — ArgoCD detects changes and applies them automatically * **Rollback capability** — Instant rollback by reverting Git commits * **Audit trail** — Complete deployment history via Git commit log Every production change is traceable to a specific Git commit, peer review, and approver — ensuring complete auditability for compliance requirements. *** ## Auto-Scaling Architecture Our infrastructure scales automatically at multiple levels to handle traffic spikes. ### Pod-Level Scaling (HPA) Each service deployment includes Horizontal Pod Autoscaler configuration: ```yaml theme={null} # Example HPA Configuration apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler spec: minReplicas: 3 maxReplicas: 50 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 70 ``` **Scaling triggers:** * CPU utilization > 70% * Memory utilization > 80% * Custom metrics (request queue depth, latency percentiles) ### Node-Level Scaling (Karpenter) **Karpenter** handles cluster capacity by: * Provisioning optimally-sized nodes in under 60 seconds * Consolidating underutilized nodes to reduce costs * Supporting spot instances for non-critical workloads * Respecting pod topology and availability zone constraints *** ## Production-Grade Observability & Monitoring Our infrastructure employs **enterprise-grade monitoring** with multiple layers of observability, ensuring complete visibility into system health, performance, and reliability. Every component is continuously monitored with automated alerting and incident response protocols. ### Comprehensive Monitoring Stack **Distributed Tracing & Logging** * Real-time log aggregation from all services * Distributed tracing across microservices * Application performance monitoring (APM) * End-to-end request tracking with correlation IDs * Log pattern recognition and anomaly detection * Custom dashboards for business metrics **Alerting & Synthetic Monitoring** * 24/7 continuous API endpoint testing * Multi-region synthetic monitoring * Response time and availability tracking * Automated alerts with intelligent routing * Service-level indicator (SLI) tracking * Performance regression detection ### Coralogix: Tracing & Logging Coralogix provides **complete observability** into our application layer: All application logs from every service, pod, and container are aggregated in real-time, providing instant access to debugging information across the entire infrastructure. Every API request is traced end-to-end across microservices, load balancers, databases, and external services. This enables rapid root-cause analysis of performance issues or errors. Automatic error detection with stack traces, contextual information, and affected user counts. Errors are categorized by severity and impact. Real-time metrics on API response times, throughput, error rates, and resource utilization across all services. **Key Coralogix Features in Production:** * **Retention Policy**: 30-day hot storage for immediate access, 90-day archive for compliance * **Query Performance**: Sub-second queries across billions of log entries * **Alert Integration**: Automated routing to Slack channels and on-call engineers * **Custom Dashboards**: Business-specific metrics visible to stakeholders in real-time ### Datadog: Alerting & Synthetics Datadog provides **proactive monitoring** and continuous validation: Automated tests run every 60 seconds from multiple geographic regions, validating API availability, response times, and data accuracy before customers are impacted. Machine learning-powered anomaly detection identifies unusual patterns in metrics, triggering alerts before issues impact customers. Real-time tracking of service-level objectives (SLOs) with automated reporting on 99.9% availability targets. Continuous monitoring of p50, p95, and p99 latency percentiles to ensure consistent performance. **Datadog Synthetic Tests Include:** | Test Type | Frequency | Regions | Metrics Tracked | | ------------------------ | ----------- | ---------------- | ---------------------------------------------- | | **API Health Checks** | Every 60s | 5 global regions | Availability, response time, status codes | | **Data Accuracy Tests** | Every 5 min | 3 regions | Data freshness, schema validation, integrity | | **Performance Tests** | Every 60s | 5 regions | Latency (p50/p95/p99), throughput, error rates | | **Authentication Tests** | Every 5 min | 2 regions | API key validation, rate limiting, OAuth flows | ### Slack Integration & Incident Management All monitoring systems integrate with **dedicated Slack channels** for immediate visibility and rapid response: **Critical Alerts** * P1/P2 incidents requiring immediate action * Automated on-call engineer paging * Real-time metrics and runbook links * Incident commander assignment **Performance Insights** * Daily health summaries * Capacity planning alerts * Performance trend notifications * Anomaly detection warnings **Slack Alert Workflow:** ```mermaid theme={null} flowchart LR A[Alert Triggered] --> B{Severity Level} B -->|P1/P2| C[#alerts-production] B -->|P3/P4| D[#monitoring-insights] C --> E[On-Call Engineer Paged] C --> F[Incident Channel Created] F --> G[Developer Assigned] G --> H[Root Cause Investigation] H --> I[Fix Deployed] I --> J[Post-Mortem Report] ``` ### Alerting & Incidents **Developer Assignment Process:** 1. **Alert Triggered** → Automatic Slack notification with context and metrics 2. **On-Call Engineer Triaged** → Severity assessed, incident channel created 3. **Developer Assigned** → Subject matter expert tagged based on affected service 4. **Investigation** → Root cause analysis using Coralogix traces and Datadog metrics 5. **Resolution** → Fix deployed through standard GitOps pipeline 6. **Post-Mortem** → Incident documented with preventive measures All P1/P2 incidents trigger **immediate automated paging** to on-call engineers with 24/5 coverage. Our monitoring systems have detected and resolved **95% of potential issues before customer impact** through proactive alerting and automated remediation. *** ## Security & Compliance ### Network Security * **VPC Isolation** — Complete network segmentation from public internet * **Security Groups** — Strict ingress/egress rules, deny-by-default * **TLS Everywhere** — All internal and external traffic encrypted * **Secrets Management** — AWS Secrets Manager for sensitive credentials ### Access Control * **RBAC** — Kubernetes role-based access control for all operations * **SSO Integration** — Enterprise identity provider integration * **Audit Logging** — Complete access logs retained for compliance *** ## Disaster Recovery ### Recovery Objectives | Metric | Target | Current | | ---------------------------------- | ------------- | --------------------- | | **RTO** (Recovery Time Objective) | \< 15 minutes | \~5 minutes | | **RPO** (Recovery Point Objective) | \< 1 minute | Real-time replication | ### Resilience Features * **Multi-AZ replication** — Data replicated across availability zones * **Automated failover** — Route 53 health checks trigger DNS failover * **Rolling deployments** — Zero-downtime deployments with automatic rollback * **Backup & restore** — Automated daily backups with point-in-time recovery *** ## Production-Ready Reliability Guarantees ### Why Our Infrastructure is Rock-Solid Benzinga's infrastructure is **production-tested at scale**, handling millions of daily requests with proven reliability: **Production Statistics** * 10M+ API requests processed daily * Sub-100ms average response time * 99.9% historical uptime achieved * Zero data loss in 3+ years **Operational Excellence** * 24/5/365 on-call engineering coverage * Automated failover and self-healing * Multi-region redundancy ### Monitoring & Observability Excellence Our **comprehensive monitoring** ensures issues are detected and resolved before they impact your business: Every request, log entry, and metric is tracked end-to-end using Coralogix distributed tracing and centralized logging Datadog synthetic monitoring tests APIs every 60 seconds from multiple regions, alerting on issues before customer impact Automated Slack integration routes alerts to dedicated channels with immediate developer assignment and resolution tracking Post-mortem analysis for all incidents ensures issues never recur with automated preventive measures ### Client Confidence: What This Means for You When you integrate with Benzinga's APIs, you're connecting to a **production-grade infrastructure** backed by: | Feature | Client Benefit | | ----------------------------- | -------------------------------------------------------------------------------- | | **Multi-AZ Redundancy** | Your application stays online even during AWS availability zone outages | | **Automated Scaling** | Your requests are handled seamlessly during traffic spikes without rate limiting | | **24/7 Monitoring** | Issues are detected and resolved by engineers before you notice degradation | | **Zero-Downtime Deployments** | Our updates never interrupt your service availability | | **Complete Audit Trail** | Every deployment is tracked, reviewed, and instantly rollback-capable | | **Proactive Alerting** | 95% of potential issues resolved before customer impact | **Production-Ready**: Our infrastructure has processed over **Billion API requests** with 99.9% availability and maintains sub-100ms latency for real-time financial data delivery. *** ## Summary Benzinga's infrastructure delivers **enterprise-grade reliability** through: AWS EKS with multi-AZ deployment and managed control plane ensuring maximum uptime ArgoCD-managed releases with full audit trail and instant rollback capabilities Karpenter + HPA for seamless capacity management handling traffic spikes automatically Coralogix tracing/logging + Datadog alerting/synthetics with Slack integration for rapid incident response Dedicated on-call engineers Defense-in-depth with encryption, RBAC, and network isolation protecting your data **Your Success is Our Priority**: For questions about our infrastructure, SLA guarantees, or to discuss your specific reliability requirements, contact your account representative or email [support@benzinga.com](mailto:support@benzinga.com). # FAQ Source: https://docs.benzinga.com/introduction/faq Discover answers to your most pressing questions about Edgee. Benzinga is a financial technology company that provides a wide variety of financial data and news services through APIs. These APIs cover a range of information, including real-time and historical market data, news, company fundamentals, trading signals, and more, allowing businesses to integrate financial data directly into their applications. Benzinga APIs provide: * **Real-time market data**: Access to live data streams, including quotes, trades, and more. * **Historical data**: Allows retrieval of historical prices and trading volumes. * **News & insights**: Aggregated news, articles, and financial insights from multiple sources. * **Company fundamentals**: Information on company financials, analyst ratings, and key metrics. * **Trading signals and alerts**: Customizable alerts based on market conditions. The Benzinga newsfeed API is updated every few minutes to ensure that users receive timely news about stock movements and market trends. This API includes options to view top stories, reasons behind stock movements, and market updates. Yes, Benzinga offers a WebSocket API for real-time data streaming. This API is ideal for applications that need continuous, live market data feeds, including quotes, trades, and other data points. You can configure WebSocket connections based on your specific data needs. Benzinga’s historical data API provides access to a range of data, including daily, weekly, monthly, and intraday bar data, covering stocks, indices, and other assets. You can access historical data going back several years, depending on the asset and the level of detail required. Yes, Benzinga provides a Calendar API that includes upcoming and past earnings reports, IPOs, dividend announcements, and other corporate events. This allows users to stay informed about critical financial events affecting their investments. Each API subscription comes with rate limits that dictate how many requests can be made within a certain timeframe. These limits depend on the specific API and the subscription tier. Contact Benzinga's support team or consult their documentation to understand the limits associated with your plan. Benzinga often provides a trial or sandbox environment for new users to test the APIs before committing to a paid plan. The sandbox may have reduced data access or limited functionality compared to the full version. Yes, Benzinga has a dedicated support team to assist with API integration and usage. Additionally, the Benzinga API documentation includes examples and code snippets to help users integrate their APIs into applications more smoothly. Certain data points, like short interest and government trades, may require premium subscriptions or additional fees. Contact Benzinga’s sales team or review the pricing documentation for more detailed information on any extra charges. # Quickstart Source: https://docs.benzinga.com/introduction/introduction Get started with Benzinga APIs and access real-time market data, news, and more. ## Benzinga APIs From earnings reports to options activity, Benzinga focuses on information that moves the market. We offer a suite of channels that concentrates on breaking news so that your firm can be the first to lock in a trade. We offer two ways to receive our news, through a pull based Rest API or a push based TCP. Both offer unprecedented access to the markets. One of the foundations of Benzinga is to "obsess over our clients, not our competition." Quality relationships are the driving force behind successful business, and our commitment to this is always coming first. To get started with Benzinga's APIs please email us directly at [licensing@benzinga.com](mailto:licensing@benzinga.com) or give us a call: 877-440-9464. We will respond within a business day. ## Authentication Include your API key/token as the token parameter in the request query string. ## Best Practices We suggest that customers use our Benzinga-provided clients when possible. Many endpoints are available in our [Python library](/python-client). We provide reference implementations and client libraries via our public [Github](https://github.com/benzinga). Finally, we highly recommend employing deltas while using the Calendar, Signals, and News APIs -- particularly while using them for real-time ingestion (as opposed to ingestion of historical data). This can be done by employing the `parameters[updated]` query parameter for the Calendar and Signals APIs, and the `updatedSince` query parameter for the News API. Use of these parameters ensures minimal latency. ## Max Offset Pagination for the News, Calendar, and Signals APIs cannot return result sets with more than 10,000 items. That is, if your page size is 1,000, you cannot request page 10. To work around this limitation, you should adjust the query size. For instance, you can restrict to a specific date range or ticker set that includes fewer than 10,000 items. After doing so, you can adjust your query to include another date range or ticker set that includes fewer than 10,000 items, combine the sets, and repeat until you obtain the entire result set that you seek. ## Return Format The default format for Benzinga APIs is specified in individual API specs, but will be `JSON` unless otherwise specified. You can request `JSON` by setting the `accept` header to `application/json` or `XML` using `application/xml` where this is not deprecated. **New integrations using `XML` output format are not recommended.** ### Example ```JSON theme={null} curl -X GET \ 'http://api.benzinga.com/api/v2/calendar/ratings?token=YOUR_TOKEN_HERE&ratings=Upgrades' \ -H 'accept: application/json' ``` # Welcome to Benzinga Source: https://docs.benzinga.com/introduction/welcome Welcome to Benzinga APIs Developer Documentation! Here in the [Benzinga Cloud](https://cloud.benzinga.com/) Developer Documentation portal, you will find documentation for our news, market, and company data APIs. If you have any questions please [reach out to us](mailto:partners@benzinga.com). We love to help. ## About this Documentation For our REST APIs, this documentation is powered by OpenAPI specifications. You can view the raw yaml spec by viewing the public repository of this documentation application, [here](https://github.com/Benzinga/doc-site-mintlify). An integrated REST client is embedded directly in the "Playground" section of each page powered by OpenAPI. Once you have obtained an API key, you can test calls without leaving the documentation portal. Alternatively you can test calls with any other GUI REST clients ([Postman](https://www.getpostman.com/), [Insomnia](https://insomnia.rest/), [Paw](https://paw.cloud/)) or CLI tools like cUrl1. Finally, the OpenAPI specifications are compatible with tools in the Swagger ecosystem, so you can even [generate a client for the programming language of your choice](http://swagger.io/swagger-codegen/). Our docs are AI enabled. Try asking a question using Ctrl + K (PC) or Cmd + K (Mac). ## Acessing the data Click "[Get Started](https://www.benzinga.com/apis/licensing/register)" to create an account. Once logged into the user dashboard, copy your API key. Authentication is via API Key set as a URL query parameter "token". ## Best Practices We suggest that customers use our Benzinga-provided clients when possible. Many endpoints are available in our [Python library](https://github.com/Benzinga/benzinga-python-client). And we provide example implementations and client libraries via our public [Github](https://github.com/benzinga). Finally, we highly recommend employing deltas while using the Calendar, Signals, and News APIs -- particularly while using them for real-time ingestion (as opposed to ingestion of historical data). This can be done by employing the `parameters[updated]` query parameter for the Calendar and Signals APIs, and the `updatedSince` query parameter for the News API. Use of these parameters ensures minimal latency. ## Additional Resources Check out Benzinga APIs Statuspage to stay aware of any Benzinga service outages. Run Benzinga APIs in your Postman environment Benzinga Events aims to connect traders, investors, and businesses with opportunity and growth. Benzinga Pro delivers dozens of breaking news alerts poised to move the market every single day. *** ## Get in Touch! ## Contact Us ### Support If you have any questions or concerns, *we're listening*. * Email: [partners@benzinga.com](mailto:partners@benzinga.com) ### Licensing * Website: [Benzinga Cloud](https://cloud.benzinga.com/) * Email: [licensing@benzinga.com](mailto:licensing@benzinga.com) * Call: +1-877-440-ZING (9464) Did we mention [Benzinga is hiring](http://jobs.benzinga.com/)? # null Source: https://docs.benzinga.com/services/overview # Licensed Services Overview Here’s an overview of each service, including its type, API endpoint, and a brief description.
Service Type API Endpoint Description
Newsfeed & Why is it Moving v2 News /api/v2/newsfeed Provides the latest news with insights on stock movements.
Updated every 5 minutes
Calendar Events /api/v1/calendar Shows upcoming earnings, IPOs, and other financial events.
Data refreshed daily
Data Websocket Streaming /ws/data Real-time data websocket for live market feeds.
Available during market hours
Historical Bar Data Data /api/v1/historical Access to historical bar data for stocks and indices.
Data available up to 20 years
# Webhook Overview Source: https://docs.benzinga.com/webhook-reference/overview Push Benzinga market data to your systems with resilient, filterable webhooks. Benzinga webhooks eliminate polling by posting real-time market events directly to your HTTP endpoint. Deliveries are JSON `POST` requests that include a unique `X-BZ-Delivery` header for deduplication and use a tiered retry strategy to maximize reliability. ## Available webhook services * **Data Webhook Engine**: Real-time calendar and signal data (earnings, dividends, ratings, option activity, WIIMs, and more) with configurable filters and optional payload transformations. Read the full guide in [Data Webhook Engine](./webhook-engine). * Additional webhook configurations can be scoped to your account. Contact your Benzinga representative to enable specific datasets or to register new webhook URLs. ## Integration flow Provide a publicly reachable HTTPS endpoint plus any data type or geography filters you need. Benzinga will provision the webhook with those settings. Use the [Test Webhook Delivery](/api-reference/webhook_api/test-webhook-delivery) endpoint to verify your webhook endpoint is properly configured and can receive deliveries. Parse the JSON payload, use the `id` and `X-BZ-Delivery` values to avoid duplicates, and respond quickly with a 2xx status to acknowledge receipt. Track failures, timeouts, and retries in your logs. Adjust filters or payload transformations with your Benzinga contact if your downstream systems have new requirements. ## Best practices * Use HTTPS and authentication on your webhook endpoint. * Process work asynchronously so responses return within 30 seconds. * Store processed delivery IDs to ensure idempotency across retries. * Test against non-production endpoints before switching to live delivery. # Data Webhook Engine Source: https://docs.benzinga.com/webhook-reference/webhook-engine Deliver Benzinga calendar, signal, and sentiment data directly to your webhook endpoints in real time. The webhook engine pushes calendar and signal updates directly to your HTTP endpoint with built-in retries, filtering, and transformation options. Use this guide to understand delivery mechanics, payload shape, and integration best practices. ## Overview The Benzinga Data Webhook service delivers real-time calendar and signals data to your configured webhook endpoints. When calendar events (earnings, dividends, ratings, etc.) or signals (option activity, halts, etc.) are created, updated, or removed, the service automatically sends HTTP POST requests to your webhook URL with the data payload. Key capabilities: * Configurable scopes for calendar and signal coverage so you only receive the data you need * Idempotent deliveries with a unique `X-BZ-Delivery` header and payload `id` field for deduplication * Robust retry schedule that escalates from rapid exponential retries to long-tail hourly attempts * Optional content transformations to align payloads with downstream system expectations ## Webhook Delivery ### HTTP Request Details * **Method**: `POST` * **Content-Type**: `application/json` * **User-Agent**: `Benzinga-Dispatch/v1.0.0 {build-version}` * **Custom Header**: `X-BZ-Delivery` - A unique UUID for each delivery attempt (useful for deduplication) ### Retry Policy The data webhook service implements a robust retry mechanism: * **Exponential Phase**: 15 retries within the first 5 minutes * **Additional Exponential Retries**: 11 more retries if needed * **Fixed Interval Phase**: 12 retries per hour × 24 hours/day × 7 days (for long-term retries) * **Max Wait Time**: 5 minutes between retries in exponential phase * **Request Timeout**: 30 seconds per request ### Response Requirements Your webhook endpoint should return one of the following HTTP status codes: * **Success Codes** (200-202, 204): Indicates successful delivery. No retries will be attempted. * **Client Error Codes** (401-403): Indicates authentication/authorization failure. Retries will be **halted immediately** to prevent further failed attempts. * **Other Codes** (4xx, 5xx): Will trigger retries according to the retry policy above. **Important**: Your endpoint should respond quickly (ideally within 30 seconds) to avoid timeout. The engine will retry on timeouts. ## Webhook Payload Structure Each webhook delivery contains a JSON payload with the following structure: ```json theme={null} { "id": "550e8400-e29b-41d4-a716-446655440000", "api_version": "webhook/v1", "kind": "data/v2.1/calendar/earnings", "data": { "action": "Created", "id": "60a2368362c99dd8ae0cf4b7", "timestamp": "2024-01-15T10:30:00Z", "content": { "id": "60a2368362c99dd8ae0cf4b7", "date": "2024-01-15", "date_confirmed": 1, "time": "08:00:00", "ticker": "AAPL", "exchange": "NASDAQ", "isin": "US0378331005", "cusip": "037833100", "name": "Apple Inc.", "period": "Q1", "period_year": 2024, "currency": "USD", "eps": "2.18", "eps_est": "2.10", "revenue": "123900000000", "revenue_est": "121000000000" } } } ``` ### Payload Fields #### Top-Level Fields * **`id`** (string, UUID): Unique identifier for this webhook delivery. Use this for deduplication. * **`api_version`** (string): API version identifier. Currently `"webhook/v1"`. * **`kind`** (string): Data type path identifier. See [Supported Data Types](#supported-data-types) for all possible values. #### Data Object * **`action`** (string): Event action type. Possible values: * `"Created"`: New data was created (default for new webhook keys) * `"Updated"`: Existing data was updated * `"Removed"`: Data was removed * **Note**: Legacy webhook keys may receive lowercase values: `"created"`, `"updated"`, `"removed"` * **`id`** (string): Unique identifier for the calendar/signal record * **`timestamp`** (string, ISO 8601): Timestamp when the webhook was generated * **`content`** (object): The actual calendar or signal data. Structure varies by data type (see [Supported Data Types](#supported-data-types)) ## Supported Data Types The data webhook service supports the following calendar and signal types: ### Calendar Data Types (v2.1) | Data Type | Kind Path | Description | | ---------------------- | ------------------------------- | ---------------------------------- | | Earnings | `data/v2.1/calendar/earnings` | Company earnings announcements | | Dividends | `data/v2.1/calendar/dividends` | Dividend declarations and payments | | Ratings | `data/v2.1/calendar/ratings` | Analyst ratings and price targets | | IPOs | `data/v2.1/calendar/ipos` | Initial public offerings | | Guidance | `data/v2.1/calendar/guidance` | Company guidance updates | | Conference | `data/v2.1/calendar/conference` | Conference calls and presentations | | Economics | `data/v2.1/calendar/economics` | Economic indicators and releases | | Offerings | `data/v2.1/calendar/offerings` | Secondary offerings | | Mergers & Acquisitions | `data/v2.1/calendar/ma` | M\&A announcements | | Retail | `data/v2.1/calendar/retail` | Retail sales data | | Splits | `data/v2.1/calendar/splits` | Stock splits | | FDA | `data/v2.1/calendar/fda` | FDA approvals and announcements | ### Signals Data Types (v1) | Data Type | Kind Path | Description | | ------------------------ | ------------------------------------------ | ----------------------------- | | Option Activity | `data/v1/signal/option_activity` | Unusual option activity | | WIIMs | `data/v1/wiims` | Why Is It Moving (WIIMs) data | | SEC Insider Transactions | `data/v1/sec/insider_transactions/filings` | SEC insider trading filings | | Government Trades | `data/v1/gov/usa/congress` | Congressional trading data | ### Additional Data Types (v1) | Data Type | Kind Path | Description | | ---------------------------- | -------------------------------- | ------------------------------- | | Bulls Say Bears Say | `data/v1/bulls_bears_say` | Market sentiment analysis | | Bulls Say Bears Say (Korean) | `data/v1/bulls_bears_say/korean` | Korean market sentiment | | Analyst Insights | `data/v1/analyst/insights` | Analyst insights and commentary | | Consensus Ratings | `data/v1/consensus-ratings` | Aggregated consensus ratings | ## Content Structure Examples ### Earnings Example ```json theme={null} { "id": "550e8400-e29b-41d4-a716-446655440000", "api_version": "webhook/v1", "kind": "data/v2.1/calendar/earnings", "data": { "action": "Created", "id": "60a2368362c99dd8ae0cf4b7", "timestamp": "2024-01-15T10:30:00Z", "content": { "id": "60a2368362c99dd8ae0cf4b7", "date": "2024-01-15", "date_confirmed": 1, "time": "08:00:00", "ticker": "AAPL", "exchange": "NASDAQ", "isin": "US0378331005", "cusip": "037833100", "name": "Apple Inc.", "period": "Q1", "period_year": 2024, "currency": "USD", "eps": "2.18", "eps_est": "2.10", "eps_prior": "1.88", "eps_surprise": "0.08", "eps_surprise_percent": "3.81", "eps_type": "GAAP", "revenue": "123900000000", "revenue_est": "121000000000", "revenue_prior": "117154000000", "revenue_surprise": "2900000000", "revenue_surprise_percent": "2.40", "importance": 0 } } } ``` ### Dividends Example ```json theme={null} { "id": "550e8400-e29b-41d4-a716-446655440001", "api_version": "webhook/v1", "kind": "data/v2.1/calendar/dividends", "data": { "action": "Created", "id": "60a2368362c99dd8ae0cf4b8", "timestamp": "2024-01-15T10:30:00Z", "content": { "id": "60a2368362c99dd8ae0cf4b8", "date": "2024-02-15", "ticker": "AAPL", "exchange": "NASDAQ", "isin": "US0378331005", "cusip": "037833100", "name": "Apple Inc.", "currency": "USD", "frequency": 4, "dividend": "0.24", "dividend_prior": "0.23", "dividend_type": "Regular", "dividend_yield": "0.50", "ex_dividend_date": "2024-02-09", "payable_date": "2024-02-15", "record_date": "2024-02-12", "confirmed": true, "importance": 0 } } } ``` ### Ratings Example ```json theme={null} { "id": "550e8400-e29b-41d4-a716-446655440002", "api_version": "webhook/v1", "kind": "data/v2.1/calendar/ratings", "data": { "action": "Created", "id": "60a2368362c99dd8ae0cf4b9", "timestamp": "2024-01-15T10:30:00Z", "content": { "id": "60a2368362c99dd8ae0cf4b9", "date": "2024-01-15", "time": "09:00:00", "ticker": "AAPL", "exchange": "NASDAQ", "isin": "US0378331005", "cusip": "037833100", "name": "Apple Inc.", "action_pt": "Maintains", "action_company": "Maintains", "currency": "USD", "rating_current": "Buy", "pt_current": "200.00", "pt_prior": "195.00", "adjusted_pt_current": "200.00", "adjusted_pt_prior": "195.00", "rating_prior": "Buy", "url": "https://www.benzinga.com/...", "importance": 0, "firm": { "name": "Goldman Sachs", "id": "123" }, "analyst": { "name": "John Doe", "id": "456" } } } } ``` ### Option Activity Example ```json theme={null} { "id": "550e8400-e29b-41d4-a716-446655440003", "api_version": "webhook/v1", "kind": "data/v1/signal/option_activity", "data": { "action": "Created", "id": "60a2368362c99dd8ae0cf4ba", "timestamp": "2024-01-15T10:30:00Z", "content": { "id": "60a2368362c99dd8ae0cf4ba", "date": "2024-01-15", "time": "10:00:00", "ticker": "AAPL", "exchange": "NASDAQ", "option_symbol": "AAPL240119C00150000", "strike": "150.00", "expiration": "2024-01-19", "type": "call", "volume": 10000, "open_interest": 50000, "premium": "500000.00", "importance": 0 } } } ``` ## Event Actions The data webhook service sends events for three types of actions: 1. **Created**: Triggered when new calendar or signal data is published 2. **Updated**: Triggered when existing data is modified 3. **Removed**: Triggered when data is deleted **Note**: The action format depends on your webhook configuration: * **New webhook keys**: Receive capitalized actions (`"Created"`, `"Updated"`, `"Removed"`) * **Legacy webhook keys**: Receive lowercase actions (`"created"`, `"updated"`, `"removed"`) ## Content Filtering Your webhook configuration can include filters to control which data you receive: ### Filter Options * **Data Types**: Filter by specific calendar/signal types (e.g., only earnings, only ratings) * **Geographic Filters**: Control whether to receive: * US market data (`AllowUSA`) * Canadian market data (`AllowCanada`) * Indian market data (`AllowIndia`) - for WIIMs data * **Date Filter**: Exclude historical data older than a specified date (`MaxHistoricalDate`) ### Exchange Filtering The service automatically filters by exchange based on your geographic settings: * **US Exchanges**: NYSE, NASDAQ, AMEX, ARCA, OTC, OTCBB, PINX, PINK, BATS, IEX * **Canadian Exchanges**: TSX, TSXV, CSE, CNSX ## Content Transformation The webhook engine supports content transformation for specific data types. Transformations are applied based on your webhook configuration and may include: * Field renaming * Data format conversion * Field filtering/removal ## Best Practices ### 1. Idempotency Use the `id` field (UUID) in the payload to implement idempotency. Store processed delivery IDs to avoid duplicate processing. ### 2. Response Handling * Return `200 OK` or `204 No Content` immediately upon receiving the webhook * Process the data asynchronously if needed * Don't perform long-running operations before responding ### 3. Error Handling * Return appropriate HTTP status codes * For authentication errors (401-403), ensure your endpoint is properly configured * For temporary failures, return 5xx status codes to trigger retries ### 4. Security * Use HTTPS for your webhook endpoint * Implement authentication/authorization (API keys, tokens, etc.) * Validate the `X-BZ-Delivery` header for additional security ### 5. Monitoring * Monitor your endpoint's response times * Set up alerts for repeated failures * Track the `X-BZ-Delivery` header to identify delivery attempts ### 6. Data Type Handling * Check the `kind` field to determine the data type * Parse the `content` object based on the data type structure * Handle different action formats (capitalized vs lowercase) if supporting legacy keys ## Example Webhook Handler ### Python (Flask) ```python theme={null} from flask import Flask, request, jsonify import uuid app = Flask(__name__) processed_ids = set() @app.route('/webhook', methods=['POST']) def webhook(): # Get delivery ID for deduplication delivery_id = request.headers.get('X-BZ-Delivery') # Parse payload payload = request.json content_id = payload['id'] # Check for duplicates if content_id in processed_ids: return jsonify({'status': 'duplicate'}), 200 # Process data action = payload['data']['action'] kind = payload['kind'] content = payload['data']['content'] print(f"Received {action} event for {kind}") print(f"Data ID: {content.get('id')}") # Handle different data types if 'earnings' in kind: print(f"Earnings: {content.get('ticker')} - {content.get('date')}") elif 'ratings' in kind: print(f"Rating: {content.get('ticker')} - {content.get('rating_current')}") elif 'option_activity' in kind: print(f"Option Activity: {content.get('ticker')} - {content.get('volume')}") # Mark as processed processed_ids.add(content_id) # Return success immediately return jsonify({'status': 'received'}), 200 ``` ### Node.js (Express) ```javascript theme={null} const express = require('express'); const app = express(); app.use(express.json()); const processedIds = new Set(); app.post('/webhook', (req, res) => { // Get delivery ID for deduplication const deliveryId = req.headers['x-bz-delivery']; // Parse payload const payload = req.body; const contentId = payload.id; // Check for duplicates if (processedIds.has(contentId)) { return res.status(200).json({ status: 'duplicate' }); } // Process data const { action, content } = payload.data; const kind = payload.kind; console.log(`Received ${action} event for ${kind}`); console.log(`Data ID: ${content.id}`); // Handle different data types if (kind.includes('earnings')) { console.log(`Earnings: ${content.ticker} - ${content.date}`); } else if (kind.includes('ratings')) { console.log(`Rating: ${content.ticker} - ${content.rating_current}`); } else if (kind.includes('option_activity')) { console.log(`Option Activity: ${content.ticker} - ${content.volume}`); } // Mark as processed processedIds.add(contentId); // Return success immediately res.status(200).json({ status: 'received' }); }); app.listen(3000); ``` ### Go ```go theme={null} package main import ( "encoding/json" "fmt" "log" "net/http" "sync" ) var ( processedIDs = make(map[string]bool) mu sync.RWMutex ) type WebhookPayload struct { ID string `json:"id"` APIVersion string `json:"api_version"` Kind string `json:"kind"` Data struct { Action string `json:"action"` ID string `json:"id"` Timestamp string `json:"timestamp"` Content map[string]interface{} `json:"content"` } `json:"data"` } func webhookHandler(w http.ResponseWriter, r *http.Request) { // Get delivery ID deliveryID := r.Header.Get("X-BZ-Delivery") // Parse payload var payload WebhookPayload if err := json.NewDecoder(r.Body).Decode(&payload); err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } // Check for duplicates mu.RLock() if processedIDs[payload.ID] { mu.RUnlock() w.WriteHeader(http.StatusOK) json.NewEncoder(w).Encode(map[string]string{"status": "duplicate"}) return } mu.RUnlock() // Process data fmt.Printf("Received %s event for %s\n", payload.Data.Action, payload.Kind) fmt.Printf("Data ID: %s\n", payload.Data.ID) // Handle different data types content := payload.Data.Content if ticker, ok := content["ticker"].(string); ok { fmt.Printf("Ticker: %s\n", ticker) } // Mark as processed mu.Lock() processedIDs[payload.ID] = true mu.Unlock() // Return success w.WriteHeader(http.StatusOK) json.NewEncoder(w).Encode(map[string]string{"status": "received"}) } func main() { http.HandleFunc("/webhook", webhookHandler) log.Fatal(http.ListenAndServe(":8080", nil)) } ``` ## Troubleshooting ### Common Issues 1. **No webhooks received** * Verify your webhook URL is correctly configured * Check that your endpoint is publicly accessible * Ensure your API key is valid and active * Verify filters aren't excluding all data types * Check that your geographic filters match the data you expect 2. **Duplicate deliveries** * Implement idempotency using the `id` field * Check your endpoint's response times (slow responses may cause retries) 3. **Authentication errors (401-403)** * Verify your endpoint's authentication configuration * Check API keys and tokens * Note: Authentication errors halt retries immediately 4. **Timeout errors** * Ensure your endpoint responds within 30 seconds * Process data asynchronously if needed * Return success immediately and process later 5. **Unexpected action format** * Check if you're using a legacy webhook key (lowercase actions) * Update to a new webhook key to receive capitalized actions * Handle both formats if supporting multiple clients 6. **Missing data types** * Verify your webhook configuration includes the desired data types * Check geographic filters (US/Canada/India settings) * Ensure date filters aren't excluding recent data ## Support For questions or issues with webhook delivery: * Check the [Benzinga API Documentation](https://docs.benzinga.io/) * Contact your Benzinga account representative * Review webhook configuration with your integration team ## Version History * **v1.0.0**: Initial data webhook service release * **Current**: Enhanced filtering, transformation, and retry mechanisms # Supported Actions Source: https://docs.benzinga.com/ws-reference/actions Details about available actions for maintaining and replaying WebSocket sessions. This page lists the supported actions you can use to interact with the Benzinga WebSocket API. These actions help maintain session health and access recent message history. You cannot control the number of messages returned by the `list` action. The actual count depends on the number of messages currently cached for a given key. ## Available Actions | Action | Description | Example | | -------- | -------------------------------------------------------------------------------------------------------------------------- | -------- | | `replay` | Replays up to the last 100 messages. The number of messages returned may vary depending on cache availability for the key. | `replay` | | `ping` | Keeps the WebSocket session alive by sending a heartbeat signal. | `ping` | ## Example Usage **Send an action through your WebSocket client using the following format:** Sample usage of ping: ```bash theme={null} ping ``` Response: ```bash theme={null} pong ``` Sample usage of replay: ```bash theme={null} replay ``` Response: ```json theme={null} { "id": "unique-uuid-for-response", "api_version": "websocket/v1", "kind": "stream_type", "data": { "action": "created/updated/deleted", "id": "insight-id", "content": { ... }, "timestamp": "2024-10-08T10:00:00Z" } } ``` # Authentication Source: https://docs.benzinga.com/ws-reference/authentication How to authenticate requests to the Benzinga API. To access the Benzinga API, you need to authenticate each request with an API token. You can generate and manage your API tokens from your [Benzinga Console](https://www.api.benzinga.com/token). Your API token grants access to your Benzinga account, so handle it securely. Avoid sharing it in public repositories, client-side code, or other unsecured locations. ## Authenticating Requests The Benzinga API uses **Bearer Authentication**, a secure scheme where each request includes a token in the `token` query param. This token serves as a bearer of access privileges to Benzinga resources. ### Example Request with Bearer Token Include the token in the `Token` Query param of your request as follows: ```bash theme={null} Token: ``` # Analyst Insights Stream Source: https://docs.benzinga.com/ws-reference/data-websocket/get-analyst-insights-stream Real-time analyst insights, ratings, and price targets for securities. ## Overview Subscribe to real-time analyst insights and receive updates on analyst ratings, price targets, and detailed recommendations as they happen. ### Key Features * **Real-time Updates**: Get instant notifications when analysts publish new insights or update existing ratings * **Filter by Security**: Subscribe to specific tickers or ISINs to receive only relevant data * **Comprehensive Data**: Includes analyst firm details, ratings, price targets, and detailed insights * **Action Tracking**: Monitor when insights are created, updated, or removed ### Use Cases * Track analyst sentiment changes for portfolio securities * Build real-time alerts for rating upgrades or downgrades * Monitor price target changes across multiple analysts * Aggregate consensus insights from multiple analyst firms ## Quick Start Use the interactive WebSocket tester above to connect and test the stream in real-time. ### Connection URL ``` wss://api.benzinga.com/api/v1/analyst/insights/stream?token=YOUR_TOKEN ``` ### Query Parameters | Parameter | Required | Description | | --------- | -------- | ---------------------------------------------------------- | | `token` | Yes | Your Benzinga WebSocket API token (bz.production\*\*\*) | | `tickers` | No | Comma-separated list of ticker symbols (e.g., `AAPL,MSFT`) | | `isins` | No | Comma-separated list of ISINs to filter | ## Message Example ```json theme={null} { "id": "550e8400-e29b-41d4-a716-446655440000", "api_version": "websocket/v1", "kind": "stream_type", "data": { "action": "created", "id": "insight-id", "timestamp": "2024-10-08T10:00:00Z", "content": { "action": "Upgrades", "analyst_insights": "The analyst has upgraded the stock...", "firm": "Goldman Sachs", "pt": "150.00", "rating": "Buy", "security": { "symbol": "AAPL", "name": "Apple Inc.", "exchange": "NASDAQ" } } } } ``` ### Message Actions | Action | Description | | --------------------- | ----------------------------- | | `created` / `Created` | New analyst insight published | | `updated` / `Updated` | Existing insight modified | | `deleted` / `Deleted` | Insight removed | ## Interactive Commands | Command | Description | | -------- | -------------------------------------------- | | `ping` | Keep connection alive (responds with `pong`) | | `replay` | Replay up to the last 100 cached messages | ## Best Practices * **Deduplication**: Use the `id` field to prevent processing duplicate messages * **Heartbeat**: Send `ping` commands every 30-60 seconds to maintain connection * **Error Handling**: Implement reconnection logic with exponential backoff * **Filtering**: Use ticker/ISIN filters to reduce bandwidth # Bulls/Bears Say Stream Source: https://docs.benzinga.com/ws-reference/data-websocket/get-bulls-bears-say-stream Real-time bull and bear case scenarios for securities. ## Overview Subscribe to real-time bull and bear case analyses for securities. Get balanced perspectives on both positive (bullish) and negative (bearish) scenarios for stocks. ### Key Features * **Balanced Analysis**: Receive both bull and bear cases for comprehensive market insight * **Real-time Updates**: Get instant notifications when cases are created, updated, or removed * **Filter by Security**: Subscribe to specific tickers or ISINs * **Market Sentiment**: Understand both optimistic and pessimistic viewpoints ### Use Cases * Build sentiment analysis dashboards showing both sides of the argument * Track changes in bull/bear sentiment over time * Alert users to significant shifts in market perspective * Provide balanced investment research to clients ## Quick Start Use the interactive WebSocket tester above to connect and test the stream in real-time. ### Connection URL ``` wss://api.benzinga.com/api/v1/bulls_bears_say/stream?token=YOUR_TOKEN ``` ### Query Parameters | Parameter | Required | Description | | --------- | -------- | ---------------------------------------------------------- | | `token` | Yes | Your Benzinga WebSocket API token (bz.production\*\*\*) | | `tickers` | No | Comma-separated list of ticker symbols (e.g., `AAPL,TSLA`) | | `isins` | No | Comma-separated list of ISINs to filter | ## Message Example ```json theme={null} { "id": "websocket123", "api_version": "websocket/v1", "kind": "bull_bear_case", "data": { "action": "created", "id": "case123", "timestamp": "2024-10-01T10:00:00Z", "content": { "bull_case": "Strong earnings growth and market expansion expected.", "bear_case": "Increased competition and regulatory pressures.", "ticker": "AAPL", "updated": 1696153200 } } } ``` ### Message Actions | Action | Description | | --------------------- | ---------------------------- | | `created` / `Created` | New bull/bear case published | | `updated` / `Updated` | Existing case modified | | `deleted` / `Deleted` | Case removed | ## Interactive Commands | Command | Description | | -------- | -------------------------------------------- | | `ping` | Keep connection alive (responds with `pong`) | | `replay` | Replay up to the last 100 cached messages | ## Best Practices * **Deduplication**: Use the `id` field to prevent processing duplicate messages * **Heartbeat**: Send `ping` commands every 30-60 seconds * **Balanced Presentation**: Display both bull and bear cases to provide fair analysis * **Update Tracking**: Monitor the `updated` timestamp to identify recent changes # Earnings Stream Source: https://docs.benzinga.com/ws-reference/data-websocket/get-calendar-earnings-stream Real-time earnings announcements and financial results. ## Overview Subscribe to real-time earnings announcements and receive instant updates on company financial results, including EPS, revenue, and earnings surprises. ### Key Features * **Real-time Earnings**: Get instant notifications of earnings announcements as they happen * **Comprehensive Data**: Includes EPS, revenue, estimates, actuals, and surprise metrics * **Filter by Security**: Subscribe to specific tickers or ISINs * **Earnings Periods**: Track Q1, Q2, Q3, Q4, and full-year (FY) results * **Importance Ratings**: 0-5 scale indicating market significance ### Use Cases * Build real-time earnings calendars and alerts * Track earnings surprises and beat/miss patterns * Monitor portfolio company earnings in real-time * Create earnings season dashboards * Automate trading strategies based on earnings results ## Quick Start Use the interactive WebSocket tester above to connect and test the stream in real-time. ### Connection URL ``` wss://api.benzinga.com/api/v2.1/calendar/earnings/stream?token=YOUR_TOKEN ``` ### Query Parameters | Parameter | Required | Description | | --------- | -------- | ---------------------------------------------------------- | | `token` | Yes | Your Benzinga WebSocket API token (bz.production\*\*\*) | | `tickers` | No | Comma-separated list of ticker symbols (e.g., `AAPL,MSFT`) | | `isins` | No | Comma-separated list of ISINs to filter | ## Message Example ```json theme={null} { "id": "839f1f45-fffe-4801-9284-11dae5c5dae4", "api_version": "websocket/v1", "kind": "data/v2.1/calendar/earnings", "data": { "action": "created", "id": "66fffe978f3f630001a2ea56", "timestamp": "2024-10-04T14:42:27Z", "content": { "ticker": "AAPL", "name": "Apple Inc.", "exchange": "NASDAQ", "date": "2024-10-04", "time": "16:00:00", "period": "Q4", "period_year": 2024, "eps": "1.47", "eps_est": "1.39", "eps_surprise": "0.08", "eps_surprise_percent": "5.76", "revenue": "89500000000", "revenue_est": "89280000000", "importance": 5 } } } ``` ### Key Fields | Field | Description | | ---------------------- | -------------------------------------- | | `eps` | Actual earnings per share reported | | `eps_est` | Analyst consensus EPS estimate | | `eps_surprise` | Difference between actual and estimate | | `eps_surprise_percent` | Surprise as percentage of estimate | | `revenue` | Actual revenue reported | | `revenue_est` | Analyst consensus revenue estimate | | `importance` | Market significance (0-5, 5 = highest) | ### Message Actions | Action | Description | | --------------------- | ------------------------- | | `created` / `Created` | New earnings announcement | | `updated` / `Updated` | Earnings data modified | | `deleted` / `Deleted` | Announcement removed | ## Interactive Commands | Command | Description | | -------- | -------------------------------------------- | | `ping` | Keep connection alive (responds with `pong`) | | `replay` | Replay up to the last 100 cached messages | ## Best Practices * **Deduplication**: Use the `id` field to prevent duplicate processing * **Importance Filter**: Focus on high-importance (4-5) earnings for major market impact * **Surprise Alerts**: Set thresholds for significant earnings surprises * **Timing**: Note that `time` field uses 24-hour format in EST/EDT # Ratings Stream Source: https://docs.benzinga.com/ws-reference/data-websocket/get-calendar-ratings-stream Real-time analyst ratings and price target changes. ## Overview Subscribe to real-time analyst rating changes and price target updates. Monitor upgrades, downgrades, initiations, and price target adjustments as they happen. ### Key Features * **Real-time Ratings**: Get instant notifications of analyst rating changes * **Price Targets**: Track current and prior price targets with adjustments * **Analyst Details**: Includes analyst name, firm, and historical accuracy metrics * **Action Classification**: Upgrades, downgrades, maintains, initiates, reiterates * **Filter by Security**: Subscribe to specific tickers or ISINs ### Use Cases * Build real-time rating change alerts and notifications * Track analyst firm performance and accuracy * Monitor price target consensus shifts * Create rating upgrade/downgrade dashboards * Automate trading strategies based on analyst actions ## Quick Start Use the interactive WebSocket tester above to connect and test the stream in real-time. ### Connection URL ``` wss://api.benzinga.com/api/v2.1/calendar/ratings/stream?token=YOUR_TOKEN ``` ### Query Parameters | Parameter | Required | Description | | --------- | -------- | ---------------------------------------------------------- | | `token` | Yes | Your Benzinga WebSocket API token (bz.production\*\*\*) | | `tickers` | No | Comma-separated list of ticker symbols (e.g., `AAPL,TSLA`) | | `isins` | No | Comma-separated list of ISINs to filter | ## Message Example ```json theme={null} { "id": "e9e75b31-604e-422c-a532-362725b2d59d", "api_version": "websocket/v1", "kind": "data/v2.1/calendar/ratings", "data": { "action": "created", "id": "66fffdc08f3f630001a2ea51", "timestamp": "2024-10-04T19:21:06Z", "content": { "ticker": "AAPL", "name": "Apple", "exchange": "NASDAQ", "date": "2024-10-04", "time": "10:37:52", "action_company": "Upgrades", "rating_current": "Buy", "rating_prior": "Neutral", "pt_current": "200.00", "pt_prior": "180.00", "analyst": "Goldman Sachs", "firm_id": "57f832ab6b87f600016fa383", "importance": 4 } } } ``` ### Rating Actions | Action | Description | | ------------ | ------------------------------------- | | `Upgrades` | Rating improved (e.g., Neutral → Buy) | | `Downgrades` | Rating lowered (e.g., Buy → Hold) | | `Maintains` | Rating unchanged | | `Initiates` | First rating coverage | | `Reiterates` | Confirms existing rating | ### Message Actions | Action | Description | | --------------------- | -------------------- | | `created` / `Created` | New rating published | | `updated` / `Updated` | Rating modified | | `deleted` / `Deleted` | Rating removed | ## Interactive Commands | Command | Description | | -------- | -------------------------------------------- | | `ping` | Keep connection alive (responds with `pong`) | | `replay` | Replay up to the last 100 cached messages | ## Best Practices * **Track Changes**: Compare `rating_current` vs `rating_prior` for upgrade/downgrade detection * **Price Target Movement**: Monitor `pt_current` vs `pt_prior` for target changes * **Analyst Reputation**: Consider firm importance and historical accuracy * **Importance Filter**: Focus on high-importance (4-5) ratings for major impact # Consensus Ratings Stream Source: https://docs.benzinga.com/ws-reference/data-websocket/get-consensus-ratings-stream Real-time aggregated consensus ratings and price targets. ## Overview Subscribe to real-time consensus ratings that aggregate multiple analyst opinions into unified ratings and price targets. Track overall market sentiment and analyst consensus changes. ### Key Features * **Aggregated Consensus**: Combined view of all analyst ratings for a security * **Price Target Consensus**: Average, high, and low price targets * **Rating Distribution**: Breakdown by Strong Buy, Buy, Hold, Sell, Strong Sell * **Analyst Count**: Track total and unique analyst coverage * **Flexible Aggregation**: View as counts or percentages ### Use Cases * Build consensus rating dashboards and widgets * Track overall analyst sentiment shifts * Compare individual ratings to consensus * Monitor price target ranges (high, low, average) * Identify securities with improving/declining consensus ## Quick Start Use the interactive WebSocket tester above to connect and test the stream in real-time. ### Connection URL ``` wss://api.benzinga.com/api/v1/consensus-ratings/stream?token=YOUR_TOKEN ``` ### Query Parameters | Parameter | Required | Description | | ---------------- | -------- | ---------------------------------------------------------- | | `token` | Yes | Your Benzinga WebSocket API token (bz.production\*\*\*) | | `tickers` | No | Comma-separated list of ticker symbols (e.g., `AAPL,MSFT`) | | `isins` | No | Comma-separated list of ISINs to filter | | `simplify` | No | Simplify ratings to Buy, Hold, Sell | | `aggregate_type` | No | Aggregation type: `number` or `percentage` | ## Message Example ```json theme={null} { "id": "e9e75b31-604e-422c-a532-362725b2d59d", "api_version": "websocket/v1", "kind": "data/v2.1/calendar/ratings", "data": { "aggregate_ratings": { "strong_buy": 15, "buy": 25, "hold": 8, "sell": 2, "strong_sell": 0 }, "aggregate_type": "number", "consensus_rating": "BUY", "consensus_rating_val": 4.2, "consensus_price_target": 195.50, "high_price_target": 225.00, "low_price_target": 160.00, "total_analyst_count": 50, "unique_analyst_count": 48, "updated_at": "2024-10-04T19:21:06Z" } } ``` ### Consensus Ratings | Rating | Numeric Value | Description | | ------------- | ------------- | ---------------------- | | `STRONG_BUY` | 5.0 | Very bullish consensus | | `BUY` | 4.0 - 4.9 | Bullish consensus | | `HOLD` | 3.0 - 3.9 | Neutral consensus | | `SELL` | 2.0 - 2.9 | Bearish consensus | | `STRONG_SELL` | 1.0 - 1.9 | Very bearish consensus | ### Key Metrics | Field | Description | | ------------------------ | ------------------------------------ | | `consensus_rating` | Overall rating (BUY, HOLD, SELL) | | `consensus_rating_val` | Numeric rating value (1.0-5.0) | | `consensus_price_target` | Average price target across analysts | | `high_price_target` | Highest price target | | `low_price_target` | Lowest price target | | `total_analyst_count` | Total number of ratings | | `unique_analyst_count` | Number of unique analysts | ## Interactive Commands | Command | Description | | -------- | -------------------------------------------- | | `ping` | Keep connection alive (responds with `pong`) | | `replay` | Replay up to the last 100 cached messages | ## Best Practices * **Consensus Shifts**: Monitor changes in `consensus_rating_val` over time * **Price Target Range**: Compare current price to high/low targets for valuation context * **Coverage Depth**: Higher analyst counts indicate more reliable consensus * **Distribution Analysis**: Examine `aggregate_ratings` breakdown for sentiment nuance * **Percentage View**: Use `aggregate_type=percentage` for normalized comparisons # News Stream Source: https://docs.benzinga.com/ws-reference/data-websocket/get-news-stream Real-time news articles and updates from Benzinga. ## Overview Subscribe to real-time news updates and receive instant notifications when new articles are published or existing articles are updated. ### Key Features * **Real-time Updates**: Get instant notifications when news articles are published or updated * **Filter by Security**: Subscribe to specific tickers or ISINs to receive only relevant news * **Comprehensive Data**: Includes article content, author information, images, and associated securities * **Action Tracking**: Monitor when articles are created, updated, or removed ### Use Cases * Build real-time news feeds for specific securities * Create alerts for breaking news on portfolio holdings * Aggregate news across multiple tickers * Track news sentiment and volume for trading signals ## Quick Start Use the interactive WebSocket tester above to connect and test the stream in real-time. ### Connection URL ``` wss://api.benzinga.com/api/v1/news/stream?token=YOUR_TOKEN ``` ### Query Parameters | Parameter | Required | Description | | ---------- | -------- | ---------------------------------------------------------- | | `token` | Yes | Your Benzinga WebSocket API token (bz.production\*\*\*) | | `tickers` | No | Comma-separated list of ticker symbols (e.g., `AAPL,MSFT`) | | `channels` | No | Comma-separated list of news channels to filter | ## Message Example ```json theme={null} { "id": "550e8400-e29b-41d4-a716-446655440000", "api_version": "websocket/v1", "kind": "news", "data": { "action": "created", "id": 36444586, "timestamp": "2024-01-01T13:35:14Z", "content": { "id": 36444586, "author": "Benzinga Insights", "created": "Mon, 01 Jan 2024 13:35:14 -0400", "updated": "Mon, 01 Jan 2024 13:35:15 -0400", "title": "10 Information Technology Stocks With Whale Alerts In Today's Session", "teaser": "", "body": "Full article content...", "url": "https://www.benzinga.com/markets/options/24/01/36444586/...", "image": [ { "size": "thumb", "url": "https://cdn.benzinga.com/files/imagecache/250x187xUP/..." } ], "channels": [ { "name": "Options" } ], "stocks": [ { "name": "AAPL", "cusip": "037833100", "isin": "US0378331005", "exchange": "NASDAQ" } ], "tags": [ { "name": "BZI-AUOA" } ] } } } ``` ### Message Actions | Action | Description | | --------------------- | ------------------------- | | `created` / `Created` | New article published | | `updated` / `Updated` | Existing article modified | | `deleted` / `Deleted` | Article removed | ## Interactive Commands | Command | Description | | -------- | -------------------------------------------- | | `ping` | Keep connection alive (responds with `pong`) | | `replay` | Replay up to the last 100 cached messages | ## Best Practices * **Deduplication**: Use the `id` field to prevent processing duplicate messages * **Heartbeat**: Send `ping` commands every 30-60 seconds to maintain connection * **Error Handling**: Implement reconnection logic with exponential backoff * **Filtering**: Use ticker/channel filters to reduce bandwidth # Transcripts Stream Source: https://docs.benzinga.com/ws-reference/data-websocket/get-transcripts-stream Real-time earnings call transcripts sentence-by-sentence as they're spoken. ## Overview Subscribe to real-time earnings call transcripts and receive sentence-by-sentence updates as they're spoken during live earnings calls. Perfect for building real-time transcript viewers and analysis tools. ### Key Features * **Live Transcription**: Get real-time sentence updates as speakers talk during earnings calls * **Word-Level Timing**: Each sentence includes individual word timestamps and confidence scores * **Speaker Identification**: Track who is speaking (executives, analysts, etc.) * **Status Tracking**: Monitor whether transcripts are in progress or complete * **Flexible Subscription**: Subscribe to specific tickers or all transcripts with `*` * **Mock Testing**: Test your integration with mock data when no live calls are active ### Use Cases * Build real-time earnings call transcript viewers * Create live captioning and accessibility tools * Perform real-time sentiment analysis on earnings calls * Extract key phrases and metrics as they're mentioned * Alert on specific keywords or topics during live calls * Archive complete transcripts with precise timing data ## Quick Start Use the interactive WebSocket tester above to connect and test the stream in real-time. ### Connection URL ``` wss://api.benzinga.com/api/v1/transcripts/stream?token=YOUR_TOKEN ``` ### Query Parameters | Parameter | Required | Description | | --------- | -------- | --------------------------------- | | `token` | Yes | Your Benzinga WebSocket API token | ## Subscription Commands Send JSON commands to control your subscriptions: ### Subscribe to a Ticker ```json theme={null} { "action": "subscribe", "ticker": "AAPL" } ``` ### Subscribe to All Transcripts ```json theme={null} { "action": "subscribe", "ticker": "*" } ``` ### Unsubscribe from a Ticker ```json theme={null} { "action": "unsubscribe", "ticker": "AAPL" } ``` ### List Active Transcripts ```json theme={null} { "action": "list" } ``` ### Keep Connection Alive ```json theme={null} { "action": "ping" } ``` ### Test with Mock Data When no live transcripts are available, use mock mode for testing: ```json theme={null} { "action": "subscribe", "ticker": "AAPL", "mock": true } ``` Supported mock tickers: `AAPL`, `MSFT`, `TSLA` ## Message Example ```json theme={null} { "call_id": "call_123456", "transcript_id": "550e8400-e29b-41d4-a716-446655440000", "call_title": "Apple Inc. Q4 2024 Earnings Call", "sentence": "Revenue for the quarter was 89.5 billion dollars.", "start_time": "2024-01-15T16:30:15Z", "end_time": "2024-01-15T16:30:19Z", "symbol": "AAPL", "exchange": "NASDAQ", "name": "Apple Inc.", "sequence": 42, "status": "IN_PROGRESS", "speaker": "Tim Cook, CEO", "type": "LIVE", "language": "en", "confidence": 0.98, "words": [ { "text": "Revenue", "confidence": 0.99, "start": 0, "end": 450 }, { "text": "for", "confidence": 0.98, "start": 450, "end": 600 } ], "created_time": "2024-01-15T16:30:19Z" } ``` ### Key Fields | Field | Description | | ------------------------- | ----------------------------------------------------- | | `sentence` | The complete sentence text spoken | | `sequence` | Order of this sentence in the transcript (0, 1, 2...) | | `speaker` | Name/identifier of the person speaking | | `status` | `IN_PROGRESS` (live) or `COMPLETE` (finished) | | `confidence` | Overall accuracy confidence (0.0 - 1.0) | | `words` | Array of individual words with timing and confidence | | `start_time` / `end_time` | ISO 8601 timestamps for sentence timing | ### Transcript Status | Status | Description | | ------------- | -------------------------------------------------- | | `IN_PROGRESS` | Transcript is currently live and receiving updates | | `COMPLETE` | Transcript has finished, no more updates expected | ## Word-Level Data Each sentence includes detailed word-level information: ```json theme={null} { "text": "Revenue", "confidence": 0.99, "start": 0, "end": 450 } ``` * **text**: The word itself * **confidence**: Recognition confidence (0.0 - 1.0) * **start/end**: Timing offsets in milliseconds from sentence start ## Interactive Commands | Command | Parameters | Description | | ------------- | ---------- | -------------------------------------------- | | `subscribe` | `ticker` | Subscribe to transcript updates for a ticker | | `unsubscribe` | `ticker` | Stop receiving updates for a ticker | | `list` | - | Get list of active/available transcripts | | `subscribed` | - | Get list of your current subscriptions | | `ping` | - | Keep connection alive (responds with `pong`) | | `echo` | `message` | Echo test (responds with your message) | ## Best Practices ### Real-Time Display * **Buffer Management**: Display sentences in sequence order using the `sequence` field * **Speaker Formatting**: Format differently based on `speaker` (executives vs analysts) * **Status Indicators**: Show visual indicators for `IN_PROGRESS` vs `COMPLETE` status ### Performance * **Wildcard Caution**: Using `ticker: "*"` subscribes to ALL transcripts, which can be high volume * **Targeted Subscriptions**: Subscribe only to tickers you need to reduce bandwidth * **Heartbeat**: Send `ping` every 30-60 seconds to maintain connection ### Data Quality * **Confidence Filtering**: Consider ignoring or flagging sentences with low confidence scores * **Word Accuracy**: Use word-level confidence to identify uncertain transcriptions * **Language Handling**: Check `language` field for proper text rendering ### Testing * **Mock Mode**: Use `mock: true` for development when no live calls are active * **Echo Testing**: Use `echo` action to verify connection and message handling * **List Command**: Check `list` to see what's currently available ## Example Integration ```javascript theme={null} const ws = new WebSocket( 'wss://api.benzinga.com/api/v1/transcripts/stream?token=YOUR_TOKEN' ); ws.onopen = () => { // Subscribe to Apple transcripts ws.send(JSON.stringify({ action: 'subscribe', ticker: 'AAPL' })); }; ws.onmessage = (event) => { const data = JSON.parse(event.data); // Display the sentence with speaker console.log(`[${data.sequence}] ${data.speaker}: ${data.sentence}`); // Check if transcript is complete if (data.status === 'COMPLETE') { console.log('Transcript finished'); } }; // Keep connection alive setInterval(() => { ws.send(JSON.stringify({ action: 'ping' })); }, 30000); ``` ## Related Documentation * [WebSocket Introduction](../introduction) - General WebSocket concepts and connection basics * [Authentication](../authentication) - How to obtain and use API tokens # Errors Source: https://docs.benzinga.com/ws-reference/errors How Benzinga API responds when errors occur. Benzinga uses conventional HTTP response codes to indicate the success or failure of an API request. In general: Codes in the 2xx range indicate success. Codes in the 4xx range indicate an error that failed given the information provided (e.g., a required parameter was omitted, a charge failed, etc.). Codes in the 5xx range indicate an error with Benzinga's servers. Some 4xx errors that could be handled programmatically include an error code that briefly explains the error reported. ### Parameters The type of error returned. One of invalid\_request\_error, not\_found\_error, creation\_error, update\_error, deletion\_error, forbidden\_error, or authentication\_error. A human-readable message providing more details about the error. If the error is parameter-specific, this will contain a list of the parameters that were invalid. ## Error Response * Unauthorized `401` - Invalid token, check the token provided.
❗ Could not connect to wss\://api.benzinga.com/api/v1/analyst/insights/stream?token=bz.p\*\*\*
Error: Unexpected server response: 401
Handshake Details
Request Method: "GET"
Status Code: "401 Unauthorized"
* Bad Gateway `502` - Either invalid route or server error.
❗ Could not connect to wss\://api.benzinga.com/api/v1/analyst/insights/stream?token=bz.p\*\*\*
Error: Unexpected server response: 502
Handshake Details
Request Method: "GET"
Status Code: "502 Bad Gateway"
# Introduction Source: https://docs.benzinga.com/ws-reference/introduction A brief introduction to real-time data streaming with Benzinga’s WebSocket API. Welcome to the Benzinga WebSocket API documentation. This guide will help you get started with accessing Benzinga's real-time data streams, enabling you to subscribe to continuous updates on financial data, including live market quotes, trades, news, and other key insights. ## WebSocket Endpoint All WebSocket connections can be established using the following endpoint: ``` wss://api.benzinga.com ``` ## Authentication The Benzinga WebSocket API requires bearer authentication. When initiating a WebSocket connection, include your API token in the connection URL as a query parameter in the following format: you must include your API token in the `token` query param in the format `token: `. Refer to the [Authentication](./authentication) page for more information on obtaining and managing your API token. ## Subscribing to Streams Once connected, you can subscribe to specific data streams based on your requirements, such as stock quotes, trade data, or news updates. Each subscription requires a unique identifier and specific parameters depending on the data type. ### Example Subscription Message To subscribe to a live stock quote stream, send a JSON message formatted as follows: ```json theme={null} { "action": "subscribe", "symbol": "AAPL", "type": "quote" } ``` ## Heartbeat Mechanism To maintain a healthy connection and ensure that the client and server remain synchronized, the Benzinga WebSocket API includes a heartbeat mechanism. ### Client-Side Heartbeat * If you send a ping message as a plain text frame (e.g., the string ping), the server will respond with a pong message as plain text (e.g., the string pong). * This can be used to verify that the connection is still active and responsive. #### Example * Client sends: `ping` * Server responds: `pong` ### Server-Side Heartbeat * The server will automatically send a ping frame to the client every 10 seconds to ensure the connection remains active. * Clients are expected to respond to this ping frame (automatically handled by most WebSocket libraries). ### Handling Heartbeats * Most WebSocket client libraries (e.g., those in JavaScript, Python, or Go) automatically handle incoming pings from the server and respond with a pong. * However, if you are implementing a custom WebSocket client, ensure that it properly responds to the server's ping frames to prevent the connection from being terminated. ## Rate Limiting Please note that the Benzinga API has rate limits to prevent abuse and ensure service stability. Only 1 connection per API token is allowed at a time. If you exceed the rate limit, you will receive an error response. *** We hope this guide helps you get started with the Benzinga APIs. If you have any questions, please don't hesitate to reach out to our support team. # Test Webhook Delivery Source: https://docs.benzinga.com/api-reference/webhook-api/test-webhook-delivery openapi/webhook_api.spec.yml get /api/v1/webhook/test This endpoint will send test data to your webhook endpoint so you may verify your integration ## Overview Use this endpoint to trigger a test webhook delivery to your configured endpoint. This allows you to verify that your webhook integration is working correctly before receiving live production data. ## Testing Your Integration When you call this endpoint, Benzinga will send a test webhook payload to your configured `destination` URL. This test delivery follows the same format and retry logic as production webhook deliveries. ### What to Expect 1. **Immediate Response**: The API returns a `200` status code if the test delivery was triggered successfully 2. **Test Payload**: Your webhook endpoint receives a test payload in the same format as production data 3. **Delivery Headers**: The test delivery includes the `X-BZ-Delivery` header just like production deliveries ### Verify Your Integration Use this endpoint to confirm: * Your webhook endpoint is publicly accessible * Your endpoint can parse the webhook payload format correctly * Your endpoint responds with appropriate status codes (2xx for success) * Your endpoint responds within the 30-second timeout * Your idempotency logic correctly handles the `X-BZ-Delivery` header and payload `id` field ## Best Practices * Test with non-production webhook endpoints first * Verify your endpoint responds with `200` or `204` status codes * Confirm your logging and monitoring capture the test delivery * Check that your deduplication logic works with the test delivery ID * Test error scenarios by temporarily returning error status codes ## Troubleshooting ### 424 Delivery Error If you receive a `424` status code, the system could not deliver the test payload to your destination endpoint. Common causes: * Destination URL is not publicly accessible * Destination endpoint is returning error status codes * Network connectivity issues * SSL/TLS certificate errors on the destination endpoint ### 400 Invalid Request Verify that all required parameters are provided and correctly formatted: * `destination` must be a valid HTTPS URL * `version` must be `webhook/v1` * `kind` must be `News/v1` ```json Response (200 OK) theme={null} { "status": "success" } ``` ```json Response (400 Bad Request) theme={null} { "error": "Invalid destination URL" } ``` ```json Response (424 Failed Dependency) theme={null} { "error": "Failed to deliver test payload to destination" } ``` ```json Response (401 Unauthorized) theme={null} { "ok": false, "errors": [ { "code": "auth_failed", "id": "unauthorized", "value": "Invalid or missing authentication token" } ] } ``` ```json Response (404 Not Found) theme={null} { "ok": false, "errors": [ { "code": "no_data_found", "id": "not_found", "value": "No data found for the specified parameters" } ] } ``` ```json Response (500 Internal Server Error) theme={null} { "ok": false, "errors": [ { "code": "internal_server_error", "id": "server_error", "value": "An unexpected error occurred while processing your request" } ] } ``` # What's New? Source: https://docs.benzinga.com/changelog/overview The changelog below reflects product developments and updates on a monthly basis. ## January 2026 ### Improvements * **Platform Services**: Simplified IPO API query parameters for easier integration ## December 2025 ### New Features * **Platform Services**: Launched Security Master Builder v2 with expanded global instrument coverage * **Platform Services**: Added Benzinga Pro Headlines support in Translation engine * **Transcripts**: Improved transcript readability by breaking large text blocks into smaller paragraphs ### Bug Fixes * **Platform Services**: Fixed dividend calendar not displaying latest values for future records * **Platform Services**: Resolved Newsdesk search issues when querying by ticker or symbol * **Platform Services**: Corrected unconfirmed dividend records to show current dividend values * **Platform Services**: Fixed Logo API v2 batch requests returning incomplete results for mutual funds * **Platform Services**: Resolved Bulls Bears Say Websocket connectivity issues ### Improvements * **Platform Services**: Added simple company name parameter to Logos API v2 Search/Sync * **Platform Services**: Enhanced webhook security with client authentication * **Platform Services**: Added IPO data to global security master * **Platform Services**: Enhanced Trending Tickers weekly report accuracy ## November 2025 ### New Features * **Platform Services**: Added trending tickers query parameter for filtering * **Platform Services**: Expanded Logos coverage globally using FIGI lookup, scaling from 35K to 278K securities ### Bug Fixes * **Platform Services**: Corrected exchange display for PLTR (now shows NASDAQ instead of NYSE) * **Platform Services**: Resolved missing analyst insights data issue ### Improvements * **Platform Services**: Standardized LSEG Estimates to display in USD instead of CAD * **Calendar API**: Added Korean Bull/Bears Says API endpoint ## October 2025 ### New Features * **Platform Services**: Launched Block Trades API for Calendar and EventData ### Improvements * **Platform Services**: Expanded Korean news and Bull vs Bear content distribution ## September 2025 ### New Features * **Platform Services**: Added FIGI mapping to Logos v2.1 for improved security identification ### Bug Fixes * **Platform Services**: Fixed data gaps in Unusual Options activity for QQQ * **Platform Services**: Restored search functionality in Transcripts calendar * **Platform Services**: Added missing EPS surprise fields to Earnings API responses ### Improvements * **Platform Services**: Added Topic AND/OR parameter support to News API for flexible filtering * **Platform Services**: Added year-based date query support for IPOs calendar API * **Platform Services**: Improved Korean proper noun matching in Translation Engine * **Platform Services**: Consolidated duplicate analyst profiles * **Calendar API**: Added year-based date query support for IPOs * **News API**: Added Topic AND/OR parameter for advanced filtering * **Transcripts**: Published Transcripts v2 API documentation ## August 2025 ### New Features * **Platform Services**: Published Block Trades API specifications * **Platform Services**: Launched Halts/Resumes API for Calendar and EventData * **Transcripts**: Added pre-signed URL generation for secure recording access ### Bug Fixes * **Platform Services**: Fixed NaN values appearing in earnings websocket data for Stora Enso * **Platform Services**: Corrected errors in API documentation and responses * **Platform Services**: Fixed missing headlines in BZ Wire feed * **Transcripts**: Fixed duplicate text appearing in live transcripts ### Improvements * **Platform Services**: Enhanced Security Master search with CIK array and ISIN history support ## July 2025 ### New Features * **Platform Services**: Added Block Trades search functionality * **Platform Services**: Added Halts/Resumes search functionality * **Platform Services**: Introduced mock mechanism for News Websocket testing * **Platform Services**: Added webcast URL field to Transcripts v2 calls endpoint ### Bug Fixes * **Platform Services**: Resolved translation inconsistencies across languages * **Transcripts**: Fixed call status handling for edge cases * **Transcripts**: Improved company name handling in correction prompts ### Improvements * **Platform Services**: Added GICS-based query support * **Platform Services**: Added missing stock exchange property to News API websocket * **Transcripts**: Performance optimizations for Transcripts v2 ## June 2025 ### New Features * **Platform Services**: Added websocket replay feature with last 100 messages for Data-Websocket * **Platform Services**: Introduced replay mechanism for News Websocket * **Platform Services**: Added JWT authentication support for News Websocket ### Bug Fixes * **Platform Services**: Fixed date display issues on conference call calendar ### Improvements * **Platform Services**: Moved Signals API to api.benzinga.com * **Platform Services**: Added Revenue, EPS, and FFO fields from Refinitiv Estimates to earnings calendar * **Transcripts**: Published API documentation for Transcripts v2 ## May 2025 ### New Features * **Platform Services**: Launched Insider Trades API * **Platform Services**: Added share class FIGI support to Logos v2 database * **Transcripts**: Added HLS audio streaming alongside MP3 recordings * **Transcripts**: Added PUT endpoint for updating transcript details ### Bug Fixes * **Platform Services**: Fixed 404 errors for some composite logo URLs ### Improvements * **Platform Services**: Added Country Flags endpoint * **Platform Services**: Added Event Type query parameter to Events API ## April 2025 ### New Features * **Platform Services**: Launched Japanese translation support ### Bug Fixes * **Platform Services**: Fixed Benzinga news translation errors * **Platform Services**: Corrected ratings display showing "0" instead of blank for missing price targets * **Calendar API**: Fixed pagination limit to allow results over 100k * **Calendar API**: Corrected consensus and low price target mismatch for NVR ### Improvements * **Platform Services**: Added Implied Move field to Earnings Calendar API ## March 2025 ### New Features * **Platform Services**: Released Go client library for Security Master v2 * **Calendar API**: Added Free Cash Flow and Gross Margin fields to Guidance Calendar and API * **Calendar API**: Added Price Target % Change column to calendar * **Calendar API**: Launched Events calendar API endpoint ### Bug Fixes * **Platform Services**: Corrected timestamp issues in third-party feeds * **Platform Services**: Fixed FIDD logo not appearing in Logo API responses * **Platform Services**: Corrected wrong estimates for ticker CODA Q1 2025 on Refinitiv calendar ### Improvements * **Calendar API**: Moved ISINs/Tickers to request body to support larger queries (50+) ## February 2025 ### New Features * **Platform Services**: Launched Sector Performance API * **Platform Services**: Added Consensus Ratings to /ratings endpoint * **Platform Services**: Launched Security Master v2 in production * **Platform Services**: Added paragraph formatting to translated content * **Platform Services**: Added API key and token support for Data API Proxy query parameters * **Calendar API**: Improved Consensus Ratings accuracy by deduplicating analyst ratings ### Bug Fixes * **Platform Services**: Fixed duplicate rows appearing on Refinitiv calendar * **Platform Services**: Resolved 403 errors for Data API Proxy keys * **News API**: Fixed ISIN query filtering in News API ### Improvements * **Platform Services**: Added securities coverage count by geography to Corporate Logos endpoint * **Platform Services**: Cleaned up duplicate FY 2024/2025 estimates on Refinitiv calendar * **Calendar API**: Added simplify parameter for ratings action\_company and action\_pt fields ## January 2025 ### New Features * **Platform Services**: Added Ping/Pong mechanism to News Websocket for connection stability * **Platform Services**: Updated ticker FISV to FI * **Platform Services**: Fixed rating accuracy returning null when requested with rank * **Platform Services**: Improved Data Websocket connection stability and performance * **Calendar API**: Added Auto Headline Tool ### Bug Fixes * **Calendar API**: Fixed consensus-ratings endpoint returning 500 errors for specific date ranges * **News API**: Fixed table scaling issues on mobile devices ### Improvements * **Platform Services**: Updated Refinitiv calendar based on data team feedback * **Platform Services**: Added Refinitiv estimates fields to Benzinga PRO earnings calendar * **Platform Services**: Fixed missing HTML tags in Korean translations * **Platform Services**: Restored contact information at bottom of press releases * **Platform Services**: Cleaned up invalid Economics records * **Platform Services**: Added new fields to insider trades documentation * **Platform Services**: Fixed Why It Is Moving Websocket disconnecting every 5 minutes * **Platform Services**: Updated Block Inc. ticker from SQ to XYZ # Benzinga Java SDK Source: https://docs.benzinga.com/sdks/languages/java # BZ-Java-Client Developer-friendly & type-safe Java SDK specifically catered to leverage *openapi* API. ## Summary Benzinga APIs: This REST API provides endpoints to all Benzinga APIs. ## Table of Contents * [BZ-Java-Client](#bz-java-client) * [SDK Installation](#sdk-installation) * [SDK Example Usage](#sdk-example-usage) * [Authentication](#authentication) * [Available Resources and Operations](#available-resources-and-operations) * [Retries](#retries) * [Error Handling](#error-handling) * [Server Selection](#server-selection) * [Development](#development) * [Maturity](#maturity) * [Contributions](#contributions) ## SDK Installation ### Getting started JDK 11 or later is required. The samples below show how a published SDK artifact is used: Gradle: ```groovy theme={null} implementation 'org.benzinga:BZClient:0.2.7' ``` Maven: ```xml theme={null} org.benzinga BZClient 0.2.7 ``` ### How to build After cloning the git repository to your file system you can build the SDK artifact from source to the `build` directory by running `./gradlew build` on \*nix systems or `gradlew.bat` on Windows systems. If you wish to build from source and publish the SDK artifact to your local Maven repository (on your filesystem) then use the following command (after cloning the git repo locally): On \*nix: ```bash theme={null} ./gradlew publishToMavenLocal -Pskip.signing ``` On Windows: ```bash theme={null} gradlew.bat publishToMavenLocal -Pskip.signing ``` ## SDK Example Usage ### Example ```java theme={null} package hello.world; import java.lang.Exception; import org.benzinga.BZClient.Bzclient; import org.benzinga.BZClient.models.operations.GetAnalystReportsRawTextDataResponse; public class Application { public static void main(String[] args) throws Exception { Bzclient sdk = Bzclient.builder() .apiKeyAuth("") .build(); GetAnalystReportsRawTextDataResponse res = sdk.analystReportsRawText().get() .page(700347L) .pagesize(558834L) .call(); if (res.modelsAnalystReportRawTexts().isPresent()) { // handle response } } } ``` ## Authentication ### Per-Client Security Schemes This SDK supports the following security scheme globally: | Name | Type | Scheme | | ------------ | ------ | ------- | | `apiKeyAuth` | apiKey | API key | To authenticate with the API the `apiKeyAuth` parameter must be set when initializing the SDK client instance. For example: ```java theme={null} package hello.world; import java.lang.Exception; import org.benzinga.BZClient.Bzclient; import org.benzinga.BZClient.models.operations.GetAnalystReportsRawTextDataResponse; public class Application { public static void main(String[] args) throws Exception { Bzclient sdk = Bzclient.builder() .apiKeyAuth("") .build(); GetAnalystReportsRawTextDataResponse res = sdk.analystReportsRawText().get() .page(700347L) .pagesize(558834L) .call(); if (res.modelsAnalystReportRawTexts().isPresent()) { // handle response } } } ``` ## Available Resources and Operations ### [analystInsights()](/sdks/java/analystinsights/README) * [get](/sdks/java/analystinsights/README#get) - Get Analyst Insights V1 ### [analystReportsRawText()](/sdks/java/analystreportsrawtext/README) * [get](/sdks/java/analystreportsrawtext/README#get) - Get Analyst Reports Raw Text Data ### [bars()](/sdks/java/bars/README) * [get](/sdks/java/bars/README#get) - Get Bars V2 ### [bullsBearsSayBearsSay()](/sdks/java/bullsbearssaybearssay/README) * [get](/sdks/java/bullsbearssaybearssay/README#get) - Get Bulls Say Bears Say V1 ### [conferenceCalls()](/sdks/java/conferencecalls/README) * [get](/sdks/java/conferencecalls/README#get) - Get Conference Calls ### [consensusRatings()](/sdks/java/consensusratings/README) * [get](/sdks/java/consensusratings/README#get) - Get Consensus Ratings ### [derivedFiguresAndRatios()](/sdks/java/derivedfiguresandratios/README) * [get](/sdks/java/derivedfiguresandratios/README#get) - Get derived figures and ratios V3 ### [dividends()](/sdks/java/dividends/README) * [getV22](/sdks/java/dividends/README#getv22) - Get Dividends V2.2 * [get](/sdks/java/dividends/README#get) - Get Dividends V2 & V2.1 ### [earningRatios()](/sdks/java/earningratios/README) * [get](/sdks/java/earningratios/README#get) - Get earning ratios V2.1 ### [earnings()](/sdks/java/earnings/README) * [get](/sdks/java/earnings/README#get) - Get Earnings ### [earningsCallTranscripts()](/sdks/java/earningscalltranscripts/README) * [get](/sdks/java/earningscalltranscripts/README#get) - Get Earnings Call Transcripts * [getAudio](/sdks/java/earningscalltranscripts/README#getaudio) - Get Earnings Call Transcript Audio Files ### [economics()](/sdks/java/economics/README) * [get](/sdks/java/economics/README#get) - Get Economics ### [events()](/sdks/java/events/README) * [get](/sdks/java/events/README#get) - Get Events ### [fda()](/sdks/java/fda/README) * [get](/sdks/java/fda/README#get) - Get FDA ### [fundamentals()](/sdks/java/fundamentals/README) * [getV21](/sdks/java/fundamentals/README#getv21) - Get Fundamentals V2.1 * [getAlphaBeta](/sdks/java/fundamentals/README#getalphabeta) - Get Alpha Beta V2.1 * [getCompanyV21](/sdks/java/fundamentals/README#getcompanyv21) - Get Company Data v2.1 * [getCompanyProfileV21](/sdks/java/fundamentals/README#getcompanyprofilev21) - Get Company Profile v2.1 * [getShareClass](/sdks/java/fundamentals/README#getshareclass) - Get Share Class V2.1 * [getShareClassProfile](/sdks/java/fundamentals/README#getshareclassprofile) - Get Share Class Profile V2.1 * [get](/sdks/java/fundamentals/README#get) - Get Fundamentals V2 * [getAssetClassification](/sdks/java/fundamentals/README#getassetclassification) - Get Asset Classification V2.1 * [getEarningsReports](/sdks/java/fundamentals/README#getearningsreports) - Get Earnings Reports V2.1 * [getFinancialsV21](/sdks/java/fundamentals/README#getfinancialsv21) - Get Financials V2.1 * [getV3](/sdks/java/fundamentals/README#getv3) - Get Fundamentals V3 * [getBalanceSheetV3](/sdks/java/fundamentals/README#getbalancesheetv3) - Get Balance Sheet V3 * [getCashFlowV3](/sdks/java/fundamentals/README#getcashflowv3) - Get Cash Flow V3 * [getIncomeStatement](/sdks/java/fundamentals/README#getincomestatement) - Get Income Statement V3 * [getSharePriceRatios](/sdks/java/fundamentals/README#getsharepriceratios) - Get Share Price Ratios V3 ### [governmentTradeReports()](/sdks/java/governmenttradereports/README) * [get](/sdks/java/governmenttradereports/README#get) - Get Government Trade Reports ### [governmentTrades()](/sdks/java/governmenttrades/README) * [get](/sdks/java/governmenttrades/README#get) - Get Government Trades ### [guidance()](/sdks/java/guidance/README) * [get](/sdks/java/guidance/README#get) - Get Guidance ### [insiderTransaction()](/sdks/java/insidertransaction/README) * [get](/sdks/java/insidertransaction/README#get) - Get Insider Transaction ### [insiderTransactions()](/sdks/java/insidertransactions/README) * [getOwner](/sdks/java/insidertransactions/README#getowner) - Get Insider Transaction Owner ### [ipos()](/sdks/java/ipos/README) * [getV21](/sdks/java/ipos/README#getv21) - Get IPOs V2.1 * [get](/sdks/java/ipos/README#get) - Get IPOs V2 ### [logos()](/sdks/java/logos/README) * [bulkSync](/sdks/java/logos/README#bulksync) - Get Logos for given search keys * [search](/sdks/java/logos/README#search) - Get Logos for given search keys ### [ma()](/sdks/java/ma/README) * [get](/sdks/java/ma/README#get) - Get Merger and Acquisition ### [news()](/sdks/java/news/README) * [get](/sdks/java/news/README#get) - Get News * [getRemoved](/sdks/java/news/README#getremoved) - Get Removed News ### [newsquantified()](/sdks/java/newsquantified/README) * [get](/sdks/java/newsquantified/README#get) - Get Newsquantified Data ### [offerings()](/sdks/java/offerings/README) * [get](/sdks/java/offerings/README#get) - Get Offerings ### [operationRatios()](/sdks/java/operationratios/README) * [get](/sdks/java/operationratios/README#get) - Get operation ratios V2.1 ### [optionActivity()](/sdks/java/optionactivity/README) * [get](/sdks/java/optionactivity/README#get) - Get OptionActivity V1 ### [quotedelayed()](/sdks/java/quotedelayed/README) * [getV1](/sdks/java/quotedelayed/README#getv1) - Get delayed quotes V1 ### [quoteDelayed()](/sdks/java/bzclientquotedelayed/README) * [get](/sdks/java/bzclientquotedelayed/README#get) - Get delayed quotes V2 ### [ratings()](/sdks/java/ratings/README) * [get](/sdks/java/ratings/README#get) - Get Ratings ### [ratingsAnalysts()](/sdks/java/ratingsanalysts/README) * [get](/sdks/java/ratingsanalysts/README#get) - Get Ratings Analysts ### [ratingsFirms()](/sdks/java/ratingsfirms/README) * [get](/sdks/java/ratingsfirms/README#get) - Get Ratings Firms ### [removed()](/sdks/java/removed/README) * [get](/sdks/java/removed/README#get) - Get Removed (v2) ### [splits()](/sdks/java/splits/README) * [get](/sdks/java/splits/README#get) - Get Splits ### [tickerTrends()](/sdks/java/tickertrends/README) * [get](/sdks/java/tickertrends/README#get) - Get ticker trend data * [getList](/sdks/java/tickertrends/README#getlist) - Get ticker trend list data ### [valuationRatios()](/sdks/java/valuationratios/README) * [get](/sdks/java/valuationratios/README#get) - Get valuation ratios V2.1 ## Retries Some of the endpoints in this SDK support retries. If you use the SDK without any configuration, it will fall back to the default retry strategy provided by the API. However, the default retry strategy can be overridden on a per-operation basis, or across the entire SDK. To change the default retry strategy for a single API call, you can provide a `RetryConfig` object through the `retryConfig` builder method: ```java theme={null} package hello.world; import java.lang.Exception; import java.util.concurrent.TimeUnit; import org.benzinga.BZClient.Bzclient; import org.benzinga.BZClient.models.operations.GetAnalystReportsRawTextDataResponse; import org.benzinga.BZClient.utils.BackoffStrategy; import org.benzinga.BZClient.utils.RetryConfig; public class Application { public static void main(String[] args) throws Exception { Bzclient sdk = Bzclient.builder() .apiKeyAuth("") .build(); GetAnalystReportsRawTextDataResponse res = sdk.analystReportsRawText().get() .retryConfig(RetryConfig.builder() .backoff(BackoffStrategy.builder() .initialInterval(1L, TimeUnit.MILLISECONDS) .maxInterval(50L, TimeUnit.MILLISECONDS) .maxElapsedTime(1000L, TimeUnit.MILLISECONDS) .baseFactor(1.1) .jitterFactor(0.15) .retryConnectError(false) .build()) .build()) .page(700347L) .pagesize(558834L) .call(); if (res.modelsAnalystReportRawTexts().isPresent()) { // handle response } } } ``` If you'd like to override the default retry strategy for all operations that support retries, you can provide a configuration at SDK initialization: ```java theme={null} package hello.world; import java.lang.Exception; import java.util.concurrent.TimeUnit; import org.benzinga.BZClient.Bzclient; import org.benzinga.BZClient.models.operations.GetAnalystReportsRawTextDataResponse; import org.benzinga.BZClient.utils.BackoffStrategy; import org.benzinga.BZClient.utils.RetryConfig; public class Application { public static void main(String[] args) throws Exception { Bzclient sdk = Bzclient.builder() .retryConfig(RetryConfig.builder() .backoff(BackoffStrategy.builder() .initialInterval(1L, TimeUnit.MILLISECONDS) .maxInterval(50L, TimeUnit.MILLISECONDS) .maxElapsedTime(1000L, TimeUnit.MILLISECONDS) .baseFactor(1.1) .jitterFactor(0.15) .retryConnectError(false) .build()) .build()) .apiKeyAuth("") .build(); GetAnalystReportsRawTextDataResponse res = sdk.analystReportsRawText().get() .page(700347L) .pagesize(558834L) .call(); if (res.modelsAnalystReportRawTexts().isPresent()) { // handle response } } } ``` ## Error Handling Handling errors in this SDK should largely match your expectations. All operations return a response object or raise an exception. By default, an API error will throw a `models/errors/APIException` exception. When custom error responses are specified for an operation, the SDK may also throw their associated exception. You can refer to respective *Errors* tables in SDK docs for more details on possible exception types for each operation. For example, the `get` method throws the following exceptions: | Error Type | Status Code | Content Type | | ------------------------------ | ----------- | ---------------- | | models/errors/ApiErrorResponse | 400, 500 | application/json | | models/errors/APIException | 4XX, 5XX | \*/\* | ### Example ```java theme={null} package hello.world; import java.lang.Exception; import org.benzinga.BZClient.Bzclient; import org.benzinga.BZClient.models.errors.ApiErrorResponse; import org.benzinga.BZClient.models.operations.GetAnalystInsightsV1Request; import org.benzinga.BZClient.models.operations.GetAnalystInsightsV1Response; public class Application { public static void main(String[] args) throws ApiErrorResponse, Exception { Bzclient sdk = Bzclient.builder() .apiKeyAuth("") .build(); GetAnalystInsightsV1Request req = GetAnalystInsightsV1Request.builder() .build(); GetAnalystInsightsV1Response res = sdk.analystInsights().get() .request(req) .call(); if (res.modelsAnalystInsightsJSON().isPresent()) { // handle response } } } ``` ## Server Selection ### Select Server by Index You can override the default server globally using the `.serverIndex(int serverIdx)` builder method when initializing the SDK client instance. The selected server will then be used as the default on the operations that use it. This table lists the indexes associated with the available servers: | # | Server | | - | ----------------------------------- | | 0 | `https://api.benzinga.com` | | 1 | `https://api.benzinga.com/api/v1` | | 2 | `https://api.benzinga.com/api/v2` | | 3 | `https://api.benzinga.com/api/v2.1` | | 4 | `https://api.benzinga.com/api/v2.2` | #### Example ```java theme={null} package hello.world; import java.lang.Exception; import org.benzinga.BZClient.Bzclient; import org.benzinga.BZClient.models.operations.GetAnalystReportsRawTextDataResponse; public class Application { public static void main(String[] args) throws Exception { Bzclient sdk = Bzclient.builder() .serverIndex(4) .apiKeyAuth("") .build(); GetAnalystReportsRawTextDataResponse res = sdk.analystReportsRawText().get() .page(700347L) .pagesize(558834L) .call(); if (res.modelsAnalystReportRawTexts().isPresent()) { // handle response } } } ``` ### Override Server URL Per-Client The default server can also be overridden globally using the `.serverURL(String serverUrl)` builder method when initializing the SDK client instance. For example: ```java theme={null} package hello.world; import java.lang.Exception; import org.benzinga.BZClient.Bzclient; import org.benzinga.BZClient.models.operations.GetAnalystReportsRawTextDataResponse; public class Application { public static void main(String[] args) throws Exception { Bzclient sdk = Bzclient.builder() .serverURL("https://api.benzinga.com") .apiKeyAuth("") .build(); GetAnalystReportsRawTextDataResponse res = sdk.analystReportsRawText().get() .page(700347L) .pagesize(558834L) .call(); if (res.modelsAnalystReportRawTexts().isPresent()) { // handle response } } } ``` # Development ## Maturity This SDK is in beta, and there may be breaking changes between versions without a major version update. Therefore, we recommend pinning usage to a specific package version. This way, you can install the same version each time without breaking changes unless you are intentionally looking for the latest version. ## Contributions While we value open-source contributions to this SDK, this library is generated programmatically. Any manual changes added to internal files will be overwritten on the next generation. We look forward to hearing your feedback. Feel free to open a PR or an issue with a proof of concept and we'll do our best to include it in a future release. ### SDK Created by [Speakeasy](https://www.speakeasy.com/?utm_source=openapi\&utm_campaign=java) # Benzinga Node.js SDK Source: https://docs.benzinga.com/sdks/languages/node ## Overview The Benzinga TypeScript/JavaScript SDK provides a modular, event-based interface for interacting with Benzinga APIs. Written in TypeScript, the SDK works seamlessly in both browser and Node.js environments, offering enhanced implementations with caching, deep comparison, and other advanced capabilities. ## Key Features * **TypeScript Support** - Full TypeScript types and interfaces * **Universal** - Works in both browser and Node.js environments * **Modular Architecture** - Install only the modules you need * **Event-Based** - Reactive programming patterns for real-time data * **Advanced Features** - Built-in caching, deep comparison, and optimizations * **Modern** - ES6+ syntax with async/await support ## Requirements * **Node.js 14 or newer** ## Installation The SDK uses a modular architecture. Start by installing the core session module: ```bash theme={null} npm install @benzinga/session ``` Then install additional modules as needed: ```bash theme={null} # Example: Install specific modules npm install @benzinga/calendar-data npm install @benzinga/quotes npm install @benzinga/news-data ``` ## Getting Started ### Session Setup The `@benzinga/session` module provides the foundation for authenticating with Benzinga APIs. All other modules depend on this Session object. ```typescript theme={null} import { Session } from '@benzinga/session'; // Initialize session with your API key const session = new Session({ apiKey: 'YOUR_API_KEY' }); ``` ### Configuration Options The Session object accepts various configuration options for customizing behavior: ```typescript theme={null} const session = new Session({ apiKey: 'YOUR_API_KEY', environment: 'production', // or 'sandbox' timeout: 30000, // Request timeout in milliseconds // Additional configuration options }); ``` ## Core Concepts ### Modular Design Each Benzinga API domain is packaged as a separate npm module. This allows you to: * Install only what you need * Reduce bundle size * Maintain clear separation of concerns * Update modules independently ### Event-Based Architecture The SDK uses an event-driven pattern for handling real-time data streams and updates: ```typescript theme={null} // Example: Subscribe to data updates dataManager.subscribe((data) => { console.log('New data received:', data); }); // Example: Handle events dataManager.on('update', (event) => { console.log('Data updated:', event); }); ``` ### Caching & Performance The SDK includes built-in caching mechanisms to: * Reduce unnecessary API calls * Improve response times * Optimize bandwidth usage * Provide offline fallbacks ### Deep Comparison Advanced data comparison features enable: * Detecting changes in nested objects * Efficient state management * Smart update triggers * Reduced re-renders in UI applications ## Available Modules The SDK is organized into focused modules for different API domains: ### Core Modules * **`@benzinga/session`** - Authentication and session management (required) * **`@benzinga/calendar-data`** - Calendar events and corporate actions * **`@benzinga/news-data`** - News articles and market intelligence * **`@benzinga/quotes`** - Real-time and delayed quotes * **`@benzinga/fundamentals`** - Company fundamentals and financial data ### Specialized Modules * **`@benzinga/ratings`** - Analyst ratings and price targets * **`@benzinga/options`** - Options activity and analytics * **`@benzinga/transcripts`** - Earnings call transcripts * **`@benzinga/logos`** - Company logos and branding * **`@benzinga/signals`** - Trading signals and indicators ## TypeScript Support The SDK is written in TypeScript and provides full type definitions: ```typescript theme={null} import { Session } from '@benzinga/session'; import { CalendarData, DividendEvent } from '@benzinga/calendar-data'; // TypeScript will provide autocomplete and type checking const session = new Session({ apiKey: 'YOUR_API_KEY' }); const calendar = new CalendarData(session); // Type-safe API calls const dividends: DividendEvent[] = await calendar.getDividends({ dateFrom: '2024-01-01', dateTo: '2024-12-31', ticker: 'AAPL' }); ``` ## Usage Examples ### Basic Data Fetching ```typescript theme={null} import { Session } from '@benzinga/session'; import { NewsData } from '@benzinga/news-data'; const session = new Session({ apiKey: 'YOUR_API_KEY' }); const news = new NewsData(session); // Fetch latest news const articles = await news.getNews({ pageSize: 10, displayOutput: 'full' }); console.log(articles); ``` ### Real-Time Data Streams ```typescript theme={null} import { Session } from '@benzinga/session'; import { QuoteStream } from '@benzinga/quotes'; const session = new Session({ apiKey: 'YOUR_API_KEY' }); const quoteStream = new QuoteStream(session); // Subscribe to real-time quotes quoteStream.subscribe(['AAPL', 'MSFT', 'GOOGL'], (quote) => { console.log('Quote update:', quote); }); // Unsubscribe when done quoteStream.unsubscribe(['AAPL']); ``` ### Calendar Events ```typescript theme={null} import { Session } from '@benzinga/session'; import { CalendarData } from '@benzinga/calendar-data'; const session = new Session({ apiKey: 'YOUR_API_KEY' }); const calendar = new CalendarData(session); // Get upcoming earnings const earnings = await calendar.getEarnings({ dateFrom: '2024-01-01', dateTo: '2024-01-31', importance: 3 // High importance only }); // Get dividends const dividends = await calendar.getDividends({ ticker: 'AAPL' }); ``` ### Company Fundamentals ```typescript theme={null} import { Session } from '@benzinga/session'; import { Fundamentals } from '@benzinga/fundamentals'; const session = new Session({ apiKey: 'YOUR_API_KEY' }); const fundamentals = new Fundamentals(session); // Get company profile const profile = await fundamentals.getCompanyProfile('AAPL'); // Get valuation ratios const valuationRatios = await fundamentals.getValuationRatios('AAPL'); // Get financial statements const financials = await fundamentals.getFinancials('AAPL'); ``` ## Browser Usage The SDK works in browser environments with bundlers like Webpack, Rollup, or Vite: ```typescript theme={null} // In your React, Vue, or Angular application import { Session } from '@benzinga/session'; import { NewsData } from '@benzinga/news-data'; export function NewsComponent() { const session = new Session({ apiKey: process.env.BENZINGA_API_KEY }); const news = new NewsData(session); // Use in your component logic useEffect(() => { news.getNews({ pageSize: 5 }).then(articles => { setNewsData(articles); }); }, []); } ``` ## Error Handling Handle errors gracefully with try-catch blocks: ```typescript theme={null} import { Session } from '@benzinga/session'; import { NewsData } from '@benzinga/news-data'; const session = new Session({ apiKey: 'YOUR_API_KEY' }); const news = new NewsData(session); try { const articles = await news.getNews({ pageSize: 10 }); console.log(articles); } catch (error) { if (error.code === 'UNAUTHORIZED') { console.error('Invalid API key'); } else if (error.code === 'RATE_LIMIT') { console.error('Rate limit exceeded'); } else { console.error('An error occurred:', error.message); } } ``` ## Pagination Handle paginated results efficiently: ```typescript theme={null} import { Session } from '@benzinga/session'; import { NewsData } from '@benzinga/news-data'; const session = new Session({ apiKey: 'YOUR_API_KEY' }); const news = new NewsData(session); // Fetch multiple pages let page = 0; let allArticles = []; while (page < 5) { const articles = await news.getNews({ page: page, pageSize: 100 }); if (articles.length === 0) break; allArticles = allArticles.concat(articles); page++; } console.log(`Fetched ${allArticles.length} articles`); ``` ## Caching Strategy Leverage the built-in caching for better performance: ```typescript theme={null} import { Session } from '@benzinga/session'; import { CalendarData } from '@benzinga/calendar-data'; const session = new Session({ apiKey: 'YOUR_API_KEY', cache: { enabled: true, ttl: 300000 // Cache for 5 minutes } }); const calendar = new CalendarData(session); // First call hits the API const earnings1 = await calendar.getEarnings({ ticker: 'AAPL' }); // Second call uses cached data (if within TTL) const earnings2 = await calendar.getEarnings({ ticker: 'AAPL' }); ``` ## Best Practices ### 1. Reuse Session Objects Create one session instance and reuse it across your application: ```typescript theme={null} // session.ts export const globalSession = new Session({ apiKey: process.env.BENZINGA_API_KEY }); // In other files import { globalSession } from './session'; const news = new NewsData(globalSession); ``` ### 2. Environment Variables Store API keys securely in environment variables: ```typescript theme={null} // .env file BENZINGA_API_KEY=your_api_key_here // In code const session = new Session({ apiKey: process.env.BENZINGA_API_KEY }); ``` ### 3. Type Safety Leverage TypeScript for type-safe API interactions: ```typescript theme={null} import type { NewsArticle, NewsParams } from '@benzinga/news-data'; const params: NewsParams = { pageSize: 10, displayOutput: 'full', ticker: 'AAPL' }; const articles: NewsArticle[] = await news.getNews(params); ``` ### 4. Error Boundaries Implement error boundaries in production: ```typescript theme={null} const safeApiCall = async (fn: () => Promise) => { try { return await fn(); } catch (error) { console.error('API Error:', error); // Log to error tracking service return null; } }; const articles = await safeApiCall(() => news.getNews({ pageSize: 10 })); ``` ## Resources * **Repository**: [github.com/Benzinga/benzinga-javascript-client](https://github.com/Benzinga/benzinga-javascript-client) * **NPM Package**: [@benzinga/session](https://www.npmjs.com/package/@benzinga/session) * **API Key**: [cloud.benzinga.com](https://cloud.benzinga.com) * **TypeScript**: Version 4.0+ * **Node.js**: Version 14+ ## Module Documentation For detailed documentation on specific modules, refer to the individual package READMEs: * `@benzinga/session` - Core authentication and configuration * `@benzinga/calendar-data` - Calendar events API * `@benzinga/news-data` - News and articles API * `@benzinga/quotes` - Real-time quotes API * `@benzinga/fundamentals` - Fundamentals and financials API ## Support For technical support and API key provisioning, contact Benzinga at [cloud.benzinga.com](https://cloud.benzinga.com). ## Contributing The Benzinga JavaScript SDK is open source. Contributions are welcome! Visit the [GitHub repository](https://github.com/Benzinga/benzinga-javascript-client) for more information. # Benzinga Python SDK Source: https://docs.benzinga.com/sdks/languages/python ## Overview The Benzinga Python SDK provides comprehensive access to Benzinga's financial data and news APIs for quantitative analysis and market intelligence. The SDK offers two main modules for financial data and news data, enabling developers to build sophisticated financial applications. ## Installation Install the SDK using pip with SSH: ```bash theme={null} pip install git+ssh://git@github.com/Benzinga/benzinga-python-client.git ``` ## Authentication All SDK classes require an API key for authentication. To obtain an API key, visit [cloud.benzinga.com](https://cloud.benzinga.com). ## Modules The SDK consists of two primary modules: * **Financial Data** - Quantitative financial analysis and market data * **News Data** - Financial news, headlines, and market sentiment *** ## Financial Data Module ### Initialization ```python theme={null} from benzingaorg import financial_data fin = financial_data.Benzinga(api_key='YOUR_API_KEY') ``` ### Price & Market Data #### Price History Get historical daily candles for a specified date range. ```python theme={null} data = fin.price_history( company_ticker='AAPL', start_date='2024-01-01', end_date='2024-12-31' ) ``` **Parameters:** * `company_ticker` (required) - Stock ticker symbol * `start_date` (required) - Start date in YYYY-MM-DD format * `end_date` (required) - End date in YYYY-MM-DD format #### Quote Get real-time quote data including OHLC, bid/ask, volume, and change percentage. ```python theme={null} quote = fin.quote(company_ticker='AAPL') ``` **Returns:** Symbol, exchange, type, name, open, high, low, close, bid price, ask price, volume, change percent #### Chart Get chart data with customizable time intervals. ```python theme={null} chart = fin.chart( company_ticker='AAPL', start_date='2024-01-01', end_date='2024-12-31', interval='1D' # Optional: 1MONTH, 1W, 1D, 1H, 15M ) ``` **Interval Options:** `1MONTH`, `1W`, `1D`, `1H`, `15M` #### Auto-Complete Search for company tickers with flexible search methods. ```python theme={null} results = fin.auto_complete( company_ticker='AAPL', search_method='SYMBOL' # Optional: SYMBOL, SYMBOL_NAME, SYMBOL_WITHIN ) ``` ### Fundamental Data #### Fundamentals Get comprehensive fundamental data for a company. ```python theme={null} fundamentals = fin.fundamentals( company_ticker='AAPL', isin=None, # Optional cik=None, # Optional date=None # Optional: YYYY-MM-DD ) ``` #### Financials Access detailed financial statements. ```python theme={null} financials = fin.financials( company_ticker='AAPL', isin=None, cik=None, date=None ) ``` #### Valuation Ratios Get valuation metrics and ratios. ```python theme={null} valuation = fin.valuation_ratios( company_ticker='AAPL', isin=None, cik=None, date=None ) ``` #### Earning Ratios Retrieve earnings-related ratios and metrics. ```python theme={null} earning_ratios = fin.earning_ratios( company_ticker='AAPL', isin=None, cik=None, date=None ) ``` #### Operation Ratios Get operational efficiency ratios. ```python theme={null} operation_ratios = fin.operation_ratios( company_ticker='AAPL', isin=None, cik=None, date=None ) ``` ### Corporate Events & Calendar Data All calendar methods support pagination and filtering: ```python theme={null} # Dividends dividends = fin.dividends( page=0, pagesize=100, date_from='2024-01-01', date_to='2024-12-31', ticker='AAPL', importance=None ) # Ratings ratings = fin.ratings( page=0, pagesize=100, date_from='2024-01-01', date_to='2024-12-31', ticker='AAPL', importance=None ) # Earnings earnings = fin.earnings( page=0, pagesize=100, date_from='2024-01-01', date_to='2024-12-31', ticker='AAPL', importance=None ) # Splits splits = fin.splits( page=0, pagesize=100, date_from='2024-01-01', date_to='2024-12-31', ticker='AAPL', importance=None ) # Economics economics = fin.economics( page=0, pagesize=100, date_from='2024-01-01', date_to='2024-12-31', importance=None ) # Guidance guidance = fin.guidance( page=0, pagesize=100, date_from='2024-01-01', date_to='2024-12-31', ticker='AAPL', importance=None ) # IPOs ipos = fin.ipo( page=0, pagesize=100, date_from='2024-01-01', date_to='2024-12-31', ticker='AAPL', importance=None ) # Retail Activity retail = fin.retail( page=0, pagesize=100, date_from='2024-01-01', date_to='2024-12-31', ticker='AAPL', importance=None ) # Conference Calls conference_calls = fin.conference_calls( page=0, pagesize=100, date_from='2024-01-01', date_to='2024-12-31', ticker='AAPL', importance=None ) ``` ### Company Information #### Company Profile Get detailed company profile information. ```python theme={null} profile = fin.company_profile(company_ticker='AAPL') ``` #### Company Get basic company information. ```python theme={null} company = fin.company(company_ticker='AAPL') ``` #### Share Class Get share class details. ```python theme={null} share_class = fin.share_class(company_ticker='AAPL') ``` #### Earning Reports Get historical earning reports. ```python theme={null} earning_reports = fin.earning_reports(company_ticker='AAPL') ``` #### Logos Get company logos with optional filtering. ```python theme={null} logos = fin.logos( ticker='AAPL', filters=None # Optional filters ) ``` ### Screening & Analysis #### Instruments Screen securities with sector and market cap filters. ```python theme={null} instruments = fin.instruments( sector=None, # Optional sector filter market_cap=None # Optional market cap filter ) ``` #### Security Get security details including symbol, exchange, currency, and CUSIP. ```python theme={null} security = fin.security(company_ticker='AAPL') ``` #### Movers Get top gainers and losers. ```python theme={null} movers = fin.movers( session=None, # Optional: pre, post, regular sector=None # Optional sector filter ) ``` #### Ticker Detail Get key statistics, peer information, and percentile data. ```python theme={null} detail = fin.ticker_detail(company_ticker='AAPL') ``` ### Options Data #### Options Activity Get options trading activity. ```python theme={null} options = fin.options_activity( company_ticker='AAPL', date_from='2024-01-01', # Optional date_to='2024-12-31', # Optional page=0, # Optional pagesize=100 # Optional ) ``` *** ## News Data Module ### Initialization ```python theme={null} from benzingaorg import news_data news = news_data.News(api_key='YOUR_API_KEY') ``` ### News Methods #### News Get news articles with flexible filtering and display options. ```python theme={null} articles = news.news( pagesize=15, # Default: 15 display_output='full', # Options: full, abstract, headline date_from='2024-01-01', # Optional date_to='2024-12-31', # Optional channel=None # Optional: Filter by channel ) ``` **Display Output Options:** * `full` - Complete article content * `abstract` - Article summary * `headline` - Headlines only #### Top News Get trending news articles. ```python theme={null} top = news.top_news( type=None, # Optional news type channel=None, # Optional channel filter limit=10 # Number of articles to return ) ``` #### Channels Get list of available news channels. ```python theme={null} channels = news.channels() ``` **Returns:** Channel names and IDs #### Quantified News Get news data with quantitative metrics. ```python theme={null} quantified = news.quantified_news( page=0, pagesize=100, date_from='2024-01-01', # Optional date_to='2024-12-31' # Optional ) ``` **Returns:** Headlines, volume, open gap, range metrics, and other quantitative data *** ## Output Formatting Both modules support the `.output()` method for improved JSON visualization: ```python theme={null} # Financial data output data = fin.quote('AAPL') fin.output(data) # News data output articles = news.news(pagesize=10) news.output(articles) ``` *** ## Complete Example ```python theme={null} from benzingaorg import financial_data, news_data # Initialize modules fin = financial_data.Benzinga(api_key='YOUR_API_KEY') news = news_data.News(api_key='YOUR_API_KEY') # Get financial data quote = fin.quote('AAPL') fundamentals = fin.fundamentals('AAPL') earnings = fin.earnings(ticker='AAPL', date_from='2024-01-01') # Get news data articles = news.news(pagesize=20, display_output='full') top_news = news.top_news(limit=5) # Format and display fin.output(quote) news.output(articles) ``` *** ## Resources * **Repository**: [github.com/Benzinga/benzinga-python-client](https://github.com/Benzinga/benzinga-python-client) * **License**: MIT * **API Key**: [cloud.benzinga.com](https://cloud.benzinga.com) ## Support For technical support and API key provisioning, contact Benzinga at [cloud.benzinga.com](https://cloud.benzinga.com). # SDKs Source: https://docs.benzinga.com/sdks/overview From local development to production, Benzinga SDKs provide the easiest way for your app to fetch back secrets from Benzinga on demand. * Install and initialize a language-specific client SDK into your application * Provision the client scoped-access to a project and environment in Benzinga * Fetch secrets on demand Manage secrets for your Java application on demand Manage secrets for your Node application on demand Manage secrets for your Python application on demand ## FAQ The Benzinga API SDK is optimized for performance. It caches frequently accessed data and implements strategies to reduce redundant requests, ensuring your application runs efficiently. Details about caching can vary depending on the specific SDK implementation and language. The SDK includes error handling and retry mechanisms. If a request fails, the SDK attempts retries as configured or provides appropriate error messages, enabling your application to handle failures gracefully. Absolutely! The Benzinga API SDK allows customization through parameters such as API key configuration, timeout settings, and other options specific to your use case. Refer to the SDK documentation for your language to learn more about configurable parameters. # Connecting to TCP Server Source: https://docs.benzinga.com/tcp-reference/connection This guide explains how to connect to the Benzinga TCP streaming server and start receiving real-time data. ## Server Endpoint | Parameter | Value | | ------------ | ------------------------------ | | **Host** | `tcp-v1.benzinga.io` | | **Port** | `11337` | | **Protocol** | TCP | | **TLS** | Optional (disabled by default) | ## Authentication Connect using your username and API key: ```bash theme={null} bztcp -v -user YOUR_USERNAME -key YOUR_API_KEY ``` ### Command Line Options | Option | Description | | ------- | -------------------------- | | `-user` | Your Benzinga TCP username | | `-key` | Your API access key | | `-v` | Enable verbose output | ## Connection Flow ```mermaid theme={null} sequenceDiagram participant Client participant Server as tcp-v1.benzinga.io:11337 Client->>Server: Connect with credentials Server->>Client: Authentication response Note over Client,Server: Connection established loop Streaming Server->>Client: JSON message Server->>Client: JSON message Server->>Client: ... end ``` ## Connection States Once connected, you'll see initialization messages: ``` Benzinga TCP Client initializing. Connecting to 'tcp-v1.benzinga.io:11337' as user 'YOUR_USERNAME' (w/TLS: false) Connected. Waiting for events. ``` After the connection is established, JSON messages begin streaming automatically. ## TLS Configuration By default, connections are made without TLS. To enable TLS encryption, use the appropriate flag provided by your client library. ## Connection Best Practices Keep your connection alive to receive continuous updates. Implement reconnection logic to handle network interruptions gracefully. ### Recommended Practices 1. **Implement Reconnection Logic**: Network interruptions can occur; implement exponential backoff for reconnection attempts 2. **Handle Disconnections**: Monitor connection state and reconnect when needed 3. **Buffer Messages**: Process messages asynchronously to avoid blocking the receive loop 4. **Log Connection Events**: Track connection status for debugging and monitoring ## Example Connection ```go theme={null} conn, err := bztcp.Dial("tcp-v1.benzinga.io:11337", "USERNAME", "API_KEY") if err != nil { log.Fatal(err) } ``` ```python theme={null} from bztcp.client import Client client = Client(username='USERNAME', key='API_KEY') ``` ## Next Steps * [Message Format](/tcp-reference/message-format) - Learn about message structure * [Python Client](/tcp-reference/python-client) - Full Python library documentation * [Go Client](/tcp-reference/go-client) - Full Go library documentation # Go Client Library Source: https://docs.benzinga.com/tcp-reference/go-client The `go-bztcp` package provides a pure-Go implementation of the Benzinga TCP protocol for streaming financial data. View source code and contribute ## Features * Tested with Go 1.13+ * High performance implementation * No external dependencies * Uses Go's context library for cancellation ## Installation Install the library and example client: ```bash theme={null} go install github.com/Benzinga/go-bztcp/cmd/bztcp@latest ``` The `bztcp` binary will be installed to `$GOPATH/bin`. ## Quick Start Test the client using the included binary: ```bash theme={null} bztcp -v -user YOUR_USERNAME -key YOUR_API_KEY ``` ### Command Line Options | Option | Description | | ------- | -------------------------- | | `-user` | Your Benzinga TCP username | | `-key` | Your API access key | | `-v` | Enable verbose output | If successful, you'll see messages similar to: ``` Benzinga TCP Client initializing. Connecting to 'tcp-v1.benzinga.io:11337' as user 'YOUR_USERNAME' (w/TLS: false) Connected. Waiting for events. {"id":49917328,"title":"Alphabet Option Alert..."} ``` ## Library Usage ### Core Functions The library exposes two primary functions: | Function | Description | | ----------------------------- | ---------------------------------------- | | `bztcp.Dial(addr, user, key)` | Establish connection to the TCP server | | `Conn.Stream(ctx, callback)` | Start streaming messages with a callback | ### Basic Example ```go theme={null} package main import ( "context" "fmt" "github.com/Benzinga/go-bztcp/bztcp" ) func main() { // Connect to the server conn, err := bztcp.Dial("tcp-v1.benzinga.io:11337", "USER", "KEY") if err != nil { panic(err) } // Stream messages err = conn.Stream(context.Background(), func(stream bztcp.StreamData) { fmt.Printf("%#v\n", stream) }) if err != nil { panic(err) } } ``` ## Advanced Usage ### Context-Based Cancellation Use Go's context for graceful shutdown: ```go theme={null} package main import ( "context" "fmt" "os" "os/signal" "syscall" "github.com/Benzinga/go-bztcp/bztcp" ) func main() { conn, err := bztcp.Dial("tcp-v1.benzinga.io:11337", "USER", "KEY") if err != nil { panic(err) } // Create cancellable context ctx, cancel := context.WithCancel(context.Background()) defer cancel() // Handle shutdown signals sigChan := make(chan os.Signal, 1) signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM) go func() { <-sigChan fmt.Println("Shutting down...") cancel() }() // Stream with context err = conn.Stream(ctx, func(stream bztcp.StreamData) { fmt.Printf("Received: %s\n", stream.Title) }) if err != nil && err != context.Canceled { fmt.Printf("Error: %v\n", err) } } ``` ### Processing Stream Data The `StreamData` struct contains the parsed message: ```go theme={null} conn.Stream(ctx, func(stream bztcp.StreamData) { // Access message fields fmt.Printf("ID: %d\n", stream.ID) fmt.Printf("Title: %s\n", stream.Title) fmt.Printf("Published: %s\n", stream.Published) // Process tickers for _, ticker := range stream.Tickers { fmt.Printf("Ticker: %s\n", ticker.Name) } // Process channels for _, channel := range stream.Channels { fmt.Printf("Channel: %s\n", channel) } }) ``` ### Error Handling ```go theme={null} conn, err := bztcp.Dial("tcp-v1.benzinga.io:11337", "USER", "KEY") if err != nil { log.Fatalf("Failed to connect: %v", err) } err = conn.Stream(ctx, handler) if err != nil { switch { case err == context.Canceled: log.Println("Stream cancelled by user") case err == context.DeadlineExceeded: log.Println("Stream timeout") default: log.Printf("Stream error: %v", err) } } ``` ## Complete Example ```go theme={null} package main import ( "context" "encoding/json" "fmt" "log" "os" "os/signal" "syscall" "github.com/Benzinga/go-bztcp/bztcp" ) func main() { user := os.Getenv("BZTCP_USER") key := os.Getenv("BZTCP_KEY") if user == "" || key == "" { log.Fatal("Set BZTCP_USER and BZTCP_KEY environment variables") } conn, err := bztcp.Dial("tcp-v1.benzinga.io:11337", user, key) if err != nil { log.Fatalf("Connection failed: %v", err) } ctx, cancel := context.WithCancel(context.Background()) defer cancel() // Graceful shutdown sigChan := make(chan os.Signal, 1) signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM) go func() { <-sigChan fmt.Println("\nShutting down gracefully...") cancel() }() fmt.Println("Starting Benzinga TCP stream...") err = conn.Stream(ctx, func(stream bztcp.StreamData) { // Pretty print the message data, _ := json.MarshalIndent(stream, "", " ") fmt.Println(string(data)) }) if err != nil && err != context.Canceled { log.Printf("Stream ended with error: %v", err) } } ``` ## Requirements * Go 1.13 or later (uses context library, requires Go 1.8+) * Network access to `tcp-v1.benzinga.io:11337` ## See Also * [Connection Guide](/tcp-reference/connection) - Server details and authentication * [Message Format](/tcp-reference/message-format) - JSON structure reference * [Python Client](/tcp-reference/python-client) - Alternative Python implementation # Overview Source: https://docs.benzinga.com/tcp-reference/introduction The Benzinga TCP streaming service provides real-time financial news and market data through a persistent TCP connection. This low-latency solution is ideal for applications requiring immediate access to market-moving information. ## Key Features * **Real-time Streaming**: Receive financial news and market events as they happen * **Low Latency**: Direct TCP connection minimizes delivery delays * **JSON Format**: All messages are delivered as structured JSON objects * **Persistent Connection**: Maintain a continuous stream of market data ## Prerequisites To connect to the Benzinga TCP service, you need: | Requirement | Description | | ------------ | ---------------------------------- | | **Username** | Your Benzinga TCP account username | | **API Key** | Your unique API access key | Contact Benzinga support to obtain your TCP credentials. ## Available Data The TCP stream delivers various types of financial content including: * **Option Alerts**: Unusual options activity, sweeps, and block trades * **Press Releases**: Corporate announcements and news * **Trading Halts**: Real-time halt and resume notifications * **Analyst Ratings**: Price target changes and rating updates * **Block Trades**: Large institutional transactions ## Quick Start Learn how to establish a TCP connection Understand the JSON message structure Use the Python client library Use the Go client library # Message Format Source: https://docs.benzinga.com/tcp-reference/message-format All messages from the Benzinga TCP stream are delivered as JSON objects. Each message represents a piece of financial content such as news, option alerts, or market events. ## Message Structure ```json theme={null} { "id": 49917328, "title": "Option Alert: GOOG $210 Calls", "body": "", "authors": [{"name": "Benzinga Newsdesk"}], "published": "Wed Jan 14 2026 18:47:30 GMT+0000 (UTC)", "updated": "Wed Jan 14 2026 18:47:30 GMT+0000 (UTC)", "channels": ["Options"], "tickers": [{"name": "GOOG", "primary": false, "sentiment": 0}], "status": "Published", "link": null } ``` ## Field Reference | Field | Type | Description | | ----------- | ----------- | ------------------------------------------------------ | | `id` | Integer | Unique identifier for the content item | | `title` | String | Headline or title of the content | | `body` | String | Full body content (HTML formatted when present) | | `authors` | Array | List of author objects with `name` property | | `published` | String | Original publication timestamp (UTC) | | `updated` | String | Last update timestamp (UTC) | | `channels` | Array | Content categories (e.g., "Options", "Press Releases") | | `tickers` | Array | Associated stock symbols with metadata | | `status` | String | Publication status (typically "Published") | | `link` | String/null | URL to full article on Benzinga (if available) | ### Ticker Object ```json theme={null} { "name": "GOOG", "primary": false, "sentiment": 0 } ``` | Field | Type | Description | | ----------- | ------- | -------------------------------------------------- | | `name` | String | Stock ticker symbol | | `primary` | Boolean | Whether this is the primary ticker for the content | | `sentiment` | Integer | Sentiment indicator (0 = neutral) | ## Example Messages ### Option Alert ```json theme={null} { "id": 49917328, "title": "Alphabet Option Alert: Fri $210 Calls at the Ask: 5 @ $125.0 vs 7017 OI; Earnings 2/4 After Close Ref=$334.37", "body": "", "authors": [{"name": "Benzinga Newsdesk"}], "published": "Wed Jan 14 2026 18:47:30 GMT+0000 (UTC)", "updated": "Wed Jan 14 2026 18:47:30 GMT+0000 (UTC)", "channels": ["Options"], "tickers": [{"name": "GOOG", "primary": false, "sentiment": 0}], "status": "Published", "link": null } ``` ### Block Trade ```json theme={null} { "id": 49917330, "title": "Block Trade: TOGI 1.1M @ $0.044 at the bid", "body": "", "authors": [{"name": "Benzinga Newsdesk"}], "published": "Wed Jan 14 2026 18:47:33 GMT+0000 (UTC)", "updated": "Wed Jan 14 2026 18:47:33 GMT+0000 (UTC)", "channels": [], "tickers": [{"name": "TOGI", "primary": false, "sentiment": 0}], "status": "Published", "link": null } ``` ### Press Release ```json theme={null} { "id": 49917339, "title": "MediCapture Launches aiScope™ Pilot for Veterinary Sciences at VMX 2026", "body": "

Medical AI Made Easy—From Lab to Real-World Training...

", "authors": [{"name": "PRNewswire"}], "published": "Wed Jan 14 2026 18:47:00 GMT+0000 (UTC)", "updated": "Wed Jan 14 2026 18:48:02 GMT+0000 (UTC)", "channels": ["Press Releases"], "tickers": [], "status": "Published", "link": "http://www.benzinga.com/node/49917339" } ``` ### Trading Halt ```json theme={null} { "id": 49917388, "title": "Trading Halt: Halted at 1:49:45 p.m. ET - Trading Halt on NASDAQ only: Volatility Trading Pause; Trading Expected to Resume at 1:54:45 p.m. ET", "body": "", "authors": [{"name": "Benzinga Newsdesk"}], "published": "Wed Jan 14 2026 18:49:45 GMT+0000 (UTC)", "updated": "Wed Jan 14 2026 18:49:45 GMT+0000 (UTC)", "channels": [], "tickers": [{"name": "WSHP", "primary": false, "sentiment": 0}], "status": "Published", "link": null } ``` ### Analyst Rating ```json theme={null} { "id": 49917389, "title": "UBS Maintains Buy on Procter & Gamble, Lowers Price Target to $161", "body": "UBS analyst Peter Grom maintains Procter & Gamble (NYSE:PG) with a Buy...", "authors": [{"name": "Benzinga Newsdesk"}], "published": "Wed Jan 14 2026 18:49:49 GMT+0000 (UTC)", "updated": "Wed Jan 14 2026 18:49:50 GMT+0000 (UTC)", "channels": ["News", "Price Target", "Hot", "Analyst Ratings"], "tickers": [{"name": "PG", "primary": true, "sentiment": 0}], "status": "Published", "link": null } ``` ## Common Channels | Channel | Description | | ----------------- | ---------------------------- | | `Options` | Options activity alerts | | `Press Releases` | Corporate press releases | | `News` | General news | | `Price Target` | Analyst price target updates | | `Analyst Ratings` | Rating changes | | `Hot` | Trending/notable content | | `General` | General market content | | `Opinion` | Opinion pieces and analysis | ## Processing Tips Messages are delivered as newline-delimited JSON. Each line contains a complete JSON object. ### Best Practices 1. **Parse Each Line**: Each newline represents a complete JSON message 2. **Handle HTML in Body**: The `body` field may contain HTML entities and tags 3. **Check for Updates**: Compare `published` and `updated` timestamps to identify edits 4. **Filter by Channel**: Use the `channels` array to filter for specific content types 5. **Track by ID**: Use the `id` field as a unique identifier for deduplication # Python Client Library Source: https://docs.benzinga.com/tcp-reference/python-client The `python-bztcp` package provides a pure-Python implementation of the Benzinga TCP protocol for streaming financial data. View source code and contribute ## Features * Compatible with Python 2.6+ and Python 3 * No external dependencies * Supports large messages * Configurable retry logic with exponential backoff ## Installation Install the library using setup.py: ```bash theme={null} git clone https://github.com/Benzinga/python-bztcp.git cd python-bztcp python setup.py install ``` ## Quick Start Test the client using the built-in demo: ```bash theme={null} python -m bztcp USERNAME API_KEY ``` ```bash theme={null} python -m bztcp USERNAME API_KEY RETRIES DELAY BACKOFF ``` ```bash theme={null} python -m bztcp.__main__ USERNAME API_KEY ``` ## Basic Usage The `bztcp.client.Client` class handles the connection and streaming: ```python theme={null} from __future__ import print_function from bztcp.client import Client client = Client(username='USERNAME', key='API_KEY') for content in client.content_items(): title = content.get('title', None) print(title) ``` ## Configuration Options ### Retry Configuration Configure retry behavior with exponential backoff: ```python theme={null} from bztcp.client import Client client = Client( username='USERNAME', key='API_KEY', retries=5, # Maximum retry attempts delay=90, # Initial delay in seconds backoff=2 # Backoff multiplier ) for content in client.content_items(): title = content.get('title', None) print(title) ``` | Parameter | Description | Default | | ---------- | --------------------------------------- | -------- | | `username` | Your Benzinga TCP username | Required | | `key` | Your API access key | Required | | `retries` | Maximum number of retry attempts | - | | `delay` | Initial delay between retries (seconds) | - | | `backoff` | Multiplier for exponential backoff | - | ## Advanced Usage ### Low-Level Message Handling For granular control over connection status and individual messages: ```python theme={null} from bztcp.client import Client, STATUS_STREAM from bztcp.exceptions import BzException client = Client(username='USERNAME', key='API_KEY') while True: try: msg = client.next_msg() if msg.status == STATUS_STREAM: print(f"Content item: {msg.data}") else: print(f"Status: {msg.status}") except KeyboardInterrupt: print("Cancelled, disconnecting.") client.disconnect() break except BzException as bze: print(f"BZ Error: {bze}") break ``` ### Message Status Constants | Status | Description | | --------------- | -------------------------------- | | `STATUS_STREAM` | Normal streaming content message | ### Key Methods | Method | Description | | ----------------- | ------------------------------------------ | | `content_items()` | Generator that yields content dictionaries | | `next_msg()` | Returns the next raw message object | | `disconnect()` | Gracefully disconnects from the server | ## Error Handling The library raises `BzException` for Benzinga-specific errors: ```python theme={null} from bztcp.exceptions import BzException try: for content in client.content_items(): process(content) except BzException as e: print(f"Benzinga error: {e}") except Exception as e: print(f"Unexpected error: {e}") ``` ## Complete Example ```python theme={null} #!/usr/bin/env python from __future__ import print_function import json from bztcp.client import Client def main(): client = Client( username='YOUR_USERNAME', key='YOUR_API_KEY', retries=5, delay=30, backoff=2 ) print("Starting Benzinga TCP stream...") for content in client.content_items(): # Extract key fields content_id = content.get('id') title = content.get('title', 'No title') channels = content.get('channels', []) tickers = [t['name'] for t in content.get('tickers', [])] # Print summary print(f"[{content_id}] {title}") if channels: print(f" Channels: {', '.join(channels)}") if tickers: print(f" Tickers: {', '.join(tickers)}") print() if __name__ == '__main__': main() ``` ## See Also * [Connection Guide](/tcp-reference/connection) - Server details and authentication * [Message Format](/tcp-reference/message-format) - JSON structure reference * [Go Client](/tcp-reference/go-client) - Alternative Go implementation # Authorization Source: https://docs.benzinga.com/widgets/authorization How to authorize access to Benzinga Widgets ## Overview Benzinga Widgets require authorization to access premium features and real-time data. Authorization is handled through API tokens that are embedded in the widget URLs, ensuring secure access to financial data while maintaining seamless integration. ## Getting Your API Token To use Benzinga Widgets with full functionality: 1. **Contact Benzinga**: Reach out to [licensing@benzinga.com](mailto:licensing@benzinga.com) to obtain your widget API token 2. **License Agreement**: Complete the licensing process for widget access 3. **Receive Credentials**: You'll receive your unique API token for widget authorization ## Using Your Token ### Basic Authentication Add your API token to the widget URL using the `token` parameter: ```html theme={null} ``` ### Best Practices **Never expose your API token in client-side code that could be viewed by users.** Widgets are designed to be embedded on public websites, but you should implement server-side token management when possible. **Recommended Approach:** * Store tokens as environment variables on your server * Generate widget URLs server-side with the token included * Use URL signing or token rotation for enhanced security ## Token Management ### Security Considerations * **Keep tokens private**: Don't commit tokens to version control * **Monitor usage**: Track widget loads to detect unauthorized use * **Rotate tokens**: Request new tokens periodically from Benzinga * **Domain restrictions**: Configure allowed domains with Benzinga support ### Rate Limits Widget API tokens are subject to rate limits based on your license agreement: * Standard tier: Up to 10,000 widget loads per day * Premium tier: Up to 100,000 widget loads per day * Enterprise tier: Custom limits based on agreement ## Troubleshooting ### Common Authorization Issues **Widget shows "Unauthorized" error:** * Verify your token is correctly included in the URL * Check that your token hasn't expired * Ensure you're accessing from an authorized domain **Data not updating:** * Confirm your license includes real-time data access * Check that your token has the necessary permissions * Verify your rate limits haven't been exceeded ### Getting Help For authorization issues or questions: * Email: [licensing@benzinga.com](mailto:licensing@benzinga.com) * Include your widget URL structure (with token redacted) * Describe the specific error or behavior you're experiencing ## Next Steps Once authorized, explore the available [widget options](/widgets/overview) to customize your financial data displays. # Benzinga Widgets Source: https://docs.benzinga.com/widgets/overview Embeddable financial data visualizations for your website Benzinga Widgets are pre-built, embeddable components that display financial charts, stock information, and market data on your website. They integrate seamlessly with minimal setup and are fully customizable to match your brand. Sample widgets: *** ## Charting: *** ``` *** ## Sector Performance: ***
``` *** ## Sankey Chart: *** ``` *** ## Features ### Interactive Stock Charts * Real-time stock price data * Customizable timeframes (1 day, 6 months, 5 years, etc.) * Auto-updating charts that reflect current market conditions ```html theme={null} ``` ### Additional Widgets * Stock Tickers: Live stock prices in scrolling ticker format * News Feeds: Latest market news updates * Company Insights: Key statistics and company data ## Integration Integrate widgets in three steps: 1. **Select a widget type**: Choose from stock charts, news feeds, tickers, or company insights. 2. **Customize the embed code**: Modify the URL parameters to match your requirements (stock symbol, timeframe, colors): ```html theme={null} ``` 3. **Embed on your site**: Insert the iframe code into your HTML or CMS (WordPress, Wix, etc.) and test the display. ## Customization Options Widgets can be customized with URL parameters: * `symbol` - Stock ticker symbol * `timeframe` - Chart period (1d, 6m, 5y, etc.) * `bgColor` - Background color (hex format) * `chartColor` - Chart line color (hex format) * `exchange` - Stock exchange ## Support For integration assistance or customization questions, contact [licensing@benzinga.com](mailto:licensing@benzinga.com).