{
  "openapi": "3.0.1",
  "info": {
    "title": "Remote Jobs Aggregator (Himalayas, Remote OK, Jobicy)",
    "description": "Remote jobs aggregator: collect remote job listings from Himalayas, Remote OK and Jobicy in one feed. Filter remote work by keyword, location and date, with salaries, tags and source links. Never charges for a failed or empty result.",
    "version": "0.1",
    "x-build-id": "f1tCeJLR27kqiHJ24"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/pavel.tashev~remote-jobs-aggregator/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-pavel.tashev-remote-jobs-aggregator",
        "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/pavel.tashev~remote-jobs-aggregator/runs": {
      "post": {
        "operationId": "runs-sync-pavel.tashev-remote-jobs-aggregator",
        "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/pavel.tashev~remote-jobs-aggregator/run-sync": {
      "post": {
        "operationId": "run-sync-pavel.tashev-remote-jobs-aggregator",
        "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": "Keywords",
            "type": "string",
            "description": "Comma-separated job keywords, for example \"python, data engineer\". A job matches if its title, tags or description contain all words of at least one keyword. Leave empty for all jobs. Up to 5 keywords."
          },
          "sources": {
            "title": "Job boards",
            "maxItems": 3,
            "type": "array",
            "description": "Public job-board APIs to collect from. Arbeitnow is mostly a German on-site board, so only its remote listings are kept - useful for EU roles, thin on volume.",
            "items": {
              "type": "string",
              "enum": [
                "himalayas",
                "remoteok",
                "jobicy",
                "arbeitnow"
              ],
              "enumTitles": [
                "Himalayas",
                "Remote OK",
                "Jobicy",
                "Arbeitnow (mostly German/EU)"
              ]
            },
            "default": [
              "himalayas",
              "remoteok",
              "jobicy",
              "arbeitnow"
            ]
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "Comma-separated places the job must be open to, for example \"Germany, Europe, Worldwide\". Matches the job's location text. Include \"Worldwide\" to keep jobs open to everyone. Leave empty for any location."
          },
          "postedWithinDays": {
            "title": "Posted within (days)",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Only return jobs posted in the last N days. Leave empty for any date."
          },
          "maxResultsPerSource": {
            "title": "Maximum jobs per job board",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Stop collecting from a job board after this many matching jobs. Remote OK returns about 100 recent jobs and Jobicy up to 200 per keyword.",
            "default": 100
          },
          "includeDescription": {
            "title": "Include job descriptions",
            "type": "boolean",
            "description": "Full job description as plain text. Turn off for a smaller dataset.",
            "default": true
          },
          "deduplicate": {
            "title": "Remove duplicates",
            "type": "boolean",
            "description": "Skip a job when the same company and job title were already saved from another job board. Duplicates are not charged.",
            "default": true
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "string",
            "description": "Comma-separated words that disqualify a job, matched against the title, company, tags and category. A term with several words needs all of them, so \"data entry\" does not exclude \"data engineer\"."
          },
          "minSalary": {
            "title": "Minimum salary",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only jobs whose stated salary reaches this figure, in the job’s own currency. Jobs that publish no salary are kept unless you also turn on \"Only jobs with a salary\" — most listings do not publish one, so dropping them all would hide the market rather than filter it."
          },
          "requireSalary": {
            "title": "Only jobs with a salary",
            "type": "boolean",
            "description": "Drop jobs that do not state a salary at all.",
            "default": false
          },
          "seniority": {
            "title": "Seniority",
            "type": "array",
            "description": "Keep only these levels. Uses the level the board states, and falls back to the job title when it states none — which is most of the time.",
            "items": {
              "type": "string",
              "enum": [
                "intern",
                "junior",
                "mid",
                "senior",
                "lead"
              ],
              "enumTitles": [
                "Intern / working student",
                "Junior / graduate",
                "Mid",
                "Senior",
                "Lead / principal / manager"
              ]
            },
            "default": []
          },
          "employmentTypes": {
            "title": "Employment type",
            "type": "array",
            "description": "Keep only these employment types.",
            "items": {
              "type": "string",
              "enum": [
                "full-time",
                "part-time",
                "contract",
                "internship",
                "temporary"
              ],
              "enumTitles": [
                "Full time",
                "Part time",
                "Contract / freelance",
                "Internship",
                "Temporary"
              ]
            },
            "default": []
          },
          "onlyNew": {
            "title": "Only new jobs",
            "type": "boolean",
            "description": "Remember the jobs already delivered and return only ones not seen before. Turns a scheduled run into monitoring: a day with no new jobs costs nothing.",
            "default": false
          },
          "memoryKey": {
            "title": "Memory name",
            "type": "string",
            "description": "A name for this search’s memory, so separate searches never mix. Letters, numbers, dots, dashes and underscores.",
            "default": "default"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}