How to pull all public company actual revenue by country and industry in Codebook

Hello,
I have tried this script in Codebook but get an error. Can you help me adjust the code to work?
end goal: dataset for all public companies (~68k companies) with columns Country | Industry | Actual Revenue Q1'25
We would love to also have more quarters of historical data as well.
Here is the current code
import lseg.data as ld
from lseg.data.discovery import Screener
from lseg.data.discovery import Peers
import datetime
from IPython.display import display, clear_output
ld.open_session()
Define the screener queryquery = Screener(
'U(IN(Equity(active,public,primary))/UNV:Public/), TR.CompanyMarketCap(Scale=3)>=1, CURN=USD'
)
fields = [
'TR.CommonName',
'TR.HeadquartersCountry',
'TR.RevenueActValue(SDate=0,EDate=-3,Period=FQ0,Frq=FQ)'
]
params = {'curn': 'USD'}
Get datadf = ld.get_data(query, fields, params)
Remove duplicates based on company namedf = df.drop_duplicates(subset='TR.CommonName')
Display the resultdisplay(df)
Here is the current error
---------------------------------------------------------------------------LDError Traceback (most recent call last)/tmp/ipykernel_140/1493526482.py in <module> 24 25 # Get data---> 26 df = ld.get_data(query, fields, params) 27 28 # Remove duplicates based on company name/opt/conda/lib/python3.8/site-packages/lseg/data/_access_layer/get_data_func.py in get_data(universe, fields, parameters, header_type) 85 86 if can_use_eikon_approach:---> 87 return _get_data_eikon_approach(universe, fields, parameters, header_type, session) 88 89 return _get_data(universe, fields, parameters, header_type, session)/opt/conda/lib/python3.8/site-packages/lseg/data/_access_layer/get_data_func.py in _get_data_eikon_approach(universe, fields, parameters, header_type, session) 136 exceptions.append(exception_msg) 137 --> 138 raise_if_all(exceptions) 139 140 adc_data = ADCContainerEikonApproach(adc_raw, fields)/opt/conda/lib/python3.8/site-packages/lseg/data/_access_layer/get_data_func.py in raise_if_all(exceptions) 92 def raise_if_all(exceptions: List[str]): 93 if exceptions and all(exceptions):---> 94 raise LDError(message="\n\n".join(exceptions)) 95 96
Answers
-
Thank you for reaching out to us.
You can try this one.
screener_expression = 'SCREEN(U(IN(Equity(active,public,primary))), TR.CompanyMarketCap(Scale=3)>=1, CURN=USD)' fields = [ 'TR.CommonName', 'TR.HeadquartersCountry', 'TR.RevenueActValue(SDate=0,EDate=-3,Period=FQ0,Frq=FQ)' ] params = {'curn': 'USD'} df = ld.get_data(screener_expression, fields, params) df
However, the response contains 110,797 entries.
When requesting a large volume of data, the request may time out. To avoid this, consider adding additional filters to the screener expression to reduce the size of the response.
0 -
Thank you! I got this to run. How do I add a column for the quarter that each row is associated with? e.g. Q2'25, Q1'25, Q4'24 etc
0 -
Also, when I pull this I get around 13k companies with actual revenue for last quarter (I think Q1'25). What does it mean for all the companies that have no actual revenue number
0 -
You may need to add this 'TR.RevenueActValue(SDate=0,EDate=-3,Period=FQ0,Frq=FQ).fperiod' field.
screener_expression = 'SCREEN(U(IN(Equity(active,public,primary))), TR.CompanyMarketCap(Scale=3)>=1, CURN=USD)' fields = [ 'TR.CommonName', 'TR.HeadquartersCountry', 'TR.RevenueActValue(SDate=0,EDate=-3,Period=FQ0,Frq=FQ).fperiod', 'TR.RevenueActValue(SDate=0,EDate=-3,Period=FQ0,Frq=FQ)' ] params = {'curn': 'USD'} df = ld.get_data(screener_expression, fields, params) df
For actual revenue data, please contact the Helpdesk team directly via LSEG Support and request the relevant TR.xxx fields. Once you receive them, you can include those fields in the fields parameter to retrieve the required data.
Please include the URL of this discussion in your raised question to prevent it from being redirected back to this Q&A forum.
0
Categories
- All Categories
- 3 Polls
- 6 AHS
- 37 Alpha
- 167 App Studio
- 6 Block Chain
- 4 Bot Platform
- 18 Connected Risk APIs
- 47 Data Fusion
- 34 Data Model Discovery
- 707 Datastream
- 1.5K DSS
- 633 Eikon COM
- 5.2K Eikon Data APIs
- 15 Electronic Trading
- 1 Generic FIX
- 7 Local Bank Node API
- 7 Trading API
- 3K Elektron
- 1.5K EMA
- 260 ETA
- 571 WebSocket API
- 41 FX Venues
- 16 FX Market Data
- 2 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 26 Messenger Bot
- 4 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 60 Open Calais
- 284 Open PermID
- 47 Entity Search
- 2 Org ID
- 1 PAM
- PAM - Logging
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 25 RDMS
- 2.2K Refinitiv Data Platform
- 17 CFS Bulk File/TM3
- 904 Refinitiv Data Platform Libraries
- 5 LSEG Due Diligence
- 1 LSEG Due Diligence Portal API
- 4 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.2K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 12 World-Check Customer Risk Screener
- 1K World-Check One
- 46 World-Check One Zero Footprint
- 45 Side by Side Integration API
- 2 Test Space
- 3 Thomson One Smart
- 10 TR Knowledge Graph
- 151 Transactions
- 143 REDI API
- 1.8K TREP APIs
- 4 CAT
- 27 DACS Station
- 126 Open DACS
- 1.1K RFA
- 108 UPA
- 197 TREP Infrastructure
- 232 TRKD
- 921 TRTH
- 5 Velocity Analytics
- 9 Wealth Management Web Services
- 106 Workspace SDK
- 11 Element Framework
- 5 Grid
- 19 World-Check Data File
- 1 Yield Book Analytics
- 48 中文论坛