API Query for Private Company Data

Fisher
Fisher Newcomer
edited June 5 in Eikon Data APIs

I have previously pulled Screener data in R using the API (see code snippet #1), but for some reason I am retrieving zero observations when I do the same using formulas from the Private Companies universe (code snippet #2). Can someone help me get this query working properly?

Code snippet #1:

screener_formula <- 'SCREEN(
U(IN(DEALS)),
TR.MnAHasLeveragedBuyout == true,
IN(TR.MnAStatus, "U", "C"),
TR.MnATargetNation == "US"
)'

fields <- paste(
"TR.MNASDCDealNumber,TR.MnAAnnDate,TR.MnATarget,",
"TR.MnAAcquiror,TR.MnADealValue(Scale=6),TR.MnAHasLeveragedBuyout",
sep = ""
)

df_screen <- eikonapir::get_data(
instruments = screener_formula,
fields = fields
)

Code snippet #2:

screener_formula <- 'SCREEN(
U(IN(Equity(private))/UNV:Private/),
IN(TR.HQCountryCode,"US"),
TR.F.EmpFTEEquivPrdEnd(Period=FY0)<5,
TR.F.TotAssets(Period=FY0,Scale=6)<0.5,
TR.OrganizationStatusCode="Act",
CURN=USD
)'

fields <- paste(
"TR.CommonName,TR.HeadquartersCountry,TR.F.EmpFTEEquivPrdEnd(Period=FY0),",
"TR.F.TotAssets(Period=FY0,Scale=6),TR.F.PretaxROEPct(Period=FY0),",
"TR.F.CAPEXTotPctTotAssets(Period=FY0),TR.F.TotRevAnnized(Period=FI0),",
"TR.F.SalesPerEmp(Period=FY0),TR.ISIN,TR.BusinessSummary,",
"TR.AlsoKnownAsName,TR.FormerlyKnownAsName,TR.DoingBusinessAsName,",
"TR.RegistrationNumber,TR.NAICSSector,TR.NAICSSubsector,TR.RIC,",
"TR.PrivateEquityBacked,TR.OrganizationID,",
"TR.NAICSSectorAllCode,TR.NAICSSubsectorAllCode,",
"TR.NAICSSectorCode,TR.NAICSSubsectorCode",
sep = ""
)

df_screen <- eikonapir::get_data(
instruments = screener_formula,
fields = fields
)

Answers

  • Jirapongse
    Jirapongse ✭✭✭✭✭

    @Fisher

    Thank you for reaching out to us.

    Typically, the Screener formula used in the eikonapir is similar to the Screener formula used in the Workspace Excel.

    We recommend contacting the Workspace Excel support team directly to confirm the formulas or to obtain the correct ones for accessing the necessary data.

  • Thank you. Discussing with the Excel team did not resolve the issue. They directed me back to you as I seem to be using the correct excel formula. Here is what I shared in my last message with them, in case it helps.

    Even a minimal query like the one below produces an empty result, because the get_data() function is failing (despite it working fine for the DEALSMNA universe).

    screener_formula <- 'SCREEN(

      U(IN(Equity(private))/*UNV:Private*/),

      IN(TR.HQCountryCode,"US")

    )'

    fields <- "TR.CommonName"

    df_screen <- eikonapir::get_data(

        instruments = screener_formula,

        fields = fields

    )

  • Jirapongse
    Jirapongse ✭✭✭✭✭

    @FisherFinance1

    Thank you for reaching out to us.

    I checked this query on Excel and found that the number of companies that matches this query is around 4.3 millions companies.

    image.png

    The Eikon Data API has limitations.

    get_data: The limit value is around 10,000 data points for version 1.0.2 and below. No enforced limit for version 1.1.0 and above. However, it still has a server timeout around 300 seconds.

    If the application requests a lot of data, the request will be timed out on the server side. For more information, please refer to this Eikon Data API Usage and Limits Guideline.

  • Thank you for your response. I still don't think we've hit on the issue because the query hits the error very quickly— far less than 300 seconds — and I must have version 1.1.0 or above because the M&A call returns more than 10k observations. My latest attempt restricted the request to only firms with fewer than 5 employees and total assets less than .5 million (should be relatively few firms) and asked for only the Common name field (less chance for weird field specific problems). Yet still returned the error below.

    code:

    screener_formula <- 'SCREEN(
    U(IN(Equity(private))),
    IN(TR.HQCountryCode,"US"),
    TR.F.EmpFTEEquivPrdEnd(Period=FY0)<5,
    TR.F.TotAssets(Period=FY0,Scale=6)<0.5,
    CURN=USD
    )'

    fields <- paste(
    "TR.CommonName")

    df_screen <- eikonapir::get_data(
    instruments = screener_formula,
    fields = fields
    )

    error:

    Error in names(x) <- paste("V", seq_along(x), sep = "") : 'names' attribute [1] must be the same length as the vector [0]

  • Jirapongse
    Jirapongse ✭✭✭✭✭
    edited June 10

    @FisherFinance1

    I ran the code and got the following error.

    image.png

    eikonapir is a community version or Eikon Data API for R. It is not our official library so we don't support it.

    I tested the same query with the LSEG Data Library for Python and it can return data properly.

    screener_exp =  'SCREEN(U(IN(Equity(private))),IN(TR.HQCountryCode,"US"),TR.F.EmpFTEEquivPrdEnd(Period=FY0)<5,TR.F.TotAssets(Period=FY0,Scale=6)<0.5,CURN=USD)'
    data = ld.get_data(
        universe=[screener_exp], 
        fields=['TR.CommonName']
    )
    
    data
    
    image.png

    I believe the issue lies with the eikonapir library, which uses an endpoint that doesn't support requests requiring extensive processing time.