Analyst · US only
Rating events
- Coverage
- US
- Billing
- 20 cr / thousand calls
Returns individual analyst rating and price target changes: which firm upgraded, downgraded or maintained a rating on which day, and what the price target moved from and to, one row per event, ordered by date desc, published_at desc. Sourced from news reports; every row carries the firm name firm and a link to the source article source_url, and events missing either are not exposed. Firm level only, with no individual analyst names.
- 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_actionis null; when it mentions only a rating,price_target_actionis null. rating_currentis the firm's own wording (for exampleoverweight); for cross-firm comparison, use the five-tierrating_current_normalized. That value is meaningful only for rows whererating_currentis non-null; filter onrating_currentfirst to drop rows where the news mentions only a price target, then aggregate.
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | required | A single ticker. |
| from | date | optional | Start of the rating event date (date) window, inclusive of that day; to query a single day, set from = to. |
| to | date | optional | End of the rating event date window, inclusive of that day. |
| limit | int | optional | Maximum 500. Default: 50. |
| page | int | optional | Starts at 1. Default: 1. |
Sort order: date desc, published_at desc. Paged with limit and page (pages start at 1); fewer rows than limit means the last page.
Response fields
| Field | Type | Description |
|---|---|---|
| ticker | string | Canonical ticker; this endpoint is US-only, so there is no market suffix (e.g. AAPL) |
| date | date | Rating event date (the date stated in the news article) |
| firm | string | Firm name, non-null |
| rating_action | stringenum | Rating action: initiate / upgrade / downgrade / maintain / reiterate; null when the news reports only a price target change |
| price_target_action | stringenum | Price target action: raise / lower / maintain / announce (first time a target is given); null when the news does not mention a price target |
| rating_current | string | The firm's own rating wording (overweight / outperform …) |
| rating_prior | string | The firm's own rating wording before the change; null for initiate |
| rating_current_normalized | string | nullenum | The 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. Null when rating_current is null. |
| price_target_current | number | Current price target |
| price_target_prior | number | Price target before the change |
| source_name | string | Source channel identifier (yahoo_analyst / marketbeat / tickerreport …), not a media brand name |
| source_url | string | Deep link to the source article |
| published_at | datetime | News 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.