API عمومی اکسلی / REST JSON — v1
Programmatic access to 500+ Excel functions — Persian + 6 locales, syntax, args, examples, errors & categories. CORS enabled, no key, 60 req/min.
Endpoints
| Method | Path | Desc |
|---|---|---|
| GET | /api/v1/functions | List (q, category, sort, page, per_page, lang) |
| GET | /api/v1/function/{slug} | Single function (?slug fallback) |
| GET | /api/v1/categories | Categories with counts |
| GET | /api/v1/search?q= | Search |
| GET | /api/v1/random | Random |
lang: fa|en|de|fr|tr|az|ar (default fa). sort: popular|alpha|views. per_page max 100. CORS * · X-RateLimit-* headers.
cURL
curl https://www.exceli.ir/api/v1/functions?per_page=3 curl https://www.exceli.ir/api/v1/function/sum?lang=fa curl https://www.exceli.ir/api/v1/categories curl https://www.exceli.ir/api/v1/search?q=vlookup curl https://www.exceli.ir/api/v1/random?lang=en
JavaScript
const r = await fetch('/api/v1/function/sum?lang=en').then(r=>r.json());
console.log(r.data.syntax, r.data.description);
Python
import requests
print(requests.get('https://www.exceli.ir/api/v1/functions', params={'q':'sum','lang':'en'}).json())
PHP
$j = file_get_contents('https://www.exceli.ir/api/v1/function/xlookup?lang=fa');
$data = json_decode($j, true); echo $data['data']['syntax'];
Playground — Live try
{ "hint": "click a button ↑" }
Envelope: {success, data, meta} — errors 400/404/429
Schema — Function
{
slug, title, category, applications[],
syntax, description, output, version,
volatile, dynamicArray, popularity, views,
args[{name,type,required,desc}],
examples[{title,code}], tips[],
errors[{code,desc,fix}], related[],
links{url, canonical, api}
}
Text fields localized via func-i18n.php when lang!=fa, else Persian fallback.
CORS & Rate limit
CORS is open (Allow-Origin: *). Rate limit 60/min per IP (file-based tmp, best-effort) — headers X-RateLimit-Limit/Remaining/Window and 429 on exceed.