English | 日本語
bojapi is an unofficial R package for accessing the
official API of the Bank of Japan Time-Series Data Search site. No API
key is required.
Its primary workflow is similar to WDI: search the metadata to find series codes, specify a period, and retrieve the observations as a data frame. The package uses JSON internally, avoiding differences in Japanese CSV encodings and the API behavior of returning errors as JSON even when CSV is requested.
boj_search(): Search series names, codes, categories,
and notesboj_data(): Retrieve time series by series codeboj_layer(): Retrieve multiple series using the
five-level hierarchyboj_metadata(): Retrieve normalized metadata, including
hierarchy, coverage, update dates, and notesboj_cache(): Refresh, prune, or clear metadata in a
WDIcache-style workflowNEXTPOSITION paginationNAInstall the development version from the repository root:
install.packages("remotes")
remotes::install_local(".")Install the development version from GitHub with:
remotes::install_github("kenjimyzk/bojapi")library(bojapi)
# 1. List available databases
boj_databases()
# 2. Search for a series code (the metadata are cached for 24 hours)
boj_search("U.S. Dollar", db = "FM08")
boj_search("米ドル", db = "FM08", lang = "jp")
# 3. Retrieve monthly U.S. dollar/yen exchange rates
fx <- boj_data(
db = "FM08",
code = c(usd_yen = "FXERM07"),
start_date = "202401",
end_date = "202412",
lang = "en"
)
fxSupply series codes without the database prefix. All codes in a
single boj_data() call must have the same frequency.
In long output, time preserves the original BOJ period
code and date contains a parsed date for analysis. For
quarterly data, 202402 means the second quarter of 2024,
not February 2024, so it becomes date = 2024-04-01.
# Retrieve multiple series in wide format
fx_wide <- boj_data(
"FM08",
c(month_end = "FXERM06", monthly_average = "FXERM07"),
start_date = "202401",
end_date = "202412",
lang = "en",
wide = TRUE
)You can retrieve a category of series using metadata fields
layer1 through layer5, without listing every
series code individually.
meta <- boj_metadata("BP01", lang = "en", include_groups = TRUE)
balance_of_payments <- boj_layer(
db = "BP01",
frequency = "M",
layer = c(1, 1, 1),
start_date = "202504",
end_date = "202509",
lang = "en"
)The BOJ API returns an error when a hierarchy condition matches more
than 1,250 series. This limit is evaluated before the
frequency filter. If it is exceeded, split the query by the
first hierarchy level or another suitable level.
Because a package named BOJ already exists on CRAN, this
package is named bojapi.
| Package | Primary data source | New code API | Hierarchy API | WDI-style search | Automatic batching beyond 250 series |
|---|---|---|---|---|---|
BOJ |
Legacy bulk flat files | - | - | - | - |
bbk |
Multiple central-bank APIs | ✓ | - | - | - |
bojapi |
Dedicated BOJ new-API client | ✓ | ✓ | ✓ | ✓ |
bojapi is a dedicated client that also handles
normalized hierarchy and coverage metadata, missing observations,
automatic pagination, and delays between requests.
Both bojapi and bbk export functions named
boj_data() and boj_metadata(). If both
packages are attached, use bojapi::boj_data() and
bojapi::boj_metadata() to select this implementation
explicitly.
The BOJ prohibits high-frequency access over a short period. When an
operation requires multiple requests, bojapi waits at least
one second. Values below one are treated as one; increase the interval
when appropriate.
options(bojapi.wait = 2, bojapi.timeout = 60, bojapi.retries = 3)Expired or invalid metadata cache entries are removed when
encountered. You can also manage the cache explicitly with
boj_cache(action = "prune") or
boj_cache(action = "clear").
API errors have class boj_api_response_error,
communication errors have class boj_http_error, and
unexpected response structures have class boj_parse_error.
A no-data response (M181030I) is not an error: the package
issues a warning and returns an empty tibble with consistent column
types.
If you publish a service that uses this package, follow the Bank of Japan’s Notice Regarding the Use of the API Service, including displaying the requested credit and notifying the Research and Statistics Department about the release.
boj_api_credit("en")The terms may change without notice, so always check the official
document before publishing a service. The MIT license applies to the
original code and documentation authored for bojapi. It
does not relicense Bank of Japan data, metadata, database identifiers or
names, prescribed credit text, official documents, or other third-party
content. See COPYRIGHTS and NOTICE for the source and rights
boundaries.
bojapi was implemented independently. Its user-facing
workflow and package design were informed by the public interfaces and
examples of WDI,
estatapi,
and BOJ_API. We
thank their authors and contributors.