Skip to content

Spreadsheets and no-code

Every successful GET leads with ok, answer, and say. Prefer ?format=text for one cell and ?format=csv for a table. No key on the public demo: 8 calls / 10 seconds, 12 / minute, 60 / hour per network.

Old URLs (first-call, no-code, spreadsheets, uses) redirect here.

First call

Open this in a browser:

https://fetch.li/v1/now

You should see JSON with ok, answer, and clock fields. Add ?format=text for the London time line only.

curl -sS "https://fetch.li/v1/now"
curl -sS "https://fetch.li/v1/now?format=text"

JavaScript (Node 18+ or a modern browser, public GET only):

const response = await fetch("https://fetch.li/v1/now");
const data = await response.json();
console.log(data.answer);

Python:

import requests
data = requests.get("https://fetch.li/v1/now").json()
print(data["answer"])

Moon for Westminster:

curl -sS "https://fetch.li/v1/moon?postcode=SW1A1AA"

Protected routes still need a Bearer key. Without one, POST /v1/vibe/classify returns 401. See Authentication.

Symptom Likely cause Fix
Cannot connect Wrong host or the API is down Try GET /health
404 not_found Typo in the path Compare with GET /v1
429 rate_limited Demo window used up Wait, or get a key
HTML instead of JSON Hit the marketing site Include /v1/... in the path

Google Sheets

One cell:

=IMPORTDATA("https://fetch.li/v1/fx?from=GBP&to=EUR&amount=100&format=text")

Holiday table:

=IMPORTDATA("https://fetch.li/v1/uk/bank-holidays?year=2026&format=csv")

Google fetches from Google’s servers, so a busy org sheet can hit the demo hour. Cache values, slow recalculation, or use a key.

Apps Script, if you need JSON fields:

function fetchAnswer(path) {
  const url = "https://fetch.li" + path;
  const json = JSON.parse(UrlFetchApp.fetch(url).getContentText());
  return json.answer;
}

Keys for POST routes go in Script Properties, not in cells. See VAT and Moon if you still want regex-on-JSON.

Zapier, Make, Shortcuts

Copy a Try-it URL and GET it.

Zapier: Webhooks by Zapier → GET. Map answer (and say if you want the sentence). Store a paid key in Zapier credentials, never in the Zap title.

Make: HTTP → Make a request, same URL.

Power Automate: HTTP GET, then Parse JSON.

Apple Shortcuts: Get Contents of URL, then Get Dictionary Value for answer.

POST /v1/vibe/classify needs Authorization: Bearer and is a poor fit for a public web page.

Jobs this API is actually good at

Invoice and shop: /v1/vat?amount=24.99, /v1/fx?from=GBP&to=EUR&amount=24.99, /v1/uk/mileage?miles=186.

Operations: /v1/uk/working-days?start=2026-08-28&days=3, /v1/uk/working-day, /v1/uk/open.

Widgets: /v1/pulse?postcode=SW1A%201AA, /v1/should?do=coat&postcode=SW1A%201AA, /v1/uk/carbon?postcode=SW1A%201AA.

Checksums only, not live registers: /v1/check/vat?number=GB100000059, /v1/check/iban?number=GB82WEST12345698765432, /v1/check/nhs?number=9434765919.

Slack cron: GET /v1/pulse?postcode=YOUR_OFFICE&format=text.

English when you forget the path: /v1/ask?q=next+bank+holiday.

Agents: For agents, MCP at https://api.fetch.li/mcp, format=prompt.

Related

Errors · Demo tier · Answer contract · For spreadsheets