Next free-source hunt
We check for new free data every weekday.
Datasets / Research & Grey Literature
support.datacite.org/

DataCite REST API

Freeauth: none (email in User-Agent or mailto for a higher limit)CC0-1.0#research-grey-literature#datasets-discovery#citations#historical-data✓ verified Nov 3, 2026

DataCite REST API

DataCite's public REST API returns JSON metadata for DOIs registered with DataCite, which include research datasets, software and other research outputs: titles, creators, publisher, publication year, resource type, rights, related identifiers and landing-page URLs. Retrieval needs no authentication and supports queries, filters such as resource-type-id, paging and random samples.

Required Attribution:

DataCite's data file use policy asks users to give attribution to DataCite as the source.

Coverage

The public API returns DOIs in Findable state only, excluding drafts and Registered DOIs. DataCite also publishes an annual Public Data File of all Findable DOIs, and a monthly data file for its members. Publication delay: Not stated.

Verdict

Use it to find research datasets and software by topic, publisher or date, and to follow related identifiers between datasets, software and papers. DataCite says all its metadata is openly available under CC0; its data file use policy asks users to credit DataCite and not to modify records so as to make them false, incomplete, defamatory or misleading. Add an email address in the User-Agent or a mailto parameter to move from 500 to 1,000 requests per 5 minutes.

Get the free weekly email

Free weekly email of newly verified free data. Unsubscribe by emailing us.

Use in your agent

Load DataCite dataset DOIs for a search into pandas and Parquet. Checked against the provider's documentation on Nov 3, 2026.

Raw skill file (/skills/datacite-rest-api.md)Also in our MCP server: call get_ingestion_skill with {"slug": "datacite-rest-api"}.

Access

  • No key for retrieval (the Public API). Add mailto=your address, or an email in the User-Agent, for the identified rate tier.
  • Base URL https://api.datacite.org; /dois takes query, resource-type-id, page[size], page[cursor] and other filters.

Request

bash
curl 'https://api.datacite.org/dois?query=climate&resource-type-id=dataset&page%5Bsize%5D=100&disable-facets=true&mailto=you@example.org'

Format

JSON:API: data is a list of DOI objects whose attributes carry doi, titles, creators, publisher, publicationYear, types (resourceTypeGeneral), rightsList, relatedIdentifiers and url; meta carries total and facets; links carries next.

Load into pandas and Parquet

Needs Python 3 with requests, pandas and pyarrow.

python
"""DataCite DOI metadata (datasets) -> pandas -> Parquet. No key; a mailto parameter puts you in the 'identified' rate tier."""
import requests
import pandas as pd

params = {"query": "climate", "resource-type-id": "dataset", "page[size]": 100,
          "disable-facets": "true", "mailto": "you@example.org"}  # replace with your own address
r = requests.get("https://api.datacite.org/dois", params=params, timeout=60)
r.raise_for_status()
js = r.json()
rows = []
for d in js["data"]:
    a = d["attributes"]
    rows.append({
        "doi": a.get("doi"),
        "title": (a.get("titles") or [{}])[0].get("title"),
        "publisher": a["publisher"] if isinstance(a.get("publisher"), str) else (a.get("publisher") or {}).get("name"),
        "year": a.get("publicationYear"),
        "resource_type": (a.get("types") or {}).get("resourceTypeGeneral"),
        "rights": "; ".join(x.get("rightsIdentifier") or x.get("rights", "") for x in a.get("rightsList", [])),
        "url": a.get("url"),
    })
df = pd.DataFrame(rows)
df.to_parquet("datacite_datasets.parquet", index=False)
print(len(df), "dataset DOIs on this page of", js["meta"]["total"], "matches")

Run by us on 2026-11-03 (python 3.13.5 | pandas 3.1.0 | pyarrow 26.0.0 | requests 2.34.2). Result: 100 dataset DOIs on this page of 222072 matches

Limits

  • 500 requests per 5 minutes per IP unidentified, 1,000 identified, 3,000 authenticated; over the limit returns 429.
  • Use page[cursor] for harvesting beyond the first pages.

Quirks

  • publisher can be a string or an object with a name, depending on request parameters; handle both.
  • disable-facets=true makes list requests lighter when you do not need facet counts.

Terms and attribution

  • DataCite metadata is CC0; the waiver does not apply to the linked datasets, which keep their own licences (see rightsList).
  • DataCite asks for attribution and that records are not modified to make them false or misleading.

Sources

Information and education only. Not financial, investment, legal or tax advice. Listings can be inaccurate, incomplete or out of date and are provided "as is". Free tiers, limits and licenses belong to each provider and can change, so check the provider's own terms before you rely on them. Terms & Disclaimer