Sign up & Get Data

Symbol Change History API

When a publicly traded company changes its ticker symbol — due to a rebrand, merger, SPAC transaction, or corporate restructuring — the old symbol stops working and a new one takes its place. The Symbol Change History API tracks these changes so you can keep your portfolios, watchlists, and historical data in sync.

URL
cURL
PHP
Python
R
Chat GPT
https://eodhd.com/api/symbol-change-history?from=2026-01-01&api_token={YOUR_API_TOKEN}&fmt=json
curl --location "https://eodhd.com/api/symbol-change-history?from=2026-01-01&api_token={YOUR_API_TOKEN}&fmt=json"
$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://eodhd.com/api/symbol-change-history?from=2026-01-01&api_token={YOUR_API_TOKEN}&fmt=json',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'GET',
));

$data = curl_exec($curl);
curl_close($curl);

try {
    $data = json_decode($data, true, 512, JSON_THROW_ON_ERROR);
    var_dump($data);
} catch (Exception $e) {
    echo 'Error. '.$e->getMessage();
}
import requests

url = f'https://eodhd.com/api/symbol-change-history?from=2026-01-01&api_token={YOUR_API_TOKEN}&fmt=json'
data = requests.get(url).json()

print(data)
library(httr)
library(jsonlite)

url <- 'https://eodhd.com/api/symbol-change-history?from=2026-01-01&api_token={YOUR_API_TOKEN}&fmt=json'
response <- GET(url)

if (http_type(response) == "application/json") {
    content <- content(response, "text", encoding = "UTF-8")
    cat(content)
} else {
    cat("Error while receiving data\n")
}
New to coding? Our ChatGPT assistant can generate code in any language tailored to our API. Simply describe how you want to use our data, and get a working piece of code. Don’t forget to replace the API token with your own.

Try it now (it's free)!

How to use it (YouTube)

The data starts from 2022-07-22 and is updated daily. Only US exchanges are supported for the moment.

The API is available under the All World Extended and All-In-One packages.

Parameters

ParameterRequiredDescription
api_tokenYesYour API key
fromNoStart date in YYYY-MM-DD format. Default: 12 months before current date
toNoEnd date in YYYY-MM-DD format. Default: current date
fmtNoResponse format: json or csv. Default: csv

Response Fields

FieldTypeDescription
exchangestringExchange code (currently always US)
old_symbolstringThe previous ticker symbol
new_symbolstringThe new ticker symbol
company_namestringFull company name at the time of change
effectivestringDate when the change took effect (YYYY-MM-DD)

Example Response

[
  {
    "exchange": "US",
    "old_symbol": "BITF",
    "new_symbol": "KEEL",
    "company_name": "Keel Infrastructure Corp. Common Stock",
    "effective": "2026-04-06"
  },
  {
    "exchange": "US",
    "old_symbol": "NBY",
    "new_symbol": "SDEV",
    "company_name": "Stablecoin Development Corporation Common Stock",
    "effective": "2026-04-06"
  },
  {
    "exchange": "US",
    "old_symbol": "ACTD",
    "new_symbol": "OPAL",
    "company_name": "OPAL Fuels Inc. Class A Common Stock",
    "effective": "2022-07-22"
  }
]

Common Use Cases

  • Portfolio reconciliation – detect when a held ticker was renamed and update your records automatically
  • Historical data continuity – link old and new symbols to build unbroken price histories across renames
  • SPAC tracking – monitor when blank-check companies complete mergers and start trading under new tickers
  • Daily sync – poll with from=yesterday to catch any changes since your last update

Data Coverage

YearSymbol Changes
2022 (from Jul 22)137
2023261
2024237
2025291
2026 (YTD)93

On average, US exchanges see around 250 ticker changes per year.

Sign up & Get Data