Consensus records and individual actions
The analyst ratings schema holds two kinds of records, told apart by rating_type. A consensus record is an aggregate snapshot: the score, the recommendation counts and the consensus target price. An individual record is one analyst's action, with the firm, the analyst, the rating and target and their previous values.
Consensus records leave the individual fields empty, because they do not apply: firm, analyst, previous_rating and previous_target_price are null. rating repeats the numeric score as a decimal string, and normalized_rating is unrated, because a score such as 4.0417 is not mapped to a buy or hold label. Bucket it yourself if you need categories. When the source gives no publication time, published_at is the time OHLC fetched the snapshot.
In the data checked on October 3, 2026, published records were consensus snapshots. Don't build on firm-level upgrades and downgrades being present.
| Field | Consensus record | Individual record |
|---|---|---|
consensus_score | 1 to 5, as published | Null |
rating_counts | Strong buy through strong sell | Not applicable |
target_price | Consensus target | The analyst's target |
firm, analyst | Null | Research firm and analyst |
normalized_rating | unrated | strong_buy through strong_sell |
observed_on | Date the snapshot was taken | Date observed |
Consensus estimates alongside ratings
/v1/estimates carries the numbers behind the opinions: consensus EPS, revenue and EBITDA per fiscal quarter or year, with mean, median, high, low, analyst_count, and up and down revision counts. Together with ratings it gives a complete sell-side view for a stock page or a model. effective_date returns the latest snapshot on or before a date, and median or the revision fields are null when the source does not report them. Earnings dates and EPS surprises are in earnings.
Use cases
- Consensus panels on a stock page: score, distribution of recommendations and target.
- Price target upside:
target_priceagainst the latest end-of-day close. - Features for models: score level, share of buy recommendations, and changes between snapshots as the series grows.
- Coverage checks: the sum of
rating_countsapproximates how many analysts follow a company. - Screens across the market: omit symbols to read the latest consensus for every covered stock, then rank by score or by target upside.
Point in time and history
Each snapshot is dated by observed_on, and as_of limits results to snapshots OHLC had recorded by the end of that UTC day. OHLC began recording consensus snapshots in late September 2026, so history builds forward from there. On October 3, 2026, Apple's first snapshot was dated September 28, 2026. Plan for a short history now and a longer one over time.
Plans and credits
Analyst ratings and estimates are included on Pro, Commercial and Scale. Each costs 50 credits per symbol, or 500 credits for a page across the whole market. Showing ratings to your own users needs Commercial's display rights. See pricing.
Analyst consensus for Apple
curl 'https://api.ohlc.io/v1/analyst-ratings?symbols=XNAS:AAPL&order=desc&limit=1' \
-H "Authorization: Bearer $OHLC_API_KEY"{
"data": [
{
"id": "record_9bd36026b0e7de900542",
"company_id": "01M35H2KDW9VT69S5ZCEGMCPAX",
"instrument_id": "01M35H2KE2ZJHXFY5C3E7FPC66",
"published_at": "2026-09-28T02:46:49Z",
"firm": null,
"analyst": null,
"rating": "4.0417",
"previous_rating": null,
"normalized_rating": "unrated",
"target_price": { "amount": "328.2221", "currency_code": "USD" },
"previous_target_price": null,
"rating_type": "consensus",
"observed_on": "2026-09-28",
"consensus_score": "4.0417",
"rating_counts": { "strong_buy": 23, "buy": 7, "hold": 16, "sell": 1, "strong_sell": 1 }
}
],
"meta": {
"timezone": "UTC",
"as_of": "2026-10-03T15:04:28Z",
"next_cursor": null,
"coverage": { "status": "partial", "reason": "Coverage is partial for the entitled query scope." }
}
}Prices delayed 15 minutes · Illustrative sample data