{
  "openapi": "3.0.1",
  "info": {
    "title": "OpenAlex Scholar Scraper (Papers, Authors, Journals)",
    "description": "Search OpenAlex, the open CC0 catalogue of 250M+ scholarly works plus authors, journals, institutions, publishers, funders and topics. Full-text query, filters (year, type, open access, citations, author, journal), cursor pagination past 10k, reconstructed abstracts. DOI/ORCID/ROR/ISSN lookup.",
    "version": "0.1",
    "x-build-id": "eOF039JYbo2lZuDp2"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapyx~openalex-scholar-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapyx-openalex-scholar-scraper",
        "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/scrapyx~openalex-scholar-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapyx-openalex-scholar-scraper",
        "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/scrapyx~openalex-scholar-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapyx-openalex-scholar-scraper",
        "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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "ids"
            ],
            "type": "string",
            "description": "`search` runs a query/filters against one entity. `ids` looks up specific records by OpenAlex id / DOI / ORCID / ROR / ISSN (entity inferred).",
            "default": "search"
          },
          "entity": {
            "title": "Entity",
            "enum": [
              "works",
              "authors",
              "sources",
              "institutions",
              "publishers",
              "funders",
              "topics"
            ],
            "type": "string",
            "description": "`search` mode. Which OpenAlex catalogue to search.",
            "default": "works"
          },
          "query": {
            "title": "Search query",
            "type": "string",
            "description": "`search` mode. Full-text search. An unrecognised term honestly returns 0 results (OpenAlex search is a filter, not a ranked corpus match). Optional if you supply filters instead."
          },
          "recordIds": {
            "title": "Record references",
            "type": "array",
            "description": "`ids` mode. One per line: `W2741809807`, `A5086198262`, `S137773608`, a DOI (`10.7717/peerj.4375`), an ORCID, a ROR, or an ISSN. Bad refs become `invalid_ref` errors.",
            "items": {
              "type": "string"
            }
          },
          "fromYear": {
            "title": "From year (works)",
            "type": "integer",
            "description": "Works filter. Keep works published on/after 1 January of this year."
          },
          "toYear": {
            "title": "To year (works)",
            "type": "integer",
            "description": "Works filter. Keep works published on/before 31 December of this year."
          },
          "workType": {
            "title": "Work type (works)",
            "type": "string",
            "description": "Works filter. An OpenAlex type: `article`, `review`, `book-chapter`, `book`, `dataset`, `preprint`, `dissertation`, `report`, `standard`, `editorial`, `letter`, `erratum`, `paratext`, `peer-review`, `other`. An unknown value returns HTTP 400 (not a silent widen)."
          },
          "openAccessOnly": {
            "title": "Open access only (works)",
            "type": "boolean",
            "description": "Works filter. Keep only works OpenAlex marks as open access (`is_oa:true`).",
            "default": false
          },
          "includeParatext": {
            "title": "Include paratext (works)",
            "type": "boolean",
            "description": "By default `is_paratext:false` is applied — paratext records (series/issue front matter) aggregate a whole series' citations and swamp a cited-by-count sort with non-articles. Turn this on to include them.",
            "default": false
          },
          "minCitations": {
            "title": "Minimum citations (works)",
            "type": "integer",
            "description": "Works filter. Keep only works cited at least this many times."
          },
          "authorId": {
            "title": "Author ID (works)",
            "type": "string",
            "description": "Works filter. Restrict to works by one author — an OpenAlex author id (`A5086198262`) or ORCID."
          },
          "sourceId": {
            "title": "Source / journal ID (works)",
            "type": "string",
            "description": "Works filter. Restrict to works in one source — an OpenAlex source id (`S137773608`) or ISSN."
          },
          "institutionId": {
            "title": "Institution ID (works)",
            "type": "string",
            "description": "Works filter. Restrict to works with an author affiliated to one institution — an OpenAlex institution id (`I27837315`) or ROR."
          },
          "countryCode": {
            "title": "Country code (authors / institutions / …)",
            "type": "string",
            "description": "Non-works filter. ISO 3166-1 alpha-2 (`us`, `gb`, `de`). Restricts authors/institutions/sources/… by country."
          },
          "rawFilter": {
            "title": "Raw OpenAlex filter",
            "type": "string",
            "description": "Power users. Appended verbatim to the `filter=` parameter (comma-joined with the structured filters above). E.g. `is_retracted:true`, `language:en`, `authorships.institutions.country_code:us`. See docs.openalex.org/how-to-use-the-api/get-lists-of-entities/filter-entity-lists."
          },
          "sort": {
            "title": "Sort",
            "type": "string",
            "description": "OpenAlex sort key, e.g. `cited_by_count:desc`, `publication_date:desc`, `works_count:desc`. Default is relevance when a query is given, else OpenAlex's default order."
          },
          "includeAbstract": {
            "title": "Reconstruct abstracts (works)",
            "type": "boolean",
            "description": "OpenAlex stores abstracts as an inverted index (`{word: [positions]}`). When on, they are reconstructed into plain text on the `abstract` field. Some works have no abstract at all.",
            "default": true
          },
          "slimOutput": {
            "title": "Slim output (drop the raw record)",
            "type": "boolean",
            "description": "By default every RESULT row carries the full verbatim OpenAlex record in `raw`. Turn on to emit only the normalised fields (works records in particular are large).",
            "default": false
          },
          "mailto": {
            "title": "Contact email (polite pool)",
            "type": "string",
            "description": "Optional. OpenAlex offers a faster 'polite pool' to API users who identify themselves. If given, it is added as the `mailto=` parameter on every request. Off by default (the common pool is used)."
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "type": "integer",
            "description": "`search` mode cap. Cursor pagination is used, so this can exceed 10,000 (the page-offset ceiling does not apply).",
            "default": 500
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Parallel in-flight requests (matters for `ids` mode).",
            "default": 4
          },
          "minRequestInterval": {
            "title": "Min seconds between requests",
            "minimum": 0,
            "type": "number",
            "description": "Politeness pacing for a non-profit's infrastructure. OpenAlex 429s under sustained hammering.",
            "default": 0.12
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. No anti-bot layer, so a proxy is OFF by default.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}