How do I search a fund by name and get its ISIN?
GET /api/v1/search?q=msci world returns matching share classes with ISIN, issuer, currency, distribution policy and category. Free and not counted; covers funds already loaded.Updated 12 September 2026 · by FundFacts APIShort answer
Call GET https://fundfactsapi.com/api/v1/search?q=<name>&limit=10 with your API key. Each result carries isin, name, issuer, currency, assetClass, shareClass, income (accumulating or distributing), category and dataAsOf, so you can pick the exact share class before spending a request on the full payload. Search is free and not counted. It covers funds that have been loaded into the store; a brand-new ISIN is found by ISIN, not by name.
The call
bashcurl -s "https://fundfactsapi.com/api/v1/search?q=msci%20world&limit=5" -H "Authorization: Bearer $FUNDFACTS_API_KEY"
json{"results": [{ "isin": "IE00B4L5Y983", "name": "iShares Core MSCI World UCITS ETF", "issuer": "iShares", "currency": "USD", "assetClass": "Equities", "shareClass": "USD Acc", "income": "Accumulating", "category": "Global Equity", "dataAsOf": "2026-09-01" }]}
q matches on name, issuer and ISIN prefix; two characters minimum. Results are ordered by relevance.
Picking the right share class
One fund often has a dozen share classes: accumulating and distributing, several currencies, hedged and unhedged, retail and institutional. The search result's currency, shareClass and income fields let you choose before you call /funds/{isin}, which is where the request is counted. Share classes explained covers the naming conventions.
Scope
Search runs over the store, so it finds funds that someone has loaded. Large UCITS ETF ranges and popular funds are there; a niche fund nobody has requested is not, until you look it up by ISIN once. The ISIN is printed on every factsheet, KID and broker page.
In the SDKs and MCP
ff.search("msci world") in the JavaScript and Python clients, and the search_funds tool on the MCP server, call the same endpoint.
Verify it yourself
The demo endpoint returns the live payload for a fund that is already in the store, without a key. Everything on this page can be checked against it.bashcurl -s https://fundfactsapi.com/api/v1/demo/funds/IE00B4L5Y983 | jq '{name, asOf: .data.dataAsOf, ter: .data.headlineMetrics.ter, risk: .data.riskRating, top: .data.topHoldings[:3]}'