{
  "openapi": "3.0.1",
  "info": {
    "title": "Crossref Academic Paper Search",
    "description": "Search over 150 million scholarly works indexed by Crossref -- the largest open registry of DOI metadata in the world. Retrieve structured publication data including titles, authors with ORCID identifiers, citation counts, journal names, funding information, abstracts, and more. No API key required.",
    "version": "2.1",
    "x-build-id": "ffNAGvWQYBb6T3e4U"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/ryanclinton~crossref-paper-search/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-ryanclinton-crossref-paper-search",
        "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/ryanclinton~crossref-paper-search/runs": {
      "post": {
        "operationId": "runs-sync-ryanclinton-crossref-paper-search",
        "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/ryanclinton~crossref-paper-search/run-sync": {
      "post": {
        "operationId": "run-sync-ryanclinton-crossref-paper-search",
        "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 Query",
            "type": "string",
            "description": "Search by title, abstract, or full text (e.g. 'machine learning', 'climate change')",
            "default": "CRISPR gene editing"
          },
          "authorName": {
            "title": "Author Name",
            "type": "string",
            "description": "Filter by author name (e.g. 'Einstein', 'Jennifer Doudna')"
          },
          "containerTitle": {
            "title": "Journal/Source Name",
            "type": "string",
            "description": "Filter by journal or conference name (e.g. 'Nature', 'Science')"
          },
          "doiPrefix": {
            "title": "DOI Prefix",
            "type": "string",
            "description": "Filter by publisher DOI prefix (e.g. '10.1038' for Nature Publishing, '10.1016' for Elsevier, '10.1007' for Springer)"
          },
          "issn": {
            "title": "Journal ISSN",
            "type": "string",
            "description": "Filter by exact journal ISSN (e.g. '0028-0836' for Nature, '0036-8075' for Science). More precise than journal name search."
          },
          "dois": {
            "title": "DOI Lookup Mode",
            "type": "string",
            "description": "Paste specific DOIs (one per line or comma-separated) to fetch their metadata directly. When set, search filters are ignored."
          },
          "mode": {
            "title": "Search Mode",
            "enum": [
              "literature_review"
            ],
            "type": "string",
            "description": "Standard search returns papers matching your filters. Literature Review mode automatically fetches the most cited AND newest papers, deduplicates, and produces a richer summary with top authors and journals."
          },
          "publicationType": {
            "title": "Publication Type",
            "enum": [
              "journal-article",
              "book-chapter",
              "proceedings-article",
              "posted-content",
              "book",
              "dataset",
              "report"
            ],
            "type": "string",
            "description": "Filter by type of publication"
          },
          "minCitations": {
            "title": "Minimum Citations",
            "minimum": 0,
            "type": "integer",
            "description": "Only return papers with at least this many citations. Useful for finding influential papers and filtering noise."
          },
          "maxCitations": {
            "title": "Maximum Citations",
            "minimum": 0,
            "type": "integer",
            "description": "Only return papers with at most this many citations. Useful for finding recent or niche work that isn't heavily cited yet."
          },
          "fromYear": {
            "title": "From Year",
            "type": "integer",
            "description": "Earliest publication year (e.g. 2020)"
          },
          "toYear": {
            "title": "To Year",
            "type": "integer",
            "description": "Latest publication year (e.g. 2025)"
          },
          "sortBy": {
            "title": "Sort By",
            "enum": [
              "relevance",
              "is-referenced-by-count",
              "published"
            ],
            "type": "string",
            "description": "How to sort results",
            "default": "relevance"
          },
          "maxResults": {
            "title": "Max Results",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum number of papers to return (1-1000)",
            "default": 50
          },
          "includeBibtex": {
            "title": "Include BibTeX Citations",
            "type": "boolean",
            "description": "Generate a BibTeX citation string for each paper. Ready for import into Overleaf, Zotero, Mendeley, or any reference manager.",
            "default": false
          },
          "includeOpenAccess": {
            "title": "Include Open Access Status",
            "type": "boolean",
            "description": "Check each paper against Unpaywall to detect Open Access status, OA type (gold/green/bronze/hybrid), and free PDF URLs. Adds ~1 second per paper.",
            "default": false
          },
          "onlyNew": {
            "title": "Only New Papers (Incremental)",
            "type": "boolean",
            "description": "Only return papers not seen in previous runs. Perfect for scheduled monitoring — each run returns only new publications. Seen DOIs are stored in the Key-Value Store.",
            "default": false
          },
          "includeRis": {
            "title": "Include RIS Citations",
            "type": "boolean",
            "description": "Generate an RIS-format citation per paper. RIS is the standard import format for EndNote, Zotero, Mendeley, RefWorks, and most reference managers.",
            "default": false
          },
          "outputProfile": {
            "title": "Output profile",
            "enum": [
              "minimal",
              "standard",
              "llm",
              "full"
            ],
            "type": "string",
            "description": "Controls how much data each result record contains. 'minimal' = decision-only (doi/title/year/citations/summary/recommendedAction/changeFlag). 'standard' = decision + author + journal + abstract + sources. 'llm' = LLM-friendly subset with confidence + agentContract. 'full' = every field (default).",
            "default": "full"
          },
          "watchlistName": {
            "title": "Watchlist name (optional)",
            "type": "string",
            "description": "Name this run as a separate watchlist. Citation history + seen-DOIs are stored per-watchlist, so the same actor runs as N independent literature reviews (e.g. 'crispr-watch' vs 'climate-watch'). Leave blank to share the default state.",
            "default": ""
          },
          "webhookUrl": {
            "title": "Webhook URL (Slack or Discord)",
            "type": "string",
            "description": "Optional. Slack or Discord incoming webhook URL. On run completion, posts a rich embed with totals + retraction warnings + OA % + top papers + a link to the run. Auto-detects vendor.",
            "default": ""
          },
          "circuitBreakerThreshold": {
            "title": "Circuit breaker threshold",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Reserved for future use (Unpaywall failure-streak abort). Currently a placeholder; the Crossref pagination loop already retries with backoff up to 3 times per page.",
            "default": 0
          },
          "includeAgentContract": {
            "title": "Include agentContract",
            "type": "boolean",
            "description": "Add a top-level agentContract { decision, confidence, nextAction, costToAct } to every paper record (and run-level on the SUMMARY) so MCP and AI-agent consumers don't have to traverse the full result.",
            "default": true
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}