CERN Open Data API
Free CERN Open Data Portal API with no key: search and retrieve records for LHC datasets, software, configuration files and documentation from CMS, ATLAS, LHCb and ALICE.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the CERN Open Data API?
The CERN Open Data Portal API is a free, key-free REST interface to the portal's records: real and simulated collision datasets from the LHC experiments, plus the software, configuration and documentation needed to analyse them. Search results include faceted aggregations by experiment, category and availability.
CERN publishes its LHC collision data — petabytes of it — under CC0, and this API is the catalogue. Each record describes a dataset with its experiment, collision energy, run period, file list and the exact software release needed to read it, because analysing this data means reproducing a decade-old computing environment as much as it means physics. The portal now indexes over 80,000 records.
The search endpoint returns aggregations before results, and they are the most useful part for exploration: the example's `availability` buckets show 52,482 records online, 19,615 partial and four available on demand, which tells you immediately how much of the archive you can fetch over HTTP. Rate limiting is explicit and tight — the response carried `X-RateLimit-Limit: 60` with a `Retry-After` of 60 seconds — so this is an API to page politely rather than crawl. Actual data files are served from EOS and CernVM-FS rather than through this API; the record simply tells you where they live.
Quick facts
- Base URL
https://opendata.cern.ch/api- Authentication
- No API key or account. CERN Open Data records and the datasets they describe are released under CC0, with a citation requested for publications.
- Rate limit
- 60 requests per minute per IP, reported in `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset`, with `Retry-After` on exhaustion.
- Pricing
- Free. Data and metadata are CC0.
- CORS
- Not enabled — call it from your server
- Official docs
- Read the docs
How to use the CERN Open Data API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Search the portal catalogue, returning one record with facets
GET https://opendata.cern.ch/api/records/?size=1
curl 'https://opendata.cern.ch/api/records/?size=1'const res = await fetch("https://opendata.cern.ch/api/records/?size=1");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://opendata.cern.ch/api/records/?size=1", timeout=20)
res.raise_for_status()
print(res.json()){
"aggregations": {
"availability": {
"buckets": [
{
"doc_count": 52482,
"key": "online"
},
{
"doc_count": 19615,
"key": "partial"
},
{
"doc_count": 4,
"key": "on demand"
}
],
"doc_count": 82385,
"doc_count_error_upper_bound": 0,
"meta": {},
"sum_other_doc_count": 0
},
"category": {
"buckets": [
{
"doc_count": 219,
"key": " Heavy-Ion Physics",
"subcategory": {
"buckets": [],
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0
}
},
{
"doc_count": 1234,
"key": "2 Fermion",
"subcategory": {
"buckets": [],
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0
}
},
{
"doc_count": 379,
"key": "4 Fermion",
"subcategory": {
"buckets": [],
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0
}
},
{
"doc_count": 504,
"key": "B physics and Quarkonia",
"subcategory": {
"buckets": [],
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0
}
},
{
"doc_count": 1604,
"key": "Beyond 2 Generations",
"subcategory": {
"buckets": [],
"doc_count_error_upper_bound": 0,
"sum_other_Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
q | query | Optional | Free-text search across record titles, abstracts and keywords. higgs |
size | query | Optional | Records per page. Keep it modest given the 60-per-minute limit. 1 |
page | query | Optional | One-based page number. 1 |
experiment | query | Optional | Filter by LHC experiment: `CMS`, `ATLAS`, `LHCb`, `ALICE` or `OPERA`. CMS |
type | query | Optional | Record type such as `Dataset`, `Software`, `Documentation` or `Environment`. Dataset |
year | query | Optional | Data-taking year. 2012 |
sort | query | Optional | `mostrecent` or `bestmatch`. mostrecent |
Response fields
aggregationsobject- Facet counts computed over the whole matching set — by experiment, category, year, file type and availability.
aggregations.availability.buckets[]array- How much of the archive is directly downloadable: `online`, `partial` or `on demand`.
hits.hits[]array- The matched records, each with its metadata and file manifest.
metadata.recidinteger- Stable record identifier, which is also the portal URL path.
metadata.doistring- DataCite DOI minted for the record, for citation in publications.
metadata.files[]array- File manifest with sizes and checksums. The bytes themselves live on EOS, not behind this API.
What you can build with the CERN Open Data API
- Find the LHC datasets available for a given experiment and run year
- Resolve a dataset DOI to its file manifest and software requirements
- Build a teaching resource around real collision data
- Check which records are fully online before planning a download
- Cite an LHC dataset properly in a publication
Common errors and how to fix them
429 with Retry-After
More than 60 requests in a minute.
Fix: Honour the `Retry-After` header. The limit is per IP and enforced strictly.
Empty hits with populated aggregations
The filters excluded everything but the facets are computed first.
Fix: Loosen one filter at a time — experiment and year combinations are frequently empty.
404 on a record id
The record was superseded or the id belongs to a different portal.
Fix: CERN runs several portals (Open Data, Zenodo, CDS) with separate id spaces. Check you are using an `opendata.cern.ch` record id.
Cannot download a file
The archive is not served through this API.
Fix: Follow the file URLs in the record, which resolve to EOS or XRootD endpoints; some large records are marked `on demand` and require a request.
CERN Open Data API — frequently asked questions
Is CERN Open Data free to use?
Yes, completely. Both the metadata and the collision datasets are released under CC0, meaning no restrictions on reuse including commercial. CERN asks that you cite the dataset DOI in publications.
Can I actually download LHC collision data?
Yes, for records marked online — that was over 52,000 in the run captured here. The catalogue record lists file URLs, sizes and checksums; some very large records are marked partial or on demand instead.
Do I need special software to read the data?
Usually, yes. Most LHC formats require the experiment's analysis framework, which is why the portal also publishes software and environment records, including container images pinned to the right release. The dataset record links to the ones it needs.
What is the rate limit?
60 requests per minute per IP, and the API tells you exactly where you stand through `X-RateLimit-Remaining`. On exhaustion it returns 429 with a `Retry-After` header you should honour.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
JSON to CSV Converter
Convert a JSON array of objects to CSV online. Automatic column headers from the union of all keys, delimiter choice and proper quoting — all in-browser.
File Checksum Calculator
Calculate SHA-1, SHA-256 and SHA-512 checksums of any file in your browser. Copy each hash and compare against an expected value to verify a download is intact.
CERN Open Data is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.