Find an API

Search public APIs with auth details & Postman guides

← All APIs

OpenAlex

openalex.org · Science

Science No Auth Free & Open Academic Research Open Data

Free, open index of hundreds of millions of scholarly works, authors, institutions, journals, and concepts. Aggregates from Crossref, ORCID, Unpaywall, and more. No API key required — just start querying.

Authentication

No authentication requiredFree to use with no key needed.

Sample Requests

GET Search works by keyword

Search scholarly works by keyword.

https://api.openalex.org/works?search=machine learning&per_page=5

Hover any highlighted part to learn what it does

curl -X GET "https://api.openalex.org/works?search=machine%20learning&per_page=5"
import requests
params = {
    "search": "machine learning",
    "per_page": "5"
}
response = requests.get(
    "https://api.openalex.org/works",
    params=params,
)
print(response.json())
const url = new URL('https://api.openalex.org/works');
url.searchParams.set('search', 'machine learning');
url.searchParams.set('per_page', '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://api.openalex.org/works")
	q := baseURL.Query()
	q.Set("search", "machine learning")
	q.Set("per_page", "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://api.openalex.org/works")
uri.query = URI.encode_www_form({
  "search" => "machine learning",
  "per_page" => "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://api.openalex.org/works?" . http_build_query([
    "search" => "machine learning",
    "per_page" => "5"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET Get author by ORCID

Retrieve an author record by ORCID.

https://api.openalex.org/authors/https:/orcid.org/0000-0001-5000-0007

Hover any highlighted part to learn what it does

curl -X GET "https://api.openalex.org/authors/https://orcid.org/0000-0001-5000-0007"
import requests
response = requests.get(
    "https://api.openalex.org/authors/https://orcid.org/0000-0001-5000-0007",
)
print(response.json())
const url = 'https://api.openalex.org/authors/https://orcid.org/0000-0001-5000-0007';

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

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

func main() {
	targetURL := "https://api.openalex.org/authors/https://orcid.org/0000-0001-5000-0007"
	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://api.openalex.org/authors/https://orcid.org/0000-0001-5000-0007")

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://api.openalex.org/authors/https://orcid.org/0000-0001-5000-0007";
$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. Try GET https://api.openalex.org/works?search=climate+change
  3. Add &[email protected] for higher rate limits
  4. Filter by open_access.is_oa=true for free full-text papers

What can you build with OpenAlex?

OpenAlex 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. OpenAlex is free to use, making it a low-risk choice to experiment with.

New to APIs? Read our beginner's guide · Learn about API keys · What is REST?

Open documentation ↗