Benzinga APIbenzinga.com ↗
Access Benzinga stock quotes, sentiment-tagged news, analyst ratings, and company fundamentals via 4 structured endpoints. Delayed pricing, P/E, sector data, and more.
What is the Benzinga API?
The Benzinga API exposes 4 endpoints covering delayed stock quotes, financial news with sentiment labels, analyst ratings, and company fundamentals. The get_news endpoint returns full article text (up to 5,000 characters) along with a bullish/bearish/neutral sentiment label for each piece. Other endpoints surface per-symbol data including P/E ratios, analyst price target changes, sector classification, and IPO date.
curl -X GET 'https://api.parse.bot/scraper/69131ce9-ff80-492b-816c-18aad4a40b64/get_quote?symbol=AAPL' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace benzinga-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Benzinga Stock Data API — bounded, re-runnable walkthrough."""
from parse_apis.benzinga_stock_data_api import Benzinga, Period, SymbolNotFound
client = Benzinga()
# Fetch a stock quote — typed field access on the result.
stock = client.stocks.get(symbol="AAPL")
print(f"{stock.name} ({stock.symbol}): ${stock.last_trade_price}, PE={stock.pe}")
# Drill into fundamentals for the same stock.
fundamentals = stock.fundamentals(period=Period._3M)
print(f"Sector: {fundamentals.asset_classification.ms_sector_name}, Employees: {fundamentals.company_profile.total_employees}")
# Browse recent news articles (capped at 3 total items).
for article in stock.news.list(limit=3):
print(f"[{article.sentiment}] {article.title} — {article.published_date}")
# Browse analyst ratings (capped at 5 total items).
for rating in stock.ratings.list(limit=5):
print(f"{rating.date}: {rating.analyst_firm} — {rating.rating_change}, target {rating.price_target_change}")
# Typed error handling: catch SymbolNotFound for an invalid ticker.
try:
bad = client.stocks.get(symbol="ZZZZZ")
print(bad.name)
except SymbolNotFound as exc:
print(f"Symbol not found: {exc.symbol}")
print("Exercised: stocks.get / fundamentals / news.list / ratings.list / SymbolNotFound")
Retrieve real-time delayed quote data for a single stock symbol. Returns pricing (open, high, low, last trade), volume, market cap, P/E ratio, dividend yield, and 52-week range. The quote reflects the most recent trading session data with a short delay.
| Param | Type | Description |
|---|---|---|
| symbolrequired | string | Stock ticker symbol (e.g. AAPL, TSLA, MSFT) |
{
"type": "object",
"fields": {
"pe": "number - P/E ratio",
"low": "number - day low",
"high": "number - day high",
"name": "string - company short name",
"open": "number - opening price",
"change": "number - price change from previous close",
"symbol": "string - ticker symbol",
"volume": "integer - trading volume",
"exchange": "string - exchange code (e.g. XNAS)",
"marketCap": "number - market capitalization",
"changePercent": "number - percentage change",
"dividendYield": "number - dividend yield percentage",
"lastTradePrice": "number - last trade price",
"fiftyTwoWeekLow": "number - 52-week low price",
"fiftyTwoWeekHigh": "number - 52-week high price"
},
"sample": {
"data": {
"pe": 35.175545,
"low": 287.38,
"high": 294.75,
"name": "Apple",
"open": 290.74,
"change": -0.69,
"symbol": "AAPL",
"volume": 52793266,
"exchange": "XNAS",
"marketCap": 4270596814600,
"changePercent": -0.24,
"dividendYield": 0.37,
"lastTradePrice": 290.89,
"fiftyTwoWeekLow": 195.07,
"fiftyTwoWeekHigh": 317.4
},
"status": "success"
}
}About the Benzinga API
Stock Quotes and Fundamentals
The get_quote endpoint accepts a single symbol parameter and returns a snapshot of delayed trading data: open, high, low, last price, volume, market cap, P/E ratio, dividend yield, and 52-week range. The get_fundamentals endpoint goes deeper, returning nested objects for company profile (shortName, longDescription, totalEmployees, homepage), share class details (ipoDate, exchangeId, currencyId), asset classification (msSectorName, msIndustryName), and market metrics (sharesOutstanding, marketCap). An optional period parameter accepts 3M to scope the data window.
News with Sentiment
get_news fetches recent Benzinga articles for a given ticker, ordered by recency. Each item in the returned array includes title, url, author, published_date, full_text (up to 5,000 characters), and a sentiment field derived from keyword frequency analysis — one of bullish, bearish, or neutral. The optional limit parameter controls how many articles are returned, which is useful when you only need the most recent few pieces for a given symbol.
Analyst Ratings
get_analyst_ratings returns an array of rating events sorted by date descending. Each item includes analyst_firm, rating_change, price_target_change, upside_downside, and previous_current_rating. This lets you track how coverage of a stock has evolved across multiple firms over time — for example, spotting a cluster of upgrades or target increases following an earnings release.
The Benzinga API is a managed, monitored endpoint for benzinga.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when benzinga.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official benzinga.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Monitor intraday price movement and volume for a watchlist of tickers using
get_quotefields likehigh,low, andchange. - Build a sentiment dashboard that aggregates bullish/bearish/neutral scores from
get_newsacross a portfolio of symbols. - Alert users when analyst firms issue upgrades or raise price targets by polling
get_analyst_ratingsforrating_changeandprice_target_changefields. - Populate a stock screener with sector and industry data from
assetClassificationfields returned byget_fundamentals. - Display company overview cards using
companyProfilefields such aslongDescription,totalEmployees, andhomepage. - Track IPO history by reading
ipoDatefrom theshareClassobject inget_fundamentals. - Feed full article text from
get_newsinto an LLM pipeline for deeper per-ticker summarization or topic extraction.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Benzinga have an official developer API?+
What does the sentiment field in get_news actually represent?+
sentiment field is a derived label — bullish, bearish, or neutral — computed from keyword frequency within the article text. It is not a score Benzinga publishes directly; it is assigned per article based on the content returned. No numeric confidence score is included in the current response shape.Does get_quote return real-time prices or delayed data?+
symbol, open, high, low, change, volume, and marketCap fields are all present, but there is no timestamp field in the response indicating the exact delay window. Do not rely on this endpoint for sub-second trading applications.Does the API cover options data, earnings estimates, or historical price series?+
Can I retrieve news for multiple symbols in a single get_news call?+
get_news accepts a single symbol per request. If you need news across multiple tickers, you will need to make one call per symbol. You can fork this API on Parse and revise it to batch multiple symbols into a single response.