RDP search function can be used for this, please see an example below
import refinitiv.dataplatform as rdp rdp.open_desktop_session('DEFAULT_CODE_BOOK_APP_KEY') response = rdp.Search.search( view = rdp.SearchViews.SearchAll, filter = "IsActive eq true and ISIN ne null and SearchAllCategoryv3 eq 'Bonds'", select = "ISIN", top = 10 ) print(response.status) # to check response status response.data.raw # to see the response data
To access each ISIN code, the code below can be used
for _ in response.data.raw["Hits"]: print(_["ISIN"])
The screenshot above is the output from the code, in the output of response.data.raw, you will see that it has parameter Total with a value of about 2 million ISINs, which is a huge number. I'd recommend checking the article Building Search into your Application Workflow - Limits about the limit of the search function and how to handle it, according to this article mentioned,
Search is intended as an interactive tool rather than a facility for bulk processing. To avoid abuse and excessive heavy usage, the service does have upper limits in terms of the data set returned. Heavy usage can be a result of users blasting requests in a very short period of time or if the overall service is experiencing excessive load. Please refer to the reference guide within the playground for more details.
for more detail about the RDP search function, you may check this article Building Search into your Application Workflow
To follow up on the above answer from @raksina.samasiri and the challenge of dealing with limits, as the article points out, you can reduce the hit count by providing additional filtering criteria. For example, you may choose to only look at active bonds, via the IsActive property. Alternatively, the service provides a more granular state flag, via AssetState property. Refer to the Properties/Metadata section.