---
title: "Fetch historical OHLCV price series for any ticker: stocks (AAPL, SAP.DE, 7203.T), ETFs, indices, commodities (GC=F for"
method: POST
path: "/api/v1/call/historical_price_series"
tags: ["expertise"]
---

# Fetch historical OHLCV price series for any ticker: stocks (AAPL, SAP.DE, 7203.T), ETFs, indices, commodities (GC=F for

`POST /api/v1/call/historical_price_series`

## Request

- Base URL: `https://mcp.gapup.io`
- URL: `https://mcp.gapup.io/api/v1/call/historical_price_series`
- Auth: HTTP bearer

Fetch historical OHLCV price series for any ticker: stocks (AAPL, SAP.DE, 7203.T), ETFs, indices, commodities (GC=F for gold) or cryptocurrencies (BTC-USD). Returns a full date-indexed series of open/high/low/close/volume plus pre-computed statistics: total return, annualised return (CAGR), annualised volatility, max drawdown and Sharpe estimate (rf=4%). Automatically detects crypto tickers (→ CoinGecko) vs traditional assets (→ Yahoo Finance primary, Stooq fallback). Adjusts for dividends and splits when adjusted=true (default). Use cases: backtesting, factor analysis, performance attribution, charting, financial modelling. Sources: Yahoo Finance, CoinGecko, Stooq. All keyless. Optional env: AICI_RESEARCH_PROXY_URL for Bright Data routing (lifts Yahoo 429), TWELVE_DATA_API_KEY for higher Twelve Data quota.

## Request body

- object
  - `ticker` string, required: Yahoo Finance ticker symbol. Examples: AAPL (US stock), SAP.DE (Frankfurt), 7203.T (Tokyo), BTC-USD (Bitcoin), GC=F (gold futures), ^GSPC (S&P 500).
  - `interval` '1d' | '1wk' | '1mo': Bar interval. Default: 1d (daily).
  - `period` '1mo' | '3mo' | '6mo' | '1y' | '2y' | '5y' | '10y' | 'max': Look-back period. Default: 1y.
  - `adjusted` boolean: Adjust close prices for dividends and splits. Default: true.
  - `metrics` string[]: Subset of fields to include (informational — all fields always returned).
  - `async` boolean: If true, returns a job_id immediately (<200ms) instead of waiting for the result. Poll the result with job_result(job_id). Use for slow tools to avoid client timeouts.

## Response `200`

Tool result

- object
  - `tool` string
  - `result` object
    - `ticker` string, required
    - `resolved_exchange` string
    - `currency` string, required
    - `interval` string, required
    - `period` string, required
    - `data_points` number, required
    - `series` object[], required
      - `date` string, required
      - `open` number
      - `high` number
      - `low` number
      - `close` number, required
      - `adjusted_close` number
      - `volume` number
    - `stats` object, required
      - `return_total_pct` number, required
      - `return_annualised_pct` number, required
      - `volatility_annualised_pct` number, required
      - `max_drawdown_pct` number, required
      - `sharpe_estimate` unknown
      - `days_returned` number, required
    - `splits_detected` object[]
      - `date` string, required
      - `ratio` number, required
    - `dividends_detected` object[]
      - `date` string, required
      - `amount` number, required
      - `yield_pct` number
    - `sources` object[], required
      - `name` string, required
      - `url` string, required
      - `status` 'retrieved' | 'partial' | 'unavailable', required
    - `quality_score` number, required
    - `status` 'partial' | 'final' | 'failed', required
  - `request_id` string
  - `source` 'rest-api'
  - `ms` number

## Other responses

- `400`: Invalid arguments
- `401`: Unauthorized
- `402`: Payment Required — pay via x402 (USDC on Base) then retry with X-Payment header
- `404`: Tool not found
- `429`: Rate limited
- `500`: Internal error

---

[API](https://skmtc.dev/gapup/apis/gapup-mcp-rest-api.md) · [All operations](https://skmtc.dev/gapup/apis/gapup-mcp-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/gapup/apis/gapup-mcp-rest-api/revisions/afb9da3b98f4?raw)
