ChEMBL Molecule API
Chemical molecules including properties, structural representations, synonyms, and drug-like properties.
Chemical molecules including properties, structural representations, synonyms, and drug-like properties.
openapi: 3.0.3
info:
title: ChEMBL Data REST Activity Molecule API
description: ChEMBL is a manually curated database of bioactive molecules with drug-like properties, maintained by the EMBL-EBI. This REST API provides programmatic access to bioactive molecules, drug targets, bioactivity measurements, approved drugs, assay data, and clinical trial compound information. ChEMBL_37 contains over 2.9 million distinct compounds, 24.5 million activities, and 18,552 targets.
version: ChEMBL_37
contact:
name: ChEMBL Team
email: chembl-help@ebi.ac.uk
url: https://www.ebi.ac.uk/chembl/
license:
name: Creative Commons Attribution-ShareAlike 3.0 Unported
url: https://creativecommons.org/licenses/by-sa/3.0/
termsOfService: https://www.ebi.ac.uk/about/terms-of-use/
x-logo:
url: https://www.ebi.ac.uk/chembl/static/chembl/img/chembl_logo.png
servers:
- url: https://www.ebi.ac.uk/chembl/api/data
description: ChEMBL Production API Server
tags:
- name: Molecule
description: Chemical molecules including properties, structural representations, synonyms, and drug-like properties.
paths:
/molecule:
get:
tags:
- Molecule
summary: List molecules
description: Retrieve a paginated list of molecules. Includes chemical properties, structural representations (SMILES, InChI), synonyms, and drug-like properties.
operationId: listMolecules
parameters:
- $ref: '#/components/parameters/format'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/offset'
- name: molecule_chembl_id
in: query
description: Filter by ChEMBL molecule ID
schema:
type: string
example: CHEMBL25
- name: pref_name
in: query
description: Filter by preferred molecule name
schema:
type: string
example: ASPIRIN
- name: max_phase
in: query
description: Filter by maximum clinical development phase (4 = approved)
schema:
type: integer
enum:
- 0
- 1
- 2
- 3
- 4
- name: molecule_type
in: query
description: Filter by molecule type
schema:
type: string
example: Small molecule
- name: therapeutic_flag
in: query
description: Filter for molecules with therapeutic applications
schema:
type: boolean
- name: withdrawn_flag
in: query
description: Filter for withdrawn drugs
schema:
type: boolean
responses:
'200':
description: Paginated list of molecules
content:
application/json:
schema:
type: object
properties:
meta:
$ref: '#/components/schemas/Meta'
molecules:
type: array
items:
$ref: '#/components/schemas/Molecule'
'400':
$ref: '#/components/responses/BadRequest'
'404':
$ref: '#/components/responses/NotFound'
/molecule/{molecule_chembl_id}:
get:
tags:
- Molecule
summary: Get molecule by ChEMBL ID
description: Retrieve a single molecule record by its ChEMBL ID.
operationId: getMolecule
parameters:
- name: molecule_chembl_id
in: path
required: true
description: ChEMBL ID of the molecule
schema:
type: string
example: CHEMBL25
- $ref: '#/components/parameters/format'
responses:
'200':
description: Molecule record
content:
application/json:
schema:
$ref: '#/components/schemas/Molecule'
'404':
$ref: '#/components/responses/NotFound'
/molecule/search:
get:
tags:
- Molecule
summary: Search molecules
description: Full-text search for molecules by name, synonym, or other text fields.
operationId: searchMolecules
parameters:
- name: q
in: query
required: true
description: Search query string (molecule name, synonym, etc.)
schema:
type: string
example: aspirin
- $ref: '#/components/parameters/format'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/offset'
responses:
'200':
description: Search results
content:
application/json:
schema:
type: object
properties:
meta:
$ref: '#/components/schemas/Meta'
molecules:
type: array
items:
$ref: '#/components/schemas/Molecule'
/image/{molecule_chembl_id}:
get:
tags:
- Molecule
summary: Get molecule structure image
description: Retrieve an SVG structural image for a given molecule.
operationId: getMoleculeImage
parameters:
- name: molecule_chembl_id
in: path
required: true
description: ChEMBL ID of the molecule
schema:
type: string
example: CHEMBL25
- name: dimensions
in: query
description: Image dimensions in pixels (e.g., 500 for 500x500)
schema:
type: integer
default: 500
- name: ignore_coords
in: query
description: Ignore existing coordinates and recalculate layout
schema:
type: boolean
default: false
responses:
'200':
description: SVG structure image
content:
image/svg+xml:
schema:
type: string
format: binary
'404':
$ref: '#/components/responses/NotFound'
/xref_source:
get:
tags:
- Molecule
summary: List cross-reference sources
description: Retrieve cross-reference source definitions for external chemical and biological databases.
operationId: listXrefSources
parameters:
- $ref: '#/components/parameters/format'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/offset'
responses:
'200':
description: Paginated list of cross-reference sources
content:
application/json:
schema:
type: object
properties:
meta:
$ref: '#/components/schemas/Meta'
xref_sources:
type: array
items:
type: object
properties:
xref_src_db:
type: string
xref_src_description:
type: string
xref_src_url:
type: string
format: uri
components:
parameters:
offset:
name: offset
in: query
description: Number of records to skip for pagination
schema:
type: integer
default: 0
minimum: 0
format:
name: format
in: query
description: Response format
schema:
type: string
enum:
- json
- xml
- yaml
- jsonp
default: json
limit:
name: limit
in: query
description: Number of records to return per page (default 20, max 1000)
schema:
type: integer
default: 20
maximum: 1000
minimum: 1
schemas:
MoleculeStructures:
type: object
description: Structural representations of a molecule
properties:
canonical_smiles:
type: string
nullable: true
description: Canonical SMILES representation
molfile:
type: string
nullable: true
description: MDL/Symyx molfile structure representation
standard_inchi:
type: string
nullable: true
description: Standard InChI representation
standard_inchi_key:
type: string
nullable: true
description: Standard InChIKey (27-character hash)
Error:
type: object
properties:
error_message:
type: string
status:
type: string
Meta:
type: object
description: Pagination metadata for list responses
properties:
limit:
type: integer
description: Number of records returned per page
next:
type: string
nullable: true
description: URL for the next page of results
offset:
type: integer
description: Number of records skipped
previous:
type: string
nullable: true
description: URL for the previous page of results
total_count:
type: integer
description: Total number of records matching the query
Molecule:
type: object
description: A chemical molecule in the ChEMBL database
properties:
molecule_chembl_id:
type: string
description: Unique ChEMBL ID for the molecule
example: CHEMBL25
pref_name:
type: string
nullable: true
description: Preferred name for the molecule
example: ASPIRIN
max_phase:
type: number
nullable: true
description: Maximum clinical development phase (4 = approved, null = not progressed)
molecule_type:
type: string
nullable: true
description: Type of molecule (Small molecule, Protein, Antibody, Oligosaccharide, Oligonucleotide, Cell, Unknown)
structure_type:
type: string
nullable: true
description: Indicates structure type (MOL, SEQ, NONE)
chirality:
type: integer
nullable: true
description: 'Chirality: -1=not defined, 0=racemic, 1=single stereoisomer, 2=achiral molecule'
natural_product:
type: integer
nullable: true
description: Natural product flag (1=natural product derived)
first_approval:
type: integer
nullable: true
description: Year of earliest known approval
first_in_class:
type: integer
nullable: true
description: First in class flag (1=first compound of its class)
oral:
type: boolean
nullable: true
description: Oral administration route
parenteral:
type: boolean
nullable: true
description: Parenteral administration route
topical:
type: boolean
nullable: true
description: Topical administration route
black_box_warning:
type: integer
nullable: true
description: Black box warning flag (1=has black box warning)
therapeutic_flag:
type: boolean
nullable: true
description: Therapeutic application flag
withdrawn_flag:
type: boolean
nullable: true
description: Withdrawn from market in at least one country
prodrug:
type: integer
nullable: true
description: Prodrug flag (1=is a prodrug)
inorganic_flag:
type: integer
nullable: true
description: Inorganic molecule flag
usan_year:
type: integer
nullable: true
description: Year of USAN/INN name application
usan_stem:
type: string
nullable: true
description: USAN stem
usan_stem_definition:
type: string
nullable: true
description: Definition of the USAN stem
molecule_properties:
$ref: '#/components/schemas/MoleculeProperties'
molecule_structures:
$ref: '#/components/schemas/MoleculeStructures'
molecule_synonyms:
type: array
items:
type: object
properties:
molecule_synonym:
type: string
syn_type:
type: string
synonyms:
type: string
description: List of synonyms and trade names
atc_classifications:
type: array
items:
type: string
description: ATC classification codes
MoleculeProperties:
type: object
description: Calculated physicochemical properties of a molecule
properties:
alogp:
type: number
nullable: true
description: Calculated ALogP
aromatic_rings:
type: integer
nullable: true
description: Number of aromatic rings
cx_logd:
type: number
nullable: true
description: ChemAxon LogD at pH 7.4
cx_logp:
type: number
nullable: true
description: ChemAxon LogP
cx_most_apka:
type: number
nullable: true
description: Most acidic pKa (ChemAxon)
cx_most_bpka:
type: number
nullable: true
description: Most basic pKa (ChemAxon)
full_molformula:
type: string
nullable: true
description: Molecular formula including all salt and solvent components
full_mwt:
type: number
nullable: true
description: Molecular weight of parent plus all salt and solvent components
hba:
type: integer
nullable: true
description: Number of hydrogen bond acceptors (Lipinski definition)
hba_lipinski:
type: integer
nullable: true
description: Number of hydrogen bond acceptors (Lipinski HBA definition)
hbd:
type: integer
nullable: true
description: Number of hydrogen bond donors (Lipinski definition)
hbd_lipinski:
type: integer
nullable: true
description: Number of hydrogen bond donors (Lipinski HBD definition)
heavy_atoms:
type: integer
nullable: true
description: Number of heavy (non-hydrogen) atoms
molecular_species:
type: string
nullable: true
description: Classification of the molecular species (ACID, BASE, NEUTRAL, ZWITTERION)
mw_freebase:
type: number
nullable: true
description: Molecular weight of the freebase/parent form
mw_monoisotopic:
type: number
nullable: true
description: Monoisotopic molecular weight
np_likeness_score:
type: number
nullable: true
description: Natural product-likeness score
num_lipinski_ro5_violations:
type: integer
nullable: true
description: Number of violations of Lipinski's Rule of Five
num_ro5_violations:
type: integer
nullable: true
description: Number of Lipinski Rule of Five violations
psa:
type: number
nullable: true
description: Polar surface area
qed_weighted:
type: number
nullable: true
description: Quantitative Estimate of Drug-likeness (QED) score
ro3_pass:
type: string
nullable: true
description: Indicates whether the compound satisfies the Rule of Three (fragment-like)
rtb:
type: integer
nullable: true
description: Number of rotatable bonds
responses:
BadRequest:
description: Bad request - invalid query parameters
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
externalDocs:
description: ChEMBL Web Services Documentation
url: https://chembl.gitbook.io/chembl-interface-documentation/web-services/chembl-data-web-services