Events
Analyst actions
Upgrades, downgrades, initiations, and price-target changes as events on the unified timeline — kind=analyst on GET /v2/events. Hourly feed, 24/7, history back to 2012. This is the freshest kind on the stream — a rating change lands within the hour.
Payload
Each action carries the rating and price-target movement, not just the label.
| field | meaning |
|---|---|
event_id | Stable id for the action |
firm | Research firm |
analyst | Analyst name, where attributed |
action | upgrades, downgrades, maintains, reiterates, initiates_coverage_on, assumes, reinstates, terminates_coverage_on, suspends |
rating / previous_rating | New and prior rating labels |
price_target / previous_price_target | New and prior price targets (USD) |
price_target_action | How the target moved (raises, lowers, …) |
importance | Vendor-assigned salience, 0–5 |
Recipes
Payload filters for content; join=state for point-in-time context.
# Every analyst action on AAPL this month
curl "https://api.tickerbot.io/v2/events?kind=analyst&ticker=AAPL&since=2026-07-01" \
-H "Authorization: Bearer YOUR_KEY"
# Goldman's downgrades, this quarter
curl -G "https://api.tickerbot.io/v2/events" \
-H "Authorization: Bearer YOUR_KEY" \
--data-urlencode "kind=analyst" \
--data-urlencode "since=2026-07-01" \
--data-urlencode "q=payload->>'firm'='Goldman Sachs' AND payload->>'action'='downgrades'"
# Downgrades on stocks above their 200-day — state as of the event (paid plans)
curl -G "https://api.tickerbot.io/v2/events" \
-H "Authorization: Bearer YOUR_KEY" \
--data-urlencode "kind=analyst" \
--data-urlencode "join=state" \
--data-urlencode "since=2026-07-01" \
--data-urlencode "q=payload->>'action'='downgrades' AND above_sma_200 = true"The ticker object also carries live analyst columns (last_rating_date / last_rating_firm / last_rating_action) and recent_* flags for scans. A specialized route, /v2/analyst/events, spells the common firm/action filters as plain params. Push instead of poll: POST /v2/events/subscribe with kinds=analyst.