> ## Documentation Index
> Fetch the complete documentation index at: https://finance.chiefpriest.design/llms.txt
> Use this file to discover all available pages before exploring further.

# Analyst Price Targets

> Get analyst price target forecasts and recommendations

## Overview

Retrieve analyst price targets and recommendations for any publicly traded company. This endpoint provides professional analyst forecasts including target prices, ratings, and recent changes, helping investors understand Wall Street sentiment and potential price movements.

<Info>
  Price targets represent analysts' 12-month price forecasts based on fundamental analysis, valuation models, and market conditions. They provide insight into professional sentiment and potential upside/downside.
</Info>

## Parameters

<ParamField path="symbol" type="string" required>
  Stock ticker symbol (e.g., AAPL, MSFT, GOOGL, TSLA)
</ParamField>

## Response

<ResponseField name="symbol" type="string">
  The stock ticker symbol
</ResponseField>

<ResponseField name="priceTargetAverage" type="number">
  Average analyst price target
</ResponseField>

<ResponseField name="priceTargetHigh" type="number">
  Highest analyst price target
</ResponseField>

<ResponseField name="priceTargetLow" type="number">
  Lowest analyst price target
</ResponseField>

<ResponseField name="priceTargetMedian" type="number">
  Median analyst price target
</ResponseField>

<ResponseField name="numberOfAnalysts" type="number">
  Number of analysts providing targets
</ResponseField>

<ResponseField name="lastUpdated" type="string">
  Date of last price target update
</ResponseField>

### Recommendation Summary

<ResponseField name="strongBuy" type="number">
  Number of Strong Buy recommendations
</ResponseField>

<ResponseField name="buy" type="number">
  Number of Buy recommendations
</ResponseField>

<ResponseField name="hold" type="number">
  Number of Hold recommendations
</ResponseField>

<ResponseField name="sell" type="number">
  Number of Sell recommendations
</ResponseField>

<ResponseField name="strongSell" type="number">
  Number of Strong Sell recommendations
</ResponseField>

<ResponseField name="consensusRating" type="string">
  Overall consensus rating (Strong Buy, Buy, Hold, Sell, Strong Sell)
</ResponseField>

### Recent Changes

<ResponseField name="recentChanges" type="array">
  Array of recent price target changes

  <Expandable title="Price Target Change Object">
    <ResponseField name="analystName" type="string">
      Name of the analyst/firm
    </ResponseField>

    <ResponseField name="date" type="string">
      Date of the price target change
    </ResponseField>

    <ResponseField name="previousTarget" type="number">
      Previous price target
    </ResponseField>

    <ResponseField name="newTarget" type="number">
      New price target
    </ResponseField>

    <ResponseField name="rating" type="string">
      Current rating (Buy, Hold, Sell, etc.)
    </ResponseField>

    <ResponseField name="ratingChange" type="string">
      Change in rating (Upgrade, Downgrade, Initiate, Maintain)
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="source" type="string">
  Data source identifier ("FMP")
</ResponseField>

<ResponseField name="timestamp" type="string">
  ISO timestamp of the response
</ResponseField>

## Examples

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://stocks-dev.up.railway.app/api/v1/fmp/stock/AAPL/price-targets"
  ```

  ```python Python theme={null}
  import requests

  response = requests.get("https://stocks-dev.up.railway.app/api/v1/fmp/stock/AAPL/price-targets")
  data = response.json()

  symbol = data['symbol']
  current_price = 201.08  # You'd get this from stock quote endpoint
  avg_target = data['priceTargetAverage']
  high_target = data['priceTargetHigh']
  low_target = data['priceTargetLow']
  num_analysts = data['numberOfAnalysts']

  # Calculate potential upside/downside
  upside = ((avg_target - current_price) / current_price) * 100
  high_upside = ((high_target - current_price) / current_price) * 100
  low_upside = ((low_target - current_price) / current_price) * 100

  print(f"🎯 Analyst Price Targets for {symbol}")
  print("=" * 50)
  print(f"Current Price: ${current_price:.2f}")
  print(f"Average Target: ${avg_target:.2f} ({upside:+.1f}%)")
  print(f"Target Range: ${low_target:.2f} - ${high_target:.2f}")
  print(f"Potential Range: {low_upside:+.1f}% to {high_upside:+.1f}%")
  print(f"Analyst Coverage: {num_analysts} analysts")
  print()

  # Recommendation breakdown
  total_recs = data['strongBuy'] + data['buy'] + data['hold'] + data['sell'] + data['strongSell']
  print(f"📊 Recommendations ({total_recs} total):")
  print(f"  🟢 Strong Buy: {data['strongBuy']} ({data['strongBuy']/total_recs*100:.0f}%)")
  print(f"  🟢 Buy: {data['buy']} ({data['buy']/total_recs*100:.0f}%)")
  print(f"  🟡 Hold: {data['hold']} ({data['hold']/total_recs*100:.0f}%)")
  print(f"  🔴 Sell: {data['sell']} ({data['sell']/total_recs*100:.0f}%)")
  print(f"  🔴 Strong Sell: {data['strongSell']} ({data['strongSell']/total_recs*100:.0f}%)")
  print(f"Consensus: {data['consensusRating']}")

  # Recent changes
  if data.get('recentChanges'):
      print(f"\n📈 Recent Changes ({len(data['recentChanges'])}):")
      for change in data['recentChanges'][:3]:  # Show top 3
          print(f"  {change['date']}: {change['analystName']}")
          print(f"    Target: ${change['previousTarget']:.2f} → ${change['newTarget']:.2f}")
          print(f"    Rating: {change['rating']} ({change['ratingChange']})")
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://stocks-dev.up.railway.app/api/v1/fmp/stock/AAPL/price-targets');
  const data = await response.json();

  const symbol = data.symbol;
  const currentPrice = 201.08; // You'd get this from stock quote endpoint
  const avgTarget = data.priceTargetAverage;
  const highTarget = data.priceTargetHigh;
  const lowTarget = data.priceTargetLow;
  const numAnalysts = data.numberOfAnalysts;

  // Calculate potential upside/downside
  const upside = ((avgTarget - currentPrice) / currentPrice) * 100;
  const highUpside = ((highTarget - currentPrice) / currentPrice) * 100;
  const lowUpside = ((lowTarget - currentPrice) / currentPrice) * 100;

  console.log(`🎯 Analyst Price Targets for ${symbol}`);
  console.log("=".repeat(50));
  console.log(`Current Price: $${currentPrice.toFixed(2)}`);
  console.log(`Average Target: $${avgTarget.toFixed(2)} (${upside >= 0 ? '+' : ''}${upside.toFixed(1)}%)`);
  console.log(`Target Range: $${lowTarget.toFixed(2)} - $${highTarget.toFixed(2)}`);
  console.log(`Potential Range: ${lowUpside >= 0 ? '+' : ''}${lowUpside.toFixed(1)}% to ${highUpside >= 0 ? '+' : ''}${highUpside.toFixed(1)}%`);
  console.log(`Analyst Coverage: ${numAnalysts} analysts`);
  console.log();

  // Recommendation breakdown
  const totalRecs = data.strongBuy + data.buy + data.hold + data.sell + data.strongSell;
  console.log(`📊 Recommendations (${totalRecs} total):`);
  console.log(`  🟢 Strong Buy: ${data.strongBuy} (${Math.round(data.strongBuy/totalRecs*100)}%)`);
  console.log(`  🟢 Buy: ${data.buy} (${Math.round(data.buy/totalRecs*100)}%)`);
  console.log(`  🟡 Hold: ${data.hold} (${Math.round(data.hold/totalRecs*100)}%)`);
  console.log(`  🔴 Sell: ${data.sell} (${Math.round(data.sell/totalRecs*100)}%)`);
  console.log(`  🔴 Strong Sell: ${data.strongSell} (${Math.round(data.strongSell/totalRecs*100)}%)`);
  console.log(`Consensus: ${data.consensusRating}`);
  ```

  ```php PHP theme={null}
  <?php
  $response = file_get_contents('https://stocks-dev.up.railway.app/api/v1/fmp/stock/AAPL/price-targets');
  $data = json_decode($response, true);

  $symbol = $data['symbol'];
  $current_price = 201.08; // You'd get this from stock quote endpoint
  $avg_target = $data['priceTargetAverage'];
  $high_target = $data['priceTargetHigh'];
  $low_target = $data['priceTargetLow'];
  $num_analysts = $data['numberOfAnalysts'];

  // Calculate potential upside/downside
  $upside = (($avg_target - $current_price) / $current_price) * 100;
  $high_upside = (($high_target - $current_price) / $current_price) * 100;
  $low_upside = (($low_target - $current_price) / $current_price) * 100;

  echo "🎯 Analyst Price Targets for $symbol\n";
  echo str_repeat("=", 50) . "\n";
  echo "Current Price: $" . number_format($current_price, 2) . "\n";
  echo "Average Target: $" . number_format($avg_target, 2) . " (" . sprintf("%+.1f", $upside) . "%)\n";
  echo "Target Range: $" . number_format($low_target, 2) . " - $" . number_format($high_target, 2) . "\n";
  echo "Analyst Coverage: $num_analysts analysts\n\n";

  // Recommendation breakdown
  $total_recs = $data['strongBuy'] + $data['buy'] + $data['hold'] + $data['sell'] + $data['strongSell'];
  echo "📊 Recommendations ($total_recs total):\n";
  echo "  🟢 Strong Buy: " . $data['strongBuy'] . " (" . round($data['strongBuy']/$total_recs*100) . "%)\n";
  echo "  🟢 Buy: " . $data['buy'] . " (" . round($data['buy']/$total_recs*100) . "%)\n";
  echo "  🟡 Hold: " . $data['hold'] . " (" . round($data['hold']/$total_recs*100) . "%)\n";
  echo "Consensus: " . $data['consensusRating'] . "\n";
  ?>
  ```
</CodeGroup>

## Response Example

```json theme={null}
{
  "symbol": "AAPL",
  "priceTargetAverage": 225.50,
  "priceTargetHigh": 275.00,
  "priceTargetLow": 180.00,
  "priceTargetMedian": 220.00,
  "numberOfAnalysts": 32,
  "lastUpdated": "2025-06-28",
  "strongBuy": 8,
  "buy": 18,
  "hold": 5,
  "sell": 1,
  "strongSell": 0,
  "consensusRating": "Buy",
  "recentChanges": [
    {
      "analystName": "Morgan Stanley",
      "date": "2025-06-25",
      "previousTarget": 210.00,
      "newTarget": 230.00,
      "rating": "Overweight",
      "ratingChange": "Upgrade"
    },
    {
      "analystName": "Goldman Sachs",
      "date": "2025-06-20",
      "previousTarget": 240.00,
      "newTarget": 260.00,
      "rating": "Buy",
      "ratingChange": "Maintain"
    }
  ],
  "source": "FMP",
  "timestamp": "2025-06-28T20:30:15.123456"
}
```

## Understanding Price Targets

<AccordionGroup>
  <Accordion title="Price Target Methodology">
    **How Analysts Set Targets:**

    1. **Valuation Models**: DCF, P/E multiples, sum-of-parts analysis
    2. **Time Horizon**: Typically 12-month forward-looking targets
    3. **Risk Assessment**: Consider company-specific and market risks
    4. **Peer Comparison**: Relative valuation vs industry peers
  </Accordion>

  <Accordion title="Recommendation Ratings">
    * **Strong Buy/Buy**: Analyst expects significant outperformance
    * **Hold**: Expected to perform in line with market
    * **Sell/Strong Sell**: Expected underperformance (rare)
    * **Consensus**: Weighted average of all recommendations
  </Accordion>

  <Accordion title="Target Accuracy">
    * **Historical Performance**: Analysts achieve \~40-60% accuracy
    * **Bias Factors**: Tend to be optimistic, slow to downgrade
    * **Market Conditions**: Accuracy varies with market volatility
    * **Coverage Quality**: More analysts generally means better consensus
  </Accordion>
</AccordionGroup>

## Use Cases

<CardGroup cols={2}>
  <Card title="Investment Decisions" icon="chart-line">
    **Buy/Sell Signals**

    * Compare current price to targets
    * Assess risk/reward ratios
    * Time entry/exit points
  </Card>

  <Card title="Portfolio Management" icon="briefcase">
    **Position Sizing**

    * Upside potential analysis
    * Risk assessment
    * Diversification decisions
  </Card>

  <Card title="Research & Analysis" icon="magnifying-glass">
    **Due Diligence**

    * Consensus sentiment tracking
    * Analyst revision trends
    * Peer comparison
  </Card>

  <Card title="Risk Management" icon="shield">
    **Downside Protection**

    * Identify potential risks
    * Stop-loss level setting
    * Volatility expectations
  </Card>
</CardGroup>

## Target Analysis Tips

<Info>
  **Strong Consensus Indicators:**

  * 20+ analysts covering the stock
  * Narrow price target range
  * Recent target increases
  * High percentage of Buy ratings
</Info>

<Tip>
  **Investment Strategies:**

  * Look for stocks trading below average targets
  * Monitor target revision trends
  * Consider consensus rating changes
  * Compare targets to technical levels
</Tip>

<Warning>
  **Important Considerations:**

  * Price targets are opinions, not guarantees
  * Analyst biases and conflicts of interest
  * Market conditions can change rapidly
  * Use targets as one of many analysis tools
</Warning>

## Error Responses

<AccordionGroup>
  <Accordion title="Invalid Symbol (404)">
    ```json theme={null}
    {
      "error": "404: Failed to fetch price targets for INVALID"
    }
    ```
  </Accordion>

  <Accordion title="No Coverage (404)">
    ```json theme={null}
    {
      "error": "No analyst coverage available",
      "detail": "This stock is not covered by professional analysts"
    }
    ```
  </Accordion>

  <Accordion title="Rate Limited (429)">
    ```json theme={null}
    {
      "error": "Rate limit exceeded",
      "detail": "FMP API limit reached. Please upgrade plan or try again later."
    }
    ```
  </Accordion>
</AccordionGroup>

## MCP Protocol Usage

For AI agents using the Model Context Protocol:

```json theme={null}
{
  "method": "tools/call",
  "params": {
    "name": "fmp_get_price_targets",
    "arguments": {
      "symbol": "AAPL"
    }
  }
}
```

## Related Endpoints

<CardGroup cols={2}>
  <Card title="Analyst Estimates" icon="crystal-ball" href="/api-reference/fmp/analyst-estimates">
    Get earnings and revenue forecasts
  </Card>

  <Card title="Stock Quote" icon="chart-line" href="/api-reference/stock/quote">
    Get current market price for comparison
  </Card>

  <Card title="Upgrades/Downgrades" icon="arrows-up-down" href="/api-reference/fmp/upgrades-downgrades">
    Get recent rating changes
  </Card>

  <Card title="Stock Recommendations" icon="thumbs-up" href="/api-reference/stock/recommendations">
    Get recommendation summaries
  </Card>
</CardGroup>
