ORCID API
Free ORCID public API with no key: researcher profiles, publications, affiliations and funding by persistent researcher identifier. Tested curl example.
Endpoint tested and returned HTTP 200 on 2026-08-20
What is the ORCID API?
The ORCID public API is free and key-free for reading public researcher records, providing names, affiliations, education, publications and funding linked to a persistent ORCID identifier.
ORCID solves author disambiguation — the problem that 'J. Smith' could be any of hundreds of researchers. Each researcher has a persistent identifier that follows them across institutions and name changes, and publishers increasingly require it.
The public API returns whatever the researcher has chosen to make public, which varies enormously. Some records are rich with every publication and affiliation; many are near-empty. Always code for the sparse case rather than assuming a full profile.
Quick facts
- Base URL
https://pub.orcid.org/v3.0- Authentication
- Public records need no key for basic reads. The member API and write access require OAuth credentials.
- Rate limit
- 24 requests per second, with burst allowances.
- Pricing
- Free for public data. Member API access is a paid membership.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the ORCID 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. Fetch a researcher's public profile
GET https://pub.orcid.org/v3.0/0000-0002-1825-0097/person
curl 'https://pub.orcid.org/v3.0/0000-0002-1825-0097/person' \
-H 'Accept: application/json'const res = await fetch("https://pub.orcid.org/v3.0/0000-0002-1825-0097/person", {
headers: {
"Accept": "application/json",
},
});
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
headers = {
"Accept": "application/json",
}
res = requests.get("https://pub.orcid.org/v3.0/0000-0002-1825-0097/person", headers=headers, timeout=20)
res.raise_for_status()
print(res.json()){
"last-modified-date": {
"value": 1494016313820
},
"name": {
"created-date": {
"value": 1460757617078
},
"last-modified-date": {
"value": 1504850007188
},
"given-names": {
"value": "Josiah"
},
"family-name": {
"value": "Carberry"
},
"credit-name": null,
"source": null,
"visibility": "public",
"path": "0000-0002-1825-0097"
},
"other-names": {
"last-modified-date": {
"value": 1462157547720
},
"other-name": [
{
"created-date": {
"value": 1462157351411
},
"last-modified-date": {
"value": 1462157547720
},
"source": {
"source-orcid": {
"uri": "https://orcid.org/0000-0002-1825-0097",
"path": "0000-0002-1825-0097",
"host": "orcid.org"
},
"source-client-id": null,
"source-name": {
"value": "Josiah Carberry"
},
"assertion-origin-orcid": null,
"assertion-origin-client-id": null,
"assertion-origin-name": null
},
"content": "Josiah Stinkney Carberry",
"visibility": "public",
"path": "/0000-0002-1825-0097/other-names/732317",
"put-code": 732317,
"display-index": 3
},
{
"created-date": {
"value": 1446663146889
},
"last-modified-date": {
"value": 1462157547720
},
"source": {
"source-orcid": {
"uri": "https://orcid.org/0000-0002-1825-0097",
"pathParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
<orcid-id>/person | path | Optional | Name, biography and external identifiers. 0000-0002-1825-0097/person |
<orcid-id>/works | path | Optional | Publications listed on the record. works |
<orcid-id>/employments | path | Optional | Institutional affiliations. employments |
Accept | header | Required | Set to application/json; the default is XML. application/json |
Response fields
name.given-names.valuestring- Given name.
name.family-name.valuestring- Family name.
biography.contentstring- Researcher biography, when public.
external-identifiersobject- Linked identifiers such as Scopus or ResearcherID.
researcher-urlsobject- Personal and institutional links.
last-modified-date.valueinteger- Last update as a Unix timestamp in milliseconds.
What you can build with the ORCID API
- Disambiguate authors in a publication database
- Auto-populate a researcher profile from their ORCID
- Verify institutional affiliations
- Link publications to persistent author identifiers
Common errors and how to fix them
XML instead of JSON
XML is the default representation.
Fix: Send `Accept: application/json` on every request.
Mostly empty record
The researcher has kept fields private, or never filled them in.
Fix: Public visibility is entirely the researcher's choice — code for sparse records.
404
Invalid ORCID identifier.
Fix: IDs are 16 digits in four hyphenated groups, and the final character can be an X.
ORCID API — frequently asked questions
Is the ORCID API free?
Yes, reading public records requires no API key. The member API, which offers richer data and write access, requires a paid membership.
What problem does ORCID solve?
Author disambiguation. Names are ambiguous and change; an ORCID identifier is persistent and follows a researcher across institutions, which is why publishers increasingly require one.
Why is the record I fetched almost empty?
Researchers control what is public. Many records contain only a name. Always handle sparse profiles rather than assuming complete data.
Why am I getting XML?
XML is the default. Send `Accept: application/json` to get JSON instead.
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.
XML Formatter
Format and beautify XML online with proper indentation, or minify it to a single line. Parse errors are reported clearly — free, fast and fully private.
ORCID 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.