Legal data, instantly.
Search and retrieve regulations, statutes, and sanctions from the GDPR to Japan's APPI. One API. 1,479 open legal sources, refreshed every 6 hours.
In your AI agent. In your code. In your terminal.
Same Bearer token, three integration surfaces. Pick the one that matches how your team actually works — and switch later without rewriting anything.
For Claude
Connect Claude Desktop or Claude Code over SSE — 10 tools, every /v2 endpoint, multilingual search, translation. No glue code.
claude mcp add --transport sse \
cleo-legal https://api.legaldata.cleolabs.co/mcp/sse \
--header "Authorization: Bearer ld_live_…"Install MCP →For Node / Bun / Workers
Typed SDK with built-in async iterators for pagination and zero runtime dependencies. Works everywhere a fetch exists.
npm install @cleo-legal/sdk
import { LegalData } from '@cleo-legal/sdk';
const ld = new LegalData({ apiKey });View on npm →For any HTTP client
Plain REST under /v2/*. JSON in, JSON out. Edge-cached document reads with ETag revalidation. Works from cURL, Python, Go, Postman.
curl -H "Authorization: Bearer ld_live_…" \
"https://api.legaldata.cleolabs.co/v2/search?q=GDPR&country=EU"Read API reference →Three lines, one regulation.
Search in 11 languages. Match across all of them.
Multilingual embeddings — query in Russian, surface English documents. Restrict by language with ?lang=. Translate product descriptions with domain-aware prompts via /v2/translate.
25 queries. One round-trip.
Triage a batch of SKUs, ingest a fleet of contracts, or warm a RAG index — bulk endpoints run your queries in parallel and return results in input order. Per-item errors are inline; a single bad query never fails the whole batch.
Quota: 1 bulk call = N units (one per query). Pro plan ships 1,000,000 units / month, plenty for triaging tens of thousands of SKUs.
Developer SDK
Use the API in 3 lines of TypeScript
Official SDK with full types, async iterators for pagination, native fetch — zero runtime dependencies.
Quickstart
import { LegalData } from '@cleo-legal/sdk';
const ld = new LegalData({
apiKey: process.env.CLEO_LEGAL_API_KEY!,
});
const results = await ld.search({
q: 'GDPR', country: 'EU', limit: 5,
});Works in Node 18+, Bun, Deno, Cloudflare Workers. ESM. Strict TypeScript types.
Built for cross-border trade.
Match products to customs codes, detect dual-use risks, and split obligations by client type — across 100+ jurisdictions, including the EAEU (Kazakhstan, Russia, Belarus, Armenia, Kyrgyzstan).
GET /v2/customs/lookupCustoms Code Matching
Describe a product in any of 11+ languages. Get the right HS or TN VED code in 200 ms, ranked by confidence with multilingual titles and a rationale.
GET /v2/customs/dual-use-checkDual-Use Detection
Built-in Wassenaar + EU 2021/821 cross-check (with EAR, MTCR, NSG, Australia Group rolling out). Don’t ship a 3-week-blocked spectrometer.
GET /v2/customs/obligationsProject Context
Government vs private buyer? GOST mandatory vs contractually expected? We split the obligations for you across 8 buyer contexts.
POST /v2/compliance/check
Classify the product, list obligations split by buyer context, cross-check dual-use, surface defensible alternatives and check EAEU parallel-import recognition — in one round-trip, p50 around 3 seconds.
- 5 quota units per call — Pro includes 1M units / month.
- Always returns
advisory_disclaimer— surface it verbatim to your end user. - Wired as a single MCP tool call — install once in Claude Desktop or Claude Code.
Simple, transparent.
No credit card. Instant API key.
- 3 lifetime requests
- All endpoints
- Community support
1M requests included · ≈ €0.00035 each.
- 1,000,000 requests / month
- 300 req/min burst
- All endpoints
- Email support (24h)
- Cancel anytime
Need more than 1M req/month? Talk to us →