search: Search papers

API: semanticscholar.org:semantic-scholar-api
Endpoint: /graph/v1/paper/search
Response format: text/html
Auth: unknown
Method: GET
Last Status: 403
Latency: 218ms

Description

Search for papers by query string

Parameters (4)

fields (string, query, optional)

Comma-separated fields to return

limit (integer, query, optional, default: 10)

Maximum results to return (default 10, max 100)

Constraints: {'maximum': 100}

offset (integer, query, optional, default: 0)

Offset for pagination

query (string, query, required)

Search query

Examples (3)

Basic paper search curl
curl 'https://api.semanticscholar.org/graph/v1/paper/search?query=machine+learning' \
  -d '{"message": "Too Many Requests. Please wait and try again or apply for a key for higher rate limits. https://www.semanticscholar.org/product/api#api-key-form", "code": "429"}'
import requests

resp = requests.get(
    "https://api.semanticscholar.org/graph/v1/paper/search",
    params={
        'query': 'machine learning',
    },
    json={
        'message': 'Too Many Requests. Please wait and try again or apply for a key for higher rate limits. https://www.semanticscholar.org/product/api#api-key-form',
        'code': '429',
    },
)
data = resp.json()
import zingu_apis

api = zingu_apis.api("semanticscholar")
result = api.fetch("graph/v1/paper/search", query="machine learning")

for item in result:
    print(item)
const body = {
  "message": "Too Many Requests. Please wait and try again or apply for a key for higher rate limits. https://www.semanticscholar.org/product/api#api-key-form",
  "code": "429"
};

const resp = await fetch("https://api.semanticscholar.org/graph/v1/paper/search?query=machine+learning", {
  body: JSON.stringify(body),
});
const data = await resp.json();
Search with specific fields curl
curl 'https://api.semanticscholar.org/graph/v1/paper/search?query=transformer+architecture&fields=paperId%2Ctitle%2Cauthors%2Cyear&limit=5' \
  -d '{"message": "Too Many Requests. Please wait and try again or apply for a key for higher rate limits. https://www.semanticscholar.org/product/api#api-key-form", "code": "429"}'
import requests

resp = requests.get(
    "https://api.semanticscholar.org/graph/v1/paper/search",
    params={
        'query': 'transformer architecture',
        'fields': 'paperId,title,authors,year',
        'limit': 5,
    },
    json={
        'message': 'Too Many Requests. Please wait and try again or apply for a key for higher rate limits. https://www.semanticscholar.org/product/api#api-key-form',
        'code': '429',
    },
)
data = resp.json()
import zingu_apis

api = zingu_apis.api("semanticscholar")
result = api.fetch("graph/v1/paper/search", query="transformer architecture", fields="paperId,title,authors,year", limit=5)

for item in result:
    print(item)
const body = {
  "message": "Too Many Requests. Please wait and try again or apply for a key for higher rate limits. https://www.semanticscholar.org/product/api#api-key-form",
  "code": "429"
};

const resp = await fetch("https://api.semanticscholar.org/graph/v1/paper/search?query=transformer+architecture&fields=paperId%2Ctitle%2Cauthors%2Cyear&limit=5", {
  body: JSON.stringify(body),
});
const data = await resp.json();
Paginated search curl
curl 'https://api.semanticscholar.org/graph/v1/paper/search?query=crispr+cas9&limit=20&offset=20' \
  -d '{"message": "Too Many Requests. Please wait and try again or apply for a key for higher rate limits. https://www.semanticscholar.org/product/api#api-key-form", "code": "429"}'
import requests

resp = requests.get(
    "https://api.semanticscholar.org/graph/v1/paper/search",
    params={
        'query': 'crispr cas9',
        'limit': 20,
        'offset': 20,
    },
    json={
        'message': 'Too Many Requests. Please wait and try again or apply for a key for higher rate limits. https://www.semanticscholar.org/product/api#api-key-form',
        'code': '429',
    },
)
data = resp.json()
import zingu_apis

api = zingu_apis.api("semanticscholar")
result = api.fetch("graph/v1/paper/search", query="crispr cas9", limit=20, offset=20)

for item in result:
    print(item)
const body = {
  "message": "Too Many Requests. Please wait and try again or apply for a key for higher rate limits. https://www.semanticscholar.org/product/api#api-key-form",
  "code": "429"
};

const resp = await fetch("https://api.semanticscholar.org/graph/v1/paper/search?query=crispr+cas9&limit=20&offset=20", {
  body: JSON.stringify(body),
});
const data = await resp.json();

Probe History

Latency

Status Codes

TimeStatusLatencySize
2026-04-16 04:01:20.191233 403 218ms
2026-04-16 03:15:58.030942 403 152ms
2026-04-16 00:12:08.244455 403 159ms
2026-04-15 02:16:40.996861 403 156ms
2026-04-15 02:13:54.991452 403 137ms
2026-04-15 01:40:43.774291 403 149ms
2026-04-14 01:04:57.350530 403 157ms
2026-04-14 00:52:26.336077 403 163ms
2026-04-14 00:34:33.566836 403 148ms
2026-04-12 14:57:47.864493 403 127ms
2026-04-12 13:43:16.909162 403 150ms
2026-04-12 12:44:40.674125 403 131ms
2026-04-10 02:32:32.811303 403 89ms
2026-04-10 02:17:54.775526 403 72ms
2026-04-10 01:44:27.560167 403 80ms
2026-04-09 03:45:06.464578 403 146ms
2026-04-09 00:58:40.572462 403 447ms
2026-04-09 00:48:00.393675 403 158ms
2026-03-23 10:27:19.751508 403 68ms
2026-03-23 09:43:24.690550 403 92ms
2026-03-23 09:23:18.730976 403 98ms