{
  "openapi": "3.0.1",
  "info": {
    "title": "Remote Jobs: We Work Remotely, Remote OK, Jobicy & Arbeitnow",
    "description": "Remote and EU jobs from We Work Remotely, Remote OK, Jobicy and Arbeitnow in one normalized dataset: duplicates merged across boards, salary, country and job type filters, full descriptions, change tracking. Complete rows on every plan, no start fee.",
    "version": "0.1",
    "x-build-id": "9qZIxjgqV6mOt1B5g"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/stippled_journey~remote-jobs/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-stippled_journey-remote-jobs",
        "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/stippled_journey~remote-jobs/runs": {
      "post": {
        "operationId": "runs-sync-stippled_journey-remote-jobs",
        "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/stippled_journey~remote-jobs/run-sync": {
      "post": {
        "operationId": "run-sync-stippled_journey-remote-jobs",
        "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": {
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Keep jobs whose title, tags, category or company contain any of these words as a whole word, for example 'python', 'react' or 'customer success'. Leave empty for all jobs.",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "title": "Job boards",
            "type": "array",
            "description": "Which boards to read. Default: all four.",
            "items": {
              "type": "string",
              "enum": [
                "weworkremotely",
                "remoteok",
                "jobicy",
                "arbeitnow"
              ],
              "enumTitles": [
                "We Work Remotely",
                "Remote OK",
                "Jobicy",
                "Arbeitnow (Germany, EU and UK)"
              ]
            },
            "default": [
              "weworkremotely",
              "remoteok",
              "jobicy",
              "arbeitnow"
            ]
          },
          "postedWithinDays": {
            "title": "Posted within days",
            "minimum": 1,
            "maximum": 90,
            "type": "integer",
            "description": "Keep only jobs posted within this many days. Leave empty for every job the boards list."
          },
          "maxJobsPerSource": {
            "title": "Max jobs per board",
            "minimum": 0,
            "type": "integer",
            "description": "Newest matching jobs first, counted before duplicates are merged. 0 means no limit.",
            "default": 0
          },
          "maxJobs": {
            "title": "Max jobs in total",
            "minimum": 0,
            "type": "integer",
            "description": "Newest jobs first. Default 500; set 0 for no limit (a full read of every board is about 2,000 jobs). The run also stops at your spending limit.",
            "default": 500
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Keep jobs open to applicants in any of these countries, as ISO codes ('US', 'DE') or names ('Canada'). A job listed for a region that includes the country ('Europe', 'EMEA', 'LATAM', 'APAC') also passes. Jobs that state no location are left out.",
            "items": {
              "type": "string"
            }
          },
          "includeWorldwide": {
            "title": "Include worldwide jobs",
            "type": "boolean",
            "description": "With countries set, also keep jobs listed as 'Anywhere' or 'Worldwide'.",
            "default": true
          },
          "jobTypes": {
            "title": "Employment types",
            "type": "array",
            "description": "Keep only these employment types. Remote OK does not state a type, so its jobs are left out when this is set.",
            "items": {
              "type": "string",
              "enum": [
                "full_time",
                "part_time",
                "contract",
                "internship",
                "temporary"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract or freelance",
                "Internship",
                "Temporary"
              ]
            }
          },
          "minSalary": {
            "title": "Minimum yearly salary",
            "minimum": 0,
            "type": "integer",
            "description": "Keep jobs whose pay range reaches this yearly amount in US dollars. Hourly, daily, weekly and monthly pay is converted to yearly, and other currencies to US dollars at fixed ECB rates (approximate)."
          },
          "includeJobsWithoutSalary": {
            "title": "Keep jobs with no stated salary",
            "type": "boolean",
            "description": "With a minimum salary set, also keep jobs that state no pay. Turn off to get only jobs with a salary that meets the minimum.",
            "default": true
          },
          "location": {
            "title": "Location contains",
            "type": "string",
            "description": "Keep jobs whose location or allowed region contains this text, for example 'Berlin' or 'USA Only'. Jobs that state no location are left out."
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "We Work Remotely, Remote OK and Jobicy list only remote jobs. Arbeitnow also lists on-site and hybrid jobs in Germany, the EU and the UK; turn this off to get them too.",
            "default": true
          },
          "categories": {
            "title": "We Work Remotely categories",
            "type": "array",
            "description": "Read only these We Work Remotely category feeds. Empty reads every category. Other boards are filtered by keywords instead.",
            "items": {
              "type": "string",
              "enum": [
                "programming",
                "full-stack-programming",
                "back-end-programming",
                "front-end-programming",
                "devops-sysadmin",
                "design",
                "product",
                "sales-and-marketing",
                "customer-support",
                "management-and-finance"
              ],
              "enumTitles": [
                "Programming",
                "Full-stack programming",
                "Back-end programming",
                "Front-end programming",
                "DevOps and sysadmin",
                "Design",
                "Product",
                "Sales and marketing",
                "Customer support",
                "Management and finance"
              ]
            }
          },
          "visaSponsorship": {
            "title": "Visa sponsorship only",
            "type": "boolean",
            "description": "Only jobs Arbeitnow lists as offering visa sponsorship. Only Arbeitnow states this, so only Arbeitnow is read when it is on.",
            "default": false
          },
          "arbeitnowSite": {
            "title": "Arbeitnow site",
            "enum": [
              "both",
              "de",
              "uk"
            ],
            "type": "string",
            "description": "Which Arbeitnow site to read.",
            "default": "both"
          },
          "dedupe": {
            "title": "Merge duplicates across boards",
            "type": "boolean",
            "description": "A job listed on several boards (same company and title) becomes one row: the most complete copy, with missing fields filled from the others and their links in also_found_on. You pay once per merged row.",
            "default": true
          },
          "includeDescription": {
            "title": "Include description",
            "type": "boolean",
            "description": "Full description as text and HTML. Turn off for smaller rows. Same price either way.",
            "default": true
          },
          "onlyChanges": {
            "title": "Only new and changed jobs",
            "type": "boolean",
            "description": "Return only jobs that are new or changed since the last run with the same filters. Each row gets a change field. Use with a schedule.",
            "default": false
          },
          "stateName": {
            "title": "Change-tracking name",
            "pattern": "^[A-Za-z0-9_-]{1,60}$",
            "type": "string",
            "description": "Optional name for a separate change history. Default: derived from the filters."
          },
          "minRows": {
            "title": "Fail if fewer rows than",
            "minimum": 0,
            "type": "integer",
            "description": "Mark the run as failed when it returns fewer rows than this. Useful for scheduled monitoring: a failed run triggers your Apify alerts. 0 turns the check off.",
            "default": 0
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}