ISIN, LEI, CIK, FIGI & Ticker Resolver API (crosswalk)
Coming soon to the StoreOne identifier in, the whole crosswalk out: give an ISIN, LEI, SEC CIK, ticker, FIGI or company name and get the issuer's legal name, LEI, CIK, tickers per exchange, ISINs, FIGIs, CFI code and the EU trading venues, each value with its source URL. Built for AI agents and people who join datasets keyed by different identifiers (KYC, portfolio data, filings research).
Pricing (pay per event): $0.002 per resolved identifier (resolve). A malformed identifier (wrong ISIN/LEI/FIGI check digit), an identifier nobody knows, or a failed source costs nothing.
Questions agents ask
- “What is the LEI, CIK and home-market FIGI of ISIN NL0010273215, and on how many EU venues does it trade? Cite the sources.”
Example
Input
{ "identifier": "US0378331005" }Output
{
"schema_version": "1",
"query": "NL0010273215",
"query_type": "isin",
"exchange_filter": null,
"issuer_name": "ASML Holding N.V.",
"issuer_name_latin": null,
"lei": "724500Y6DUVHQD6OXN27",
"lei_status": "ISSUED",
"issuer_country": "NL",
"issuer_jurisdiction": "NL",
"cik": "937966",
"tickers": [
{ "ticker": "ASML", "exchange": "Nasdaq", "source": "SEC", "composite_figi": null },
{ "ticker": "ASMLF", "exchange": "OTC", "source": "SEC", "composite_figi": null },
{ "ticker": "ASML", "exchange": "NA", "source": "OpenFIGI", "composite_figi": "BBG000C1HSN8" },
{ "ticker": "ASME", "exchange": "GR", "source": "OpenFIGI", "composite_figi": "BBG000H4D9Z0" },
{ "ticker": "ASMLF", "exchange": "US", "source": "OpenFIGI", "composite_figi": "BBG000MW4W72" }
],
"isin": "NL0010273215",
"issuer_isins": ["NL0010273215", "USN070592100"],
"issuer_isin_count": 2,
"composite_figi": "BBG000C1HSN8",
"share_class_figi": "BBG001S7Q066",
"security_type": "Common Stock",
"instrument_name": "ASML HOLDING",
"cfi_code": "ESVUFN",
"currency": "EUR",
"eu_trading_venues": [
{ "mic": "AQEA", "trading_start": "2020-11-12" },
{ "mic": "XAMS", "trading_start": "2012-11-26" },
{ "mic": "XETB", "trading_start": "2012-11-27" }
],
"eu_venue_count": 48,
"eu_venues_terminated_count": 37,
"match_confidence": 1.0,
"match_note": "linked by identifiers only",
"alternatives": [],
"sources": {
"cik": "https://www.sec.gov/files/company_tickers_exchange.json",
"figi": "https://www.openfigi.com/id/BBG000C1HSN8",
"instrument": "https://registers.esma.europa.eu/solr/esma_registers_firds/select?q=isin%3ANL0010273215&fq=latest_received_flag%3A1&rows=500&fl=isin%2Cmic%2Clei%2Cgnr_full_name%2Cgnr_cfi_code%2Cgnr_notional_curr_code%2Cmrkt_trdng_start_date%2Cmrkt_trdng_trmination_date%2Cstatus_label&wt=json",
"issuer_isins": "https://api.gleif.org/api/v1/lei-records/724500Y6DUVHQD6OXN27/isins?page%5Bsize%5D=20",
"issuer_name": "https://api.gleif.org/api/v1/lei-records?filter%5Bisin%5D=NL0010273215",
"lei": "https://api.gleif.org/api/v1/lei-records?filter%5Bisin%5D=NL0010273215",
"tickers": "https://data.sec.gov/submissions/CIK0000937966.json"
},
"source_url": "https://api.gleif.org/api/v1/lei-records?filter%5Bisin%5D=NL0010273215",
"provided_by": "Bosco Labs (boscolabs.dev)",
"notices": [
"LEI data: GLEIF, CC0. No endorsement by GLEIF is implied.",
"FIGIs: OpenFIGI (public domain); security descriptions as is.",
"Instrument data (cfi_code, instrument_name, currency, eu_trading_venues) come from ESMA's FIRDS register and may be obtained free of charge through the ESMA website: https://registers.esma.europa.eu/publication/searchRegister?core=esma_registers_firds. ESMA does not endorse this service."
],
"warnings": [],
"retrieved_at": "2026-11-06T08:39:04+00:00",
"duration_seconds": 0.67
}What you get
| Field | Type | Meaning |
|---|---|---|
schema_version | string | Output schema version. |
query | string | The identifier as given. |
query_type | string | How it was read: isin, lei, cik, ticker, figi or name. |
exchange_filter | string | null | The exchange given for a ticker, else null. |
issuer_name | string | null | Issuer legal name: GLEIF legal name, else SEC name, else OpenFIGI name. |
issuer_name_latin | string | null | English or transliterated GLEIF name when the legal name is not in Latin script (e.g. Japanese), else null. |
lei | string | null | Issuer Legal Entity Identifier (ISO 17442), e.g. HWUPKR0MPOU8FGXBT394. |
lei_status | string | null | GLEIF registration status: ISSUED, LAPSED, RETIRED, ... |
issuer_country | string | null | Country of the issuer's legal address (ISO 3166 alpha-2), from GLEIF. |
issuer_jurisdiction | string | null | Legal jurisdiction from GLEIF, e.g. US-CA or NL. |
cik | string | null | SEC Central Index Key (no leading zeros) if the issuer files with the SEC, else null. |
tickers | array | Tickers with exchange: source SEC (exchange = SEC name, e.g. Nasdaq) and source OpenFIGI (exchange = Bloomberg composite code, e.g. US, GR, LN; composite_figi set), up to 10 OpenFIGI listings. |
isin | string | null | The instrument ISIN: the one asked for, else the issuer's main share ISIN (equity shares on most EU venues in FIRDS). |
issuer_isins | array | Up to 20 ISINs GLEIF maps to the issuer's LEI (shares, bonds, other securities). |
issuer_isin_count | integer | null | Total ISINs GLEIF maps to the LEI (null if no LEI). |
composite_figi | string | null | Composite (country-level) FIGI of the instrument's home or US listing, e.g. BBG000B9XRY4. |
share_class_figi | string | null | Share-class FIGI (global across countries), e.g. BBG001S5N8V8. |
security_type | string | null | OpenFIGI security type, e.g. Common Stock, Depositary Receipt, Corp. |
instrument_name | string | null | Instrument name as most often reported to FIRDS, else OpenFIGI's name. |
cfi_code | string | null | ISO 10962 CFI code from FIRDS, e.g. ESVUFR (equity, common share). |
currency | string | null | Notional currency from FIRDS (ISO 4217). |
eu_trading_venues | array | EU/EEA trading venues (MIC and first trading date) where FIRDS lists the instrument as currently traded, by MIC, up to 100. |
eu_venue_count | integer | null | Number of current EU venues in FIRDS (null if FIRDS was not reached or no ISIN is known). |
eu_venues_terminated_count | integer | null | Venues where trading has ended, per FIRDS. |
match_confidence | number | 1.0 when every link is by identifier; lower when a link was made by name (0.9 exact name and jurisdiction, 0.6 ambiguous). |
match_note | string | How the identifiers were linked, in words. |
alternatives | array | Other candidate issuers (name, lei, isin, cik) when a name was matched. |
sources | object | Source URL per value: lei, cik, isin, issuer_isins, issuer_name, tickers, figi, instrument (FIRDS query). |
source_url | string | null | Main source: the GLEIF record, else SEC, FIRDS or OpenFIGI. |
provided_by | string | Bosco Labs (boscolabs.dev). |
notices | array | Licence and attribution notices (GLEIF CC0, OpenFIGI, ESMA free-of-charge notice). |
warnings | array | Sources that failed or were rate-limited, and ambiguous matches, in plain words. |
retrieved_at | string | ISO-8601 UTC time of the lookup. |
duration_seconds | number | Time the lookup took. |
Use with AI agents (MCP)
Add this URL to your MCP client (Claude, Cursor, VS Code, ...) to load the Actor as a tool through the Apify hosted MCP server. It signs you in with OAuth or accepts Authorization: Bearer <APIFY_TOKEN>. It works once the Actor is live on the Apify Store.
https://mcp.apify.com?tools=bosco_labs/identifier-resolver
For “What is the LEI, CIK and home-market FIGI of ISIN NL0010273215, and on how many EU venues does it trade? Cite the sources.” the agent passes:
{ "identifier": "NL0010273215" }
one small row (typically 3-8 KB), stable snake_case fields, null for unknown, a source URL per value. A resolve takes about 0.5-3 seconds (measured 0.3-1.7 s for ISINs, LEIs and CIKs; up to 6 s for names). Cost: $0.002 per resolved identifier, billed to the Apify account the MCP server is signed in with.
Or call the Apify API: POST https://api.apify.com/v2/acts/bosco_labs~identifier-resolver/run-sync-get-dataset-items with the input as JSON body. Cost: $0.002 per resolved identifier.
HTTP API
Also on the Bosco Labs HTTP API (beta, test mode): same input and same rows as the Actor, $0.002 per identifier resolved from prepaid credits (max 1 identifier per call). Get a key with a $0.50 free trial; see prices and limits.
curl https://api.boscolabs.dev/v1/identifier-resolver \
-H "Authorization: Bearer $BOSCO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"identifier": "NL0010273215"}'
Input fields
| Field | Type | Meaning |
|---|---|---|
identifier | string (required) | ONE identifier of a security or company: an ISIN ("US0378331005"), an LEI ("HWUPKR0MPOU8FGXBT394"), an SEC CIK ("320193"), a ticker ("AAPL", "BRK.B"; add exchange for non-US markets), a FIGI ("BBG000B9XRY4") or a company name ("Siemens AG"). The type is detected automatically; ISIN, LEI and FIGI check digits are verified before any lookup, and a bad one fails in seconds with the correct digit, at no charge. Required. |
idType | string | What the identifier is. Default "auto": digits only = CIK, 20 characters = LEI, 12 characters = ISIN or FIGI (by check digit), up to 6 characters without spaces = ticker (read as a name if no US ticker matches), anything else = company name. Set it for short names; numeric tickers just need exchange ("7203" with "JT"). |
exchange | string | Only for a ticker outside the US: a Bloomberg exchange code ("LN" London, "GR" Germany, "NA" Amsterdam, "FP" Paris, "JT" Tokyo, "SW" Swiss) or a 4-letter MIC ("XLON", "XAMS"). Empty (default) = US tickers from the SEC's list. With an exchange, an all-digit identifier is read as a ticker ("7974" + "JT" = Nintendo), not a CIK. |
Sources, licence and limits
Where does the data come from? Four official or openly licensed sources, called live: GLEIF (LEI records and the ISIN-to-LEI map), OpenFIGI (FIGIs and listings), the SEC (CIKs and US tickers) and ESMA's FIRDS register (CFI code, instrument name, EU trading venues).
Can I reuse the output? The sources allow it, with these terms, quoted: - GLEIF: "The data available through the Access Service are provided under the CC0 licence". You must not create the impression that the data or this service are "provided or supported or authorized" by GLEIF. GLEIF calls its ISIN-to-LEI files "open source" and names no separate licence for them; this Actor reads them through the same API. - OpenFIGI: Bloomberg "hereby dedicates FIGI Identifiers to the public domain", including "redistribution of the FIGI Identifiers to your customers". Names, tickers and exchange codes come with OpenFIGI's "as is" disclaimer. - SEC: "Information presented on sec.gov is considered public information and may be copied or further distributed". - ESMA: reproduction is "authorised ... provided the source is acknowledged", and where it is sold "the publisher must inform buyers that it may be obtained free of charge through ESMA website". So: the FIRDS fields in this output are available free of charge from ESMA at https://registers.esma.europa.eu/publication/searchRegister?core=esma_registers_firds. You pay for the join, the validation and the speed, not for ESMA's data. ESMA does not endorse this service.
What is not covered? CUSIP and SEDOL (licensed identifiers; not used or returned). FIRDS covers only instruments admitted to or traded on EU/EEA venues, so a US-only small cap has no CFI code or venues. CIKs exist only for SEC registrants. FIRDS is searched by ISIN, LEI and share name only (one query each, no bulk download); derivatives with thousands of venue records are cut at 500 records.
How good is name matching? Best with the full legal name ("Siemens AG", "Toyota Motor Corporation"). A name is matched to an exact SEC company name, else to the issuer whose shares carry that name on the most EU venues, else to an exact GLEIF name. match_confidence, match_note and alternatives say how sure the match is; for certainty pass an ISIN or LEI.
What if OpenFIGI is busy? OpenFIGI allows 25 mapping requests a minute per caller. Answers are cached for 6 hours. When the limit is hit, the row still comes back with the GLEIF, SEC and FIRDS fields, FIGI fields null and a warning saying when to retry. A FIGI or a non-US ticker can only be resolved through OpenFIGI, so those fail (no charge) while it is limited.
How fresh is it? Live on every call: GLEIF updates daily, FIRDS publishes daily, the SEC ticker list is cached for at most 6 hours per run.
Personal data? None. GLEIF records of sole proprietors (natural persons) are never used for name matches.
Is this investment advice? No. It returns identifiers and reference data as the sources publish them.