OPSIN API
Free OPSIN web service at EMBL-EBI with no key: parse systematic IUPAC chemical names into SMILES, InChI or CML algorithmically. Open source, deterministic, no lookup table.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the OPSIN API?
OPSIN is a free, key-free web service that converts systematic IUPAC chemical names into structures. It parses names algorithmically using chemical nomenclature grammar rather than looking them up, and returns SMILES, standard InChI, InChIKey or CML by file extension.
OPSIN — Open Parser for Systematic IUPAC Nomenclature — was built at the University of Cambridge's Centre for Molecular Informatics and is now hosted at EMBL-EBI. What makes it different from every name-to-structure lookup service is that it does not look anything up. It parses the name the way a chemist reads it, decomposing `2-acetyloxybenzoic acid` into a benzene ring, a carboxylic acid and an acetyl ester, and assembling the structure from those parts. A name it has never encountered still works, provided it follows the nomenclature rules.
That determinism is the reason to reach for it. A lookup service returns whatever it happens to hold and can silently give you the wrong compound for a mistyped name; OPSIN either parses a name correctly or reports `FAILURE`, which is a far better failure mode for automated pipelines. The flip side is that trade names, common names and abbreviations are outside its remit — `aspirin` will not parse, though its systematic name will. The output format is chosen by extension: `.smi` returns bare text, `.json` wraps SMILES, InChI and a full CML document together. The parser is also Apache-licensed and packaged for Java and Python, so heavy users can run it locally instead.
Quick facts
- Base URL
https://www.ebi.ac.uk/opsin/ws- Authentication
- No API key or account. OPSIN is open source under the Apache 2.0 licence and is hosted as a free service by EMBL-EBI; the library can be run locally for bulk work.
- Rate limit
- No published limit. EMBL-EBI applies fair-use throttling; for large batches run the OPSIN library yourself rather than looping over the web service.
- Pricing
- Free. The software is Apache 2.0 licensed and the hosted service costs nothing.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the OPSIN API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Parse a systematic IUPAC name into a SMILES string
GET https://www.ebi.ac.uk/opsin/ws/2-acetyloxybenzoic%20acid.smi
curl 'https://www.ebi.ac.uk/opsin/ws/2-acetyloxybenzoic%20acid.smi'const res = await fetch("https://www.ebi.ac.uk/opsin/ws/2-acetyloxybenzoic%20acid.smi");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://www.ebi.ac.uk/opsin/ws/2-acetyloxybenzoic%20acid.smi", timeout=20)
res.raise_for_status()
print(res.json())C(C)(=O)OC1=C(C(=O)O)C=CC=C1Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
name | path segment | Required | The systematic IUPAC name, URL-encoded. Spaces become %20. 2-acetyloxybenzoic%20acid |
.smi | path extension | Optional | Return the SMILES string as plain text with no envelope. .smi |
.json | path extension | Optional | Return a JSON object containing status, SMILES, InChI and a CML document. .json |
.inchi / .stdinchi / .stdinchikey | path extension | Optional | Return InChI, standard InChI or standard InChIKey. .stdinchikey |
.cml | path extension | Optional | Return Chemical Markup Language, the fullest structural description. .cml |
Response fields
(body, .smi)text- The SMILES string alone, ready to feed to a cheminformatics toolkit.
statusstring- In JSON responses: `SUCCESS` or `FAILURE`. A failure means the name could not be parsed, not that the compound does not exist.
messagestring- Diagnostic text explaining a parse failure, usually naming the token that could not be interpreted.
smiles / inchi / stdinchikeystring- The parsed structure in each requested representation.
cmlstring- A full Chemical Markup Language document with explicit atoms, bonds and locant labels. Large — this is why `.json` responses are bulky.
What you can build with the OPSIN API
- Convert systematic names from a patent or paper into structures
- Validate that chemical names in a dataset are well-formed IUPAC nomenclature
- Build a name-to-structure step into a text-mining pipeline
- Generate InChIKeys for deduplicating compounds by structure
- Check a student's or an author's systematic name for correctness
Common errors and how to fix them
FAILURE status
The name is not systematic IUPAC nomenclature.
Fix: Trade names and common names will never parse. Try a lookup service such as the NCI resolver for those, and OPSIN only for systematic names.
404
The name segment was not URL-encoded.
Fix: Spaces, commas, brackets and primes all need encoding. Unencoded spaces are the usual cause.
Huge JSON response
The `.json` view embeds a full CML document.
Fix: Use `.smi` or `.stdinchikey` when you only need the identifier — those return a single line.
Ambiguous name parsed unexpectedly
Missing locants or stereo descriptors.
Fix: OPSIN parses exactly what you give it. If the name omits stereochemistry the structure will too — that is correct behaviour, not a bug.
OPSIN API — frequently asked questions
Is OPSIN free to use?
Yes. The hosted web service at EMBL-EBI is free with no key, and OPSIN itself is open source under the Apache 2.0 licence, so you can run it locally including in commercial products.
Why will OPSIN not parse a name like aspirin?
Because it parses nomenclature rather than looking names up. `Aspirin` is a trade name with no structural information in it; its systematic equivalent, 2-acetyloxybenzoic acid, parses perfectly. For trade and common names you need a lookup service instead.
How accurate is algorithmic name parsing?
For well-formed systematic names it is highly reliable, and it fails loudly rather than guessing when it cannot interpret a token. The practical risk is names that are themselves ambiguous or incomplete — OPSIN will faithfully reproduce whatever the name actually specifies.
Should I use the web service or the library?
Use the web service for occasional conversions and prototyping. For bulk work run the Java or Python package locally: it is the same parser, far faster without network round trips, and it keeps load off EMBL-EBI's shared infrastructure.
Tools that pair with this API
Molar Mass Calculator
Work out the molar mass of any chemical formula in g/mol, with a per-element breakdown. Handles brackets, hydrates and a grams-to-moles converter.
Empirical Formula Calculator
Turn percent composition or measured masses into an empirical formula, then scale it to the molecular formula using the compound's molar mass.
Interactive Periodic Table
Explore all 118 elements in the standard layout. Click any element for its atomic weight, group, period, block, electron configuration and state.
OPSIN is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.