{
  "openapi": "3.0.1",
  "info": {
    "title": "Research Papers API - Google Scholar Alternative (OpenAlex)",
    "description": "Search tens of millions of scientific papers via OpenAlex, Crossref and arXiv: title, authors, abstract, DOI, citations, open access PDF links and funding. A Google Scholar alternative, no key. dryRun prices a run first; charged only for papers delivered.",
    "version": "0.1",
    "x-build-id": "o6HqdwPDOYppi4q9w"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/lost.fany~research-papers-google-scholar-alternative/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-lost.fany-research-papers-google-scholar-alternative",
        "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/lost.fany~research-papers-google-scholar-alternative/runs": {
      "post": {
        "operationId": "runs-sync-lost.fany-research-papers-google-scholar-alternative",
        "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/lost.fany~research-papers-google-scholar-alternative/run-sync": {
      "post": {
        "operationId": "run-sync-lost.fany-research-papers-google-scholar-alternative",
        "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",
        "required": [
          "query"
        ],
        "properties": {
          "query": {
            "title": "Search query",
            "type": "string",
            "description": "What to search for: a topic, a title, an author name or a phrase. Searched in titles, abstracts and full text where the sources index it. Required — the Actor stops with a clear message if it is empty."
          },
          "sources": {
            "title": "Sources",
            "type": "array",
            "description": "Which open catalogues to query. OpenAlex is the broadest (260M+ works, CC0 metadata), Crossref is the publisher record of DOIs, arXiv adds preprints with full-text PDFs. All three by default; results are merged and deduplicated.",
            "items": {
              "type": "string",
              "enum": [
                "openalex",
                "crossref",
                "arxiv"
              ],
              "enumTitles": [
                "OpenAlex",
                "Crossref",
                "arXiv"
              ]
            },
            "default": [
              "openalex",
              "crossref",
              "arxiv"
            ]
          },
          "fromYear": {
            "title": "From year",
            "minimum": 1500,
            "maximum": 2200,
            "type": "integer",
            "description": "Keep papers published in this year or later, e.g. 2020. Empty = no lower bound. Papers with no known publication year are dropped when a year bound is set."
          },
          "toYear": {
            "title": "To year",
            "minimum": 1500,
            "maximum": 2200,
            "type": "integer",
            "description": "Keep papers published in this year or earlier, e.g. 2026. Empty = no upper bound."
          },
          "openAccessOnly": {
            "title": "Open access only",
            "type": "boolean",
            "description": "Keep only papers that are free to read. OpenAlex reports open access directly, every arXiv preprint is open, and a Crossref-only paper counts as open when it carries a Creative Commons licence.",
            "default": false
          },
          "minCitations": {
            "title": "Minimum citations",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only papers with at least this many citations. Citation counts come from OpenAlex and Crossref; a paper found only on arXiv has none and is dropped by any value above 0.",
            "default": 0
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "date",
              "citations"
            ],
            "type": "string",
            "description": "Order of the rows in the dataset. The same order is asked of every source, so a 'date' run returns the newest papers rather than the most relevant ones.",
            "default": "relevance"
          },
          "contactEmail": {
            "title": "Contact e-mail (polite pool)",
            "type": "string",
            "description": "Optional. OpenAlex and Crossref serve clients that identify themselves from a faster 'polite pool'. Any address you actually own works; a placeholder address is ignored."
          },
          "maxItems": {
            "title": "Max papers",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many papers (counted after deduplication). Each source is read up to this many rows, so the raw number of API rows can be up to three times higher.",
            "default": 1000
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. All three APIs are public and are queried directly by default; a proxy only helps if the run is rate-limited.",
            "default": {
              "useApifyProxy": false
            }
          },
          "dryRun": {
            "title": "Estimate only (no charge)",
            "type": "boolean",
            "description": "Count every result and show what a full run would cost, without charging for it. Only a few sample rows are stored. Use it to check the price before you pay.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}