{
  "openapi": "3.0.1",
  "info": {
    "title": "Remote Jobs Feed: Daily New Remote Job Alerts & Company Boards",
    "description": "One de-duplicated feed of remote jobs from Jobicy, Remote OK, Working Nomads, Arbeitnow and Greenhouse/Lever/Ashby/Workday boards. Filter by title, country, salary; get only new jobs daily.",
    "version": "1.0",
    "x-build-id": "gRCreMg6ZkLiSPgrp"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/southern-data~remote-jobs-feed/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-southern-data-remote-jobs-feed",
        "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/southern-data~remote-jobs-feed/runs": {
      "post": {
        "operationId": "runs-sync-southern-data-remote-jobs-feed",
        "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/southern-data~remote-jobs-feed/run-sync": {
      "post": {
        "operationId": "run-sync-southern-data-remote-jobs-feed",
        "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": {
          "mode": {
            "title": "What to return",
            "enum": [
              "new_jobs",
              "all_jobs"
            ],
            "type": "string",
            "description": "<b>new_jobs</b>: the Actor remembers every job it has seen (in a named key-value store) and each run returns only jobs that appeared since the last run. Schedule it daily for a \"new remote jobs\" feed. On the very first run it returns the current matching jobs once (turn off <i>includeExistingOnFirstRun</i> to start silent).<br><b>all_jobs</b>: every matching job, every run.",
            "default": "new_jobs"
          },
          "keywords": {
            "title": "Keywords (any of)",
            "type": "array",
            "description": "Keep jobs whose title contains ANY of these words (matched at the start of words, any case: \"engineer\" matches \"Engineering Manager\"). Leave empty for all jobs.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Where you can work from",
            "type": "array",
            "description": "Countries or regions, e.g. \"Australia\", \"Germany\", \"Europe\", \"APAC\", \"LATAM\". A remote job matches when its location names one of them, or (by default) one of their regions (\"Australia\" also matches \"APAC\"), or says Worldwide / Anywhere. Enter \"Worldwide\" for jobs open worldwide only, or \"Remote\" for those plus jobs that just say \"Remote\". Leave empty for every location.",
            "items": {
              "type": "string"
            }
          },
          "workplaceTypes": {
            "title": "Workplace",
            "type": "array",
            "description": "Which workplace types to keep. Default: remote only. Some company boards do not say; those jobs are \"unknown\".",
            "items": {
              "type": "string",
              "enum": [
                "remote",
                "hybrid",
                "onsite",
                "unknown"
              ],
              "enumTitles": [
                "Remote",
                "Hybrid",
                "On-site",
                "Not stated"
              ]
            },
            "default": [
              "remote"
            ]
          },
          "postedWithinDays": {
            "title": "Posted within (days)",
            "minimum": 0,
            "maximum": 365,
            "type": "integer",
            "description": "Drop jobs posted longer ago than this (0 = no limit). Jobicy only serves the last 7 days, Remote OK and Working Nomads only their latest ~100 / ~35 jobs.",
            "default": 7
          },
          "sources": {
            "title": "Job feeds",
            "type": "array",
            "description": "Public job feeds to read. Default: all four. Give an empty list to read only your company boards.",
            "items": {
              "type": "string",
              "enum": [
                "jobicy",
                "remoteok",
                "workingnomads",
                "arbeitnow"
              ],
              "enumTitles": [
                "Jobicy (remote jobs, last 7 days)",
                "Remote OK (latest ~100 jobs)",
                "Working Nomads (latest ~35 jobs)",
                "Arbeitnow (Europe, mostly Germany; remote + onsite)"
              ]
            },
            "default": [
              "jobicy",
              "remoteok",
              "workingnomads",
              "arbeitnow"
            ]
          },
          "companyBoards": {
            "title": "Company job boards (optional)",
            "type": "array",
            "description": "Also watch specific companies: their public job-board links (Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee, Personio, Teamtailor, BambooHR, Workday, Breezy), e.g. \"https://jobs.lever.co/acme\" or \"greenhouse:acme\". Max 500. Have only company websites? Use our Company Jobs Finder to find their boards.",
            "items": {
              "type": "string"
            }
          },
          "employmentTypes": {
            "title": "Employment type",
            "type": "array",
            "description": "Keep only these employment types. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "full_time",
                "part_time",
                "contract",
                "internship",
                "freelance",
                "temporary",
                "unknown"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Internship",
                "Freelance",
                "Temporary",
                "Not stated"
              ]
            }
          },
          "excludeKeywords": {
            "title": "Exclude title words",
            "type": "array",
            "description": "Drop jobs whose title contains any of these words, e.g. \"senior\", \"sales\".",
            "items": {
              "type": "string"
            }
          },
          "excludeCompanies": {
            "title": "Exclude companies",
            "type": "array",
            "description": "Drop jobs from these companies (exact company name, any case).",
            "items": {
              "type": "string"
            }
          },
          "includeWorldwide": {
            "title": "Include \"Worldwide / Anywhere\" jobs in location matches",
            "type": "boolean",
            "description": "With locations set: also keep remote jobs open worldwide.",
            "default": true
          },
          "includeRegionalMatches": {
            "title": "Match regions of your countries",
            "type": "boolean",
            "description": "With locations set: \"Australia\" also matches jobs for \"APAC\" / \"Asia Pacific\", \"Germany\" matches \"Europe\" / \"EMEA\", and a region matches its countries.",
            "default": true
          },
          "includeUnspecifiedLocation": {
            "title": "Include remote jobs with no stated location",
            "type": "boolean",
            "description": "With locations set: also keep remote jobs that only say \"Remote\" (they may still be limited to one country; check the job page).",
            "default": false
          },
          "onlyWithSalary": {
            "title": "Only jobs with a salary",
            "type": "boolean",
            "description": "Keep only jobs that publish a salary.",
            "default": false
          },
          "searchTags": {
            "title": "Also match keywords in skill tags",
            "type": "boolean",
            "description": "Match keywords in the source's tags too (Remote OK, Working Nomads, Arbeitnow). Finds e.g. \"python\" jobs whose title doesn't say Python, but tags are broad (a recruiter job can be tagged \"engineer\").",
            "default": false
          },
          "searchDescriptions": {
            "title": "Also search job descriptions for keywords",
            "type": "boolean",
            "description": "Match keywords in the description too (more results, less precise).",
            "default": false
          },
          "includeDescription": {
            "title": "Include job descriptions",
            "type": "boolean",
            "description": "Add the description as plain text (descriptionText, max 20,000 characters).",
            "default": false
          },
          "includeExistingOnFirstRun": {
            "title": "First run: return current jobs",
            "type": "boolean",
            "description": "new_jobs mode: on a monitor's first run, return the current matching jobs (isNew = false). Turn off to only remember them and start returning jobs from the next run (the first run is then free).",
            "default": true
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "new_jobs mode: name of this feed's memory, e.g. \"python-remote-au\". Runs with the same name share history. Default: the task id, or one derived from your feeds and boards. Changing filters keeps the history (jobs are remembered before filtering)."
          },
          "maxJobs": {
            "title": "Max jobs per run",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Stop after this many rows (newest first). Jobs not returned because of this cap are not remembered, so a later run returns them.",
            "default": 1000
          },
          "maxPagesPerSource": {
            "title": "Max pages per feed",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Safety cap on pages read from Jobicy (100 jobs/page) and Arbeitnow (300 jobs/page). The default covers 7 days.",
            "default": 30
          },
          "selfTest": {
            "title": "Self-test (no data, free)",
            "type": "boolean",
            "description": "Run the built-in health check instead of a search: no rows, nothing charged; the run fails if any check fails.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}