Financial data is informational and may be inaccurate. See Disclaimer.

drillr.ai
API keys →

Analyst · US only

Rating events

GET/api/v2/analyst-ratingsUS only
Coverage
US
Billing
20 cr / thousand calls

One row per firm rating or price target change event, ordered by date desc, published_at desc. Every row carries the firm name firm and a deep link to the source article source_url; an event missing either one is not exposed. Granularity stops at the firm, and no individual analyst names are included.

  • The rating action and the price target action are two separate columns, each of which can be null: when the news mentions only a price target, rating_action is null; when it mentions only a rating, price_target_action is null.
  • rating_current is the firm's own wording (for example overweight); for cross-firm comparison, use the five-tier rating_current_normalized. That value is meaningful only for rows where rating_current is non-null; filter on rating_current first to drop rows where the news mentions only a price target, then aggregate.
Shared analyst conventions

Rating events are parsed from public press releases and news coverage — they are news-reported (secondhand), not the original text of the firms' research reports; consensus is derived from these events, aggregated by firm. Coverage is US only; tickers from other markets return 404.

Query parameters

ParameterTypeRequiredDescription
tickerstringrequiredA single ticker.
fromdateoptionalStart of the rating event date (date) window, inclusive of that day; to query a single day, set from = to.
todateoptionalEnd of the rating event date window, inclusive of that day.
limitintoptionalMaximum 500. Default 50.
pageintoptionalStarts at 1. Default 1.

Sorted date desc, published_at desc. Paged with limit and page (pages start at 1); fewer rows than limit means the last page.

Response fields

FieldTypeDescription
tickerstringCanonical ticker; this endpoint is US-only, so there is no market suffix (e.g. AAPL)
datedateRating event date (the date stated in the news article)
firmstringFirm name, non-null
rating_actionstringRating action: initiate / upgrade / downgrade / maintain / reiterate; null when the news reports only a price target change
price_target_actionstringPrice target action: raise / lower / maintain / announce (first time a target is given); null when the news does not mention a price target
rating_currentstringThe firm's own rating wording (overweight / outperform …)
rating_priorstringThe firm's own rating wording before the change; null for initiate
rating_current_normalizedstringThe firm's original wording normalized to five tiers: strong_buy / buy / hold / sell / strong_sell; uses the same basis as consensus_rating in /analyst-consensus.
price_target_currentnumberCurrent price target
price_target_priornumberPrice target before the change
source_namestringSource channel identifier (yahoo_analyst / marketbeat / tickerreport …), not a media brand name
source_urlstringDeep link to the source article
published_atdatetimeNews publication time (UTC)

No key yet? Create one under API Keys — it is shown once, so store it where your shell can read it. Connecting an agent over MCP instead? That signs in through the browser and needs no key at all.

Authentication, conventions, rate limits and error shapes are the same for every endpoint — they live on REST API.