Skill Tracer
Skills › Scientific Agent Skills › database-lookup › zinc.md

zinc.md

202 lines · skills/database-lookup/references/zinc.md at 5f2bc03

Open on GitHub
1# ZINC Database API
2

ZINC Database API

Raw lines 1 to 2
3## Base URL
4
5```
6https://zinc.docking.org
7```
8

Base URL

https://zinc.docking.org
Raw lines 3 to 8
9## Auth
11The documented ZINC15-style interface is public, but automated requests may be redirected to a human-verification page. A 2026-09-30 lookup returned such HTML instead of JSON. Detect this response and report the access limitation; do not bypass the challenge or interpret it as a compound record.

Auth

The documented ZINC15-style interface is public, but automated requests may be redirected to a human-verification page. A 2026-09-30 lookup returned such HTML instead of JSON. Detect this response and report the access limitation; do not bypass the challenge or interpret it as a compound record.

Raw lines 9 to 12
13## URL Pattern
15Resources follow a uniform pattern with format specified by file extension:
17```
18/{resource}.{format}
19/{resource}/{id}.{format}
20/{resource}/subsets/{subset}.{format}
21```
23Supported formats: `.json`, `.csv`, `.txt`, `.smi`, `.sdf`, `.mol2`, `.xml`, `.png`
25Field selection (return only specific fields):
26```
27/{resource}.json:field1+field2+field3
28```

URL Pattern

Resources follow a uniform pattern with format specified by file extension:

/{resource}.{format}
/{resource}/{id}.{format}
/{resource}/subsets/{subset}.{format}

Supported formats: .json, .csv, .txt, .smi, .sdf, .mol2, .xml, .png

Field selection (return only specific fields):

/{resource}.json:field1+field2+field3
Raw lines 13 to 29
30## Key Endpoints

Key Endpoints

Raw lines 30 to 31
32### Substance lookup by ZINC ID
33```
34GET /substances/ZINC000000000053.json
35```

Substance lookup by ZINC ID

GET /substances/ZINC000000000053.json
Raw lines 32 to 36
37### Search by name
38```
39GET /substances.json?preferred_name=aspirin
40```

Search by name

GET /substances.json?preferred_name=aspirin
Raw lines 37 to 41
42### Search by InChIKey
43```
44GET /substances.json?inchikey=BSYNRYMUTXBXSQ-UHFFFAOYSA-N
45```

Search by InChIKey

GET /substances.json?inchikey=BSYNRYMUTXBXSQ-UHFFFAOYSA-N
Raw lines 42 to 46
47### Search by molecular formula
48```
49GET /substances.json?mol_formula=C9H8O4
50```

Search by molecular formula

GET /substances.json?mol_formula=C9H8O4
Raw lines 47 to 51
52### Substructure search (SMILES)
53```
54GET /substances.json?sub_id-matches=c1ccccc1&count=10
55```

Substructure search (SMILES)

GET /substances.json?sub_id-matches=c1ccccc1&count=10
Raw lines 52 to 56
57### Substructure search (SMARTS)
58```
59GET /substances.json?sub_id-matches-sma=[ND1]&count=10
60```

Substructure search (SMARTS)

GET /substances.json?sub_id-matches-sma=[ND1]&count=10
Raw lines 57 to 61
62### Similarity search (Tanimoto, ECFP4 fingerprints)
64The threshold (e.g., 40 = 40%) is part of the parameter name. Value can be SMILES or a ZINC ID number.
65```
66GET /substances/?ecfp4_fp-tanimoto-40=c1ccccc1O
67GET /substances/?ecfp4_fp-tanimoto-70=ZINC000000000053
68```

Similarity search (Tanimoto, ECFP4 fingerprints)

The threshold (e.g., 40 = 40%) is part of the parameter name. Value can be SMILES or a ZINC ID number.

GET /substances/?ecfp4_fp-tanimoto-40=c1ccccc1O
GET /substances/?ecfp4_fp-tanimoto-70=ZINC000000000053
Raw lines 62 to 69
70### Browse subsets
72Filter by purchasability, drug status, reactivity, or origin:
73```
74GET /substances/subsets/fda.json # FDA-approved drugs
75GET /substances/subsets/in-stock.json # In-stock compounds
76GET /substances/subsets/metabolites.json # Metabolites
77GET /substances/subsets/fda+in-stock.json # Combine subsets with +
78```
80Key subsets:
81- **Purchasability**: `in-stock`, `on-demand`, `for-sale`, `bb` (building blocks)
82- **Drug status**: `fda`, `world`, `in-trials`, `in-man`, `in-vivo`, `in-vitro`
83- **Origin**: `biogenic`, `metabolites`, `natural-products`, `endogenous`
84- **Reactivity**: `anodyne`, `clean`, `standard`, `reactive`

Browse subsets

Filter by purchasability, drug status, reactivity, or origin:

GET /substances/subsets/fda.json              # FDA-approved drugs
GET /substances/subsets/in-stock.json         # In-stock compounds
GET /substances/subsets/metabolites.json      # Metabolites
GET /substances/subsets/fda+in-stock.json     # Combine subsets with +

Key subsets:

  • Purchasability: in-stock, on-demand, for-sale, bb (building blocks)
  • Drug status: fda, world, in-trials, in-man, in-vivo, in-vitro
  • Origin: biogenic, metabolites, natural-products, endogenous
  • Reactivity: anodyne, clean, standard, reactive
Raw lines 70 to 85
86### Substances for a gene target
87```
88GET /genes/ACHE/substances.json?count=10
89```

Substances for a gene target

GET /genes/ACHE/substances.json?count=10
Raw lines 86 to 90
91### Catalogs
92```
93GET /catalogs.json # List all vendor catalogs
94GET /catalogs/cmcd/substances.json # Substances in a catalog
95```

Catalogs

GET /catalogs.json                            # List all vendor catalogs
GET /catalogs/cmcd/substances.json            # Substances in a catalog
Raw lines 91 to 96
97### 2D structure image (300x300 PNG)
98```
99GET /substances/ZINC000000000053.png
100```

2D structure image (300x300 PNG)

GET /substances/ZINC000000000053.png
Raw lines 97 to 101
102### Molecule format conversion
103```
104GET /apps/mol/convert?from=CC(=O)Oc1ccccc1C(=O)O&to=inchikey
105```
106Returns the InChIKey as plain text. Supports conversions between SMILES, InChI, and InChIKey.

Molecule format conversion

GET /apps/mol/convert?from=CC(=O)Oc1ccccc1C(=O)O&to=inchikey

Returns the InChIKey as plain text. Supports conversions between SMILES, InChI, and InChIKey.

Raw lines 102 to 107
108### Batch resolution (POST)
110Resolve multiple names, ZINC IDs, or SMILES at once:
111```
112POST /substances/resolved/
113Content-Type: application/x-www-form-urlencoded
115paste=aspirin%0Aibuprofen%0AZINC000000000053&identifiers=y&structures=y&names=y&output_format=json
116```

Batch resolution (POST)

Resolve multiple names, ZINC IDs, or SMILES at once:

POST /substances/resolved/
Content-Type: application/x-www-form-urlencoded

paste=aspirin%0Aibuprofen%0AZINC000000000053&identifiers=y&structures=y&names=y&output_format=json
Raw lines 108 to 117
118## Query Parameters

Query Parameters

Raw lines 118 to 119
120### Pagination
121- `count=N` — results per page (use `count=all` cautiously on large sets)
122- `page=N` — page number (1-indexed)

Pagination

  • count=N — results per page (use count=all cautiously on large sets)
  • page=N — page number (1-indexed)
Raw lines 120 to 123
124### Sorting
125- `sort=mwt` — ascending by field
126- `sort=-mwt` — descending (prefix with `-`)
127- `sort=no` — disable sorting for faster bulk queries

Sorting

  • sort=mwt — ascending by field
  • sort=-mwt — descending (prefix with -)
  • sort=no — disable sorting for faster bulk queries
Raw lines 124 to 128
129### Property filters (comparison operators)
130- `mwt-le=500` — molecular weight <= 500
131- `logp-ge=2` — LogP >= 2
132- `hbd-le=5` — H-bond donors <= 5
133- Operators: `-le` (<=), `-ge` (>=), `-lt` (<), `-gt` (>), `-eq` (=)

Property filters (comparison operators)

  • mwt-le=500 — molecular weight <= 500
  • logp-ge=2 — LogP >= 2
  • hbd-le=5 — H-bond donors <= 5
  • Operators: -le (<=), -ge (>=), -lt (<), -gt (>), -eq (=)
Raw lines 129 to 134
135### Searchable substance attributes
137Molecular properties: `mwt`, `logp`, `hba`, `hbd`, `tpsa`, `rb` (rotatable bonds), `num_rings`, `num_aromatic_rings`, `num_heavy_atoms`, `num_chiral_centers`, `fractioncsp3`
139Identifiers: `zinc_id`, `smiles`, `inchikey`, `mol_formula`, `preferred_name`, `cas_numbers`
141Status: `purchasable`, `reactive`, `bb` (building block)

Searchable substance attributes

Molecular properties: mwt, logp, hba, hbd, tpsa, rb (rotatable bonds), num_rings, num_aromatic_rings, num_heavy_atoms, num_chiral_centers, fractioncsp3

Identifiers: zinc_id, smiles, inchikey, mol_formula, preferred_name, cas_numbers

Status: purchasable, reactive, bb (building block)

Raw lines 135 to 142
143## Example Calls
145### Get properties for a compound
146```
147GET /substances/ZINC000000000053.json:zinc_id+smiles+mwt+logp+hba+hbd+tpsa+mol_formula+preferred_name
148```

Get properties for a compound

GET /substances/ZINC000000000053.json:zinc_id+smiles+mwt+logp+hba+hbd+tpsa+mol_formula+preferred_name
Raw lines 145 to 149
150### FDA drugs sorted by molecular weight
151```
152GET /substances/subsets/fda.json:zinc_id+preferred_name+mwt?sort=mwt&count=10
153```

FDA drugs sorted by molecular weight

GET /substances/subsets/fda.json:zinc_id+preferred_name+mwt?sort=mwt&count=10
Raw lines 150 to 154
155### Drug-like compounds (Lipinski filters)
156```
157GET /substances/subsets/for-sale.json?mwt-le=500&logp-le=5&hbd-le=5&hba-le=10&count=20
158```

Drug-like compounds (Lipinski filters)

GET /substances/subsets/for-sale.json?mwt-le=500&logp-le=5&hbd-le=5&hba-le=10&count=20
Raw lines 155 to 159
160### Find compounds targeting a specific gene
161```
162GET /genes/EGFR/substances.json:zinc_id+preferred_name+smiles?count=10
163```

Find compounds targeting a specific gene

GET /genes/EGFR/substances.json:zinc_id+preferred_name+smiles?count=10
Raw lines 160 to 164
165## Response Format
167```json
169 {
170 "zinc_id": "ZINC000000000053",
171 "smiles": "CC(=O)Oc1ccccc1C(=O)O",
172 "preferred_name": "aspirin",
173 "mwt": 180.159,
174 "logp": 1.31,
175 "hba": 3,
176 "hbd": 1,
177 "tpsa": 63,
178 "mol_formula": "C9H8O4",
179 "inchikey": "BSYNRYMUTXBXSQ-UHFFFAOYSA-N",
180 "purchasable": 5
181 }
183```
185Responses are JSON arrays. Single-record lookups (by ZINC ID) return a JSON object.

Response Format

[
  {
    "zinc_id": "ZINC000000000053",
    "smiles": "CC(=O)Oc1ccccc1C(=O)O",
    "preferred_name": "aspirin",
    "mwt": 180.159,
    "logp": 1.31,
    "hba": 3,
    "hbd": 1,
    "tpsa": 63,
    "mol_formula": "C9H8O4",
    "inchikey": "BSYNRYMUTXBXSQ-UHFFFAOYSA-N",
    "purchasable": 5
  }
]

Responses are JSON arrays. Single-record lookups (by ZINC ID) return a JSON object.

Raw lines 165 to 186
187## Rate Limits
189No documented rate limits. The API is publicly funded (NIH NIGMS GM71896). Be respectful:
190- Use `count=` to limit result sizes
191- Use `sort=no` for faster bulk queries
192- Similarity and substructure searches are computationally expensive — expect slower responses
193- Avoid `count=all` on large result sets

Rate Limits

No documented rate limits. The API is publicly funded (NIH NIGMS GM71896). Be respectful:

  • Use count= to limit result sizes
  • Use sort=no for faster bulk queries
  • Similarity and substructure searches are computationally expensive — expect slower responses
  • Avoid count=all on large result sets
Raw lines 187 to 194
195## Special Notes
197- These routes describe the official ZINC15-style syntax. Coverage is not interchangeable with ZINC22/CartBlanche or bulk tranche releases; record the interface and release actually used.
198- ZINC IDs have the format `ZINC000000000053` (12-digit zero-padded after "ZINC" in this interface)
199- The `.smi` format returns SMILES strings, useful for cheminformatics pipelines
200- The `.sdf` format returns 3D structures suitable for docking software
201- Subsets can be combined with `+` (e.g., `fda+in-stock` = FDA-approved AND in-stock)
202- For virtual screening workflows, use tranches (`/tranches/`) to partition by molecular weight and LogP

Special Notes

  • These routes describe the official ZINC15-style syntax. Coverage is not interchangeable with ZINC22/CartBlanche or bulk tranche releases; record the interface and release actually used.
  • ZINC IDs have the format ZINC000000000053 (12-digit zero-padded after "ZINC" in this interface)
  • The .smi format returns SMILES strings, useful for cheminformatics pipelines
  • The .sdf format returns 3D structures suitable for docking software
  • Subsets can be combined with + (e.g., fda+in-stock = FDA-approved AND in-stock)
  • For virtual screening workflows, use tranches (/tranches/) to partition by molecular weight and LogP
Raw lines 195 to 202