DataCite API
Free DataCite API with no key: DOI metadata for research datasets, software and preprints, complementing Crossref's journal coverage. Tested example.
Endpoint tested and returned HTTP 200 on 2026-08-20
What is the DataCite API?
The DataCite API is a free, key-free API providing DOI metadata for research outputs that are not journal articles — datasets, software, preprints, images and physical samples — complementing Crossref's coverage of publications.
DataCite and Crossref split the DOI world between them: Crossref registers DOIs for journal articles and books, DataCite for research data, software, preprints and other outputs. If a DOI is not in Crossref, DataCite is where to look next.
Its `resourceTypeGeneral` field is the practical hook — you can filter to just datasets, or just software, which is how you build a research data discovery tool rather than another literature search.
Quick facts
- Base URL
https://api.datacite.org- Authentication
- No API key for reads. Registering DOIs requires a repository account.
- Rate limit
- No published hard limit; fair use expected.
- Pricing
- Free metadata; DOI registration is a paid membership service.
- CORS
- Not enabled — call it from your server
- Official docs
- Read the docs
How to use the DataCite API
Every request below was executed against the live API on 2026-08-20, and the response shown is the real body it returned — not an illustration.
1. Search research DOIs
GET https://api.datacite.org/dois?page%5Bsize%5D=1
curl 'https://api.datacite.org/dois?page%5Bsize%5D=1'const res = await fetch("https://api.datacite.org/dois?page%5Bsize%5D=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://api.datacite.org/dois?page%5Bsize%5D=1", timeout=20)
res.raise_for_status()
print(res.json()){
"data": [
{
"id": "10.5281/zenodo.20181854",
"type": "dois",
"attributes": {
"doi": "10.5281/zenodo.20181854",
"identifiers": [],
"creators": [
{
"nameType": "Personal",
"affiliation": [
"Tripdatabase"
],
"familyName": "Tripdatabase",
"name": "Tripdatabase",
"nameIdentifiers": []
}
],
"titles": [
{
"title": "What percentage of people experience shoulder problems after cervical neck dissection, and how many do not recover?"
}
],
"publisher": "Zenodo",
"container": {},
"publicationYear": 2026,
"subjects": [
{
"subject": "shoulder problems"
},
{
"subject": "cervical neck dissection"
},
{
"subject": "recovery"
},
{
"subject": "surgery complications"
},
{
"subject": "orthopaedics"
}
],
"contributors": [],
"dates": [
{
"date": "2026-05-14",
"dateType": "Issued"
}
],
"language": null,
"types": {
"schemaOrg": "CreativeWork",
"resourceTypeGeneral": "Text",
"citeproc": "article",
"bibtex": "misc",
"ris": "GEN",
"resourceType": "Other"
},
"relatedIdentifiers": [
{
"relationType": "IsIdenticalTo",Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
dois | path | Optional | DOI search and listing. dois |
query | string | Optional | Elasticsearch-style search query. climate |
page[size] | integer | Optional | Results per page, max 1000. 25 |
resource-type-id | string | Optional | Filter by output type. dataset |
client-id | string | Optional | Filter by the repository that registered the DOI. cern.zenodo |
Response fields
meta.totalinteger- Total matching DOIs.
data[].idstring- The DOI itself.
data[].attributes.titlesarray- Title records.
data[].attributes.creatorsarray- Authors or creators with affiliations and ORCIDs.
data[].attributes.publisherstring- Repository or publisher.
data[].attributes.types.resourceTypeGeneralstring- Dataset, Software, Text, Image and so on.
data[].attributes.rightsListarray- Licence terms.
What you can build with the DataCite API
- Discover research datasets and software by topic
- Resolve a DOI that Crossref does not recognise
- Track outputs registered by a specific repository
- Build research data citation tooling
Common errors and how to fix them
Bracket parameters rejected
page[size] contains square brackets.
Fix: URL-encode them as %5B and %5D if your HTTP client does not.
DOI not found
It may be a Crossref DOI.
Fix: Crossref registers journal articles; DataCite registers data and software. Try both.
Deeply nested attributes
Records follow the JSON:API convention.
Fix: Read data[].attributes.titles[0].title rather than a top-level field.
DataCite API — frequently asked questions
Is the DataCite API free?
Yes, reading metadata requires no API key. Registering DOIs is a paid membership service for repositories.
How does DataCite differ from Crossref?
They split the DOI space. Crossref registers journal articles and books; DataCite registers datasets, software, preprints and other research outputs. If a DOI is not in one, check the other.
Can I search only for datasets?
Yes, filter with resource-type-id=dataset, or read resourceTypeGeneral on each record. That is the main way to build a research data discovery tool.
Why are the records so nested?
It follows the JSON:API specification, so everything sits under data[].attributes rather than at the top level.
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.
CSV to JSON Converter
Convert CSV to a JSON array of objects online. Header-row detection, comma/semicolon/tab delimiters and pretty-printed output — 100% in your browser.
DataCite is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-20; always check the official documentation before relying on this API in production, as terms and limits can change.