{
  "openapi": "3.0.1",
  "info": {
    "title": "EURAXESS Jobs Scraper — Research & Academic Jobs",
    "description": "Search EURAXESS PhD, postdoc, fellowship, research, and faculty vacancies. Get structured records with complete descriptions, requirements, funding, deadlines, contacts, and locations when published.",
    "version": "1.0",
    "x-build-id": "5n7huEXQYFUBdndQP"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nomad-agent~euraxess-enrich-translate-normalize-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nomad-agent-euraxess-enrich-translate-normalize-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/nomad-agent~euraxess-enrich-translate-normalize-scraper/runs": {
      "post": {
        "operationId": "runs-sync-nomad-agent-euraxess-enrich-translate-normalize-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/nomad-agent~euraxess-enrich-translate-normalize-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-nomad-agent-euraxess-enrich-translate-normalize-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",
        "required": [
          "schemaVersion"
        ],
        "properties": {
          "schemaVersion": {
            "title": "Input contract version",
            "enum": [
              "nomad-agent-job-search-input-v1"
            ],
            "type": "string",
            "description": "Version of the shared normalized job-search Actor input contract.",
            "default": "nomad-agent-job-search-input-v1"
          },
          "keyword": {
            "title": "Keyword",
            "type": "string",
            "description": "Exact job title, discipline, skill, or research term matched against job titles, domains, classifications, and full descriptions. Related roles are not added. Leave empty to search the bounded current job window."
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, region, postal code, facility, address, or country text matched case-insensitively against source-published locations. A missing or ambiguous location does not count as a match."
          },
          "euraxessSearch": {
            "title": "EURAXESS search options",
            "required": [
              "schemaVersion"
            ],
            "type": "object",
            "description": "Optionally add faithful translations of the exact keyword across major EURAXESS languages. The original term is retained and related titles, roles, and disciplines are never added.",
            "properties": {
              "schemaVersion": {
                "title": "EURAXESS search schema version",
                "description": "Version of the source-specific EURAXESS search extension.",
                "type": "string",
                "default": "nomad-agent-euraxess-search-v1",
                "enum": [
                  "nomad-agent-euraxess-search-v1"
                ]
              },
              "translateKeywords": {
                "title": "Match translated exact keywords",
                "type": "boolean",
                "description": "Add faithful translations used across major EURAXESS languages while keeping the original keyword. This is explicit and off by default. Failure falls back to the original term; it never searches similar roles or disciplines.",
                "default": false
              }
            },
            "additionalProperties": false
          },
          "postedWithin": {
            "title": "Posted within",
            "enum": [
              "24h",
              "7d",
              "30d",
              "any"
            ],
            "type": "string",
            "description": "Return jobs within the selected publication-date window. EURAXESS publishes calendar dates, so 24h includes the current and previous UTC date; exact hour-level filtering is unavailable.",
            "default": "24h"
          },
          "workArrangements": {
            "title": "Work arrangements",
            "uniqueItems": true,
            "type": "array",
            "description": "Optional union of remote, hybrid, and on-site arrangements. EURAXESS rows match only when the source explicitly establishes an arrangement; a city, country, office address, or missing workplace label is never interpreted as on-site evidence.",
            "items": {
              "type": "string",
              "enum": [
                "remote",
                "hybrid",
                "onsite"
              ],
              "enumTitles": [
                "Remote",
                "Hybrid",
                "On-site"
              ]
            }
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Maximum number of job postings to return. Set 0 to request the Actor's complete bounded delivery window of 200 items; it never means unlimited.",
            "default": 100
          },
          "dedupe": {
            "title": "Cross-run deduplication",
            "required": [
              "enabled",
              "key"
            ],
            "type": "object",
            "description": "Suppress jobs already delivered in the same search or alert scope. Leave key empty for a scope derived from this Apify user and the search, or provide a public opaque alert/profile key to share history intentionally. Disable it for repeatable one-off searches.",
            "properties": {
              "enabled": {
                "title": "Enabled",
                "type": "boolean",
                "description": "Suppress jobs already confirmed delivered in the same tenant-and-query/profile scope.",
                "default": true
              },
              "key": {
                "title": "Scope key",
                "type": "string",
                "description": "Optional public delivery scope key. This is not a secret.",
                "default": "",
                "maxLength": 256
              }
            },
            "default": {
              "enabled": true,
              "key": ""
            },
            "additionalProperties": false
          },
          "filters": {
            "title": "Normalized job filters",
            "required": [
              "schemaVersion",
              "expression"
            ],
            "type": "object",
            "description": "Use a nomad-agent-job-filter-v1 expression for country or location requirements, title or organisation exclusions, work arrangements, and other supported normalized fields. Unknown facts do not become guessed matches.",
            "properties": {
              "schemaVersion": {
                "title": "Filter schema version",
                "description": "Version marker for the normalized source-neutral filter expression.",
                "type": "string",
                "enum": [
                  "nomad-agent-job-filter-v1"
                ]
              },
              "expression": {
                "title": "Filter expression",
                "description": "Source-neutral allowlisted filter expression evaluated against normalized job fields.",
                "type": "object"
              }
            },
            "additionalProperties": false
          },
          "aiEnrichment": {
            "title": "AI position-facts enrichment",
            "required": [
              "enabled",
              "accuracy"
            ],
            "type": "object",
            "description": "Fill supported fields that remain null using the complete public plain-text job description. Source facts always win. Choose the Silver or Gold accuracy profile; failed enrichment leaves the base job unchanged. No customer model key is required.",
            "properties": {
              "enabled": {
                "title": "Enable AI enrichment",
                "type": "boolean",
                "description": "Enable description-backed, null-only position-facts extraction.",
                "default": false
              },
              "accuracy": {
                "title": "Accuracy profile",
                "type": "string",
                "description": "Silver is the default bounded profile; Gold selects the separately configured higher-accuracy profile.",
                "default": "silver",
                "enum": [
                  "silver",
                  "gold"
                ],
                "enumTitles": [
                  "Silver",
                  "Gold"
                ]
              }
            },
            "default": {
              "enabled": false,
              "accuracy": "silver"
            },
            "additionalProperties": false
          },
          "translateToEnglish": {
            "title": "Translate selected fields to English",
            "type": "boolean",
            "description": "Translate selected normalized display fields to English: title, domains, applicant requirement prose, benefits, eligibility and selection text, work authorization, security clearance, and location preference. Descriptions, organisation names, locations, identifiers, URLs, source-raw labels, skills, qualifications, certifications, programme names, and provenance remain unchanged. No customer translation key is required.",
            "default": false
          },
          "includeRaw": {
            "title": "Include raw description text and HTML",
            "type": "boolean",
            "description": "When enabled, each result includes the complete EURAXESS plain-text detail description and source HTML in raw. Disable it to return raw: null; requested position enrichment still runs before raw output is removed.",
            "default": true
          },
          "analyticsEnabled": {
            "title": "Share anonymous run analytics",
            "type": "boolean",
            "description": "Share one privacy-preserving aggregate operational event. It can include version, outcome category, coarse duration, result count, enabled features, and aggregate health counters, but never caller IDs, searches, records, URLs, source text, translations, extracted values, errors, or secrets.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}