BYTETOOLS

ChEMBL API

Free ChEMBL REST API with no key: 2.4 million drug-like compounds with structures, calculated properties, bioactivity measurements and clinical development phase. Tested example included.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 21 Aug 2026

What is the ChEMBL API?

The ChEMBL API is a free, key-free REST interface to EMBL-EBI's manually curated database of bioactive drug-like molecules. It provides compound structures, calculated physicochemical properties, bioactivity measurements against protein targets, and clinical development phase for approximately 2.4 million compounds.

ChEMBL is the open-data backbone of computational drug discovery. Its distinguishing feature is that the bioactivity data is manually extracted from the primary medicinal chemistry literature — real measured IC50, Ki and EC50 values tied to specific assays and publications, rather than predictions. That provenance is what makes it usable for training models and for serious target research.

The `molecule_properties` block deserves attention because it is computed consistently across the entire database: molecular weight, ALogP, hydrogen bond donors and acceptors, polar surface area, rotatable bonds and rule-of-five violations, all calculated the same way. Getting comparable descriptors across millions of compounds is otherwise a substantial pipeline of your own. Note the `.json` extension — ChEMBL defaults to XML without it, and `limit` defaults to 20, so always paginate deliberately.

Quick facts

Base URL
https://www.ebi.ac.uk/chembl/api/data
Authentication
No API key or account. ChEMBL is EMBL-EBI infrastructure and is free for any use, including commercial.
Rate limit
No hard published limit; EBI throttles abusive traffic. Use pagination rather than requesting huge pages.
Pricing
Free. Data released under CC BY-SA 3.0.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the ChEMBL API

Every request below was executed against the live API on 21 Aug 2026, and the response shown is the real body it returned — not an illustration.

1. Fetch one molecule record with computed properties

GET https://www.ebi.ac.uk/chembl/api/data/molecule.json?limit=1

curl
curl 'https://www.ebi.ac.uk/chembl/api/data/molecule.json?limit=1'
JavaScript (fetch)
const res = await fetch("https://www.ebi.ac.uk/chembl/api/data/molecule.json?limit=1");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://www.ebi.ac.uk/chembl/api/data/molecule.json?limit=1", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "molecules": [
    {
      "atc_classifications": [],
      "availability_type": -1,
      "biotherapeutic": null,
      "black_box_warning": 0,
      "chemical_probe": 0,
      "chirality": -1,
      "cross_references": [],
      "dosed_ingredient": false,
      "first_approval": null,
      "first_in_class": -1,
      "helm_notation": null,
      "inorganic_flag": -1,
      "max_phase": null,
      "molecule_chembl_id": "CHEMBL6329",
      "molecule_hierarchy": {
        "active_chembl_id": "CHEMBL6329",
        "molecule_chembl_id": "CHEMBL6329",
        "parent_chembl_id": "CHEMBL6329"
      },
      "molecule_properties": {
        "alogp": "2.11",
        "aromatic_rings": 3,
        "full_molformula": "C17H12ClN3O3",
        "full_mwt": "341.75",
        "hba": 5,
        "hbd": 1,
        "heavy_atoms": 24,
        "mw_freebase": "341.75",
        "np_likeness_score": "-1.56",
        "num_ro5_violations": 0,
        "psa": "84.82",
        "qed_weighted": "0.74",
        "ro3_pass": "N",
        "rtb": 3
      },
      "molecule_structures": {
        "canonical_smiles": "Cc1cc(-n2ncc(=O)[nH]c2=O)ccc1C(=O)c1ccccc1Cl",
        "molfile": "\n     RDKit          2D\n\n 24 26  0  0  0  0  0  0  0  0999 V2000\n    5.2792   -2.0500    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0\n    5.7917   -2.3500    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0\n    5.2792   -1.4500    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0\n    6.3125   -2.0500    0.0000 N   0  0  0  0  0  0  0  0  0  0  0  0\n    5.7875   -4.7417    0.0000 C   0  0  0  0  0  0  0  0  0  0  0  0\n    5.7

Parameters

ParameterTypeRequiredDescription
formatextensionRequiredAppend `.json` to the resource name. Without it ChEMBL returns XML. json
limitqueryOptionalPage size, default 20 and maximum 1000. 1
offsetqueryOptionalPagination offset. The response `page_meta` block carries a ready-made `next` URL. 0
molecule_chembl_idqueryOptionalFilter by ChEMBL identifier. Django-style suffixes such as `__in` and `__gte` work on most fields. CHEMBL25
max_phasequeryOptionalFilter by clinical development phase, where 4 means an approved drug. 4

Response fields

molecule_chembl_idstring
Stable ChEMBL identifier for the compound — the key you use everywhere else.
pref_namestring
Preferred name, typically the INN for approved drugs. Null for most research compounds.
max_phaseinteger
Highest clinical trial phase reached; 4 means approved. Null means it never entered clinical development.
molecule_propertiesobject
Consistently computed descriptors: `full_mwt`, `alogp`, `hba`, `hbd`, `psa`, `rtb`, `aromatic_rings`, `num_ro5_violations` and more.
molecule_structuresobject
Canonical SMILES, standard InChI and InChIKey for the compound.
molecule_hierarchyobject
Links salts and mixtures to their parent compound, so you can deduplicate to the active moiety.
black_box_warninginteger
Whether an approved drug carries a boxed safety warning.
atc_classificationsarray
WHO ATC therapeutic classification codes for approved drugs.

What you can build with the ChEMBL API

  • Look up measured bioactivity of compounds against a protein target
  • Filter compound libraries by Lipinski rule-of-five properties
  • Build a training set of structure-activity data for a QSAR model
  • Cross-reference approved drugs to their targets and ATC classes

Common errors and how to fix them

XML instead of JSON

The `.json` extension was omitted.

Fix: ChEMBL selects format by file extension: request `/molecule.json`, not `/molecule`.

400

Unknown filter field or malformed lookup suffix.

Fix: Filters follow Django ORM conventions — for example `molecule_properties__full_mwt__lte=500`. Check the field is filterable in the docs.

Only 20 results

Not an error — `limit` defaults to 20.

Fix: Set `limit` explicitly, up to 1000, and follow `page_meta.next` for subsequent pages.

ChEMBL API — frequently asked questions

Is the ChEMBL API free?

Yes, free with no API key and no registration, and the data is released under CC BY-SA 3.0 so commercial use is permitted with attribution. It is maintained by EMBL-EBI.

What is max_phase in ChEMBL?

The highest clinical trial phase a compound has reached. A value of 4 means an approved drug, 1 to 3 are the clinical phases, and null means it never entered clinical development — useful for filtering research compounds from marketed medicines.

How do I search ChEMBL by chemical structure?

The substructure and similarity endpoints accept a SMILES string or an InChIKey in the URL path, with similarity taking a Tanimoto cutoff percentage. These are separate resources from the plain molecule lookup.

Why does ChEMBL return XML?

Because format is chosen by file extension and XML is the default. Append `.json` to the resource name — for example `/molecule.json` — and you get JSON instead.

Tools that pair with this API

Alternatives to ChEMBL API

If ChEMBL does not fit, these science & space apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.

APIWhat it doesAuthCORSLast verified
NASA APODFree NASA Astronomy Picture of the Day API. Daily space images with expert explanations, HD URLs and archive access back to 1995. Tested curl example.KeyYes19 Aug 2026
Open Notify ISSFree API returning the International Space Station's live latitude and longitude. No key, updates in real time. Tested curl example and live JSON response.No keyYes19 Aug 2026
USGS EarthquakeFree USGS earthquake API with no key: live global seismic events as GeoJSON, filterable by magnitude, time and location. Tested curl example and live response.No keyYes19 Aug 2026
Launch Library 2Free rocket launch API with no key: upcoming and past launches from every space agency, with rockets, missions, pads and live stream links. Tested example.No keyYes19 Aug 2026
CrossrefFree Crossref API with no key: 160M+ scholarly works with DOIs, authors, journals, citations and funding data. The backbone of academic metadata. Tested.No keyYes20 Aug 2026
Crystallography Open DatabaseFree Crystallography Open Database API with no key: search half a million published crystal structures by text, formula, cell parameters or space group. CIF downloads included.No keyNo21 Aug 2026
All Science & Space APIs

ChEMBL is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 21 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.