Playground
Test the Papers API live and generate ready-to-use client code.
Quick examples: Simple: LLM papers Advanced: RAG + cs.CL By arXiv ID Author search Reset form
Request Builder
API Key for live test requests
This key is only used for requests made from this browser tab. Never sent to any third
party.
Equivalent cURL (safe — uses placeholder)
curl "https://scholarxiv.com/api/v1/papers/search?q=large+language+models&page=0&limit=10" \ -H "Authorization: Bearer $SCHOLARXIV_API_KEY"
Response
Send a request to see live results here.
Results and pagination from the Papers API will appear above.
Code examples
Snippets update as you change the form. Keys are never embedded.
curl "https://scholarxiv.com/api/v1/papers/search?q=large+language+models&page=0&limit=10" \
-H "Authorization: Bearer $SCHOLARXIV_API_KEY"import axios from 'axios';
const { data } = await axios.get('https://scholarxiv.com/api/v1/papers/search?q=large+language+models&page=0&limit=10', {
headers: {
Authorization: `Bearer ${process.env.SCHOLARXIV_API_KEY}`
}
});
console.log(data.data.map(p => p.title));
console.log(data.pagination);import requests
import os
headers = {"Authorization": f"Bearer {os.environ['SCHOLARXIV_API_KEY']}"}
params = {"q": "large language models", "page": 0, "limit": 10}
res = requests.get("https://scholarxiv.com/api/v1/papers/search", headers=headers, params=params)
print(res.json()["data"][0]["title"] if res.json()["data"] else "No results")package main
import (
"encoding/json"
"fmt"
"net/http"
"net/url"
"os"
)
func main() {
apiKey := os.Getenv("SCHOLARXIV_API_KEY")
u := "https://scholarxiv.com/api/v1/papers/search?q=" + url.QueryEscape("large language models")
req, _ := http.NewRequest("GET", u, nil)
req.Header.Set("Authorization", "Bearer "+apiKey)
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
var result map[string]any
json.NewDecoder(resp.Body).Decode(&result)
fmt.Printf("%+v\n", result["data"])
}Store your key in SCHOLARXIV_API_KEY (or use the exact same header
pattern shown in the docs).