{
  "openapi": "3.0.1",
  "info": {
    "title": "Remote Jobs Scraper: We Work Remotely, RemoteOK, Python.org",
    "description": "Remote and work-from-home job listings from We Work Remotely, Remote OK and Python.org Jobs in one clean format, with salary, employment type and categories. Filter by keyword, region, category or date, merge duplicates across boards, or get only jobs new since your last run. Links to each source.",
    "version": "1.2",
    "x-build-id": "FxsLYLeSJKhfutDCe"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/humble-echidna~remote-jobs/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-humble-echidna-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/humble-echidna~remote-jobs/runs": {
      "post": {
        "operationId": "runs-sync-humble-echidna-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/humble-echidna~remote-jobs/run-sync": {
      "post": {
        "operationId": "run-sync-humble-echidna-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",
        "required": [
          "sources"
        ],
        "properties": {
          "sources": {
            "title": "Job boards",
            "type": "array",
            "description": "Which remote job boards to read: `weworkremotely` (We Work Remotely), `remoteok` (Remote OK) and/or `pythonorg` (Python.org Jobs, its remote postings only). Default all three. A board that is down never affects the others.",
            "items": {
              "type": "string",
              "enum": [
                "weworkremotely",
                "remoteok",
                "pythonorg"
              ],
              "enumTitles": [
                "We Work Remotely",
                "Remote OK",
                "Python.org Jobs (remote postings)"
              ]
            },
            "default": [
              "weworkremotely",
              "remoteok",
              "pythonorg"
            ]
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Keep only jobs whose title or tags contain any of these words (case-insensitive), one per line, e.g. python, designer. Leave empty (the default) for all jobs.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude title keywords",
            "type": "array",
            "description": "Drop jobs whose title contains any of these words, one per line, e.g. senior, intern. Leave empty (the default) to drop nothing.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations / regions",
            "type": "array",
            "description": "Keep only jobs open to candidates in any of these, matched against the job's location or region text, e.g. USA, Europe, Canada, UK. Jobs open worldwide (\"Anywhere\", \"Worldwide\") always match. Jobs that give no location are dropped when this is set.",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Keep only jobs in any of these categories. Each board's own categories and tags are mapped onto this one list. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "software-development",
                "devops-sysadmin",
                "data",
                "security",
                "design",
                "product",
                "customer-support",
                "sales-marketing",
                "management-finance",
                "writing",
                "hr-recruiting",
                "other"
              ],
              "enumTitles": [
                "Software development",
                "DevOps and sysadmin",
                "Data",
                "Security",
                "Design",
                "Product",
                "Customer support",
                "Sales and marketing",
                "Management and finance",
                "Writing and content",
                "HR and recruiting",
                "Other"
              ]
            }
          },
          "postedWithinDays": {
            "title": "Posted within (days)",
            "minimum": 1,
            "type": "integer",
            "description": "Keep only jobs published in the last N days, e.g. 7. Minimum 1; leave empty (the default) for all."
          },
          "onlyNewJobs": {
            "title": "Only jobs new since my last run",
            "type": "boolean",
            "description": "Default false. When true, the first run returns all matching jobs and later runs return only jobs you haven't had yet. What was returned is remembered in your own Apify account, separately for each board and each combination of filters, so different searches never hide each other's jobs. Changing the filters starts a fresh search.",
            "default": false
          },
          "dedupe": {
            "title": "Merge duplicates across boards",
            "type": "boolean",
            "description": "Default true: when the same company posts the same job title on more than one board, return it once. The most complete listing is kept, and the other boards' listings stay credited in its alsoListedOn field with their own links.",
            "default": true
          },
          "maxResults": {
            "title": "Max jobs per run",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many jobs in total, newest first, 1 or more (default 100, pre-filled with 50 in the form). Raise it (e.g. 1000) to get every matching job, typically several hundred with the other defaults; a small number keeps agent answers small. The run also stops cleanly at the maximum cost per run you set in the run options, whichever comes first.",
            "default": 100
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}