{
  "openapi": "3.0.1",
  "info": {
    "title": "Remote Jobs Scraper - Himalayas, Remote OK, We Work Remotely",
    "description": "Remote jobs from Himalayas, Remote OK, We Work Remotely, Working Nomads, Arbeitnow and Jobicy in one run via official APIs. Salary in yearly USD, location rules, full description, dedupe and monitoring. Pay per job.",
    "version": "0.1",
    "x-build-id": "wMzBLSRez8pdoGPg3"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/tinyrex~remote-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-tinyrex-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/tinyrex~remote-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-tinyrex-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/tinyrex~remote-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-tinyrex-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": {
          "keywords": {
            "title": "Job titles / keywords",
            "type": "array",
            "description": "Each keyword is a separate search, e.g. python, react developer, product designer, customer support. A job matches when every word of the keyword appears (see 'Match keywords in'). Leave empty to get the newest remote jobs.",
            "default": [
              "python"
            ],
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "title": "Job boards",
            "type": "array",
            "description": "Himalayas (largest, server-side search, salaries), Remote OK, We Work Remotely, Working Nomads, Arbeitnow (Europe/Germany) and Jobicy (salaries, last 7 days). All use their official public APIs or feeds.",
            "items": {
              "type": "string",
              "enum": [
                "himalayas",
                "remoteok",
                "weworkremotely",
                "workingnomads",
                "arbeitnow",
                "jobicy"
              ],
              "enumTitles": [
                "Himalayas",
                "Remote OK",
                "We Work Remotely",
                "Working Nomads",
                "Arbeitnow",
                "Jobicy"
              ]
            },
            "default": [
              "himalayas",
              "remoteok"
            ]
          },
          "maxResultsPerSearch": {
            "title": "Max jobs per keyword and board",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum jobs saved per keyword and job board. 0 = no limit.",
            "default": 50
          },
          "matchIn": {
            "title": "Match keywords in",
            "enum": [
              "title",
              "titleAndTags",
              "everywhere"
            ],
            "type": "string",
            "description": "Where the keyword words must appear.",
            "default": "titleAndTags"
          },
          "countries": {
            "title": "Candidate countries",
            "type": "array",
            "description": "Only jobs open to candidates in these countries (names or ISO codes, e.g. Germany, US, Canada). Himalayas filters on the server; other boards are matched on their location text. Leave empty for all.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "includeWorldwide": {
            "title": "Include 'worldwide / anywhere' jobs",
            "type": "boolean",
            "description": "With a country filter, also keep jobs open worldwide.",
            "default": true
          },
          "employmentType": {
            "title": "Employment type",
            "type": "array",
            "description": "Only these types. Jobs without a type on the board are kept.",
            "items": {
              "type": "string",
              "enum": [
                "fulltime",
                "parttime",
                "contract",
                "internship"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract / freelance",
                "Internship"
              ]
            },
            "default": []
          },
          "seniority": {
            "title": "Seniority (Himalayas)",
            "type": "array",
            "description": "Seniority filter, applied by Himalayas.",
            "items": {
              "type": "string",
              "enum": [
                "entry",
                "mid",
                "senior",
                "manager",
                "director",
                "executive"
              ],
              "enumTitles": [
                "Entry-level",
                "Mid-level",
                "Senior",
                "Manager",
                "Director",
                "Executive"
              ]
            },
            "default": []
          },
          "publishedWithinDays": {
            "title": "Published within (days)",
            "minimum": 0,
            "maximum": 365,
            "type": "integer",
            "description": "Only jobs posted in the last N days. 0 = any time.",
            "default": 0
          },
          "onlyWithSalary": {
            "title": "Only jobs with a salary",
            "type": "boolean",
            "description": "Keep only jobs that publish a salary range (mostly Himalayas and Remote OK).",
            "default": false
          },
          "minYearlySalaryUsd": {
            "title": "Minimum yearly salary (USD)",
            "minimum": 0,
            "maximum": 2000000,
            "type": "integer",
            "description": "Keep only jobs whose published salary, converted to a yearly USD amount (ECB reference rates), reaches this value. Jobs without a salary are dropped when set. 0 = off. Filtered jobs are free.",
            "default": 0
          },
          "includeDescription": {
            "title": "Include full job description",
            "type": "boolean",
            "description": "Adds the full description as plain text. Same price either way.",
            "default": true
          },
          "dedupeAcrossSources": {
            "title": "Remove cross-board duplicates",
            "type": "boolean",
            "description": "The same job is often posted on several boards. Keep only the first copy (same title + company). Duplicates are free.",
            "default": true
          },
          "arbeitnowRemoteOnly": {
            "title": "Arbeitnow: remote jobs only",
            "type": "boolean",
            "description": "Arbeitnow also lists on-site jobs in Germany. Keep only remote ones.",
            "default": true
          },
          "arbeitnowPages": {
            "title": "Arbeitnow: pages to read",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Arbeitnow has no search; the newest pages are read and filtered (about 300 jobs per page).",
            "default": 2
          },
          "jobicyPages": {
            "title": "Jobicy: pages to read",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Jobicy's feed covers the last 7 days; each page has up to 200 newest jobs, filtered locally.",
            "default": 2
          },
          "onlyNewJobs": {
            "title": "Only new jobs (monitoring)",
            "type": "boolean",
            "description": "Return only jobs not returned by previous runs with the same state key. Ideal for daily schedules. The first run returns everything.",
            "default": false
          },
          "stateKey": {
            "title": "State key",
            "type": "string",
            "description": "Name of the monitoring state. Use different keys for different schedules.",
            "default": "default"
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Not needed normally.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}