{
  "openapi": "3.0.1",
  "info": {
    "title": "Research Papers Search API: arXiv, PubMed, Crossref, DOI",
    "description": "Search research papers, academic papers and scholarly articles in arXiv, PubMed, Crossref and OpenAlex at once. PubMed articles with abstracts, DOI, citation counts, open access papers and BibTeX per row, deduplicated. DOI lookup of references by title. $0.60-1 per 1,000.",
    "version": "0.1",
    "x-build-id": "L2xxvf1FJKckXShAu"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/solidfetch~research-papers/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-solidfetch-research-papers",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/solidfetch~research-papers/runs": {
      "post": {
        "operationId": "runs-sync-solidfetch-research-papers",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/solidfetch~research-papers/run-sync": {
      "post": {
        "operationId": "run-sync-solidfetch-research-papers",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "title": "Search",
            "type": "string",
            "description": "What to search for: keywords, a topic, a title or an author's name. Words are matched in title and abstract. For arXiv, a phrase in double quotes is matched exactly. Use this or the list below, or both."
          },
          "queries": {
            "title": "More searches",
            "type": "array",
            "description": "One search text per entry, up to 50 per run. A paper that matches several searches is returned and charged once; the repeat gets a free row. Same rules as the single search box above.",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "title": "Sources",
            "type": "array",
            "description": "Which databases to ask. All four by default. OpenAlex covers all fields and has citation counts, Crossref has publisher metadata, arXiv has preprints in physics, maths and computer science, PubMed has biomedicine.",
            "items": {
              "type": "string",
              "enum": [
                "openalex",
                "crossref",
                "arxiv",
                "pubmed"
              ],
              "enumTitles": [
                "OpenAlex (all fields, citations)",
                "Crossref (publisher metadata, citations)",
                "arXiv (preprints)",
                "PubMed (biomedicine)"
              ]
            },
            "default": [
              "openalex",
              "crossref",
              "arxiv",
              "pubmed"
            ]
          },
          "maxResults": {
            "title": "Results per search",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Whole number from 1 to 200. The most papers returned for each search after the sources are merged. You pay for the papers returned, not for everything the sources found.",
            "default": 10
          },
          "sort": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "date",
              "citations"
            ],
            "type": "string",
            "description": "Relevance merges the rankings of the sources. Citations uses the counts from OpenAlex and Crossref; papers no source has a count for come last.",
            "default": "relevance"
          },
          "yearFrom": {
            "title": "Published from year",
            "minimum": 1000,
            "maximum": 2100,
            "type": "integer",
            "description": "First publication year to include, a four-digit year such as 2023. Papers published earlier are dropped. Empty means no lower limit."
          },
          "yearTo": {
            "title": "Published up to year",
            "minimum": 1000,
            "maximum": 2100,
            "type": "integer",
            "description": "Last publication year to include, a four-digit year such as 2025. Papers published later are dropped. Empty means no upper limit."
          },
          "openAccessOnly": {
            "title": "Open access only",
            "type": "boolean",
            "description": "Return only papers that are free to read. Crossref is skipped in this mode, because it has no open-access filter.",
            "default": false
          },
          "contactEmail": {
            "title": "Contact e-mail (optional)",
            "type": "string",
            "description": "Sent to Crossref, OpenAlex and NCBI as the contact of their polite pools, so they can write to you instead of blocking you. Leave empty to send none. Use a real address that you read, as an e-mail address such as name@example.com."
          },
          "openAlexApiKey": {
            "title": "OpenAlex API key (optional)",
            "type": "string",
            "description": "Without a key, OpenAlex gives a small daily budget shared by everyone on the same IP address, and the OpenAlex part of a run returns an error row once it is used up. A free key from openalex.org/settings/api has its own budget."
          },
          "pubmedApiKey": {
            "title": "NCBI API key (optional)",
            "type": "string",
            "description": "Raises the PubMed limit from 3 to 10 requests a second, which makes big runs faster. Free in your NCBI account settings."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}