API Reference

Spreadsheets

Pull live currency conversions and rates into Google Sheets and Microsoft Excel using the CurrencyCore API.


You can call CurrencyCore straight from a spreadsheet. Because every request needs an Authorization header, the built-in IMPORTDATA (Sheets) and WEBSERVICE (Excel) functions aren’t enough on their own — use Apps Script in Google Sheets and Power Query in Excel, both shown below.

Keep your key out of shared cells. In Sheets, store it in Script Properties; in Excel, store it with the query credentials. Use a test key while you build.

Google Sheets

Open Extensions → Apps Script, paste the code below, and save. Then store your key under Project Settings → Script Properties as CC_KEY.

/**
 * =CC_CONVERT("USD", "INR", 100)  → converted amount
 * =CC_RATE("EUR", "USD")          → 1 EUR in USD
 */
function CC_CONVERT(from, to, amount) {
  const url =
    "https://api.currency-core.com/v1/convert" +
    "?from=" + encodeURIComponent(from) +
    "&to=" + encodeURIComponent(to) +
    "&amount=" + encodeURIComponent(amount);
  return ccFetch_(url).results[0].result;
}

function CC_RATE(base, quote) {
  const url = "https://api.currency-core.com/v1/rates/" + encodeURIComponent(base);
  return ccFetch_(url).rates[quote];
}

function ccFetch_(url) {
  const key = PropertiesService.getScriptProperties().getProperty("CC_KEY");
  const res = UrlFetchApp.fetch(url, {
    headers: { Authorization: "Bearer " + key },
    muteHttpExceptions: true,
  });
  return JSON.parse(res.getContentText());
}

Use them like any built-in function:

=CC_CONVERT("USD", "INR", 100)
=CC_RATE("EUR", "USD")

Custom functions are cached by Google. To force a refresh, change an argument or re-open the sheet — don’t call them thousands of times in a tight loop.

Microsoft Excel (Power Query)

Go to Data → Get Data → From Other Sources → Blank Query → Advanced Editor and paste this. It pulls every rate against a base currency into a table.

let
  Key   = "cc_live_your_key",
  Base  = "USD",
  Json  = Json.Document(
    Web.Contents(
      "https://api.currency-core.com/v1/rates/" & Base,
      [ Headers = [ Authorization = "Bearer " & Key ] ]
    )
  ),
  Rates = Record.ToTable(Json[rates])
in
  Rates

Rates becomes a two-column table (Name = currency, Value = rate per 1 unit of the base) you can reference from any cell with XLOOKUP / VLOOKUP.

To convert a single amount instead, query /v1/convert:

let
  Key  = "cc_live_your_key",
  Json = Json.Document(
    Web.Contents(
      "https://api.currency-core.com/v1/convert",
      [
        Query   = [ from = "USD", to = "INR", amount = "100" ],
        Headers = [ Authorization = "Bearer " & Key ]
      ]
    )
  )
in
  Json[results]{0}[result]

Refresh with Data → Refresh All (or set an automatic refresh interval under the query’s properties).

Notes

  • Spreadsheet calls count toward your plan’s monthly quota and rate limit like any other request — see Billing & Limits.
  • Country codes for PPP are ISO/IMF alpha-3 (see /countries).
  • Need help wiring this up? Email support.