Semantic Scholar Paper Recommendations API

The Paper Recommendations API from Semantic Scholar — 2 operation(s) for paper recommendations.

Operations 2

POST /papers/ Get recommended papers for lists of positive and negative example papers #
GET /papers/forpaper/{paper_id} Get recommended papers for a single positive example paper #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/semantic-scholar-paper-recommendations-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

semantic-scholar-paper-recommendations-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Academic Graph Author Data Paper Recommendations API
  version: '1.0'
  description: "Fetch paper and author data from the Semantic Scholar Academic Graph (S2AG).\n        <br><br>\n        Some things to note:\n        <ul>\n        <li>If you are using an API key, it must be set in the header <code>x-api-key</code> (case-sensitive).</li>\n        <li>We have two different IDs for a single paper:\n          <ul>\n            <li><code>paperId</code> - string - The primary way to identify papers when using our website or this API</li>\n            <li><code>corpusId</code> - int64 - A second way to identify papers. Our datasets use corpusId when pointing to papers.</li>\n          </ul>\n        </li>\n        <li>Other useful resources<ul>\n        <li><a href=\"https://www.semanticscholar.org/product/api\">Overview</a></li>\n        <li><a href=\"https://github.com/allenai/s2-folks/\">allenai/s2-folks</a></li>\n        <li><a href=\"https://github.com/allenai/s2-folks/blob/main/FAQ.md\">FAQ</a> in allenai/s2folks</li>\n        </ul></li>\n        "
servers:
- url: https://api.semanticscholar.org/graph/v1
tags:
- name: Paper Recommendations
paths:
  /papers/:
    post:
      summary: Get recommended papers for lists of positive and negative example papers
      operationId: post_papers
      tags:
      - Paper Recommendations
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Paper%20Input'
      responses:
        '404':
          description: Input papers not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
        '400':
          description: Bad query parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400'
        '200':
          description: List of recommendations with default or requested fields
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Paper%20Recommendations'
  /papers/forpaper/{paper_id}:
    get:
      summary: Get recommended papers for a single positive example paper
      operationId: get_papers_for_paper
      tags:
      - Paper Recommendations
      responses:
        '404':
          description: Input papers not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error404'
        '400':
          description: Bad query parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error400'
        '200':
          description: List of recommendations with default or requested fields
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Paper%20Recommendations'
components:
  schemas:
    Error400:
      properties:
        error:
          type: string
          description: "Depending on the case, error message may be any of these:\n<ul>\n    <li><code>\"Unrecognized or unsupported fields: [bad1, bad2, etc...]\"</code></li>\n    <li><code>\"Unacceptable query params: [badK1=badV1, badK2=badV2, etc...}]\"</code></li>\n    <li><code>\"Response would exceed maximum size....\"</code></li>\n        <ul><li>This error will occur when the response exceeds 10 MB. Suggestions to either break the request into smaller batches, or make use of the limit and offset features will be presented.</li></ul>\n    <li>A custom message string</li></ul>"
          example: 'Unrecognized or unsupported fields: [author.creditCardNumber, garbage]'
      type: object
    Error404:
      properties:
        error:
          type: string
          description: "Depending on the case, error message may be any of these:\n<ul>\n    <li><code>\"Paper/Author/Object not found\"</code></li>\n    <li><code>\"Paper/Author/Object with id ### not found\"</code></li>\n</ul>"
          example: Requested object not found
      type: object