TILLA · model-ready market data
TILLA in Google Sheets and Excel
One formula, live rows. A 2-minute setup, then it works like any other cell.
Google Sheets (2 minutes)
- Get a free key on the dashboard (Generate), or with no account at all:
POST https://api.tillacrypto.com/v1/demo_key. - In your sheet: Extensions → Apps Script. Paste the code below and save.
- In Apps Script: Project Settings → Script Properties → Add. Name
TILLA_KEY, value your key. Your key stays out of the sheet. - In any cell:
=TILLA("btc_close,eth_close", "hour", 24)
/** TILLA market data in a cell. =TILLA(series, lane, limit, layer, tier)
* series: comma list, e.g. "btc_close,eth_close" lane: 1min, hour, daily ...
* layer: raw (default) or derived tier: free (default), builder, pro, max */
function TILLA(series, lane, limit, layer, tier) {
var key = PropertiesService.getScriptProperties().getProperty('TILLA_KEY');
if (!key) return 'Add your key: Project Settings > Script Properties > TILLA_KEY';
var url = 'https://api.tillacrypto.com/v1/' + (tier || 'free') + '/' + (layer || 'raw') + '/' + (lane || 'hour')
+ '?series=' + encodeURIComponent(series) + '&limit=' + (limit || 100);
var r = UrlFetchApp.fetch(url, {headers: {'X-API-Key': key}, muteHttpExceptions: true});
if (r.getResponseCode() !== 200) return 'TILLA ' + r.getResponseCode() + ': ' + r.getContentText().slice(0, 120);
var j = JSON.parse(r.getContentText());
return [['timestamp'].concat(j.series)].concat(j.data);
}
Examples: =TILLA("btc_rsi_14", "daily", 30, "derived") · =TILLA("sp500_close,gold_close,dxy_close", "daily", 60).
Ask for a series your plan holds; GET /v1/inventory lists them all.
Excel (Power Query)
- Data → Get Data → From Other Sources → From Web → Advanced.
- URL:
https://api.tillacrypto.com/v1/free/raw/hour?series=btc_close,eth_close&limit=100&format=csv - HTTP request header: name
X-API-Key, value your key. OK, then Load. - Data → Refresh All pulls the newest rows whenever you want.
Good to know
- Every row is a closed bar on a UTC clock; the newest bar lands about 5 seconds after it closes.
- Free reads 30 days of history; paid plans read further back. Add
&start=2026-10-01to read from a date. - Each refresh is one request against your plan's per-minute limit.
FAQ
Does it work in Google Sheets?
Yes - paste the Apps Script function once, store your key in Script Properties, and use =TILLA("btc_close", "hour", 24) in any cell.
Does it work in Excel?
Yes - Power Query From Web with the X-API-Key header, and Data > Refresh All for the newest rows.
Is my key safe in a shared sheet?
The key lives in Script Properties, not in a cell, so people who view the sheet do not see it.