ChEMBL Molecule API

Chemical molecules including properties, structural representations, synonyms, and drug-like properties.

OpenAPI Specification

chembl-molecule-api-openapi.yml Raw ↑
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