0
$\begingroup$

I heard that ETF's must publicly report their holdings all the time. I have seen that for example on the iShares website I can download the list of holdings as a csv file:

https://www.ishares.com/us/products/239705/ishares-phlx-semiconductor-etf

I imagine that there is a way to access these holdings for free automatically, maybe with some API? I checked the Blackrock API but on the main page, I didn't see any info for ETF's on the 'portfolio analysis' and 'search securities' tabs.

I'm new to interacting with the web, so maybe my best bet would just be to google how to pull downloadables from webpages?

Any thoughts?

$\endgroup$
3
$\begingroup$

No need to scrape the site. That should always be a last resort. The below will import the .csv file you are asking about and save it to a directory of your choice. If you don't want to specify a directory can eliminate dir and any references to it and the file will go straight to your working directory. I usually save data separately hence that option.

from urllib.request import urlretrieve
import pandas as pd

dir = '[Your directory of choice]'

url = 'https://www.ishares.com/us/products/239705/ishares-phlx-semiconductor-etf/\
1467271812596.ajax?fileType=csv&fileName=SOXX_holdings&dataType=fund'

urlretrieve(url, dir + 'SOXX_holdings.csv')

df = pd.read_csv(dir + 'SOXX_holdings.csv', skiprows=10)
print(df.head())

Alternate to above: importing data directly into a pandas dataframe instead of saving it locally by passing url as an argument.

import pandas as pd

url = 'https://www.ishares.com/us/products/239705/ishares-phlx-semiconductor-etf/\
1467271812596.ajax?fileType=csv&fileName=SOXX_holdings&dataType=fund'

df = pd.read_csv(url, skiprows=10)    
print(df.head())

Skipping the first 10 rows and printing the head is just how I wanted to view the data. Lot's of other things you can do from here.

Good luck.

$\endgroup$

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.