gleifr is a minimal R client for the GLEIF API. A major challenge when dealing with financial data is mapping entities across different data sources. The Legal Entity Identifier (LEI) is a 20-character, alphanumeric code that uniquely identifies legally distinct entities that engage in financial transactions. The Global Legal Entity Identifier Foundation (GLEIF) maintains the global LEI system and exposes it through a free, public API.
gleifr wraps that API so you can, from R:
You can install the development version of gleifr from GitHub with:
# install.packages("pak")
pak::pak("m-muecke/gleifr")library(gleifr)Pass a LEI to lei_record_by_id() to retrieve its full
reference data. By default the result is returned as a tidy long-format
data frame with one attribute per row:
record <- lei_record_by_id("001GPB6A9XPE8XJICC14")
str(record)
#> 'data.frame': 37 obs. of 3 variables:
#> $ lei : chr "001GPB6A9XPE8XJICC14" "001GPB6A9XPE8XJICC14" "001GPB6A9XPE8XJ"..
#> $ name : chr "entity_legal_name_name" "entity_legal_name_language" "entity_"..
#> $ value: chr "Fidelity Advisor Leveraged Company Stock Fund" "en" "FIDELITY"..Use lei_records() to query the LEI database. You can
filter by legal name, country, jurisdiction, status, category, or ISIN,
or run a full-text query:
# search by legal name
lei_records(legal_name = "Deutsche Bank")
# combine filters
lei_records(country = "DE", registration_status = "ISSUED")Traverse ownership hierarchies with lei_parent() and
lei_children():
# direct parent (use type = "ultimate" for the ultimate parent)
lei_parent("529900W18LQJJN6SJ336")
# direct children
lei_children("529900W18LQJJN6SJ336")lei_mapping() downloads the latest bulk relationship
file that maps every LEI to another identifier type: ISIN, BIC, MIC, or
OpenCorporates ID ("oc"):
mapping <- lei_mapping("isin")
head(mapping)
#> lei isin
#> 1 00EHHQ2ZHDCFXJCPCL46 US92204Q1031
#> 2 00KLB2PFTM3060S2N216 US4138382027
#> 3 029200038B4L4ZI1E579 NGSDCBANCO00
#> 4 029200067A7K6CH0H586 NGSDCSCSPLC2
#> 5 0292001178F3RHI5D836 NGNEIMETH001
#> 6 0292001868F6N5VI5G15 NGGUARANTY06To fetch the ISINs for a single entity instead of the full file, use
lei_isins():
lei_isins("529900W18LQJJN6SJ336")API responses can be cached locally to avoid repeated downloads. Caching is opt-in and controlled through options:
# enable caching (responses are kept for 1 day by default)
options(gleifr.cache = TRUE)
# customize the maximum age in seconds
options(gleifr.cache_max_age = 3600)
# inspect or clear the cache
lei_cache_dir()
lei_cache_clear()