| name | quickgo-api |
| description | Browse and search Gene Ontology annotations via the QuickGO API |
| metadata | {"openclaw":{"emoji":"🧬","category":"domains","subcategory":"biomedical","keywords":["Gene Ontology","GO annotations","protein function","QuickGO","EBI","functional genomics"],"source":"https://www.ebi.ac.uk/QuickGO/"}} |
QuickGO API
Overview
QuickGO is the EBI's fast browser and API for Gene Ontology (GO) annotations — the standard framework for describing gene/protein functions across all organisms. It provides access to 800M+ GO annotations covering biological processes, molecular functions, and cellular components. Essential for functional genomics, pathway analysis, and gene set enrichment. Free, no authentication.
API Endpoints
Base URL
https://www.ebi.ac.uk/QuickGO/services
Search GO Terms
curl "https://www.ebi.ac.uk/QuickGO/services/ontology/go/search?query=apoptosis&limit=20"
curl "https://www.ebi.ac.uk/QuickGO/services/ontology/go/terms/GO:0006915"
curl "https://www.ebi.ac.uk/QuickGO/services/ontology/go/terms/GO:0006915/ancestors"
curl "https://www.ebi.ac.uk/QuickGO/services/ontology/go/terms/GO:0006915/descendants"
Query Annotations
curl "https://www.ebi.ac.uk/QuickGO/services/annotation/search?geneProductId=P04637&limit=50"
curl "https://www.ebi.ac.uk/QuickGO/services/annotation/search?goId=GO:0006915&taxonId=9606&limit=50"
curl "https://www.ebi.ac.uk/QuickGO/services/annotation/search?\
goId=GO:0006915&taxonId=9606&evidence=EXP,IDA,IMP&limit=50"
curl "https://www.ebi.ac.uk/QuickGO/services/annotation/search?\
geneProductId=P04637&aspect=biological_process"
Download Annotations
curl "https://www.ebi.ac.uk/QuickGO/services/annotation/downloadSearch?\
goId=GO:0006915&taxonId=9606&downloadLimit=10000" -o annotations.tsv
GO Aspects
| Aspect | Code | Description |
|---|
| Biological Process | biological_process | What the gene does |
| Molecular Function | molecular_function | Biochemical activity |
| Cellular Component | cellular_component | Where in the cell |
Evidence Codes
| Code | Meaning | Reliability |
|---|
EXP | Inferred from Experiment | High |
IDA | Inferred from Direct Assay | High |
IMP | Inferred from Mutant Phenotype | High |
IPI | Inferred from Physical Interaction | Medium |
ISS | Inferred from Sequence Similarity | Medium |
IEA | Inferred from Electronic Annotation | Lower |
Python Usage
import requests
BASE_URL = "https://www.ebi.ac.uk/QuickGO/services"
def search_go_terms(query: str, limit: int = 20) -> list:
"""Search Gene Ontology terms."""
resp = requests.get(
f"{BASE_URL}/ontology/go/search",
params={"query": query, "limit": limit},
)
resp.raise_for_status()
data = resp.json()
results = []
for term in data.get("results", []):
results.append({
"id": term.get("id"),
"name": term.get("name"),
"aspect": term.get("aspect"),
"definition": term.get("definition", {}).get("text", ""),
})
return results
def get_protein_annotations(uniprot_id: str,
aspect: str = None,
experimental_only: bool = False) -> list:
"""Get GO annotations for a protein."""
params = {"geneProductId": uniprot_id, "limit": 100}
if aspect:
params["aspect"] = aspect
if experimental_only:
params["evidence"] = "EXP,IDA,IMP,IPI,IGI,IEP"
resp = requests.get(
,
params=params,
)
resp.raise_for_status()
data = resp.json()
annotations = []
ann data.get(, []):
annotations.append({
: ann.get(),
: ann.get(),
: ann.get(),
: ann.get(),
: ann.get(),
})
annotations
() -> :
params = {
: go_id,
: taxon_id,
: limit,
}
resp = requests.get(
,
params=params,
)
resp.raise_for_status()
data = resp.json()
genes = ()
ann data.get(, []):
genes.add(ann.get(, ))
(genes)
terms = search_go_terms()
t terms[:]:
()
annotations = get_protein_annotations(,
experimental_only=)
a annotations[:]:
()
References