| 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 tags
- retmax — max results (default 20)
- retstart — offset for pagination
- retmode=json — get JSON response
- usehistory=y — store results server-side for large queries
- api_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, summary
- taxon — organism
- entrytype — "GDS", "GSE", "GPL", "GSM"
- gdstype — e.g. "Expression profiling by array"
- n_samples — sample count
- pubmedids — linked PubMed IDs
- PDAT — publication date
- Samples — array of sample objects
- FTPLink — data download path
Example:
/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), html
- view — quick, brief, full, data
Example — 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=user@example.com as a courtesyusehistory=y then pass WebEnv and query_key to eSummary)