{
  "openapi": "3.0.1",
  "info": {
    "title": "EURAXESS Jobs API: PhD & Postdoc + AI Translation",
    "description": "$0.3/1K jobs | Extract EURAXESS research jobs: PhD, postdoc and faculty positions with full descriptions, deadlines, funding where stated and apply links. No login or API key. Skips repeats; optional AI enrichment and English translation.",
    "version": "1.0",
    "x-build-id": "ml3lHprjqJgRH8nom"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/jobatlas~euraxess-enrich-translate-normalize-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-jobatlas-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/jobatlas~euraxess-enrich-translate-normalize-scraper/runs": {
      "post": {
        "operationId": "runs-sync-jobatlas-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/jobatlas~euraxess-enrich-translate-normalize-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-jobatlas-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",
        "properties": {
          "schemaVersion": {
            "title": "Input contract version",
            "pattern": "^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": "Search job titles, research fields and descriptions. Leave blank to browse recent vacancies."
          },
          "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",
                "editor": "hidden",
                "pattern": "^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,
                "editor": "checkbox"
              }
            },
            "default": {
              "schemaVersion": "nomad-agent-euraxess-search-v1",
              "translateKeywords": false
            },
            "additionalProperties": false
          },
          "postedWithin": {
            "title": "Posted within",
            "pattern": "^(any|24h|[1-9][0-9]*[dwm])$",
            "type": "string",
            "description": "Keep only jobs published inside this window. Use <code>any</code> for no date filter, or a duration — <code>3d</code>, <code>2w</code>, <code>6m</code>. Jobs the source gave no date for are dropped rather than guessed at. EURAXESS publishes calendar dates, so only day-scale windows are accepted: <code>24h</code> means the current and previous UTC date, and an hours-scale window is rejected rather than answered from a date it cannot prove.",
            "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": "Maximum results",
            "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"
            ],
            "type": "object",
            "description": "Skip jobs already delivered for the same search. Turn off to see every job again.",
            "properties": {
              "enabled": {
                "title": "Enabled",
                "type": "boolean",
                "description": "Suppress jobs already confirmed delivered in the same tenant-and-query/profile scope.",
                "default": true,
                "editor": "checkbox"
              },
              "key": {
                "title": "Scope key",
                "type": "string",
                "description": "Optional public delivery scope key. This is not a secret.",
                "default": "",
                "maxLength": 256,
                "editor": "textfield"
              }
            },
            "default": {
              "enabled": true,
              "key": ""
            },
            "additionalProperties": false
          },
          "filters": {
            "title": "Advanced filters (JSON)",
            "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": "Fill missing job details with AI",
            "required": [
              "enabled",
              "accuracy"
            ],
            "type": "object",
            "description": "Use the job description to fill missing fields. Published facts stay unchanged. Successful enrichment costs extra; no AI key is needed.",
            "properties": {
              "enabled": {
                "title": "Enable AI enrichment",
                "type": "boolean",
                "description": "Enable description-backed, null-only position-facts extraction.",
                "default": false,
                "editor": "checkbox"
              },
              "accuracy": {
                "title": "Accuracy profile",
                "type": "string",
                "description": "Choose a processing profile. Neither profile guarantees accuracy; check the result status and published source.",
                "default": "silver",
                "enum": [
                  "silver",
                  "gold"
                ],
                "enumTitles": [
                  "Silver",
                  "Gold"
                ],
                "editor": "select"
              }
            },
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}