Skill Tracer
Skills › Scientific Agent Skills › paper-lookup › biostudies.md

biostudies.md

124 lines · skills/paper-lookup/references/biostudies.md at 5f2bc03

Open on GitHub
1# BioStudies
2
3EMBL-EBI archive for the data outputs of a life-science study: files hosted
4here, plus links out to ArrayExpress, BioImages, ENA, and other archives.
5Use it when the user wants the *dataset behind a paper*, a BioStudies
6accession (`S-BSST…`, `S-EPMC…`, `S-CMO…`, `E-MTAB…`), or "supplementary
7data at EBI." It is not a paper index.
8
9Find the paper in PubMed / Europe PMC, then come here with an accession or
10a keyword that appears in the study record.
12The dated page-mode examples below are historical observations. Cursor pagination was verified against current help and a public two-page query on 2026-09-30.

BioStudies

EMBL-EBI archive for the data outputs of a life-science study: files hosted here, plus links out to ArrayExpress, BioImages, ENA, and other archives. Use it when the user wants the dataset behind a paper, a BioStudies accession (S-BSST…, S-EPMC…, S-CMO…, E-MTAB…), or "supplementary data at EBI." It is not a paper index.

Find the paper in PubMed / Europe PMC, then come here with an accession or a keyword that appears in the study record.

The dated page-mode examples below are historical observations. Cursor pagination was verified against current help and a public two-page query on 2026-09-30.

Raw lines 1 to 13
14## Base URL
16```
17https://www.ebi.ac.uk/biostudies/api/v1
18```

Base URL

https://www.ebi.ac.uk/biostudies/api/v1
Raw lines 14 to 19
20## Authentication
22None.

Authentication

None.

Raw lines 20 to 23
24## Rate Limits
26No published per-second cap. Serialize. EBI asks for reasonable use.

Rate Limits

No published per-second cap. Serialize. EBI asks for reasonable use.

Raw lines 24 to 27
28## Key Endpoints

Key Endpoints

Raw lines 28 to 29
30### 1. Search studies
32```
33GET /search?query={text}&page={n}&pageSize={n}
34```
36```
37GET /search?query=organoid&pageSize=2
38```
40Verified: HTTP 200 with
42| Field | Value on this call | Meaning |
43|---|---|---|
44| `page` | 1 | 1-based |
45| `pageSize` | 2 | |
46| `totalHits` | 4195, then 4480 on a later call | **Approximate** |
47| `isTotalHitsExact` | `false` | Do not reconcile as if this were Europe PMC `hitCount` |
48| `nextCursor` | `null` in page mode | Start with `pagination=cursor` for a cursor walk |
49| `hits` | 2 study summaries | |
51A hit has `accession`, `type` (`study`), `title`, `author`, `files` (count),
52`release_date`, `isPublic`, `content` (a flattened text blob). `author` may
53be an empty string.
55`totalHits` moved by hundreds between two calls a few seconds apart, and
56`isTotalHitsExact` stayed false. Report "about N studies" and the page you
57fetched. Do not claim a complete walk against that number.
59Use `page=2` for normal browsing. For exhaustive retrieval, use the documented
60cursor mode:
62```bash
63curl -fsS --get 'https://www.ebi.ac.uk/biostudies/api/v1/search' \
64 --data-urlencode 'query=organoid' \
65 --data-urlencode 'pagination=cursor' \
66 --data-urlencode 'pageSize=2'
67```
69Send the opaque returned `nextCursor` as `cursor` on the next request,
70keeping the same query and page size. Stop at `nextCursor: null`; do not
71construct or decode cursors, or stop based on an approximate `totalHits`.
72The official example uses `pageSize=1000` for bulk walks; use a small bound
73for interactive work. This traverses the live index, not a frozen snapshot,
74so record access times and deduplicate accessions.

1. Search studies

GET /search?query={text}&page={n}&pageSize={n}
GET /search?query=organoid&pageSize=2

Verified: HTTP 200 with

FieldValue on this callMeaning
page11-based
pageSize2
totalHits4195, then 4480 on a later callApproximate
isTotalHitsExactfalseDo not reconcile as if this were Europe PMC hitCount
nextCursornull in page modeStart with pagination=cursor for a cursor walk
hits2 study summaries

A hit has accession, type (study), title, author, files (count), release_date, isPublic, content (a flattened text blob). author may be an empty string.

totalHits moved by hundreds between two calls a few seconds apart, and isTotalHitsExact stayed false. Report "about N studies" and the page you fetched. Do not claim a complete walk against that number.

Use page=2 for normal browsing. For exhaustive retrieval, use the documented cursor mode:

curl -fsS --get 'https://www.ebi.ac.uk/biostudies/api/v1/search' \
  --data-urlencode 'query=organoid' \
  --data-urlencode 'pagination=cursor' \
  --data-urlencode 'pageSize=2'

Send the opaque returned nextCursor as cursor on the next request, keeping the same query and page size. Stop at nextCursor: null; do not construct or decode cursors, or stop based on an approximate totalHits. The official example uses pageSize=1000 for bulk walks; use a small bound for interactive work. This traverses the live index, not a frozen snapshot, so record access times and deduplicate accessions.

Raw lines 30 to 75
76### 2. One study
78```
79GET /studies/{accession}
80```
82```
83GET /studies/S-CMO2844
84```
86Verified: HTTP 200. The body is **not** the search-hit shape:
88```json
90 "accno": "S-CMO2844",
91 "type": "submission",
92 "attributes": [{"name": "Title", …}, {"name": "ReleaseDate", …}],
93 "section": { "type": "Study", "accno": "s1", "attributes": […], "subsections": […] }
95```
97Title lives in `attributes` (name `Title`), not `title`. Files and links
98are nested under `section.subsections`. Walk that tree; do not expect
99`files: [ …urls ]` at the top level.
101A 404 means no such public accession.

2. One study

GET /studies/{accession}
GET /studies/S-CMO2844

Verified: HTTP 200. The body is not the search-hit shape:

{
  "accno": "S-CMO2844",
  "type": "submission",
  "attributes": [{"name": "Title", …}, {"name": "ReleaseDate", …}],
  "section": { "type": "Study", "accno": "s1", "attributes": […], "subsections": […] }
}

Title lives in attributes (name Title), not title. Files and links are nested under section.subsections. Walk that tree; do not expect files: [ …urls ] at the top level.

A 404 means no such public accession.

Raw lines 76 to 102
103## Typical Workflow
1051. Search with a paper title, accession, or biological keyword.
1062. Take `accession` from `hits[]`.
1073. `GET /studies/{accession}` for the submission tree and file list.
1084. Cite the accession and the BioStudies URL
109 (`https://www.ebi.ac.uk/biostudies/studies/{accession}`).
1105. If they wanted the paper, go back to PubMed / Europe PMC with the
111 title or a DOI found in the study attributes.

Typical Workflow

  1. Search with a paper title, accession, or biological keyword.
  2. Take accession from hits[].
  3. GET /studies/{accession} for the submission tree and file list.
  4. Cite the accession and the BioStudies URL (https://www.ebi.ac.uk/biostudies/studies/{accession}).
  5. If they wanted the paper, go back to PubMed / Europe PMC with the title or a DOI found in the study attributes.
Raw lines 103 to 112
113## Failure Modes
115| What you did | What happens | What to do |
116|---|---|---|
117| Treated `totalHits` as exact | Count drifts; `isTotalHitsExact` is false | Say "about N"; do not exit-4 reconcile |
118| Expected search fields on `/studies/{acc}` | No `title`, no `files` count | Read `attributes` and `section` |
119| Used BioStudies as PubMed | Studies, not articles | Search literature APIs first |
120| Expected a cursor in page mode | `nextCursor` is null | Start with `pagination=cursor`; then send `cursor` |

Failure Modes

What you didWhat happensWhat to do
Treated totalHits as exactCount drifts; isTotalHitsExact is falseSay "about N"; do not exit-4 reconcile
Expected search fields on /studies/{acc}No title, no files countRead attributes and section
Used BioStudies as PubMedStudies, not articlesSearch literature APIs first
Expected a cursor in page modenextCursor is nullStart with pagination=cursor; then send cursor
Raw lines 113 to 121
122## Official sources reviewed 2026-09-30
124- https://www.ebi.ac.uk/biostudies/help#api

Official sources reviewed 2026-09-30

  • https://www.ebi.ac.uk/biostudies/help#api
Raw lines 122 to 124