Run the Chemical Check from your own systems (ERP, purchasing, compliance or export tools): Indian rules, DGFT import and export policy, import duty, anti-dumping, global treaties, safety and storage, as JSON. Free for RasayanXchange members.
API keys are free for RasayanXchange members. We email you a link; opening it shows your key. No card.
Send your key in the X-API-Key header (or as Authorization: Bearer …). Ask by name, CAS number or common trade name.
curl -H "X-API-Key: YOUR_KEY" /api/v1/check/108-95-2
import requests
r = requests.get("/api/v1/check/phenol",
headers={"X-API-Key": "YOUR_KEY"}, timeout=60)
r.raise_for_status()
check = r.json()
print(check["name"], check["overall"]["level"], check["facts"]["tariff_item"], check["facts"]["duty_pct"])
A first check of a rare chemical can take 10–20 seconds while sources are fetched; repeat checks are fast. Use a timeout of 60 seconds.
| Call | What it does | Counts |
|---|---|---|
GET /api/v1/check/{name or CAS} | The full Chemical Check for one chemical. | 1 |
POST /api/v1/bulk | Start a check of up to 500 chemicals. Body: {"items": ["phenol", "67-64-1"]}. Returns an id. | 1 per chemical |
GET /api/v1/bulk/{id} | Progress and summary rows; poll every few seconds until finished is true. Kept for 24 hours. | 0 |
GET /api/v1/bulk/{id}/excel | The finished list as an Excel workbook (Summary, Details, About). | 0 |
GET /api/v1/suggest/{text} | Name suggestions while someone types. | 0 |
GET /api/v1/keys/usage | Today's use, your limits and the last 30 days. | 0 |
POST /api/v1/keys/revoke | Switch off the key you send, for good (if it leaked, say). | 0 |
name, cas, formulaoveralllevel (green OK, amber check, red stop, grey no data) and a one-line text.cards[]key: rules, export, global, duty, safety, storage, food, market, patent. Each has level, headline, points[] in plain words and sources[] (name, link, date).factstariff_item, duty_pct (total effective import duty), import_policy, export_policy, anti_dumping (countries), anti_dumping_rate (amount for most producers, where the notification's table is in), scomet, ndps, drug_schedule, precursor, eu_cmr (EU harmonised carcinogen, mutagen or reproductive-toxicant category). null means not listed or not known.generated_at{
"name": "Acetone", "cas": "67-64-1", "formula": "C3H6O",
"overall": { "level": "amber", "text": "OK to trade, but watch: rules in India." },
"cards": [ { "key": "rules", "title": "Rules in India", "level": "amber",
"headline": "BIS mark needed (Quality Control Order)", "points": ["…"], "sources": [ … ] }, … ],
"facts": { "tariff_item": "2914 11 00", "duty_pct": 27.73, "import_policy": "Free", "export_policy": "Free",
"anti_dumping": [], "scomet": null, "ndps": null, "drug_schedule": null, "precursor": null }
}
Each key allows 1,000 checks a day (reset at midnight India time) and 120 calls a minute. Every keyed reply carries X-Quota-Used and X-Quota-Limit headers.
401404429detail and Retry-After.503Keep keys on your server, never in a web page or app that customers download. Each email can hold 3 keys.
Guidance from official lists, not legal advice. Rules change; confirm with DGFT, customs or the regulator before you trade. Results come with their sources and dates; show them to your users.