REST API

OrganiZymeDB exposes a read-only JSON API, with no authentication required. All endpoints return application/json. The base URL is the root of this site (https://organizymedb.org).

Endpoint Overview

Method Endpoint Description
GET/api/proteins/List / search all proteins
GET/api/protein/<id>/Full record for one protein + mutations
GET/api/measurements/List / filter all measurements
GET/api/measurements/<id>/Single measurement record
GET/api/solvents/List all solvents
GET/api/solvent/<id>/Single solvent record
GET/api/solvent/by-name/<name>/Solvent lookup by exact name
GET/api/compounds/List / search all compounds
GET/api/compound/<id>/Single compound record
GET/api/compound/by-name/<name>/Compound lookup by exact name
GET/api/stats/Database statistics

Proteins

/api/proteins/
/api/protein/<protein_id>/

Measurements

/api/measurements/
/api/measurements/<measurement_id>/

Solvents

/api/solvents/
/api/solvent/<solvent_id>/
/api/solvent/by-name/<name>/

Compounds

/api/compounds/
/api/compound/<compound_id>/
/api/compound/by-name/<name>/

Statistics

/api/stats/

Usage Examples

curl
# All measurements for protein 2, wild-type only
curl "https://organizymedb.org/api/measurements/?protein_id=2&wt_only=1"

# Search compounds by name
curl "https://organizymedb.org/api/compounds/?q=nitrophenyl"

# Exact solvent lookup by name
curl "https://organizymedb.org/api/solvent/by-name/Ethanol/"

# Exact compound lookup by name
curl "https://organizymedb.org/api/compound/by-name/acetophenone/"
Python — retrieve all lipase measurements in ethanol
import requests

BASE = "https://organizymedb.org"

# 1. Find all lipase proteins
proteins = requests.get(f"{BASE}/api/proteins",
                        params={"q": "lipase", "per_page": 200}).json()

all_measurements = []
for prot in proteins["data"]:
    pid = prot["protein_id"]
    page = 1
    while True:
        r = requests.get(f"{BASE}/api/measurements",
                         params={"protein_id": pid, "solvent": "ethanol",
                                 "page": page, "per_page": 100}).json()
        all_measurements.extend(r["data"])
        if page >= r["pagination"]["total_pages"]:
            break
        page += 1

print(f"Found {len(all_measurements)} lipase measurements in ethanol")

Notes