scientific-skills/database-lookup/references/geo.md
| Purpose | URL |
|---|---|
| E-utilities | https://eutils.ncbi.nlm.nih.gov/entrez/eutils/ |
| GEO direct query | https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi |
gdsThe Entrez database for GEO is gds (not geo). It contains all GEO record types: GDS datasets, GSE series, GPL platforms, GSM samples. Filter by type using [ETYP] in the search term.
GET /esearch.fcgi?db=gds&term={query}&retmode=json&retmax={n}
Parameters:
db=gds (required)term — search query with field tagsretmax — max results (default 20)retstart — offset for paginationretmode=json — get JSON responseusehistory=y — store results server-side for large queriesapi_key — NCBI API key (optional, raises rate limit)[ETYP])gds[ETYP] — curated GEO DataSetsgse[ETYP] — GEO Series (most common, use this by default)gpl[ETYP] — platformsgsm[ETYP] — samples[Organism] — e.g. "Homo sapiens"[Organism][PDAT] — publication date[Title] — title searchAND, OR, NOT (uppercase)Example — cancer GSE series in human:
/esearch.fcgi?db=gds&term=cancer+AND+gse[ETYP]+AND+"Homo+sapiens"[Organism]&retmax=10&retmode=json
Response:
{
"esearchresult": {
"count": "15432",
"retmax": "10",
"idlist": ["200012345", "200067890"],
"querytranslation": "cancer AND gse[ETYP]"
}
}
The IDs returned are numeric UIDs (not accession numbers). For GSE records: UID = 200000000 + GSE_number.
GET /esummary.fcgi?db=gds&id={uid_list}&retmode=json
Key response fields per record:
Accession — e.g. "GSE12345"title, summarytaxon — organismentrytype — "GDS", "GSE", "GPL", "GSM"gdstype — e.g. "Expression profiling by array"n_samples — sample countpubmedids — linked PubMed IDsPDAT — publication dateSamples — array of sample objectsFTPLink — data download pathExample:
/esummary.fcgi?db=gds&id=200012345&retmode=json
GET https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc={accession}&form={format}&view={detail}
Parameters:
acc — GEO accession (GSE12345, GDS1234, GPL570, GSM12345)targ — self, gsm (samples), gpl (platform), gse (series)form — text (SOFT format), xml (MINiML), htmlview — quick, brief, full, dataExample — series metadata in SOFT:
acc.cgi?acc=GSE53757&targ=self&form=text&view=brief
Note: acc.cgi does not return JSON. Use eSearch + eSummary for JSON results. Use acc.cgi when you need full SOFT/MINiML records.
GET /elink.fcgi?dbfrom=gds&db=pubmed&id={uid}&retmode=json
For most queries, use this two-step approach:
This gives you JSON throughout.
gse[ETYP] for comprehensive results.gds database. Use eSummary for metadata or acc.cgi for full records.+ and quotes as %22.&[email protected] as a courtesyusehistory=y then pass WebEnv and query_key to eSummary)