Bolivia Blue Dollar API

Free REST API for Bolivia blue dollar observations. Public samples need no authentication; check each observation timestamp.

Units, timestamps and sources

buy_bob_per_usd and sell_bob_per_usd, and historical buy, sell and mid, express BOB per reference USD. The source is the USDT/BOB P2P market; this is not a cash offer or a guarantee of USDT/USD parity. official_buy, official_sell and official_mid are a separate comparison in BOB per USD. Current quotes only publish values backed by verified official_observation; unavailable or unverified returns null. An official_status of stale retains the last verified BCB, with its original official_source_date and official_observed_at.

updated_at_iso is the observation timestamp; historical points use t. generated_at_iso and metadata.generated_at indicate response or export generation time, not a new observation. Check is_stale and the observation time: updates can be delayed.

Older rows without source_observation do not establish which platforms participated. New records can store a snapshot of sources, quotes, schema version and method identifier; it is published only when it matches the observation. Different methods operated in the past; we do not relabel those rows as a homogeneous series. When sources_used is empty, that observation’s source composition is unknown. Updating the collector does not correct or modify past observations.

source_provenance: persisted_observation identifies a valid source_observation: its version, method, assets and sources are valid, and its timestamp and medians match the stored row. If it is invalid or missing, source_observation is null and sources_used is empty; do not infer participating platforms.

In JSON, each point includes its provenance. metadata.source_provenance can be persisted_observation, unavailable_for_historical_rows or mixed; provenance_rows_recorded and provenance_rows_unavailable count each group. CSV retains its seven columns and does not include source snapshots; use JSON for per-row provenance. Historical official_* fields retain stored values, including legacy records of unverified source; do not attribute them to the BCB without checking official_observation and official_status. metadata.official_provenance is per_row_in_json; legacy_values_unverified. In historical data, stale retains validated BCB evidence: it reflects age at export generation or a fallback already marked stale, not missing provenance. Cite official_source_date and official_observed_at rather than the P2P timestamp t.

Public downloads are capped at 4,000 recent rows. Check coverage dates and truncated in JSON or the CSV headers before citing a full period. The existing exclusion of rows identified as interpolation during a 2026 outage is preserved. Downloaded official_* fields retain stored values, including values from unverified sources. CSV does not include per-row official status: use JSON and check official_observation and official_status before attributing a value to the BCB; unverified does not establish that source.

Available Endpoints

GET /api/blue-rate

Current USD/BOB quote. Source composition may be unavailable for the stored row.

Documented response fields

{
  "buy_bob_per_usd": "number",
  "sell_bob_per_usd": "number",
  "updated_at_iso": "ISO 8601 observation time",
  "generated_at_iso": "ISO 8601 response generation time",
  "is_stale": "boolean",
  "sources_used": "array (empty when provenance is unknown)",
  "source_count": "number",
  "source_provenance": "persisted_observation | unavailable_for_stored_row",
  "source_observation": "validated snapshot or null",
  "quote_kind": "usdt_p2p_median",
  "official_buy": "number or null",
  "official_sell": "number or null",
  "official_mid": "number or null",
  "official_observation": "validated BCB evidence or an empty unavailable/unverified record; fields: version, status, source, source_url, source_date, observed_at, buy, sell, mid",
  "official_status": "verified | stale | unavailable | unverified",
  "official_source": "bcb or null",
  "official_source_date": "BCB board YYYY-MM-DD or null",
  "official_observed_at": "original BCB retrieval ISO 8601 or null"
}

https://www.boliviablue.com/api/blue-rate

GET /api/historical-data.csv

Up to 4,000 recent observations in ascending date order. 30d limits the period; all selects the latest available rows, not the entire archive. 90d and 1y return 400. These public samples do not require a token.

Parameters

  • range (string): Default: 30d (30d, all)
  • limit (integer): 1–4000; default 4000. Larger values are capped at 4000.

Documented response fields

CSV columns: t,buy,sell,mid,official_buy,official_sell,official_mid. Coverage headers: X-Data-Range, X-Data-Rows, X-Data-Limit, X-Data-Truncated, X-Data-Start, X-Data-End, X-Data-Provenance. Official provenance header: X-Official-Provenance: legacy-values-unverified; per-row-status-in-json. Legacy official values have unverified provenance; use JSON for per-row official_status and official_observation.

https://www.boliviablue.com/api/historical-data.csv?range=30d

GET /api/historical-data.json

Up to 4,000 recent observations in ascending date order. 30d limits the period; all selects the latest available rows, not the entire archive. 90d and 1y return 400. These public samples do not require a token.

Parameters

  • range (string): Default: 30d (30d, all)
  • limit (integer): 1–4000; default 4000. Larger values are capped at 4000.

Documented response fields

JSON: { range, count, points: [{ t, buy, sell, mid, official_buy, official_sell, official_mid, official_observation, official_status, official_source, official_source_date, official_observed_at, source, sources_used, source_count, source_provenance, source_observation, quote_kind }], metadata: { range_requested, requested_start, requested_end, returned_start, returned_end, rows_returned, limit, truncated, selection, order, source, source_provenance, provenance_rows_recorded, provenance_rows_unavailable, csv_provenance, official_provenance, excluded_interpolated_gap, attribution, generated_at } }

https://www.boliviablue.com/api/historical-data.json?range=30d

GET /api/health

Archive status and latest observation time.

Documented response fields

{
  "ok": "boolean",
  "updated_at_iso": "ISO 8601 or null",
  "history_points": "number",
  "host": "vercel"
}

https://www.boliviablue.com/api/health

Coverage and limits

The public API and its samples remain available without signup. Automatic extended downloads from the separate service are unavailable here; any additional coverage or access requires manual review.

Data is for informational purposes only, not financial advice