bulk: Paper bulk search

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

Description

Behaves similarly to <code>/paper/search</code>, but is intended for bulk retrieval of basic paper data without search relevance: <ul> <li>Text query is optional and supports boolean logic for document matching.</li> <li>Papers can be filtered using various criteria.</li> <li>Up to 1,000 papers will be returned in each call.</li> <li>If there are more matching papers, a continuation "token" will be present.</li> <li>The query can be repeated with the token param added to efficiently continue fetching matching papers.</li> </ul> <br> Returns a structure with an estimated total matches, batch of matching papers, and a continuation token if more results are available. <br> Limitations: <ul> <li>Nested paper data, such as citations, references, etc, is not available via this method.</li> <li>Up to 10,000,000 papers can be fetched via this method. For larger needs, please use the <a href="datasets/">Datasets API</a> to retrieve full copies of the corpus.</li> </ul>

Parameters (11)

fields (string, query, optional)

A comma-separated list of the fields to be returned. See the contents of the <code>data</code> array in Response Schema below for a list of all available fields that can be returned.<br><br> The <code>paperId</code> field is always returned. If the fields parameter is omitted, only the <code>paperId</code> and <code>title</code> will be returned.<br><br> Examples: <code>https://api.semanticscholar.org/graph/v1/paper/search/bulk?query=covid&fields=venue,s2FieldsOfStudy</code>

fieldsOfStudy (string, query, optional)

Restricts results to papers in the given fields of study, formatted as a comma-separated list: <ul> <li>Computer Science</li> <li>Medicine</li> <li>Chemistry</li> <li>Biology</li> <li>Materials Science</li> <li>Physics</li> <li>Geology</li> <li>Psychology</li> <li>Art</li> <li>History</li> <li>Geography</li> <li>Sociology</li> <li>Business</li> <li>Political Science</li> <li>Economics</li> <li>Philosophy</li> <li>Mathematics</li> <li>Engineering</li> <li>Environmental Science</li> <li>Agricultural and Food Sciences</li> <li>Education</li> <li>Law</li> <li>Linguistics</li> </ul> Example: <code>Physics,Mathematics</code> will return papers with either Physics or Mathematics in their list of fields-of-study.

minCitationCount (string, query, optional)

Restricts results to only include papers with the minimum number of citations. <br> <br> Example: <code>minCitationCount=200</code>

openAccessPdf (string, query, optional)

Restricts results to only include papers with a public PDF. This parameter does not accept any values.

publicationDateOrYear (string, query, optional)

Restricts results to the given range of publication dates or years (inclusive). Accepts the format <code>&lt;startDate&gt;:&lt;endDate&gt;</code> with each date in <code>YYYY-MM-DD</code> format. <br> <br> Each term is optional, allowing for specific dates, fixed ranges, or open-ended ranges. In addition, prefixes are supported as a shorthand, e.g. <code>2020-06</code> matches all dates in June 2020. <br> <br> Specific dates are not known for all papers, so some records returned with this filter will have a <code>null</code> value for </code>publicationDate</code>. <code>year</code>, however, will always be present. For records where a specific publication date is not known, they will be treated as if published on January 1st of their publication year. <br> <br> Examples: <ul> <li><code>2019-03-05</code> on March 5th, 2019</li> <li><code>2019-03</code> during March 2019</li> <li><code>2019</code> during 2019</li> <li><code>2016-03-05:2020-06-06</code> as early as March 5th, 2016 or as late as June 6th, 2020</li> <li><code>1981-08-25:</code> on or after August 25th, 1981</li> <li><code>:2015-01</code> before or on January 31st, 2015</li> <li><code>2015:2020</code> between January 1st, 2015 and December 31st, 2020</li> </ul>

publicationTypes (string, query, optional)

Restricts results to any of the following paper publication types: <ul> <li>Review</li> <li>JournalArticle</li> <li>CaseReport</li> <li>ClinicalTrial</li> <li>Conference</li> <li>Dataset</li> <li>Editorial</li> <li>LettersAndComments</li> <li>MetaAnalysis</li> <li>News</li> <li>Study</li> <li>Book</li> <li>BookSection</li> </ul> Use a comma-separated list to include papers with any of the listed publication types. <br><br> Example: <code>Review,JournalArticle</code> will return papers with publication types Review and/or JournalArticle.

query (string, query, required)

Text query that will be matched against the paper's title and abstract. All terms are stemmed in English. By default all terms in the query must be present in the paper. The match query supports the following syntax: <ul> <li><code>+</code> for AND operation</li> <li><code>|</code> for OR operation</li> <li><code>-</code> negates a term </li> <li><code>"</code> collects terms into a phrase</li> <li><code>*</code> can be used to match a prefix</li> <li><code>(</code> and <code>)</code> for precedence</li> <li><code>~N</code> after a word matches within the edit distance of N (Defaults to 2 if N is omitted)</li> <li><code>~N</code> after a phrase matches with the phrase terms separated up to N terms apart (Defaults to 2 if N is omitted)</li> </ul> Examples: <ul> <li><code>fish ladder</code> matches papers that contain "fish" and "ladder"</li> <li><code>fish -ladder</code> matches papers that contain "fish" but not "ladder"</li> <li><code>fish | ladder</code> matches papers that contain "fish" or "ladder"</li> <li><code>"fish ladder"</code> matches papers that contain the phrase "fish ladder"</li> <li><code>(fish ladder) | outflow</code> matches papers that contain "fish" and "ladder" OR "outflow"</li> <li><code>fish~</code> matches papers that contain "fish", "fist", "fihs", etc. </li> <li><code>"fish ladder"~3</code> mathces papers that contain the phrase "fish ladder" or "fish is on a ladder"</li> </ul>

sort (string, query, optional)

Provides the option to sort the results by the following fields: <ul> <li><code>paperId</code></li> <li><code>publicationDate</code></li> <li><code>citationCount</code></li> </ul> Uses the format <code>field:order</code>. Ties are broken by <code>paperId</code>. The default field is <code>paperId</code> and the default order is asc. Records for which the sort value are not defined will appear at the end of sort, regardless of asc/desc order. <br> <br> Examples: <ul> <li><code>publicationDate:asc</code> - return oldest papers first.</li> <li><code>citationCount:desc</code> - return most highly-cited papers first.</li> <li><code>paperId</code> - return papers in ID order, low-to-high.</li> </ul> <br> Please be aware that if the relevant data changes while paging through results, records can be returned in an unexpected way. The default <code>paperId</code> sort avoids this edge case.

token (string, query, optional)

Used for pagination. This string token is provided when the original query returns, and is used to fetch the next batch of papers. Each call will return a new token.

venue (string, query, optional)

Restricts results to papers published in the given venues, formatted as a comma-separated list. <br><br> Input could also be an ISO4 abbreviation. Examples include: <ul> <li>Nature</li> <li>New England Journal of Medicine</li> <li>Radiology</li> <li>N. Engl. J. Med.</li> </ul> Example: <code>Nature,Radiology</code> will return papers from venues Nature and/or Radiology.

year (string, query, optional)

Restricts results to the given publication year or range of years (inclusive). <br> <br> Examples: <ul> <li><code>2019</code> in 2019</li> <li><code>2016-2020</code> as early as 2016 or as late as 2020</li> <li><code>2010-</code> during or after 2010</li> <li><code>-2015</code> before or during 2015</li> </ul>

Examples (3)

Basic search for machine learning papers with key fields curl
curl 'https://api.semanticscholar.org/paper/search/bulk?query=machine+learning&fields=paperId%2Ctitle%2Cabstract%2Cauthors%2Cyear%2CcitationCount' \
  -d '{"error": "Not found"}'
import requests

resp = requests.get(
    "https://api.semanticscholar.org/paper/search/bulk",
    params={
        'query': 'machine learning',
        'fields': 'paperId,title,abstract,authors,year,citationCount',
    },
    json={
        'error': 'Not found',
    },
)
data = resp.json()
import zingu_apis

api = zingu_apis.api("semanticscholar")
result = api.fetch("paper/search/bulk", query="machine learning", fields="paperId,title,abstract,authors,year,citationCount")

for item in result:
    print(item)
const body = {
  "error": "Not found"
};

const resp = await fetch("https://api.semanticscholar.org/paper/search/bulk?query=machine+learning&fields=paperId%2Ctitle%2Cabstract%2Cauthors%2Cyear%2CcitationCount", {
  body: JSON.stringify(body),
});
const data = await resp.json();
Search for highly-cited AI papers from 2020-2023 curl
curl 'https://api.semanticscholar.org/paper/search/bulk?query=artificial+intelligence&fields=paperId%2Ctitle%2Cauthors%2Cyear%2CcitationCount%2CfieldsOfStudy&minCitationCount=100&year=2020-2023&fieldsOfStudy=Computer+Science' \
  -d '{"error": "Not found"}'
import requests

resp = requests.get(
    "https://api.semanticscholar.org/paper/search/bulk",
    params={
        'query': 'artificial intelligence',
        'fields': 'paperId,title,authors,year,citationCount,fieldsOfStudy',
        'minCitationCount': '100',
        'year': '2020-2023',
        'fieldsOfStudy': 'Computer Science',
    },
    json={
        'error': 'Not found',
    },
)
data = resp.json()
import zingu_apis

api = zingu_apis.api("semanticscholar")
result = api.fetch("paper/search/bulk", query="artificial intelligence", fields="paperId,title,authors,year,citationCount,fieldsOfStudy", minCitationCount=100, year="2020-2023", fieldsOfStudy="Computer Science")

for item in result:
    print(item)
const body = {
  "error": "Not found"
};

const resp = await fetch("https://api.semanticscholar.org/paper/search/bulk?query=artificial+intelligence&fields=paperId%2Ctitle%2Cauthors%2Cyear%2CcitationCount%2CfieldsOfStudy&minCitationCount=100&year=2020-2023&fieldsOfStudy=Computer+Science", {
  body: JSON.stringify(body),
});
const data = await resp.json();
Search for review papers with open access PDF curl
curl 'https://api.semanticscholar.org/paper/search/bulk?query=climate+change&fields=paperId%2Ctitle%2Cabstract%2CopenAccessPdf&publicationTypes=Review&openAccessPdf=true' \
  -d '{"error": "Not found"}'
import requests

resp = requests.get(
    "https://api.semanticscholar.org/paper/search/bulk",
    params={
        'query': 'climate change',
        'fields': 'paperId,title,abstract,openAccessPdf',
        'publicationTypes': 'Review',
        'openAccessPdf': 'true',
    },
    json={
        'error': 'Not found',
    },
)
data = resp.json()
import zingu_apis

api = zingu_apis.api("semanticscholar")
result = api.fetch("paper/search/bulk", query="climate change", fields="paperId,title,abstract,openAccessPdf", publicationTypes="Review", openAccessPdf="true")

for item in result:
    print(item)
const body = {
  "error": "Not found"
};

const resp = await fetch("https://api.semanticscholar.org/paper/search/bulk?query=climate+change&fields=paperId%2Ctitle%2Cabstract%2CopenAccessPdf&publicationTypes=Review&openAccessPdf=true", {
  body: JSON.stringify(body),
});
const data = await resp.json();

Probe History

Latency

Status Codes

TimeStatusLatencySize
2026-04-16 17:24:28.776910 403 160ms
2026-04-16 04:17:09.016499 403 123ms
2026-04-16 03:34:19.691723 403 138ms
2026-04-16 00:41:54.717488 403 150ms
2026-04-15 01:10:27.333606 403 131ms
2026-04-15 00:52:41.485991 403 152ms
2026-04-15 00:19:05.957596 403 151ms
2026-04-14 03:37:02.699707 403 229ms
2026-04-14 02:36:50.690243 403 160ms
2026-04-14 00:29:31.445275 403 120ms
2026-04-12 16:15:59.102138 403 146ms
2026-04-12 15:29:38.310670 403 175ms
2026-04-12 12:29:48.975281 403 146ms
2026-04-10 03:19:47.566382 403 77ms
2026-04-10 03:17:26.925818 403 89ms
2026-04-10 00:24:49.781658 403 136ms
2026-04-09 03:06:24.177319 403 261ms
2026-04-09 01:50:38.732977 403 882ms
2026-04-09 00:20:59.584097 403 138ms
2026-03-23 10:44:32.892754 403 94ms
2026-03-23 09:48:39.506806 403 85ms
2026-03-23 09:27:31.722917 403 87ms