{
  "openapi": "3.0.1",
  "info": {
    "title": "EURAXESS Jobs Scraper | Full Details & AI Enrichment",
    "description": "From $0.90 per 1,000 research jobs. Search EURAXESS PhD, postdoc and faculty vacancies with deadlines, funding and application links. Export structured data, avoid repeat alerts, and optionally add AI enrichment or English translation.",
    "version": "1.0",
    "x-build-id": "CDHpCrlQzdeptlAia"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/job-atlas~euraxess-enrich-translate-normalize-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-job-atlas-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/job-atlas~euraxess-enrich-translate-normalize-scraper/runs": {
      "post": {
        "operationId": "runs-sync-job-atlas-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/job-atlas~euraxess-enrich-translate-normalize-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-job-atlas-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",
            "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": "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": "For scheduled alerts, enable this to skip jobs already delivered for the same search. Leave off to repeat a search and see the results again.",
            "properties": {
              "enabled": {
                "title": "Enabled",
                "type": "boolean",
                "description": "Suppress jobs already confirmed delivered in the same tenant-and-query/profile scope.",
                "default": false,
                "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": false,
              "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}