BlackRock APIblackrock.com ↗
Access iShares ETF data including holdings, performance, fees, sector breakdowns, and fund characteristics for all US-listed iShares products.
What is the BlackRock API?
The BlackRock iShares API exposes 10 endpoints covering the full US-listed iShares ETF catalog — fund listings, position-level holdings, annualized performance, fees, and sector allocations. get_etf_holdings returns each position's ticker, weight, market value, shares, CUSIP, ISIN, SEDOL, and sector. get_etf_list returns the complete screener dataset with expense ratios, net assets, and YTD returns across every available iShares product.
curl -X GET 'https://api.parse.bot/scraper/99f6f8be-3a27-4bc8-92de-7e611b0076fe/get_etf_list?limit=0' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace blackrock-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.iShares_ETF_API import IShares, EtfNotFound
ishares = IShares()
# Search for bond ETFs by keyword
for etf_summary in ishares.etfs.search(query="S&P 500", limit=3):
print(etf_summary.ticker, etf_summary.fund_name, etf_summary.product_id)
# Get detailed overview for a specific ETF
ivv = ishares.etfs.get(ticker="IVV")
print(ivv.ticker, ivv.fund_name, ivv.nav, ivv.expense_ratio, ivv.net_assets)
# Drill into holdings for that ETF
holdings_result = ivv.holdings()
print(holdings_result.as_of_date, holdings_result.total_holdings)
for holding in holdings_result.holdings[:3]:
print(holding.name, holding.weight, holding.sector)
# Get annualized performance metrics
perf = ivv.performance()
print(perf.performance.ytd, perf.performance.one_year, perf.performance.five_year)
# Get sector breakdown
sectors = ivv.sector_breakdown()
for sw in sectors.sectors[:3]:
print(sw.sector, sw.weight)
# Typed error handling for an invalid ticker
try:
ishares.etfs.get(ticker="ZZZZZ")
except EtfNotFound as exc:
print(f"ETF not found: {exc.ticker}")
print("exercised: etfs.search / etfs.get / holdings / performance / sector_breakdown / EtfNotFound")
Retrieve the full list of iShares ETFs with ticker, fund name, inception date, expense ratios, net assets, yield, and YTD return. Returns all US-listed iShares products from the screener. Use limit to cap the number of results.
| Param | Type | Description |
|---|---|---|
| limit | integer | Max results to return (0 for all). |
{
"type": "object",
"fields": {
"items": "array of ETF summary objects with ticker, fund_name, product_id, inception_date, gross_expense_ratio, net_expense_ratio, net_assets, yield_12m, ytd_return, asset_class, product_page_url"
},
"sample": {
"data": {
"items": [
{
"ticker": "MCHI",
"fund_name": "iShares MSCI China ETF",
"yield_12m": 2.302170683094764,
"net_assets": 6255359342.37,
"product_id": "239619",
"ytd_return": -8.569072,
"asset_class": "Equity",
"inception_date": "Mar 29, 2011",
"product_page_url": "/us/products/239619/ishares-msci-china-etf",
"net_expense_ratio": 0.59,
"gross_expense_ratio": 0.59
}
]
},
"status": "success"
}
}About the BlackRock API
ETF Discovery and Search
get_etf_list returns the full catalog of US-listed iShares ETFs, including ticker, fund_name, product_id, inception_date, gross_expense_ratio, net_expense_ratio, and net_asset values. Pass a limit integer to cap results, or set it to 0 to retrieve everything. search_etfs accepts a query string and performs a case-insensitive substring match against both ticker symbol and fund name, returning ticker, fund_name, product_id, and product_page_url for each match. get_broad_market_index_etfs narrows the catalog to major index trackers — S&P 500, Russell 2000, MSCI World, and Aggregate Bond funds — without requiring any input.
Holdings and Sector Data
get_etf_holdings accepts a ticker and an optional as_of_date in YYYYMMDD format. When as_of_date is omitted, the endpoint returns the most recent available snapshot. Each position object includes name, sector, asset_class, market_value, weight, shares, cusip, isin, sedol, price, and exchange. The response also surfaces total_holdings as an integer count. get_etf_holdings_download returns the same data structure and is useful when you want holdings in a single programmatic call without building around the streaming behavior of the primary endpoint. get_etf_sector_breakdown aggregates those holdings by sector and returns a sectors array sorted by weight descending — useful for allocation analysis without post-processing the full position list.
Performance and Fund Characteristics
get_etf_performance returns annualized return figures for ytd, 1y, 3y, 5y, 10y, and since_inception, all sourced from NAV returns. Any period without sufficient history returns null. get_etf_overview gives a fast single-call summary: nav, yield, net_assets, ytd_return, asset_class, expense_ratio, and market_region. get_etf_key_facts adds pe_ratio, pb_ratio, beta, and dividend_yield; equity funds typically populate these, while fixed-income funds may return null for ratio fields.
Fee Details
get_etf_fees isolates fee data into three fields: management_fee, net_expense_ratio, and gross_expense_ratio. This is useful when comparing the cost differential between gross and net ratios across fund families or when building fee-screening tools independently of the broader screener data.
The BlackRock API is a managed, monitored endpoint for blackrock.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when blackrock.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official blackrock.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a fund screener that filters iShares ETFs by expense ratio, net assets, and YTD return using fields from
get_etf_list. - Compare sector weightings across multiple ETFs by calling
get_etf_sector_breakdownfor each ticker and diffing the resultingsectorsarrays. - Track historical portfolio drift by requesting holdings at multiple
as_of_datevalues viaget_etf_holdingsand comparing position weights over time. - Identify equity ETFs trading at a discount to peers by ranking
pe_ratioandpb_ratiovalues returned byget_etf_key_facts. - Monitor fee differentials between gross and net expense ratios across broad market index funds using
get_etf_feescombined withget_broad_market_index_etfs. - Enrich a portfolio analytics tool with CUSIP, ISIN, and SEDOL identifiers for each holding via the position objects in
get_etf_holdings. - Autocomplete ETF search in a financial application using
search_etfswith partial ticker or name strings.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does BlackRock provide an official developer API for iShares data?+
What identifiers does `get_etf_holdings` return for each position?+
get_etf_holdings returns cusip, isin, and sedol alongside ticker, name, sector, asset_class, market_value, weight, shares, price, and exchange for each position. Not every holding will have all three identifier types populated — fixed-income and derivative positions sometimes omit one or more.Does the API cover iShares ETFs listed outside the United States?+
How far back does historical holdings data go via `as_of_date`?+
as_of_date always returns the latest available snapshot.Does the API include distribution history or dividend payment schedules?+
get_etf_key_facts and get_etf_overview) but does not return a breakdown of individual distribution events, ex-dates, or payment amounts. You can fork the API on Parse and revise it to add an endpoint pulling per-distribution records for each fund.