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.

Base: https://www.exceli.ir/api/v1 GET /api/v1 → info ↗ openapi.json ↗

Endpoints

MethodPathDesc
GET/api/v1/functionsList (q, category, sort, page, per_page, lang)
GET/api/v1/function/{slug}Single function (?slug fallback)
GET/api/v1/categoriesCategories with counts
GET/api/v1/search?q=Search
GET/api/v1/randomRandom

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.