Find an API

Search public APIs with auth details & Postman guides

← All APIs

ORCID Public API

pub.orcid.org · Science

Science No Auth Free & Open Academic Research Researchers

Access public ORCID researcher profiles — affiliations, works, funding, peer reviews, and employment history. Over 21 million registered researchers. Free, no key required for public records.

Authentication

No authentication requiredFree to use with no key needed.

Sample Requests

GET Get researcher record

Fetch a public ORCID researcher record.

https://pub.orcid.org/v3.0/0000-0001-5109-3700

Hover any highlighted part to learn what it does

Headers — extra info sent with the request
Accept application/json
curl -X GET "https://pub.orcid.org/v3.0/0000-0001-5109-3700" \
  -H "Accept: application/json"
import requests
headers = {
    "Accept": "application/json"
}
response = requests.get(
    "https://pub.orcid.org/v3.0/0000-0001-5109-3700",
    headers=headers,
)
print(response.json())
const url = 'https://pub.orcid.org/v3.0/0000-0001-5109-3700';

const response = await fetch(url, {
  headers: {
    'Accept': 'application/json'
  },
}); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	targetURL := "https://pub.orcid.org/v3.0/0000-0001-5109-3700"
	req, _ := http.NewRequest("GET", targetURL, nil)
	req.Header.Set("Accept", "application/json")

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://pub.orcid.org/v3.0/0000-0001-5109-3700")

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)
req["Accept"] = "application/json"

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://pub.orcid.org/v3.0/0000-0001-5109-3700";
$opts = ["http" => [
    "method" => "GET",
    "header" => implode("\r\n", [
        "Accept: application/json"
    ]),
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET Search researchers

Search researchers by name.

https://pub.orcid.org/v3.0/search?q=family-name:Turing+given-names:Alan&rows=5

Hover any highlighted part to learn what it does

curl -X GET "https://pub.orcid.org/v3.0/search?q=family-name%3ATuring%2Bgiven-names%3AAlan&rows=5"
import requests
params = {
    "q": "family-name:Turing+given-names:Alan",
    "rows": "5"
}
response = requests.get(
    "https://pub.orcid.org/v3.0/search",
    params=params,
)
print(response.json())
const url = new URL('https://pub.orcid.org/v3.0/search');
url.searchParams.set('q', 'family-name:Turing+given-names:Alan');
url.searchParams.set('rows', '5');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://pub.orcid.org/v3.0/search")
	q := baseURL.Query()
	q.Set("q", "family-name:Turing+given-names:Alan")
	q.Set("rows", "5")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://pub.orcid.org/v3.0/search")
uri.query = URI.encode_www_form({
  "q" => "family-name:Turing+given-names:Alan",
  "rows" => "5"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://pub.orcid.org/v3.0/search?" . http_build_query([
    "q" => "family-name:Turing+given-names:Alan",
    "rows" => "5"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));

Postman Setup Guide

Get Postman ↗
  1. No API key needed
  2. Set Accept: application/json header
  3. Try GET https://pub.orcid.org/v3.0/0000-0001-5109-3700
  4. Use /search?q= to search by name, keyword, or institution

What can you build with ORCID Public API?

ORCID Public API is a Science API. Developers commonly use science APIs for:

  • accessing research datasets and scientific literature
  • powering academic and R&D applications
  • running scientific calculations and simulations
  • visualising experimental and observational data
  • integrating with research and reference databases

No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. ORCID Public API is free to use, making it a low-risk choice to experiment with.

New to APIs? Read our beginner's guide

Open documentation ↗