ChEMBL logo

ChEMBL

spacer
ChEMBL Statistics
  Loading Statistics...
spacer

ChEMBL Web Services

Interactive Web Service documentation now available (October 2014)

Please use the following link to view interactive Web Service documentation: https://www.ebi.ac.uk/chemblws/docs

New Web Services Calls (April 2014)

3 new Web Service calls focused on approved drugs, mechanism of action and compound forms are now avaialble. For more details please use the following links:


ChEMBL REST API Methods

Using the ChEMBL Web Service API users can retrieve data from the ChEMBL database in a programmatic fashion. The following list defines the currently supported functionality and defines the expected inputs and outputs of each method.

Error Codes and Messages

The ChEMBL API returns standard machine-readable error codes along with human-readable error messages. You can find below a short description of the error/response codes returned by the ChEMBL API.
The ChEMBL Java client is designed to interpret these codes for you and translate them into developer-friendly exception messages i.e. TargetNotFoundException, InvalidSmilesException e.t.c.

HTTP Response Code Description
200 OK. The request to the web service completed successfully.
400 Bad request. The parameters passed to the API endpoint were deemed invalid. This response will be returned for invalid ChEMBLID's i.e. CHEMBLX1, invalid UniProt accessions, invalid SMILES strings e.t.c.
404 Not found. The resource corresponding to the supplied parameters does not exist. This response will be returned for requests for non-existent ChEMBL compound, target, and assay resources.
500 Service unavailable. An internal problem prevented us from fulfilling your request.

How to use the ChEMBL REST API

We have provided a Java client and also Perl and Python scripts to help get you started with using the ChEMBL RESTful Web Service API.

Getting Started with Java

The chemblRestClient java client contains all of the dependencies necessary for interacting with the ChEMBL REST Web Service API. Below is an example java application that demonstrates how to use the ChEMBL REST API client. To use the client jar and run the application perform the following steps:
  1. Download the chemblRestClient jar file
  2. Copy the 'Example' class code below to 'Example.java'
  3. Compile Example.java

  4. javac -cp ./chemblRestClient-latest.jar Example.java
  5. Run the executable

  6. java -cp .:chemblRestClient-latest.jar Example

    import java.awt.image.BufferedImage;
    import java.io.ByteArrayInputStream;
    import java.io.IOException;
    import java.util.List;
    import javax.imageio.ImageIO;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import uk.ac.ebi.chemblws.domain.*;
    import uk.ac.ebi.chemblws.exception.*;
    import uk.ac.ebi.chemblws.restclient.ChemblRestClient;
    
    public class Example
    {
    	public static void main( String[] args )
    	{
    		ApplicationContext applicationContext = new ClassPathXmlApplicationContext(	"applicationContext.xml" );
    		ChemblRestClient chemblClient = applicationContext.getBean( "chemblRestClient", ChemblRestClient.class );
    		
    		/* ========================= API Health Status Querying Example ========================= */
    		try{
    			chemblClient.checkStatus();
    		}catch(ChemblServiceException e){
    			System.out.println( "ChemblServiceException thrown, service is down");
    			//Do something
    		}
    		
    		/* ========================= API Target Querying Examples ========================= */
    		
    		/* Fetch a ChEMBL target. If target is not found an HTTP 404 status is returned from the web service server and translated into a TargetNotFoundException by the web service client */
    		/* If an invalid target identifier is supplied then an HTTP 400 status (Bad Request) is returned from the web service server and translated into a InvalidTargetIdentifierException by the web service client */
    		
    		try{
    			Target target = chemblClient.getTarget("CHEMBL1844");
    		}catch(TargetNotFoundException e){
    			System.out.println( "TargetNotFoundException thrown");
    			//Do something
    		}catch(InvalidTargetIdentifierException e){
    			System.out.println( "InvalidTargetIdentifierException thrown");
    			//Do something
    		}catch(ChemblServiceException e){
    			System.out.println( "ChemblServiceException thrown");
    			//Do something
    		}
    		
    		/* Try to fetch an existing ChEMBL target. If target found an HTTP 200 status is returned and program flow proceeds as normal */
    	
    		try{
    			Target t1 = chemblClient.getTarget("CHEMBL240");
    			System.out.println( "Target: " + t1.getDescription());
    		}catch(TargetNotFoundException e){
    			System.out.println( "TargetNotFoundException thrown");
    			//Do something
    		}catch(InvalidTargetIdentifierException e){
    			System.out.println( "InvalidTargetIdentifierException thrown");
    			//Do something
    		}catch(ChemblServiceException e){
    			System.out.println( "ChemblServiceException thrown");
    			//Do something
    		}
    		
    
    		/* Fetch a ChEMBL target by UniProt accession identifier, catch TargetNotFoundException (corresponds to a HTTP 404 Not Found status) and InvalidUniProtAccessionException (corresponds to HTTP 400 Bad Request Status) */
    		
    		try{
    			Target t1 = chemblClient.getTargetByUniProtAccession("Q13936");
    		}catch(TargetNotFoundException e){
    			System.out.println( "TargetNotFoundException thrown");
    			//Do something
    		}catch(InvalidUniProtAccessionException e){
    			//Do something
    		}catch(ChemblServiceException e){
    			System.out.println( "ChemblServiceException thrown");
    			//Do something
    		}
    		
    		
    		/* Fetch an individual ChEMBL target by RefSeq accession identifier*/
    		/*
    		target = chemblClient.getTargetByRefSeqAccession("NP_001128722");
    		System.out.println( "Target Preferred Name: " + target.getPreferredName());
    		*/
    		
    		/* Fetch all ChEMBL targets */
    		
    		/*
    		List<Target> targets = chemblClient.getTargets();
    		for(Target target : targets )
    		{
    			System.out.println( "Target ChEMBLID: " + target.getChemblId());
    			System.out.println( "Target Organism: " + target.getOrganism());
    		}
    		*/
    		
    		/* Fetch the bioactivities for an individual ChEMBL target */
    		/*
    		List<Bioactivity> target_bioactivities = chemblClient.getTargetBioactivities("CHEMBL240");
    		
    		
    		for(Bioactivity bioactivity : target_bioactivities )
    		{
    			System.out.println( "Bioactivity Assay Description: " + bioactivity.getAssay_description());
    		}
    		*/
    		
    		
    		
    		
    		/* ========================= API Compound Querying Examples ========================= */
    		
    		/* Fetch an individiual ChEMBL compound. If compound is not found an HTTP 404 status is returned from the web service server and translated into a CompoundNotFoundException by the web service client */
    		
    		try{
    			Compound compound = chemblClient.getCompound("CHEMBL1");
    			System.out.println( "Compound ChEMBLID: " + compound.getChemblId());
    		}catch(CompoundNotFoundException e){
    			System.out.println( "CompoundNotFoundException thrown");
    			//Do something
    		}catch(ChemblServiceException e){
    			System.out.println( "ChemblServiceException thrown");
    			//Do something
    		}
    		
    		
    		/* Fetch an individual ChEMBL compound using stdInchiKey.  Catch CompoundNotFoundException (corresponds to a HTTP 404 Not Found status) and InvalidInChiKeyException (corresponds to HTTP 400 Bad Request Status) */
    		
    		try{
    			Compound compound = chemblClient.getCompoundByStdInChiKey("GHBOEFUAGSHXPO-XZOTUCIWSA-N");
    			System.out.println( "Compound ChEMBLID: " + compound.getChemblId());
    			
    			/* Properties are not calculated for all compounds, therefore we must check if the property has been set before attempting to use it*/
    			
    			if(compound.getAlogp()!=null){
    			System.out.println( "Compound Alogp: " + compound.getAlogp());
    			}
    			
    			if(compound.getNumRo5Violations()!=null){
    				System.out.println( "Compound Ro5 violations: " + compound.getNumRo5Violations());
    			}
    			
    		}catch(CompoundNotFoundException e){
    			System.out.println( "CompoundNotFoundException thrown");
    			//Do something
    		}catch(InvalidInChiKeyException e){
    			System.out.println( "InvalidInChiKeyException thrown");
    			//Do something
    		}catch(ChemblServiceException e){
    			System.out.println( "ChemblServiceException thrown");
    			//Do something
    		}
    		
    		
    		/* Fetch a list of ChEMBL compounds corresponding to a given SMILES string.  Catch InvalidSmilesException (corresponds to HTTP 400 Bad Request Status) */
    		
    		try{
    			 List<Compound> matchingCompounds = chemblClient.getCompoundBySmiles("COc1ccc2[C@@H]3[C@H](COc2c1)C(C)(C)OC4=C3C(=O)C(=O)C5=C4OC(C)(C)[C@@H]6COc7cc(OC)ccc7[C@H]56");
    			 System.out.println( "Matching compounds list size: " + matchingCompounds.size());
    		}catch(InvalidSmilesException e){
    			System.out.println( "InvalidSmilesException thrown");
    			//Do something
    		}catch(ChemblServiceException e){
    			System.out.println( "ChemblServiceException thrown");
    			//Do something
    		}
    		
    		
    		/* Issue HTTP POST request to Fetch a list of ChEMBL compounds corresponding to a given SMILES string.  Catch InvalidSmilesException (corresponds to HTTP 400 Bad Request Status) */
    		try{
    			 List<Compound> matchingCompounds = chemblClient.postForCompoundBySmiles("COc1ccc2[C@@H]3[C@H](COc2c1)C(C)(C)OC4=C3C(=O)C(=O)C5=C4OC(C)(C)[C@@H]6COc7cc(OC)ccc7[C@H]56");
    			 System.out.println( "Matching compounds list size: " + matchingCompounds.size());
    		}catch(InvalidSmilesException e){
    			System.out.println( "InvalidSmilesException thrown");
    			//Do something
    		}catch(ChemblServiceException e){
    			System.out.println( "ChemblServiceException thrown");
    			//Do something
    		}
    		
    
    		/* Fetch list of ChEMBL compounds containing a particular substructure. Catch InvalidSmilesException */
    		
    		try{
    			
    			List<Compound> substructureList = chemblClient.getCompoundBySubstructureSmiles("COc1ccc2[C@@H]3[C@H](COc2c1)C(C)(C)OC4=C3C(=O)C(=O)C5=C4OC(C)(C)[C@@H]6COc7cc(OC)ccc7[C@H]56");
    			
    			System.out.println( "Matching substructure list size: " + substructureList.size());
    		}catch(InvalidSmilesException e){
    			System.out.println( "InvalidSmilesException thrown");
    			//Do something
    		}catch(ChemblServiceException e){
    			System.out.println( "ChemblServiceException thrown");
    			//Do something
    		}
    		
    		
    		/* Issue HTTP POST request to Fetch a list of ChEMBL compounds compounds containing a particular substructure. Catch InvalidSmilesException */
    		try{
    
    			List<Compound> substructureList = chemblClient.postForCompoundSubstructureBySmiles("N#CCc2ccc1ccccc1c2");
    
    				System.out.println( "HTTP POST -- Matching substructure list size: " + substructureList.size());
    		}catch(InvalidSmilesException e){
    				System.out.println( "InvalidSmilesException thrown");
    				//Do something
    		}catch(ChemblServiceException e){
    				System.out.println( "ChemblServiceException thrown");
    				//Do something
    		}
    			
    		/* Fetch list of ChEMBL compounds similar to the one represented by the given SMILES string and above a given similarity cutoff score (75%). Minimum value for cutoff score is 70%. Catch InvalidSmilesException, InvalidSimilarityScoreException */
    		
    		try{
    			List<Compound> similarCompounds = chemblClient.getSimilarCompoundBySmiles("COc1ccc2[C@@H]3[C@H](COc2c1)C(C)(C)OC4=C3C(=O)C(=O)C5=C4OC(C)(C)[C@@H]6COc7cc(OC)ccc7[C@H]56", 75);
    			
    			for(Compound comp : similarCompounds )
    			{
    				System.out.println( "Compound Similarity Score: " + comp.getSimilarity());
    			}
    		}catch(InvalidSmilesException e){
    			System.out.println( "InvalidSmilesException thrown");
    			//Do something
    		}catch(InvalidSimilarityScoreException e){
    			System.out.println( "InvalidSimilarityScoreException thrown");
    			//Do something
    		}catch(ChemblServiceException e){
    			System.out.println( "ChemblServiceException thrown");
    			//Do something
    		}
    		
    		/* Issue HTTP POST request to Fetch a list of ChEMBL compounds similar to the one represented by the given SMILES string and above a given similarity cutoff score (75%). Minimum value for cutoff score is 70%. Catch InvalidSmilesException, InvalidSimilarityScoreException */
    		try{
    			List<Compound> similarCompounds = chemblClient.postForSimilarCompoundBySmiles("O=C(C=CC#Cc2cccc(NS(=O)(=O)c1ccc(N(=O)=O)cc1)c2)NO",70);  
    			
    			for(Compound comp : similarCompounds )
    			{
    				System.out.println( "HTTP POST -- Compound Similarity Score: " + comp.getSimilarity());
    			}
    		}catch(InvalidSmilesException e){
    			System.out.println( "InvalidSmilesException thrown");
    			//Do something
    		}catch(InvalidSimilarityScoreException e){
    			System.out.println( "InvalidSimilarityScoreException thrown");
    			//Do something
    		}catch(ChemblServiceException e){
    			System.out.println( "ChemblServiceException thrown");
    			//Do something
    		}
    		
    		/* Fetch the image of a given ChEMBL compound. Catch CompoundNotFoundException */
    		
    		try{
    			byte[] cmpdImage = chemblClient.getCompoundImage("CHEMBL1");
    			
    			//Do something with the image data
    		}catch(CompoundNotFoundException e){
    			System.out.println( "CompoundNotFoundException thrown");
    			//Do something
    		}catch(ChemblServiceException e){
    			System.out.println( "ChemblServiceException thrown");
    			//Do something
    		}
    		
    		
    		/* Fetch the image of a given ChEMBL compound, providing the dimensions (minimum value 1, maximum value 500), convert the raw byte data to a Java image object */
    		
    		try{
    			byte[] cmpdImage = chemblClient.getCompoundImage("CHEMBL1", 350);
    			BufferedImage chembl1image = ImageIO.read(new ByteArrayInputStream(cmpdImage));
    			
    			//Do something with the image data
    		}catch(CompoundNotFoundException e){
    			System.out.println( "CompoundNotFoundException thrown");
    			//Do something
    		}catch(InvalidCompoundImageRequestException e){
    			System.out.println( "InvalidCompoundImageRequestException thrown");
    			//Do something
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}catch(ChemblServiceException e){
    			System.out.println( "ChemblServiceException thrown");
    			//Do something
    		}
    		
    	
    
    		/* Fetch the bioactivities for an individual ChEMBL compound */
    		
    		/*
    		System.out.println("***** Fetching compound bioactivities *****");
    		
    		List cmpd_bioactivities = chemblClient.getCompoundBioactivities("CHEMBL1");
    		System.out.println( "cmpd bioactivity list size: " + cmpd_bioactivities.size());
    		
    		
    		for(Bioactivity bioactivity : cmpd_bioactivities )
    		{
    			System.out.println( "Bioactivity Assay Description: " + bioactivity.getAssay_description());
    		}
    	
    		
    		System.out.println("***** End fetching compound bioactivities *****");
    		
    		*/
    		
    		
    		/* ========================= API Assay Querying Examples ========================= */
    		
    		/* Fetch an individiual ChEMBL assay. If assay is not found an HTTP 404 status is returned from the web service server and translated into a AssayNotFoundException by the web service client */
    		
    		try{
    			Assay assay = chemblClient.getAssay("CHEMBL1000635");
    			System.out.println( "Assay ChEMBLID: " + assay.getChemblId());
    		}catch(AssayNotFoundException e){
    			System.out.println( "AssayNotFoundException thrown");
    			//Do something
    		}catch(ChemblServiceException e){
    			System.out.println( "ChemblServiceException thrown");
    			//Do something
    		}
    			
    		
    		/* Fetch the bioactivities for an individual ChEMBL assay */
    		/*
    		List assay_bioactivities = chemblClient.getAssayBioactivities("CHEMBL1014194");
    		
    	
    		for(Bioactivity bioactivity : assay_bioactivities )
    		{
    			System.out.println( "Bioactivity Assay Description: " + bioactivity.getAssay_description());
    		}
    		*/
    	 
    	}
    
    }

Getting Started with Perl


    #!/usr/bin/perl
    use strict;
    use warnings;
    use Data::Dumper;
    use LWP::Simple;
    use Scalar::Util qw(looks_like_number);
    use JSON;
    
    
    # 1. Use UniProt accession to get target details
    
    print"
    # =========================================================
    # 1. Use UniProt accession to get target details
    # =========================================================
    ";
    
    my $accession   = "Q00534";
    my $target_data = decode_json( get("https://www.ebi.ac.uk/chemblws/targets/uniprot/$accession.json") );
    
    print "Target Description: $target_data->{target}->{description}\n";
    print "Target CHEMBLID:    $target_data->{target}->{chemblId}\n";
    
    
    
    # 2. Get all bioactivties for target CHEMBL_ID
    
    print"
    
    # =========================================================
    # 2. Get all bioactivties for target CHEMBL_ID
    # =========================================================
    
    ";
    
    my $bioactivity_data = decode_json( get("https://www.ebi.ac.uk/chemblws/targets/$target_data->{target}->{chemblId}/bioactivities.json ") );
    print "Bioactivity Count:           ".scalar(@{$bioactivity_data->{bioactivities}})."\n";
    print "Bioactivity Count (IC50's):  ".scalar( grep {$_->{bioactivity_type} =~ /IC50/} @{$bioactivity_data->{bioactivities}})."\n";
    
    
    
    # 3. Get compounds with high binding affinity (IC50 < 100)
    
    print"
    
    # =========================================================
    # 3. Get compounds with high binding affinity (IC50 < 100)
    # =========================================================
    ";
    
    foreach my $bioactivity (grep {$_->{bioactivity_type} =~ /IC50/ && looks_like_number($_->{value}) && $_->{value} < 100 } @{$bioactivity_data->{bioactivities}}){
    	print "Compound CHEMBLID: $bioactivity->{ingredient_cmpd_chemblid}";
    	my $cmpd_data = decode_json( get("https://www.ebi.ac.uk/chemblws/compounds/$bioactivity->{ingredient_cmpd_chemblid}.json") );
        print "  [$cmpd_data->{compound}->{smiles}]\n";
    }
    
    
    
    # 4. Get assay details for Ki actvity types
    
    print"
    
    # =========================================================
    # 4. Get assay details for Ki actvity types
    # =========================================================
    ";
    
    foreach my $bioactivity (grep {$_->{bioactivity_type} =~ /Ki/i} @{$bioactivity_data->{bioactivities}}){
    	print "Assay CHEMBLID: $bioactivity->{assay_chemblid}";
    	my $assay_data = decode_json( get("https://www.ebi.ac.uk/chemblws/assays/$bioactivity->{assay_chemblid}.json") );
        print "  [$assay_data->{assay}->{assayDescription}]\n";
    }
    

Getting Started with Python (Python 2.7 notation)


    #! /usr/bin/env python
    
    import requests
    import json
    import re
    
    ######
    
    def looks_like_number(x):
        try:
            float(x)
            return True
        except ValueError:
            return False
    
    ########################################################################
    
    # 1. Use UniProt accession to get target details
    
    print """
    # =========================================================
    # 1. Use UniProt accession to get target details
    # =========================================================
    """
    
    accession = 'Q00534'
    
    target_data = json.loads(requests.get("https://www.ebi.ac.uk/chemblws/targets/uniprot/%s.json" % accession).content)
    
    print "Target Description: %s" % target_data['target']['description']
    print "Target CHEMBLID:    %s" % target_data['target']['chemblId']
    
    # 2. Get all bioactivties for target CHEMBL_ID
    
    print """
    
    # =========================================================
    # 2. Get all bioactivties for target CHEMBL_ID
    # =========================================================
    """
    
    bioactivity_data = json.loads(requests.get("https://www.ebi.ac.uk/chemblws/targets/%s/bioactivities.json" % target_data['target']['chemblId']).content)
    
    print "Bioactivity Count:           %d" % len(bioactivity_data['bioactivities'])
    print "Bioactivity Count (IC50's):  %d" % len([record for record in bioactivity_data['bioactivities'] if record['bioactivity_type'] == 'IC50'])
    
    # 3. Get compounds with high binding affinity (IC50 < 100)
    
    print """
    
    # =========================================================
    # 3. Get compounds with high binding affinity (IC50 < 100)
    # =========================================================
    """
    
    for bioactivity in [record for record in bioactivity_data['bioactivities'] if re.search('IC50', record['bioactivity_type']) and looks_like_number(record['value']) and float(record['value']) < 100]:
    
        print "Compound CHEMBLID: %s" % bioactivity['ingredient_cmpd_chemblid']
    
        cmpd_data = json.loads(requests.get("https://www.ebi.ac.uk/chemblws/compounds/%s.json" % bioactivity['ingredient_cmpd_chemblid']).content)
    
        print "  %s" % cmpd_data['compound']['smiles']
    
    # 4. Get assay details foe Ki actvity types
    
    print """
    
    # =========================================================
    # 4. Get assay details foe Ki actvity types
    # =========================================================
    """
    
    for bioactivity in [record for record in bioactivity_data['bioactivities'] if re.search('Ki', record['bioactivity_type'], re.IGNORECASE)]:
    
        print "Assay CHEMBLID: %s" % bioactivity['assay_chemblid']
    
        assay_data = json.loads(requests.get("https://www.ebi.ac.uk/chemblws/assays/%s.json" % bioactivity['assay_chemblid']).content)
    
        print "  %s" % assay_data['assay']['assayDescription']
    

API Features



Description: Check API status
Input: N.A.
Output: Response is the string "UP" if services are running
Example URL: http://www.ebi.ac.uk/chemblws/status/


Description: Get compound by ChEMBLID
Input: Compound ChEMBLID
Output: Compound Record
Example URL (XML Output): http://www.ebi.ac.uk/chemblws/compounds/CHEMBL1
Example URL (JSON Output): http://www.ebi.ac.uk/chemblws/compounds/CHEMBL1.json


Description: Get individual compound by standard InChi Key
Input: Standard InChi Key
Output: Compound Record
Example URL (XML Output): http://www.ebi.ac.uk/chemblws/compounds/stdinchikey/QFFGVLORLPOAEC-SNVBAGLBSA-N
Example URL (JSON Output): http://www.ebi.ac.uk/chemblws/compounds/stdinchikey/QFFGVLORLPOAEC-SNVBAGLBSA-N.json


Description: Get list of compounds by Canonical SMILES
Input: SMILES string
Output: List of Compound Records
Example URL (XML Output): http://www.ebi.ac.uk/chemblws/compounds/smiles/COc1ccc2[C@@H]3[C@H](COc2c1)C(C)(C)OC4=C3C(=O)C(=O)C5=C4OC(C)(C)[C@@H]6COc7cc(OC)ccc7[C@H]56
Example URL (JSON Output): http://www.ebi.ac.uk/chemblws/compounds/smiles/COc1ccc2[C@@H]3[C@H](COc2c1)C(C)(C)OC4=C3C(=O)C(=O)C5=C4OC(C)(C)[C@@H]6COc7cc(OC)ccc7[C@H]56.json


Description: Get list of compounds by Canonical SMILES by HTTP POST
Input: SMILES string
Output: List of Compound Records
Example URL (XML Output): http://www.ebi.ac.uk/chemblws/compounds/smiles
Example URL (JSON Output): http://www.ebi.ac.uk/chemblws/compounds/smiles.json
POST parameter: smiles (Required)
Example parameter value: COc1ccc2[C@@H]3[C@H](COc2c1)C(C)(C)OC4=C3C(=O)C(=O)C5=C4OC(C)(C)[C@@H]6COc7cc(OC)ccc7[C@H]56


Description: Get list of compounds containing the substructure represented by the given Canonical SMILES
Input: SMILES string
Output: List of Compound Records
Example URL (XML Output): http://www.ebi.ac.uk/chemblws/compounds/substructure/CN(CCCN)c1cccc2ccccc12
Example URL (JSON Output): http://www.ebi.ac.uk/chemblws/compounds/substructure/CN(CCCN)c1cccc2ccccc12.json


Description: Get list of compounds containing the substructure represented by the given Canonical SMILES by HTTP POST
Input: SMILES string
Output: List of Compound Records
Example URL (XML Output): http://www.ebi.ac.uk/chemblws/compounds/substructure
Example URL (JSON Output): http://www.ebi.ac.uk/chemblws/compounds/substructure.json
POST parameter: smiles (Required)
Example parameter value: N#CCc2ccc1ccccc1c2


Description: Get list of compounds similar to the one represented by the given Canonical SMILES, at a similarity cutoff percentage score (minimum value=70%, maximum value=100%).
Input: SMILES string
Output: List of Compound Records
Example URL (XML Output): http://www.ebi.ac.uk/chemblws/compounds/similarity/COc1ccc2[C@@H]3[C@H](COc2c1)C(C)(C)OC4=C3C(=O)C(=O)C5=C4OC(C)(C)[C@@H]6COc7cc(OC)ccc7[C@H]56/70
Example URL (JSON Output): http://www.ebi.ac.uk/chemblws/compounds/similarity/COc1ccc2[C@@H]3[C@H](COc2c1)C(C)(C)OC4=C3C(=O)C(=O)C5=C4OC(C)(C)[C@@H]6COc7cc(OC)ccc7[C@H]56/70.json


Description: Get list of compounds similar to the one represented by the given Canonical SMILES, at a similarity cutoff percentage score (minimum value=70%, maximum value=100%) by HTTP POST
Input: SMILES string
Output: List of Compound Records
Example URL (XML Output): http://www.ebi.ac.uk/chemblws/compounds/similarity
Example URL (JSON Output): http://www.ebi.ac.uk/chemblws/compounds/similarity.json
POST parameter: smiles (Required)
Example parameter value: O=C(C=CC#Cc2cccc(NS(=O)(=O)c1ccc(N(=O)=O)cc1)c2)NO
POST parameter: simscore (Required)
Example parameter value: 75


Description: Get the image of a given compound.
Input: Compound ChEMBLID
Output: Byte array image data
Example URL: http://www.ebi.ac.uk/chemblws/compounds/CHEMBL192/image
Example URL with dimensions parameter: http://www.ebi.ac.uk/chemblws/compounds/CHEMBL192/image?dimensions=200


Description: Get individual compound bioactivities
Input: Compound ChEMBLID
Output: List of all bioactivity records in ChEMBLdb for a given compound ChEMBLID
Example URL (XML Output): http://www.ebi.ac.uk/chemblws/compounds/CHEMBL2/bioactivities
Example URL (JSON Output): http://www.ebi.ac.uk/chemblws/compounds/CHEMBL2/bioactivities.json


Description: Get alternative compound forms (e.g. parent and salts) of a compound
Input: Compound ChEMBLID
Output: List of ChEMBLIDs which correspond to alternative forms of query compound
Example URL (XML Output): http://www.ebi.ac.uk/chemblws/compounds/CHEMBL278020/form
Example URL (JSON Output): http://www.ebi.ac.uk/chemblws/compounds/CHEMBL278020/form.json


Description: Get mechanism of action details for compound (where compound is a drug)
Input: Compound ChEMBLID
Output: List of drug mechanism of action and ChEMBL target details
Example URL (XML Output): http://www.ebi.ac.uk/chemblws/compounds/CHEMBL1642/drugMechanism
Example URL (JSON Output): http://www.ebi.ac.uk/chemblws/compounds/CHEMBL1642/drugMechanism.json


Description: Get all targets
Input: N/A
Output: List of all target records in ChEMBLdb
Example URL (XML Output): http://www.ebi.ac.uk/chemblws/targets
Example URL (JSON Output): http://www.ebi.ac.uk/chemblws/targets.json


Description: Get target by ChEMBLID
Input: Target ChEMBLID
Output: Target Record
Example URL (XML Output): http://www.ebi.ac.uk/chemblws/targets/CHEMBL2477
Example URL (JSON Output): http://www.ebi.ac.uk/chemblws/targets/CHEMBL2477.json


Description: Get individual target by UniProt Accession Id
Input: UniProt Accession Id
Output: Target Record
Example URL (XML Output): http://www.ebi.ac.uk/chemblws/targets/uniprot/Q13936
Example URL (JSON Output): http://www.ebi.ac.uk/chemblws/targets/uniprot/Q13936.json


Description: Get individual target bioactivities
Input: Target ChEMBLID
Output: List of all bioactivity records in ChEMBLdb for a given target ChEMBLID
Example URL (XML Output): http://www.ebi.ac.uk/chemblws/targets/CHEMBL240/bioactivities
Example URL (JSON Output): http://www.ebi.ac.uk/chemblws/targets/CHEMBL240/bioactivities.json


Description: Get approved drugs for target
Input: Target ChEMBLID
Output: List of approved drugs and and ChEMBL compound details
Example URL (XML Output): http://www.ebi.ac.uk/chemblws/targets/CHEMBL1824/approvedDrug
Example URL (JSON Output): http://www.ebi.ac.uk/chemblws/targets/CHEMBL1824/approvedDrug.json


Description: Get assay by ChEMBLID
Input: Assay ChEMBLID
Output: Assay Record
Example URL (XML Output): http://www.ebi.ac.uk/chemblws/assays/CHEMBL1217643
Example URL (JSON Output): http://www.ebi.ac.uk/chemblws/assays/CHEMBL1217643.json


Description: Get individual assay bioactivities
Input: Assay ChEMBLID
Output: List of all bioactivity records in ChEMBLdb for a given assay ChEMBLID
Example URL (XML Output): http://www.ebi.ac.uk/chemblws/assays/CHEMBL1217643/bioactivities
Example URL (JSON Output): http://www.ebi.ac.uk/chemblws/assays/CHEMBL1217643/bioactivities.json


spacer
spacer