{
  "openapi": "3.0.1",
  "info": {
    "title": "WeWorkRemotely Jobs Scraper: Remote Jobs, Salary and New Alerts",
    "description": "Get remote jobs from WeWorkRemotely across all ten categories in one run, deduplicated and newest first. Filter by keyword, region, country, job type, freshness and salary. Pay ranges and skills come as clean fields, with optional descriptions and company details, plus a new-jobs-only monitor mode.",
    "version": "0.2",
    "x-build-id": "wOOPfmuPQh6jlW9uP"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/getascraper~weworkremotely-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-getascraper-weworkremotely-jobs-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/getascraper~weworkremotely-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-getascraper-weworkremotely-jobs-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/getascraper~weworkremotely-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-getascraper-weworkremotely-jobs-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": {
          "categories": {
            "title": "Job categories",
            "uniqueItems": true,
            "type": "array",
            "description": "Which WeWorkRemotely job categories to read. Leave empty to read all ten categories in one run, so you get the full board instead of only the newest 100 or so listings of the global feed.",
            "items": {
              "type": "string",
              "enum": [
                "full-stack-programming",
                "front-end-programming",
                "back-end-programming",
                "devops-sysadmin",
                "design",
                "product",
                "customer-support",
                "sales-and-marketing",
                "management-and-finance",
                "all-other"
              ],
              "enumTitles": [
                "Full-Stack Programming",
                "Front-End Programming",
                "Back-End Programming",
                "DevOps and Sysadmin",
                "Design",
                "Product",
                "Customer Support",
                "Sales and Marketing",
                "Management and Finance",
                "All Other Remote"
              ]
            },
            "default": []
          },
          "keywords": {
            "title": "Keywords (match any)",
            "type": "array",
            "description": "Keep only jobs whose title, company, skills or description mention at least one of these words or phrases, for example python, react, customer success. Case-insensitive. Leave empty for no keyword filter.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "titleKeywords": {
            "title": "Job title keywords (match any)",
            "type": "array",
            "description": "Keep only jobs whose job title contains at least one of these words, for example engineer, designer, account executive. Stricter than Keywords because the description is not searched. Case-insensitive. Leave empty for no title filter.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "skills": {
            "title": "Required skills (match any)",
            "type": "array",
            "description": "Keep only jobs that list at least one of these skills in their skills tags, for example typescript, figma, seo. Partial matches count. Jobs with no skills tags are dropped when this is set.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Drop jobs whose title, company or skills mention any of these words, for example intern, unpaid. Case-insensitive. Leave empty to keep everything.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "regions": {
            "title": "Where you can work from",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only jobs open to workers in these areas. Worldwide means no location restriction. Leave empty for every region.",
            "items": {
              "type": "string",
              "enum": [
                "worldwide",
                "usa",
                "north-america",
                "americas",
                "europe",
                "emea",
                "other"
              ],
              "enumTitles": [
                "Anywhere in the world",
                "USA only",
                "North America",
                "Americas",
                "Europe",
                "EMEA (Europe, Middle East, Africa)",
                "Other or specific place"
              ]
            },
            "default": []
          },
          "countries": {
            "title": "Eligible countries",
            "type": "array",
            "description": "Keep only jobs that name one of these countries as an eligible work country, for example Canada or United Kingdom. Matches the country names the employer listed, case-insensitive. Jobs that list no country are dropped when this is set.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeCountries": {
            "title": "Exclude countries",
            "type": "array",
            "description": "Drop jobs that list any of these countries as an eligible work country, for example India. Jobs that list no country are kept. Case-insensitive.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Place or state contains",
            "type": "array",
            "description": "Keep only jobs whose region, state or listed countries contain at least one of these words, for example Texas, Berlin, Asia. Use it for places that the region list above does not cover. Case-insensitive.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "jobTypes": {
            "title": "Job types",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only these employment types. Leave empty for all types.",
            "items": {
              "type": "string",
              "enum": [
                "Full-Time",
                "Contract",
                "Part-Time",
                "Freelance"
              ],
              "enumTitles": [
                "Full-time",
                "Contract",
                "Part-time",
                "Freelance"
              ]
            },
            "default": []
          },
          "seniority": {
            "title": "Seniority level",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only jobs whose title states one of these levels, for example Senior or Junior. Only titles that spell out a level are matched, so jobs without a level word in the title are dropped when this is set. Each result also carries a seniority field.",
            "items": {
              "type": "string",
              "enum": [
                "intern",
                "junior",
                "mid",
                "senior",
                "lead",
                "director"
              ],
              "enumTitles": [
                "Intern or trainee",
                "Junior or entry level",
                "Mid level",
                "Senior",
                "Lead, staff or principal",
                "Director, head of or VP"
              ]
            },
            "default": []
          },
          "companies": {
            "title": "Companies (match any)",
            "type": "array",
            "description": "Keep only jobs from companies whose name contains one of these words, for example stripe, automattic. Case-insensitive. Use it to follow a list of target employers.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeCompanies": {
            "title": "Exclude companies",
            "type": "array",
            "description": "Drop jobs from companies whose name contains any of these words. Case-insensitive. Useful to hide recruiters or employers you have already contacted.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "companyHeadquarters": {
            "title": "Company headquarters contains",
            "type": "array",
            "description": "Keep only jobs from companies whose published headquarters contain one of these words, for example London, California, Germany. Jobs whose company did not publish a headquarters are dropped when this is set.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "onlyWithCompanyWebsite": {
            "title": "Only companies with a website",
            "type": "boolean",
            "description": "Keep only jobs where the employer published a company website. Handy for building outreach lists, since each result then carries a company website when company details are switched on.",
            "default": false
          },
          "postedWithinDays": {
            "title": "Posted within (days)",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Keep only jobs posted in the last N days. The board still lists some postings that are months old, so this keeps the results fresh. Raise it (up to 3650) to include older postings.",
            "default": 30
          },
          "excludeExpired": {
            "title": "Hide expired postings",
            "type": "boolean",
            "description": "Drop jobs whose listing has already passed its expiry date, so you only see roles you can still apply for.",
            "default": false
          },
          "salaryOnly": {
            "title": "Only jobs that state a salary",
            "type": "boolean",
            "description": "Keep only jobs whose posting states a pay range, which is read into the salary fields of each result.",
            "default": false
          },
          "minAnnualSalary": {
            "title": "Minimum yearly salary",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "Keep only jobs whose stated pay, converted to a yearly amount, is at least this number. Amounts are compared as written in the posting without currency conversion. Jobs with no stated pay are dropped when this is set. Leave at 0 to switch it off.",
            "default": 0
          },
          "salaryCurrencies": {
            "title": "Salary currencies",
            "type": "array",
            "description": "Keep only jobs whose stated pay is in one of these currencies, as three-letter codes such as USD, EUR, GBP or CAD. Pair it with Minimum yearly salary so amounts are compared in the same currency. Jobs with no stated pay are dropped when this is set.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Maximum jobs",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Stop after this many jobs, in the chosen order. The default of 20 keeps test runs fast. Raise it to collect more of the board (a full run is a few hundred jobs).",
            "default": 20
          },
          "sortBy": {
            "title": "Sort jobs by",
            "enum": [
              "newest",
              "oldest",
              "salary-high",
              "company",
              "title"
            ],
            "type": "string",
            "description": "Order of the results before the maximum is applied. Newest first is best for feeds. Highest pay puts jobs with a stated salary first. Jobs that state no pay come last.",
            "default": "newest"
          },
          "maxJobsPerCompany": {
            "title": "Max jobs per company",
            "minimum": 0,
            "maximum": 2000,
            "type": "integer",
            "description": "Return at most this many jobs from any one company, so a single employer with many openings cannot fill the list. Leave at 0 for no limit.",
            "default": 0
          },
          "includeDescription": {
            "title": "Include full job description",
            "type": "boolean",
            "description": "Add the full job description as plain text and as HTML to every result. Off by default so results stay small and quick to scan.",
            "default": false
          },
          "includeCompanyDetails": {
            "title": "Include company details",
            "type": "boolean",
            "description": "Add the company headquarters, company website and logo URL to every result when the employer published them.",
            "default": false
          },
          "onlyNewJobs": {
            "title": "Only jobs not seen before",
            "type": "boolean",
            "description": "Return only postings that were not returned by an earlier run with the same watchlist name. The first run returns the current jobs and remembers them. Schedule the actor daily or hourly for a new-jobs feed.",
            "default": false
          },
          "monitorScope": {
            "title": "Watchlist name",
            "type": "string",
            "description": "Name that keeps one watchlist separate from another. Runs that share a name share the list of jobs already seen, so use a different name for each filter combination. Only letters, numbers and dashes are kept.",
            "default": "default"
          },
          "resetSeenJobs": {
            "title": "Reset the watchlist",
            "type": "boolean",
            "description": "Forget every job remembered under this watchlist name before the run, so the next results are treated as new again. Only has an effect when monitoring is on.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}