{
  "openapi": "3.0.1",
  "info": {
    "title": "Remote Jobs Scraper — RemoteOK, WWR & Himalayas API | $0.50/1k",
    "description": "Scrape remote jobs from Remote OK, We Work Remotely, Himalayas, Jobicy, Working Nomads and Arbeitnow public feeds in one run, merged across boards. Filter by keyword, category, location, job type, salary and date. Company, salary, tags, description, link back. CSV, JSON, Excel.",
    "version": "0.1",
    "x-build-id": "4f9BOeF5bmkgEAgZF"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/glasswing~remote-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-glasswing-remote-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/glasswing~remote-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-glasswing-remote-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/glasswing~remote-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-glasswing-remote-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": {
          "sources": {
            "title": "Job boards",
            "type": "array",
            "description": "Boards to read. Default: every board except Remotive. Remotive asks API users to call it at most 4 times a day and shows only a few dozen jobs with a 24-hour delay, so pick it only when you need it.",
            "items": {
              "type": "string",
              "enum": [
                "remoteok",
                "weworkremotely",
                "himalayas",
                "jobicy",
                "workingnomads",
                "arbeitnow",
                "remotive"
              ],
              "enumTitles": [
                "Remote OK",
                "We Work Remotely",
                "Himalayas",
                "Jobicy",
                "Working Nomads",
                "Arbeitnow (remote jobs only)",
                "Remotive (max 4 runs a day)"
              ]
            },
            "default": [
              "remoteok",
              "weworkremotely",
              "himalayas",
              "jobicy",
              "workingnomads",
              "arbeitnow"
            ]
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Keep jobs that mention any of these words or phrases in the title, tags, categories, company name or description (whole words, case-insensitive; every word of a phrase must appear). Examples: python, react native, customer support. Leave empty for all jobs.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Categories or tags",
            "type": "array",
            "description": "Keep jobs whose board category or tags match any of these, e.g. design, devops, marketing, customer support, data. Leave empty for all.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Where applicants may live",
            "type": "array",
            "description": "Keep jobs open to applicants in any of these places, e.g. US, Europe, Germany, UK, Canada, LATAM, APAC. A European country also matches jobs limited to Europe/EU/EMEA. Use \"anywhere\" to keep only jobs open worldwide. Leave empty for all.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeWorldwide": {
            "title": "Also keep jobs open worldwide",
            "type": "boolean",
            "description": "With a location set, also keep jobs the board marks as open to anyone, anywhere.",
            "default": true
          },
          "jobTypes": {
            "title": "Job types",
            "type": "array",
            "description": "Keep only these employment types. Jobs whose board does not state a type are left out when this is set.",
            "items": {
              "type": "string",
              "enum": [
                "full_time",
                "part_time",
                "contract",
                "freelance",
                "internship",
                "temporary"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Freelance",
                "Internship",
                "Temporary"
              ]
            },
            "default": []
          },
          "minSalary": {
            "title": "Minimum yearly salary",
            "minimum": 1,
            "type": "integer",
            "description": "Keep jobs whose published salary reaches this much per year (hourly, weekly and monthly pay is converted to a year; no currency conversion). Jobs without a published salary are left out unless the next option is on."
          },
          "includeJobsWithoutSalary": {
            "title": "Keep jobs without a published salary",
            "type": "boolean",
            "description": "With a minimum salary set, also keep jobs that publish no salary at all.",
            "default": false
          },
          "postedWithinDays": {
            "title": "Posted within the last N days",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Keep only jobs posted in the last N days. Leave empty for every job the boards currently list."
          },
          "maxItems": {
            "title": "Maximum jobs",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Stop after this many rows. Each saved job (status `ok`) is one billable result. The boards together list well over 1,000 current remote jobs; raise this to 2,000 for a full sweep.",
            "default": 100
          },
          "maxItemsPerSource": {
            "title": "Maximum jobs per board",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Optional cap on how many jobs one board may contribute. Himalayas can supply up to 2,000 on its own when this is high."
          },
          "dedupe": {
            "title": "Merge the same job across boards",
            "type": "boolean",
            "description": "One row per job when the same company posts the same title within 7 days, on several boards or several times on one board (reposts, one listing per country). `sources` lists every board, `sourceUrls` every listing.",
            "default": true
          },
          "order": {
            "title": "Order",
            "enum": [
              "balanced",
              "newest"
            ],
            "type": "string",
            "description": "Balanced: newest first within each board, boards taking turns, so one big board cannot fill the whole dataset. Newest: one list, newest posting first.",
            "default": "balanced"
          },
          "includeDescriptionHtml": {
            "title": "Include description HTML",
            "type": "boolean",
            "description": "Also save the description as HTML. The plain-text description is always included.",
            "default": false
          },
          "startUrls": {
            "title": "Feed URLs (optional)",
            "type": "array",
            "description": "Read only these public feeds instead of the boards above, e.g. a We Work Remotely category feed or page, https://jobicy.com/api/v2/remote-jobs?geo=usa&industry=marketing, https://himalayas.app/jobs/api?limit=20 or https://remoteok.com/api. While this field holds exactly the pre-filled example, it is ignored and the boards above are read.",
            "items": {
              "type": "string"
            }
          },
          "query": {
            "title": "Search query (alias of Keywords)",
            "type": "string",
            "description": "Same as one entry in Keywords; kept for callers that send a single `query`."
          },
          "maxResults": {
            "title": "Maximum results (alias of Maximum jobs)",
            "minimum": 1,
            "type": "integer",
            "description": "Alias of `maxItems` for API callers."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. The boards publish these feeds for reuse and answer datacenter IPs, so no proxy is needed. Turn on Apify Proxy (datacenter) only if a board starts refusing requests; residential proxies are not needed.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}