{
  "openapi": "3.0.1",
  "info": {
    "title": "We Work Remotely Jobs Scraper | 💵$2 per 1,000",
    "description": "[💵 $2 / 1K · no start fee] Every live We Work Remotely posting, not the first 25 per category. Full description, exact posted and expiry dates, salary parsed into numbers, eligible countries as ISO codes and the hiring company's own website - all in the per-job price.",
    "version": "0.1",
    "x-build-id": "zNdbfsKLbC7l1szIo"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/webdata_labs~weworkremotely-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-webdata_labs-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/webdata_labs~weworkremotely-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-webdata_labs-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/webdata_labs~weworkremotely-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-webdata_labs-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": "Categories",
            "type": "array",
            "description": "We Work Remotely categories to scan. Empty means all ten. The full category page is read, not the search preview, so you get every job filed under the category rather than the first 25.",
            "items": {
              "type": "string",
              "enum": [
                "Design",
                "Full-Stack Programming",
                "Front-End Programming",
                "Back-End Programming",
                "DevOps and Sysadmin",
                "Product",
                "Customer Support",
                "Sales and Marketing",
                "Management and Finance",
                "All Other Remote"
              ]
            }
          },
          "searchTerms": {
            "title": "Title or company keywords",
            "type": "array",
            "description": "Keep only jobs whose title or company name contains one of these words. Case-insensitive, matched as a substring, and a job matching any one of them is kept. Example: \"senior\", \"react\".",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude title keywords",
            "type": "array",
            "description": "Drop jobs whose title or company name contains one of these words. Runs after the keyword filter. Example: \"intern\", \"sales\".",
            "items": {
              "type": "string"
            }
          },
          "companies": {
            "title": "Companies",
            "type": "array",
            "description": "Keep only jobs from these companies. Company name or the We Work Remotely company slug both work, and matching ignores case and punctuation.",
            "items": {
              "type": "string"
            }
          },
          "jobUrls": {
            "title": "Specific job URLs",
            "type": "array",
            "description": "Scrape named postings instead of scanning categories. Full URLs such as https://weworkremotely.com/remote-jobs/stripe-fullstack-engineer-privy, or the bare slug. Filters are not applied to these.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Keep jobs open to these countries. ISO 2-letter codes (\"US\", \"DE\") or country names both work. Jobs marked \"Anywhere in the World\" are open to any country and are kept as matches unless you switch that off below.",
            "items": {
              "type": "string"
            }
          },
          "includeWorldwide": {
            "title": "Count worldwide jobs as a country match",
            "type": "boolean",
            "description": "On by default. Turn off to get only postings that name your country explicitly, excluding the \"Anywhere in the World\" majority. Has no effect when no country is set.",
            "default": true
          },
          "salaryRanges": {
            "title": "Salary ranges",
            "type": "array",
            "description": "Keep only jobs carrying one of these published salary brackets. Fewer than one in ten We Work Remotely postings publishes a bracket at all, so this filter is narrow by nature.",
            "items": {
              "type": "string",
              "enum": [
                "$10,000 - $25,000 USD",
                "$25,000 - $48,999 USD",
                "$50,000 - $74,999 USD",
                "$75,000 - $99,999 USD",
                "$100,000 or more USD"
              ]
            }
          },
          "requireSalary": {
            "title": "Only jobs with a published salary",
            "type": "boolean",
            "description": "Keep only postings that show a salary bracket, whichever bracket it is. Useful for pay benchmarking; expect a small result set.",
            "default": false
          },
          "jobTypes": {
            "title": "Job types",
            "type": "array",
            "description": "Keep only these engagement types. Empty means all of them.",
            "items": {
              "type": "string",
              "enum": [
                "Full-Time",
                "Part-Time",
                "Full-Time/Part-Time",
                "Contract",
                "Internship"
              ]
            }
          },
          "postedWithinDays": {
            "title": "Posted within (days)",
            "minimum": 0,
            "maximum": 365,
            "type": "integer",
            "description": "Keep only jobs posted in the last N days. 0 means any age. Measured from the real publication timestamp, not the board's \"New\" badge, which resets whenever an employer bumps an old posting.",
            "default": 0
          },
          "onlyTop100": {
            "title": "Only Top 100 companies",
            "type": "boolean",
            "description": "Keep only jobs from companies We Work Remotely badges as Top 100.",
            "default": false
          },
          "onlyFeatured": {
            "title": "Only featured or boosted jobs",
            "type": "boolean",
            "description": "Keep only postings the employer paid to highlight. These are usually the best-funded, most actively hiring companies.",
            "default": false
          },
          "onlyHot": {
            "title": "Only hot jobs",
            "type": "boolean",
            "description": "Keep only postings carrying the board's hot-job flame, which marks unusually high applicant interest.",
            "default": false
          },
          "onlyNew": {
            "title": "Only jobs not seen in previous runs",
            "type": "boolean",
            "description": "Remembers the job IDs each run returned and skips them next time, so a scheduled run returns only postings you have not seen yet. The memory is kept per filter combination, so several schedules can run side by side.",
            "default": false
          },
          "includeDescription": {
            "title": "Include full job description",
            "type": "boolean",
            "description": "On by default. Adds the complete posting body as clean text and as HTML, plus the exact posted and expiry timestamps, the full list of eligible countries, any contact emails and the employer's own ATS link when the posting carries one.",
            "default": true
          },
          "includeCompanyProfile": {
            "title": "Include company website",
            "type": "boolean",
            "description": "On by default. Adds the hiring company's own website and domain, its headquarters and how many jobs it has posted on the board. One request per company, cached across the run.",
            "default": true
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 0,
            "type": "integer",
            "description": "Jobs returned by the run, newest first. The default keeps a first run cheap; set 0 for unlimited - there is no hard ceiling, and the whole board is roughly 700 live postings.",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}