How do I look up an ISIN for free?
Three free routes: validate any ISIN's structure and check digit in the browser, search a fund by name to get its ISIN, and resolve a fund ISIN to its name and factsheet on the Free plan. What each covers.Updated 12 September 2026 · by FundFacts APIShort answer
Validate an ISIN for free with the browser-based ISIN validator (format and Luhn check digit, no account). Find a fund's ISIN by name with GET https://fundfactsapi.com/api/v1/search?q=, which is free and unlimited with any key. Resolve a fund ISIN to its name and full factsheet with the Free plan's 15 lookups a month, or the keyless demo endpoint for funds already loaded. For stocks and bonds the ISIN is public on the issuer's and exchange's pages; the fund API only knows funds.
1. Validate
The ISIN validator checks the twelve-character structure (two-letter country code, nine-character NSIN, check digit) and computes the missing check digit. It runs in the browser with no account. The algorithm is Luhn over the digit expansion and is documented on the page.
2. Name → ISIN
bashcurl -s "https://fundfactsapi.com/api/v1/search?q=vanguard%20all-world" -H "Authorization: Bearer $FUNDFACTS_API_KEY" | jq '.results[] | {isin, name, currency, income}'
Search is free and not counted; it lists every loaded share class with currency and distribution policy. A Free key takes a minute to get.
3. ISIN → fund
GET https://fundfactsapi.com/api/v1/funds/{isin} returns the name and the full factsheet (15 lookups a month free). Without a key, GET https://fundfactsapi.com/api/v1/demo/funds/{isin} returns funds that are already in the store, 30 calls a minute per IP.
bashcurl -s https://fundfactsapi.com/api/v1/demo/funds/IE00B4L5Y983 | jq '{name, structure: .data.structure, currency: .data.keyFacts.currency}'
What this does not cover
Stocks, bonds and structured products: the fund API returns 404 fund_not_found for them. Their ISINs are printed on the exchange's instrument page and in the issuer's documents. ISIN vs ticker vs SEDOL vs WKN vs CUSIP explains how the identifiers relate.
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]}'