{
  "openapi": "3.0.1",
  "info": {
    "title": "OpenAlex Research Radar — Impact, Funders & Competitors",
    "description": "Understand a research field in one run: landmark and rising papers by field-normalized impact (FWCI), the institution and funder graph, who's winning, and where the opportunities are. Deterministic research intelligence, not raw rows.",
    "version": "2.0",
    "x-build-id": "FtBQRy5X0XRmWfiEB"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/ryanclinton~openalex-research-search/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-ryanclinton-openalex-research-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~openalex-research-search/runs": {
      "post": {
        "operationId": "runs-sync-ryanclinton-openalex-research-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~openalex-research-search/run-sync": {
      "post": {
        "operationId": "run-sync-ryanclinton-openalex-research-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",
        "required": [
          "searchQuery"
        ],
        "properties": {
          "searchQuery": {
            "title": "Search Query",
            "type": "string",
            "description": "Keyword search across titles, abstracts, and full text. Ignored when Input Mode is 'identifiers'.",
            "default": "artificial intelligence"
          },
          "inputMode": {
            "title": "Input Mode",
            "enum": [
              "query",
              "identifiers"
            ],
            "type": "string",
            "description": "Query = keyword search. Identifiers = enrich a list of DOIs / OpenAlex work IDs, or pull an author's (ORCID / OpenAlex A-id) or an institution's (ROR / OpenAlex I-id) works.",
            "default": "query"
          },
          "identifiers": {
            "title": "Identifiers",
            "maxItems": 200,
            "type": "array",
            "description": "Used when Input Mode is 'identifiers'. DOIs, OpenAlex work IDs (W...), ORCIDs, OpenAlex author IDs (A...), RORs, or OpenAlex institution IDs (I...). Funder-ID lookup is not supported.",
            "items": {
              "type": "string"
            }
          },
          "analysisMode": {
            "title": "Analysis Mode",
            "enum": [
              "discovery",
              "impact-ranking",
              "landscape",
              "institutional",
              "monitoring"
            ],
            "type": "string",
            "description": "Reweights scoring for your job. Discovery favours query-fit; Impact ranking favours field-normalized impact; Landscape balances both; Institutional emphasises the affiliation graph; Monitoring is for scheduled re-runs.",
            "default": "discovery"
          },
          "maxResults": {
            "title": "Max Results",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum number of works to analyse (1-10000)",
            "default": 50
          },
          "minImpactClass": {
            "title": "Minimum Impact Class",
            "enum": [
              "any",
              "solid",
              "influential",
              "high-impact",
              "landmark"
            ],
            "type": "string",
            "description": "Keep only works at or above this field-normalized impact tier. Excluded works are counted and disclosed in the summary, never silently dropped.",
            "default": "any"
          },
          "excludeRetracted": {
            "title": "Exclude Retracted",
            "type": "boolean",
            "description": "Drop works flagged as retracted (counted in the summary)",
            "default": false
          },
          "openAccessOnly": {
            "title": "Open Access Only",
            "type": "boolean",
            "description": "Only include works that are freely available (open access)",
            "default": false
          },
          "publicationYear": {
            "title": "Publication Year (exact)",
            "type": "integer",
            "description": "Filter to a single publication year (e.g. 2024). Leave blank to use a range or no year filter."
          },
          "fromPublicationYear": {
            "title": "From Year",
            "type": "integer",
            "description": "Start of a publication-year range (inclusive)"
          },
          "toPublicationYear": {
            "title": "To Year",
            "type": "integer",
            "description": "End of a publication-year range (inclusive)"
          },
          "minCitations": {
            "title": "Minimum Citations",
            "type": "integer",
            "description": "Only include works with at least this many citations"
          },
          "workType": {
            "title": "Work Type",
            "type": "string",
            "description": "Filter to one OpenAlex work type (e.g. article, review, preprint, book-chapter, dataset). Leave blank for all types."
          },
          "country": {
            "title": "Country",
            "pattern": "^[A-Za-z]{2}$",
            "type": "string",
            "description": "Filter to works with at least one author affiliated in this 2-letter country code (e.g. US, GB, CN, DE)"
          },
          "sortBy": {
            "title": "Sort By",
            "enum": [
              "relevance_score:desc",
              "cited_by_count:desc",
              "publication_date:desc"
            ],
            "type": "string",
            "description": "How to order the works fetched from OpenAlex"
          },
          "outputProfile": {
            "title": "Output Profile",
            "enum": [
              "minimal",
              "standard",
              "full"
            ],
            "type": "string",
            "description": "How much of each record to return. Minimal = the decision fields; Standard = decision + graph + concepts; Full = everything including score factors.",
            "default": "standard"
          },
          "outputMode": {
            "title": "Output Mode",
            "enum": [
              "papers",
              "dashboard"
            ],
            "type": "string",
            "description": "Papers returns one record per work plus the landscape and brief. Dashboard suppresses per-paper records and returns only the landscape digest (and is charged as a single event).",
            "default": "papers"
          },
          "emitResearchBrief": {
            "title": "Emit Research Brief",
            "type": "boolean",
            "description": "Include the deterministic research-brief hero record (must-read papers, reading order, suggested next queries)",
            "default": true
          },
          "includeEntityProfiles": {
            "title": "Include Entity Profiles",
            "type": "boolean",
            "description": "Emit institution / funder / author / source profile records + a collaboration-network insight describing each entity's footprint within this result set (no extra API calls)",
            "default": false
          },
          "compareInstitutions": {
            "title": "Compare Institutions",
            "maxItems": 8,
            "type": "array",
            "description": "Competitive mode: institution names (e.g. \"MIT\", \"Stanford\"), RORs, or OpenAlex institution IDs. Returns a head-to-head comparison ranked by research momentum, optionally scoped to the search query. Replaces the normal corpus output.",
            "items": {
              "type": "string"
            }
          },
          "includeTopicIntelligence": {
            "title": "Include Topic Intelligence",
            "type": "boolean",
            "description": "Query mode only. Emit a topic-profile (maturity stage, growth, velocity, leading countries/institutions/funders, citation concentration, adjacent topics) plus trend-signal and opportunity-signal records. Costs one extra group_by query for true field-level growth.",
            "default": false
          },
          "includeGraphExport": {
            "title": "Include Graph Export",
            "type": "boolean",
            "description": "Write GRAPH_NODES and GRAPH_EDGES to the key-value store (paper / institution / author / topic / funder graph for Gephi, Neo4j, Cytoscape)",
            "default": false
          },
          "includeCitationExports": {
            "title": "Include Citation Exports",
            "type": "boolean",
            "description": "Write BIBTEX_EXPORT and RIS_EXPORT to the key-value store. For bulk BibTeX from a DOI list, Crossref Paper Search is the dedicated tool.",
            "default": false
          },
          "monitorMode": {
            "title": "Monitor Mode",
            "type": "boolean",
            "description": "Track this query across scheduled runs. Stores a per-watchlist baseline and flags new papers, citation risers, and impact shifts on the next run.",
            "default": false
          },
          "watchlistName": {
            "title": "Watchlist Name",
            "type": "string",
            "description": "Name for the monitored baseline (only used when Monitor Mode is on). Use distinct names to track several research areas independently.",
            "default": "default"
          },
          "monitorSensitivity": {
            "title": "Monitor Sensitivity",
            "enum": [
              "low",
              "medium",
              "high"
            ],
            "type": "string",
            "description": "How readily monitor mode raises alerts. Low = high-impact / landmark / retraction only; High = every change.",
            "default": "medium"
          },
          "alertOn": {
            "title": "Alert On",
            "type": "array",
            "description": "Restrict monitor alerts to these event types (empty = all). Values: new_work, new_high_impact, new_landmark, citation_breakout, retraction.",
            "items": {
              "type": "string"
            }
          },
          "apiKey": {
            "title": "OpenAlex API Key (optional)",
            "type": "string",
            "description": "Optional. The public OpenAlex works endpoint is free and keyless via the polite pool (100k calls/day). Supply a key only if you have a premium OpenAlex plan and want its higher limits."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}