Bosco Labs

Tools › Finance & SEC

ISIN, LEI, CIK, FIGI & Ticker Resolver API (crosswalk)

Coming soon to the Store

One 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).

Price$0.002 per resolved identifier
DomainFinance & SEC
Call itApify API, MCP or HTTP API

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.

Coming soon to the Apify StoreAsk for early access

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

FieldTypeMeaning
schema_versionstringOutput schema version.
querystringThe identifier as given.
query_typestringHow it was read: isin, lei, cik, ticker, figi or name.
exchange_filterstring | nullThe exchange given for a ticker, else null.
issuer_namestring | nullIssuer legal name: GLEIF legal name, else SEC name, else OpenFIGI name.
issuer_name_latinstring | nullEnglish or transliterated GLEIF name when the legal name is not in Latin script (e.g. Japanese), else null.
leistring | nullIssuer Legal Entity Identifier (ISO 17442), e.g. HWUPKR0MPOU8FGXBT394.
lei_statusstring | nullGLEIF registration status: ISSUED, LAPSED, RETIRED, ...
issuer_countrystring | nullCountry of the issuer's legal address (ISO 3166 alpha-2), from GLEIF.
issuer_jurisdictionstring | nullLegal jurisdiction from GLEIF, e.g. US-CA or NL.
cikstring | nullSEC Central Index Key (no leading zeros) if the issuer files with the SEC, else null.
tickersarrayTickers 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.
isinstring | nullThe instrument ISIN: the one asked for, else the issuer's main share ISIN (equity shares on most EU venues in FIRDS).
issuer_isinsarrayUp to 20 ISINs GLEIF maps to the issuer's LEI (shares, bonds, other securities).
issuer_isin_countinteger | nullTotal ISINs GLEIF maps to the LEI (null if no LEI).
composite_figistring | nullComposite (country-level) FIGI of the instrument's home or US listing, e.g. BBG000B9XRY4.
share_class_figistring | nullShare-class FIGI (global across countries), e.g. BBG001S5N8V8.
security_typestring | nullOpenFIGI security type, e.g. Common Stock, Depositary Receipt, Corp.
instrument_namestring | nullInstrument name as most often reported to FIRDS, else OpenFIGI's name.
cfi_codestring | nullISO 10962 CFI code from FIRDS, e.g. ESVUFR (equity, common share).
currencystring | nullNotional currency from FIRDS (ISO 4217).
eu_trading_venuesarrayEU/EEA trading venues (MIC and first trading date) where FIRDS lists the instrument as currently traded, by MIC, up to 100.
eu_venue_countinteger | nullNumber of current EU venues in FIRDS (null if FIRDS was not reached or no ISIN is known).
eu_venues_terminated_countinteger | nullVenues where trading has ended, per FIRDS.
match_confidencenumber1.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_notestringHow the identifiers were linked, in words.
alternativesarrayOther candidate issuers (name, lei, isin, cik) when a name was matched.
sourcesobjectSource URL per value: lei, cik, isin, issuer_isins, issuer_name, tickers, figi, instrument (FIRDS query).
source_urlstring | nullMain source: the GLEIF record, else SEC, FIRDS or OpenFIGI.
provided_bystringBosco Labs (boscolabs.dev).
noticesarrayLicence and attribution notices (GLEIF CC0, OpenFIGI, ESMA free-of-charge notice).
warningsarraySources that failed or were rate-limited, and ambiguous matches, in plain words.
retrieved_atstringISO-8601 UTC time of the lookup.
duration_secondsnumberTime 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

FieldTypeMeaning
identifierstring (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.
idTypestringWhat 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").
exchangestringOnly 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.

Coming soon to the Apify StoreAsk for early access