PubChem

App · Research & Academia · 10 actions

Look up any chemical from a workflow. PubChem is the world's largest open chemistry database, run by the US National Library of Medicine: around 120 million compounds, their properties, their names, the papers and patents that mention them, and 1.7 million biological experiments testing what they do. Turn a column of chemical names, brands or CAS numbers into formulas, weights, structures and drug likeness figures. Search a hundred million structures by what they contain rather than what they are called, or find the molecules that look like one you already have. Read what a compound has been tested against and what happened, or start from a gene and find the chemistry aimed at it. Download the structure as a file for modelling software, or as a clean drawing for a report. Every action takes whatever names a chemical, from a brand name to a SMILES string, and works out which it is. No account or API key required.

Actions

ActionWhat it does
Download a structure fileGet the molecule itself as a file, ready to hand to something else.
Find a compoundTurn whatever names a chemical into the chemical itself.
Find similar compoundsFind the molecules that look like one you already have.
Get a bioassayRead one biological experiment in full: what it set out to measure, the protein or organism it was aimed at, how it was run, how many compounds went through it and how many came out active, and which those were.
Get compound detailsBuild one table of chemistry across a whole list of compounds.
List a compound's namesOne chemical goes by hundreds of names: a trade name, a systematic name, a catalogue code, the spelling a supplier uses and the spelling a regulator uses.
List a compound's referencesFind out who has written about a chemical and who holds it.
List a compound's test resultsRead what a chemical has actually been tested against and what each experiment concluded.
Look up a gene, protein, pathway or organismWork the other way round: start from the biology and find the chemistry aimed at it.
Search by structureSearch a hundred million compounds by shape rather than by name.

Download a structure file

Get the molecule itself as a file, ready to hand to something else. The structure file is what modelling, docking and drawing software reads, flat for a diagram or as a computed three dimensional shape for anything that cares about how the molecule sits. The image is a clean drawing of the structure, for dropping into a report, an email or a slide. Both come back as a real file a later step can attach or save.

Inputs

CompoundcompoundtextRequired
The compound to read. Give whatever you have: a name or a brand, a CAS number, a SMILES or InChI string, an InChI key, a molecular formula or a PubChem CID. Which one it is gets worked out from the value, and the answer says which reading it used.
Search bysearch_bytext
How to read the value. Leave this on working it out unless the value could be read two ways: 'CCO' is a real compound name as well as the structure of ethanol, and PubChem's name index wins by default. Choosing here settles it.One of: auto (Work it out from the value), name (Name, brand or CAS number), cid (PubChem CID), smiles (SMILES structure), inchi (InChI string), inchikey (InChI key), formula (Molecular formula). Default: auto.
Filefile_formattext
What to download. The flat structure file exists for every compound. The three dimensional one is computed and PubChem leaves it out for very large, charged or incompletely defined molecules, which comes back saying so.One of: sdf_2d (Structure file (SDF, flat)), sdf_3d (Structure file (SDF, 3D shape)), png (Structure drawing (PNG image)). Default: sdf_2d.

Outputs

cidnumber
PubChem's number for it
content_typetext
The file's type
document_reftext
The saved file, for a later step to use
documentslist
Every file this step saved, which is one
download_urltext
A link that serves the file
file_formattext
Which file was fetched
file_format_labeltext
That file in words
filenametext
What the file is called
matched_bytext
Which reading of the value found the compound: name, cid, smiles, inchi, inchikey or formula
matched_by_labeltext
That reading in words, for showing to somebody
nametext
What it is called
querytext
What was asked for, as given
size_bytesnumber
How big it is
urltext
The compound's page on PubChem
Example output
{
  "cid": 2244,
  "content_type": "chemical/x-mdl-sdfile",
  "document_ref": "doc_4f1a2c8d9b7e6a5c3d2b1a09",
  "documents": [
    {
      "content_type": "chemical/x-mdl-sdfile",
      "document_ref": "doc_4f1a2c8d9b7e6a5c3d2b1a09",
      "filename": "aspirin-cid-2244.sdf",
      "size_bytes": 3706,
      "url": "/actions/core/serve-document/doc_4f1a2c8d9b7e6a5c3d2b1a09?teamId=64b0000000000000000000aa"
    }
  ],
  "download_url": "/actions/core/serve-document/doc_4f1a2c8d9b7e6a5c3d2b1a09?teamId=64b0000000000000000000aa",
  "file_format": "sdf_2d",
  "file_format_label": "Structure file (SDF, flat)",
  "filename": "aspirin-cid-2244.sdf",
  "matched_by": "name",
  "matched_by_label": "Name, brand or CAS number",
  "name": "Aspirin",
  "query": "aspirin",
  "size_bytes": 3706,
  "url": "https://pubchem.ncbi.nlm.nih.gov/compound/2244"
}

Find a compound

Turn whatever names a chemical into the chemical itself. Give a name, a brand, a CAS number, a structure drawn as SMILES or InChI, an InChI key, a molecular formula or a PubChem CID, and get back the formula, the weight, the structure as text, the properties that decide how a molecule behaves, and a plain language description of what it actually is. This is the step to put first: everything else here takes the same kinds of value, so once a spreadsheet column or a form answer has been run through this, the rest of the workflow knows exactly which molecule it is dealing with.

Inputs

CompoundcompoundtextRequired
The compound to read. Give whatever you have: a name or a brand, a CAS number, a SMILES or InChI string, an InChI key, a molecular formula or a PubChem CID. Which one it is gets worked out from the value, and the answer says which reading it used.
Search bysearch_bytext
How to read the value. Leave this on working it out unless the value could be read two ways: 'CCO' is a real compound name as well as the structure of ethanol, and PubChem's name index wins by default. Choosing here settles it.One of: auto (Work it out from the value), name (Name, brand or CAS number), cid (PubChem CID), smiles (SMILES structure), inchi (InChI string), inchikey (InChI key), formula (Molecular formula). Default: auto.
How many matcheslimitnumber
A name can match more than one compound: 'glucose' matches the two mirror images and the form with no mirror image specified. Raise this to see them all rather than only the closest.From 1 to 25. Default: 1.

Outputs

compoundobject
The closest match, repeated here so a later step can read it without picking an item out of a list
compoundslist
countnumber
How many compounds matched
matched_bytext
Which reading of the value found the compound: name, cid, smiles, inchi, inchikey or formula
matched_by_labeltext
That reading in words, for showing to somebody
querytext
What was asked for, as given
Example output
{
  "compound": {
    "cid": 2244,
    "hydrogen_bond_acceptors": 4,
    "hydrogen_bond_donors": 1,
    "image_url": "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/2244/PNG",
    "inchikey": "BSYNRYMUTXBXSQ-UHFFFAOYSA-N",
    "iupac_name": "2-acetyloxybenzoic acid",
    "molecular_formula": "C9H8O4",
    "molecular_weight": 180.16,
    "name": "Aspirin",
    "polar_surface_area": 63.6,
    "rotatable_bonds": 3,
    "smiles": "CC(=O)OC1=CC=CC=C1C(=O)O",
    "url": "https://pubchem.ncbi.nlm.nih.gov/compound/2244",
    "xlogp": 1.2
  },
  "compounds": [
    {
      "cid": 2244,
      "description": "Acetylsalicylic acid is a member of the class of benzoic acids that is salicylic acid in which the hydrogen attached to the phenolic hydroxy group has been replaced by an acetoxy group.",
      "description_source": "ChEBI",
      "description_url": "https://www.ebi.ac.uk/chebi/searchId.do?chebiId=CHEBI:15365",
      "hydrogen_bond_acceptors": 4,
      "hydrogen_bond_donors": 1,
      "image_url": "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/2244/PNG",
      "inchikey": "BSYNRYMUTXBXSQ-UHFFFAOYSA-N",
      "iupac_name": "2-acetyloxybenzoic acid",
      "molecular_formula": "C9H8O4",
      "molecular_weight": 180.16,
      "name": "Aspirin",
      "polar_surface_area": 63.6,
      "rotatable_bonds": 3,
      "smiles": "CC(=O)OC1=CC=CC=C1C(=O)O",
      "url": "https://pubchem.ncbi.nlm.nih.gov/compound/2244",
      "xlogp": 1.2
    }
  ],
  "count": 1,
  "matched_by": "name",
  "matched_by_label": "Name, brand or CAS number",
  "query": "aspirin"
}

Find similar compounds

Find the molecules that look like one you already have. PubChem compares the structures themselves rather than their names, so this surfaces the analogue nobody thought to name similarly: a generic beside a brand, a metabolite beside its parent, a cheaper reagent beside an expensive one. Set how alike they have to be, from 50 for a loose family resemblance to 95 and above for near twins. The compound you asked about always comes back first and is flagged, so a workflow can drop it in one step.

Inputs

CompoundcompoundtextRequired
The compound to compare everything against. A name, a CAS number, a SMILES or InChI string, an InChI key or a PubChem CID all work.
Search bysearch_bytext
How to read the value. Leave this on working it out unless the value could be read two ways: 'CCO' is a real compound name as well as the structure of ethanol, and PubChem's name index wins by default. Choosing here settles it.One of: auto (Work it out from the value), name (Name, brand or CAS number), cid (PubChem CID), smiles (SMILES structure), inchi (InChI string), inchikey (InChI key), formula (Molecular formula). Default: auto.
How alikesimilaritynumber
The lowest score a compound has to reach to be returned, out of 100. Ninety is the usual starting point and finds close relatives. Drop towards 70 to widen the net, and expect many more hits: each ten points down roughly multiplies the results.From 50 to 100. Default: 90.
How many to returnlimitnumber
How many similar compounds to return, best first.From 1 to 100. Default: 25.

Outputs

cidnumber
The compound everything was compared against
compoundslist
countnumber
How many compounds came back
matched_bytext
Which reading of the value found the compound: name, cid, smiles, inchi, inchikey or formula
matched_by_labeltext
That reading in words, for showing to somebody
querytext
What was asked for, as given
similaritynumber
The threshold that was used
Example output
{
  "cid": 2244,
  "compounds": [
    {
      "cid": 2244,
      "image_url": "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/2244/PNG",
      "inchikey": "BSYNRYMUTXBXSQ-UHFFFAOYSA-N",
      "is_query_compound": true,
      "molecular_formula": "C9H8O4",
      "molecular_weight": 180.16,
      "name": "Aspirin",
      "smiles": "CC(=O)OC1=CC=CC=C1C(=O)O",
      "url": "https://pubchem.ncbi.nlm.nih.gov/compound/2244"
    },
    {
      "cid": 5161,
      "image_url": "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/5161/PNG",
      "inchikey": "WVYADZUPLLSGPU-UHFFFAOYSA-N",
      "is_query_compound": false,
      "molecular_formula": "C14H10O5",
      "molecular_weight": 258.23,
      "name": "Salsalate",
      "smiles": "C1=CC=C(C(=C1)C(=O)OC2=CC=CC=C2C(=O)O)O",
      "url": "https://pubchem.ncbi.nlm.nih.gov/compound/5161"
    }
  ],
  "count": 2,
  "matched_by": "name",
  "matched_by_label": "Name, brand or CAS number",
  "query": "aspirin",
  "similarity": 90
}

Get a bioassay

Read one biological experiment in full: what it set out to measure, the protein or organism it was aimed at, how it was run, how many compounds went through it and how many came out active, and which those were. The description and protocol are the researchers' own words, so this is where a result stops being a number and becomes something you can judge. Assay numbers come from 'List a compound's test results' or from looking up a gene.

Inputs

Assay numberassay_idnumberRequired
PubChem's number for the experiment, its AID. Earlier steps return these, and they are the number in a pubchem.ncbi.nlm.nih.gov/bioassay/ link.At least 1.
Compounds to listcompoundstext
Which of the tested compounds to return alongside the experiment. The active ones are what a result is usually about. A large screen can hold hundreds of thousands, so choose none when only the description is wanted.One of: active (The ones that worked), inactive (The ones that did not), all (Everything tested), none (None, just the experiment). Default: active.
How many compoundslimitnumber
How many of those compounds to list.From 1 to 200. Default: 25.

Outputs

assay_idnumber
The experiment's number
commenttext
What the researchers noted about the results
compound_countsobject
How many compounds were tested and how the verdicts broke down
compoundslist
countnumber
How many compounds came back
descriptiontext
What it set out to measure, in the researchers' words
last_updatedtext
When the data last changed, as YYYY-MM-DD
listedtext
Which compounds were asked for
methodtext
Screening, confirmatory or summary. A confirmatory result carries far more weight than a screening one
nametext
What it was called
protocoltext
How it was run
sourcetext
Which laboratory or database deposited it
source_idtext
Their own reference for it
targetslist
What it was aimed at
urltext
The experiment's page on PubChem
Example output
{
  "assay_id": 1000,
  "comment": "Percent inhibition was determined by comparing the reaction rates of the compounds to the full reaction.",
  "compound_counts": {
    "active": 36,
    "all": 57,
    "inactive": 21,
    "inconclusive": 0,
    "probe": 0,
    "unspecified": 0
  },
  "compounds": [
    {
      "cid": 16749973,
      "image_url": "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/16749973/PNG",
      "inchikey": "PXQFHLQHXRPYSN-UHFFFAOYSA-N",
      "molecular_formula": "C19H18N2O3S",
      "molecular_weight": 354.4,
      "name": "CID 16749973",
      "smiles": "CC1=CC=C(C=C1)S(=O)(=O)N2CCN(CC2)C(=O)C3=CC=CO3",
      "url": "https://pubchem.ncbi.nlm.nih.gov/compound/16749973"
    }
  ],
  "count": 1,
  "description": "Streptococcus pneumoniae takes the lives of nearly 4,000 people daily and antibiotic resistant strains are becoming an increasing problem.",
  "last_updated": "2008-03-05",
  "listed": "active",
  "method": "confirmatory",
  "name": "Screening for Inhibitors of the Mevalonate Pathway in Streptococcus Pneumoniae",
  "protocol": "Mevalonate Kinase Protocol for 1 mL cuvet assay",
  "source": "SRMLSC",
  "source_id": "SPE-MK-Sec",
  "targets": [
    {
      "accession": "YP_815859",
      "gene_id": null,
      "gene_symbol": null,
      "name": "mevalonate kinase"
    }
  ],
  "url": "https://pubchem.ncbi.nlm.nih.gov/bioassay/1000"
}

Get compound details

Build one table of chemistry across a whole list of compounds. Hand it the column out of a spreadsheet, a form or an earlier step, up to a hundred at a time, tick the facts you want, and get a row per compound with those columns filled in. Anything PubChem cannot place comes back in its own list rather than being quietly dropped, so a run over real data says exactly which rows need a human. This is the enrichment step: names in, formulas, weights, solubility and drug likeness out.

Inputs

CompoundscompoundslistRequired
The compounds to look up, up to a hundred. Each one can be a name, a brand, a CAS number, a SMILES or InChI string, an InChI key or a PubChem CID, and they can be mixed freely.
Search bysearch_bytext
How to read the value. Leave this on working it out unless the value could be read two ways: 'CCO' is a real compound name as well as the structure of ethanol, and PubChem's name index wins by default. Choosing here settles it.One of: auto (Work it out from the value), name (Name, brand or CAS number), cid (PubChem CID), smiles (SMILES structure), inchi (InChI string), inchikey (InChI key), formula (Molecular formula). Default: auto.
Facts to includepropertieslist
Which columns the table should carry. The default is the set that identifies a compound and sizes it up. Fat solubility, polar surface area, hydrogen bond donors and acceptors, and rotatable bonds are the numbers behind Lipinski's rule of five, which is the usual first read on whether a molecule could be a drug.One or more of: name, iupac_name (Systematic name), molecular_formula (Molecular formula), molecular_weight (Molecular weight), exact_mass (Exact mass), monoisotopic_mass (Monoisotopic mass), smiles, connectivity_smiles (SMILES without stereochemistry), inchi, inchikey (InChI key), and 20 more. Default: ["name", "molecular_formula", "molecular_weight", "smiles", "inchikey", "iupac_name", "xlogp", "polar_surface_area", "hydrogen_bond_donors", "hydrogen_bond_acceptors", "rotatable_bonds"].

Outputs

compoundslist
countnumber
How many compounds came back
not_foundlist
The values PubChem could not place
propertieslist
The columns the table carries
requestednumber
How many were asked for
Example output
{
  "compounds": [
    {
      "cid": 2244,
      "image_url": "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/2244/PNG",
      "matched_by": "name",
      "molecular_formula": "C9H8O4",
      "molecular_weight": 180.16,
      "name": "Aspirin",
      "query": "aspirin",
      "url": "https://pubchem.ncbi.nlm.nih.gov/compound/2244",
      "xlogp": 1.2
    },
    {
      "cid": 3672,
      "image_url": "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/3672/PNG",
      "matched_by": "name",
      "molecular_formula": "C13H18O2",
      "molecular_weight": 206.28,
      "name": "Ibuprofen, (+-)-",
      "query": "ibuprofen",
      "url": "https://pubchem.ncbi.nlm.nih.gov/compound/3672",
      "xlogp": 3.5
    }
  ],
  "count": 2,
  "not_found": [
    {
      "query": "widget cleaner",
      "reason": "PubChem has nothing matching 'widget cleaner'. Check the spelling, or set 'Search by' if it is a structure rather than a name."
    }
  ],
  "properties": [
    "name",
    "molecular_formula",
    "molecular_weight",
    "xlogp"
  ],
  "requested": 3
}

List a compound's names

One chemical goes by hundreds of names: a trade name, a systematic name, a catalogue code, the spelling a supplier uses and the spelling a regulator uses. This lists them all for one compound, so two records that look unrelated can be matched up. CAS registry numbers are pulled out into their own list, because that is the number an order form or a safety sheet asks for and it is otherwise buried among the names.

Inputs

CompoundcompoundtextRequired
The compound to read. Give whatever you have: a name or a brand, a CAS number, a SMILES or InChI string, an InChI key, a molecular formula or a PubChem CID. Which one it is gets worked out from the value, and the answer says which reading it used.
Search bysearch_bytext
How to read the value. Leave this on working it out unless the value could be read two ways: 'CCO' is a real compound name as well as the structure of ethanol, and PubChem's name index wins by default. Choosing here settles it.One of: auto (Work it out from the value), name (Name, brand or CAS number), cid (PubChem CID), smiles (SMILES structure), inchi (InChI string), inchikey (InChI key), formula (Molecular formula). Default: auto.
Only names containingcontainstext
Keep only the names with this text in them, ignoring capitals. Useful for pulling out a supplier's catalogue codes, or for checking whether a particular spelling is one PubChem knows.
How many nameslimitnumber
How many names to return. They come back commonest first, so the default is usually plenty.From 1 to 500. Default: 50.

Outputs

cas_numberslist
Every CAS registry number on the record. More than one is normal: a compound can be registered again as a hydrate or a different salt
cidnumber
PubChem's number for it
countnumber
How many names came back
matched_bytext
Which reading of the value found the compound: name, cid, smiles, inchi, inchikey or formula
matched_by_labeltext
That reading in words, for showing to somebody
nametext
The name it is most commonly filed under
nameslist
The names, commonest first
querytext
What was asked for, as given
totalnumber
How many it has in all
urltext
The compound's page on PubChem
Example output
{
  "cas_numbers": [
    "50-78-2",
    "98201-60-6",
    "11126-35-5"
  ],
  "cid": 2244,
  "count": 5,
  "matched_by": "name",
  "matched_by_label": "Name, brand or CAS number",
  "name": "aspirin",
  "names": [
    "aspirin",
    "ACETYLSALICYLIC ACID",
    "2-Acetoxybenzoic acid",
    "Acylpyrin",
    "Ecotrin"
  ],
  "query": "aspirin",
  "total": 695,
  "url": "https://pubchem.ncbi.nlm.nih.gov/compound/2244"
}

List a compound's references

Find out who has written about a chemical and who holds it. Returns the papers that mention it, linked straight to PubMed; the patents that claim it, linked to Google Patents; the databases and suppliers that carry a record for it, with links back to those records; and the catalogue numbers they file it under. Use it to gauge how well studied something is before committing to it, to watch a competitor's patent activity, or to find where else to buy a reagent. Well studied compounds have six figures of patents, so the counts come back in full and the lists are trimmed.

Inputs

CompoundcompoundtextRequired
The compound to read. Give whatever you have: a name or a brand, a CAS number, a SMILES or InChI string, an InChI key, a molecular formula or a PubChem CID. Which one it is gets worked out from the value, and the answer says which reading it used.
Search bysearch_bytext
How to read the value. Leave this on working it out unless the value could be read two ways: 'CCO' is a real compound name as well as the structure of ethanol, and PubChem's name index wins by default. Choosing here settles it.One of: auto (Work it out from the value), name (Name, brand or CAS number), cid (PubChem CID), smiles (SMILES structure), inchi (InChI string), inchikey (InChI key), formula (Molecular formula). Default: auto.
What to look forreference_typeslist
Which kinds of reference to fetch. Each one is real work for PubChem, so asking only for what is needed keeps the step quick: patents alone can move several megabytes for a common drug.One or more of: papers, patents, sources (Contributing databases), source_links (Links to the original records), registry_ids (Catalogue and registry numbers), genes, organisms, structures (Solved 3D structures). Default: ["papers", "patents", "sources"].
How many of eachlimitnumber
How many of each kind to list. The full count is always returned whatever this is set to.From 1 to 500. Default: 25.

Outputs

cidnumber
PubChem's number for it
matched_bytext
Which reading of the value found the compound: name, cid, smiles, inchi, inchikey or formula
matched_by_labeltext
That reading in words, for showing to somebody
querytext
What was asked for, as given
referencesobject
One list per kind asked for. Papers, patents, genes, organisms and solved structures carry a link each; contributing databases and catalogue numbers are plain text
shown_per_typenumber
How many of each kind were listed
totalsobject
How many exist of each kind asked for, before trimming
urltext
The compound's page on PubChem
Example output
{
  "cid": 2519,
  "matched_by": "name",
  "matched_by_label": "Name, brand or CAS number",
  "query": "caffeine",
  "references": {
    "papers": [
      {
        "id": "10214707",
        "url": "https://pubmed.ncbi.nlm.nih.gov/10214707/"
      },
      {
        "id": "10337936",
        "url": "https://pubmed.ncbi.nlm.nih.gov/10337936/"
      }
    ],
    "patents": [
      {
        "id": "US-10238600-B2",
        "url": "https://patents.google.com/patent/US-10238600-B2"
      }
    ],
    "sources": [
      "KEGG",
      "DTP/NCI"
    ]
  },
  "shown_per_type": 2,
  "totals": {
    "papers": 11139,
    "patents": 79318,
    "sources": 590
  },
  "url": "https://pubchem.ncbi.nlm.nih.gov/compound/2519"
}

List a compound's test results

Read what a chemical has actually been tested against and what each experiment concluded. PubChem holds over a million biological assays, and a widely studied compound appears in thousands of them: this returns a row per result with the experiment, the verdict, the protein it was tested against and the potency where one was measured, plus a tally of how the verdicts break down. Filter to the active results to see only where something worked, which is how to tell a molecule with a real biological story from one that has simply been screened a lot.

Inputs

CompoundcompoundtextRequired
The compound to read. Give whatever you have: a name or a brand, a CAS number, a SMILES or InChI string, an InChI key, a molecular formula or a PubChem CID. Which one it is gets worked out from the value, and the answer says which reading it used.
Search bysearch_bytext
How to read the value. Leave this on working it out unless the value could be read two ways: 'CCO' is a real compound name as well as the structure of ethanol, and PubChem's name index wins by default. Choosing here settles it.One of: auto (Work it out from the value), name (Name, brand or CAS number), cid (PubChem CID), smiles (SMILES structure), inchi (InChI string), inchikey (InChI key), formula (Molecular formula). Default: auto.
Verdicts to keepoutcomeslist
Which results to return. All of them by default. Most results in a screening library are inactive, so narrowing to active is usually what makes the answer readable. The tally always covers every verdict, whatever is kept here.One or more of: Active, Inactive, Inconclusive, Unspecified, Probe. Default: ["Active", "Inactive", "Inconclusive", "Unspecified", "Probe"].
How many resultslimitnumber
How many results to return. A heavily screened compound has thousands, and the tally above covers all of them whatever this is set to.From 1 to 500. Default: 50.

Outputs

cidnumber
PubChem's number for it
countnumber
How many results came back
matched_bytext
Which reading of the value found the compound: name, cid, smiles, inchi, inchikey or formula
matched_by_labeltext
That reading in words, for showing to somebody
matchingnumber
How many matched the verdicts kept
outcome_countsobject
How the verdicts break down across everything
querytext
What was asked for, as given
resultslist
tested_in_assaysnumber
How many separate experiments it appears in
totalnumber
How many results there are in all
urltext
The compound's page on PubChem
Example output
{
  "cid": 1983,
  "count": 2,
  "matched_by": "cid",
  "matched_by_label": "PubChem CID",
  "matching": 49,
  "outcome_counts": {
    "Active": 49,
    "Inactive": 3425,
    "Inconclusive": 351,
    "Probe": 0,
    "Unspecified": 1127
  },
  "query": "1983",
  "results": [
    {
      "assay_id": 1188,
      "assay_name": "DSSTox (EPAFHM) EPA Fathead Minnow Acute Toxicity",
      "assay_type": "Other",
      "cid": 1983,
      "outcome": "Active",
      "substance_id": 48415047,
      "url": "https://pubchem.ncbi.nlm.nih.gov/bioassay/1188"
    },
    {
      "assay_id": 1195,
      "assay_name": "DSSTox (FDAMDD) FDA Maximum Recommended Daily Dose Database",
      "assay_type": "Other",
      "cid": 1983,
      "outcome": "Active",
      "substance_id": 48415502,
      "url": "https://pubchem.ncbi.nlm.nih.gov/bioassay/1195"
    }
  ],
  "tested_in_assays": 2861,
  "total": 4952,
  "url": "https://pubchem.ncbi.nlm.nih.gov/compound/1983"
}

Look up a gene, protein, pathway or organism

Work the other way round: start from the biology and find the chemistry aimed at it. Name a gene, a protein, a biological pathway or an organism and get what it is, what else it is called, which species it belongs to, and every experiment PubChem holds that was aimed at it. Those experiment numbers feed straight into 'Get a bioassay', which is how to go from 'we are interested in this gene' to the compounds that have actually been tested against it.

Inputs

Kindtarget_typetextRequired
What sort of thing is being looked up. PubChem files each one separately and there is no free text search across them, so this has to match what the value below actually is.One of: gene, protein, pathway, organism. Default: gene.
Name or identifiertargettextRequired
A gene by its symbol or its NCBI number, a protein by its accession, a pathway by its full accession including the source, or an organism by its name or its taxonomy number.
Include the experimentsinclude_assaystrue/false
Whether to list the experiments aimed at it. A well studied gene has thousands, so turn this off when only the identity is wanted. Pathways never carry experiments and always come back without them.Default: true.
How many experimentslimitnumber
How many experiment numbers to list.From 1 to 500. Default: 25.

Outputs

assay_countnumber
How many experiments were aimed at it
assayslist
assays_listedtrue/false
Whether the experiments were looked up. False means the count below says nothing either way
categorytext
How the source classifies the pathway
common_nametext
An organism's everyday name
descriptiontext
What it is and what it does
full_nametext
Its full name
idtext
PubChem's identifier for it: a number for a gene or an organism, an accession for a protein or a pathway
lineageobject
An organism's classification, genus upwards
matched_bytext
Which index answered
nametext
Its short name
organismtext
Which species a gene or protein belongs to
organism_idnumber
That species' taxonomy number
querytext
What was asked for
ranktext
Where an organism sits, e.g. species
sourcetext
Which database a pathway came from
source_urltext
That database's page for the pathway
synonymslist
What else it is called
target_typetext
What kind of thing was looked up
target_type_labeltext
That kind in words
Example output
{
  "assay_count": 5194,
  "assays": [
    {
      "assay_id": 1433,
      "url": "https://pubchem.ncbi.nlm.nih.gov/bioassay/1433"
    },
    {
      "assay_id": 1622,
      "url": "https://pubchem.ncbi.nlm.nih.gov/bioassay/1622"
    }
  ],
  "assays_listed": true,
  "description": "The protein encoded by this gene is a transmembrane glycoprotein that is a member of the protein kinase superfamily.",
  "full_name": "epidermal growth factor receptor",
  "id": 1956,
  "matched_by": "genesymbol",
  "name": "EGFR",
  "organism": "Homo sapiens (human)",
  "organism_id": 9606,
  "query": "EGFR",
  "synonyms": [
    "ERBB",
    "ERBB1",
    "HER1"
  ],
  "target_type": "gene",
  "target_type_label": "Gene"
}

Search by structure

Search a hundred million compounds by shape rather than by name. Draw a fragment and ask what contains it, to find every molecule built around a particular ring or group. Or name a whole molecule and ask what it is part of, to find the salts, esters and mixtures it turns up in. Or ask for the exact structure, which is how to check whether something has already been catalogued. Or ask for everything sharing a molecular formula, which is how to find the isomers that weigh the same and behave differently.

Inputs

StructurestructuretextRequired
What to search for. A SMILES string for a structure or a fragment, a SMARTS pattern for a looser one, an InChI string, a PubChem CID, or a molecular formula when the match below is set to the formula.
Matchmatchtext
How to compare. Containing the fragment is the usual one and finds every molecule built around it. Being part of the structure is the reverse, and finds the salts and mixtures a molecule appears in. Exactly this structure is the check for whether something is already catalogued, and the formula finds the isomers.One of: contains (Contains this fragment), contained_in (Is part of this structure), identical (Is exactly this structure), same_formula (Has this molecular formula). Default: contains.
Read the structure asstructure_typetext
How to read the value above. Leave this on working it out unless you mean a SMARTS pattern, which looks like SMILES and cannot be told apart from it. Ignored when matching on the molecular formula.One of: auto (Work it out from the value), smiles (SMILES structure), smarts (SMARTS pattern), inchi (InChI string), cid (PubChem CID). Default: auto.
How many to returnlimitnumber
How many compounds to return. A common fragment matches millions, so this is what keeps the answer usable.From 1 to 200. Default: 25.

Outputs

compoundslist
countnumber
How many compounds came back
matchtext
How it was compared
match_labeltext
That comparison in words
querytext
What was searched for
reached_limittrue/false
True when the answer was cut off at the limit, so there are more to be had
read_astext
How the value was read
Example output
{
  "compounds": [
    {
      "cid": 5564,
      "image_url": "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/5564/PNG",
      "inchikey": "XEFQLINVKFYRCS-UHFFFAOYSA-N",
      "molecular_formula": "C12H7Cl3O2",
      "molecular_weight": 289.5,
      "name": "Triclosan",
      "smiles": "C1=CC(=C(C=C1Cl)O)OC2=C(C=C(C=C2)Cl)Cl",
      "url": "https://pubchem.ncbi.nlm.nih.gov/compound/5564"
    },
    {
      "cid": 6643,
      "image_url": "https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/cid/6643/PNG",
      "inchikey": "NRZWYNLTFLDQQX-UHFFFAOYSA-N",
      "molecular_formula": "C11H16O",
      "molecular_weight": 164.24,
      "name": "4-tert-Pentylphenol",
      "smiles": "CCC(C)(C)C1=CC=C(C=C1)O",
      "url": "https://pubchem.ncbi.nlm.nih.gov/compound/6643"
    }
  ],
  "count": 2,
  "match": "contains",
  "match_label": "Contains this fragment",
  "query": "c1ccccc1O",
  "reached_limit": true,
  "read_as": "smiles"
}

On this page