DEV Community

Alex Spinov
Alex Spinov

Posted on

ORCID Has a Free API — Look Up Any Researcher's Publications in Seconds (No Key Needed)

Why ORCID?

ORCID is the global researcher ID system. 18+ million researchers have profiles with their publications, affiliations, and grants. The API is completely free — no key, no signup.

Quick Start

import requests

def get_researcher(orcid_id):
    url = f"https://pub.orcid.org/v3.0/{orcid_id}/works"
    headers = {"Accept": "application/json"}
    r = requests.get(url, headers=headers)
    works = r.json().get("group", [])

    results = []
    for w in works[:10]:
        summary = w["work-summary"][0]
        title = summary["title"]["title"]["value"]
        year = summary.get("publication-date", {}).get("year", {}).get("value", "N/A")
        results.append({"title": title, "year": year})
    return results

# Example: Look up a researcher
papers = get_researcher("0000-0002-1825-0097")
for p in papers:
    print(f"{p[year]}{p[title]}")
Enter fullscreen mode Exit fullscreen mode

What You Get

  • Publications — full list with DOIs
  • Employment history — universities, companies
  • Education — degrees and institutions
  • Funding — grants and awards
  • Peer reviews — journal review activity

Real Use Cases

  1. Academic hiring — verify a candidate's publication record automatically
  2. Research tools — build author pages without manual data entry
  3. Grant applications — auto-populate publication lists
  4. Bibliometrics — analyze research output across institutions

Rate Limits

  • Public API: 24 requests/second (generous!)
  • No API key needed for public data
  • Authentication available for member organizations

Search by Name

def search_researchers(query):
    url = "https://pub.orcid.org/v3.0/search/"
    params = {"q": query, "rows": 5}
    headers = {"Accept": "application/json"}
    r = requests.get(url, params=params, headers=headers)
    results = r.json().get("result", [])
    return [{"orcid": r["orcid-identifier"]["path"]} for r in results]

researchers = search_researchers("machine learning Stanford")
print(researchers)
Enter fullscreen mode Exit fullscreen mode

Compare With Alternatives

API Records Free? Key Needed?
ORCID 18M researchers Yes No
Semantic Scholar 200M papers Yes Yes
OpenAlex 250M works Yes No
Crossref 140M DOIs Yes No (polite pool)

ORCID is the only one focused on researcher identity rather than papers.

Build Something

Combine ORCID with Semantic Scholar or OpenAlex — look up a researcher by ORCID, then fetch citation counts for each paper. You'd have an automatic h-index calculator in ~50 lines of Python.


I'm building open-source research tools. If you need custom data pipelines or scrapers, check my GitHub or reach out.


More from me: 10 Dev Tools I Use Daily | 77 Scrapers on a Schedule | 150+ Free APIs


Need web scraping or data extraction? I've built 77+ production scrapers. Email spinov001@gmail.com — quote in 2 hours. Or try my ready-made Apify actors — no code needed.

Top comments (0)