How to Access Historical CUSIPs via Eikon API?

Options
Ziye
Ziye Newcomer

I’m currently working with a dataset that includes TR.CUSIP, TR.RIC, and TR.OrganizationId fields from Refinitiv. However, I understand that TR.CUSIP only reflects the current version of the identifier.

To accurately align and merge my data with Compustat records — which have historical CUSIPs (and are therefore more reliable for matching over time) — I would need access to the historical version of CUSIPs for each entity in Refinitiv.

I have consulted with one of your product specialists, who kindly provided the following Python code:

import refinitiv.data as rd
rd.open_session()

df = rd.get_data(
universe = ['GOOGL.O'],
fields = ['TR.CUSIP'],
parameters = {
'SDate': '1950-01-01',
'EDate': '2025-07-23',
'Frq': 'D'
}
)

display(df)

This returns the historical CUSIP values for the selected RIC.

However, I would also like to retrieve the corresponding effective dates for each historical CUSIP — similar to how the Workspace Excel formula returns both the historical CUSIP and the date it was active, as shown in the attached screenshot.

Could you please advise how I can modify this Python code to retrieve both the historical CUSIP and its effective date (start and/or end) using the Eikon Python API?

Thank you very much for all of the guidance. 

Answers

  • Jirapongse
    Jirapongse ✭✭✭✭✭

    @Ziye

    Thank you for reaching out to us.

    The code looks like this:

    df = rd.get_data(
        universe = ['GOOGL.O'],
        fields = ['TR.CUSIP.Date','TR.CUSIP'],
        parameters = {
        'SDate': '1950-01-01',
        'EDate': '2025-07-23',
        'Frq': 'D'
        }
    )
    df
    
    image.png
  • Ziye
    Ziye Newcomer

    Dear Jirapongse,

    Thank you for providing the code — it’s been very helpful.

    May I also ask for clarification on the field TR.CUSIP.Date? Specifically, does this field represent the effective date when a specific CUSIP became active or valid? I wasn’t able to locate this variable in the “Data Item Browser” app within Refinitiv Workspace.

    Additionally, I’d like to confirm whether it’s possible to use a TR.OrganizationId in place of a RIC in the universe parameter to retrieve CUSIP history. I’ve tested the code with TR.OrganizationId, and it appears to work as expected.

    I appreciate your help in understanding this further.

  • Jirapongse
    Jirapongse ✭✭✭✭✭

    @Ziye

    You need to contact the helpdesk team directly via the LSEG Support for the definition of the TR.CUSIP.Date field.

    You can find this sub-field TR.CUSIP.Date field in the Data Item Browser.

    image.png

    Regarding the orgId, please refer to the answer on this discussion.

  • Ziye
    Ziye Newcomer

    Dear Jirapongse,

    Thank you for your response.

    Just to confirm — in the get_data() function, can the universe parameter accept a PermID (i.e., TR.OrganizationId) instead of a RIC?

    For example, is the following usage valid?

    df = rd.get_data(
    universe = ['5030853586'],
    fields = ['TR.CUSIP'],
    parameters = {
    'SDate': '2000-01-01',
    'EDate': '2025-07-25',
    'Frq': 'D'
    }
    )

    I’ve tested the code, and it appears to return results. However, I would appreciate it if you could confirm whether this usage is officially supported, and if not, clarify the correct format for querying based on a PermID.