{
  "openapi": "3.0.1",
  "info": {
    "title": "Remote Jobs Aggregator — 6 Public Feeds",
    "description": "[💵 $1.50 / 1K] Six public remote-job feeds in one schema with source links, precise salary filters and new-only monitoring. Confirmed application identities are merged. Source attribution rules apply. For n8n, Make, Zapier and MCP.",
    "version": "0.3",
    "x-build-id": "BGB3oOgcjgvv9miAG"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/dataloft~remote-jobs-aggregator/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-dataloft-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/dataloft~remote-jobs-aggregator/runs": {
      "post": {
        "operationId": "runs-sync-dataloft-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/dataloft~remote-jobs-aggregator/run-sync": {
      "post": {
        "operationId": "run-sync-dataloft-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": {
          "sources": {
            "title": "Job boards to include",
            "type": "array",
            "description": "Leave empty to use all six active feeds. Working Nomads is unavailable pending publisher permission for commercial distribution.",
            "items": {
              "type": "string",
              "enum": [
                "remoteok",
                "remotive",
                "himalayas",
                "weworkremotely",
                "jobicy",
                "arbeitnow"
              ],
              "enumTitles": [
                "RemoteOK",
                "Remotive",
                "Himalayas",
                "We Work Remotely",
                "Jobicy",
                "Arbeitnow"
              ]
            },
            "default": []
          },
          "keywords": {
            "title": "Keyword must appear in title or description",
            "type": "array",
            "description": "Case-insensitive, e.g. python, react, devops.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "titleIncludes": {
            "title": "Job title must contain any of",
            "type": "array",
            "description": "Case-insensitive. A role is kept if its title contains at least one of these, e.g. engineer, designer, product manager.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "titleExcludes": {
            "title": "Skip job titles containing",
            "type": "array",
            "description": "Case-insensitive. Handy for dropping intern, contractor or director-level postings.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "locationIncludes": {
            "title": "Location must contain any of",
            "type": "array",
            "description": "Matches the region restriction the board publishes, e.g. europe, usa, worldwide.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "departmentIncludes": {
            "title": "Category must contain any of",
            "type": "array",
            "description": "Case-insensitive match against the department or team the platform publishes.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "minSalary": {
            "title": "Minimum salary",
            "minimum": 0,
            "type": "integer",
            "description": "Keep postings whose selected salary range bound is at least this number. Missing salary data is excluded when positive. Use Salary currency and Salary pay period to avoid mixing units; 0 disables the numeric threshold.",
            "default": 0
          },
          "postedAfter": {
            "title": "Only roles posted after",
            "type": "string",
            "description": "ISO date such as 2026-08-01. Postings without a date are always kept."
          },
          "includeDescription": {
            "title": "Include full job descriptions",
            "type": "boolean",
            "description": "Turn off for a much smaller dataset when you only need titles, companies and links.",
            "default": true
          },
          "maxJobsPerSource": {
            "title": "Max jobs per board",
            "minimum": 0,
            "type": "integer",
            "description": "Also controls how deep the paginated boards go. 0 means no limit.",
            "default": 0
          },
          "maxTotalJobs": {
            "title": "Max jobs in total",
            "minimum": 0,
            "type": "integer",
            "description": "0 means no limit.",
            "default": 0
          },
          "deduplicate": {
            "title": "Remove duplicate postings across boards",
            "type": "boolean",
            "description": "Merge postings with a confirmed shared application or posting URL and retain sourcePostings provenance. Matching company and title alone is not enough; uncertain duplicates remain separate.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. These are public APIs, so a proxy is rarely needed — use it only for very large scheduled runs from a single IP.",
            "default": {
              "useApifyProxy": false
            }
          },
          "onlyNewJobs": {
            "title": "Only new jobs since last run",
            "type": "boolean",
            "description": "Turns this into a job monitor. Every posting delivered is remembered in a named key-value store, and later runs skip anything already on that list — skipped postings are not saved to the dataset and are not charged for. The first run builds the baseline and returns everything it finds; from then on you get only what appeared since. Note the limits above count postings scanned, not new ones found, so pair this with a generous (or unset) \"Max jobs in total\".",
            "default": false
          },
          "seenStoreName": {
            "title": "Seen-jobs store name",
            "type": "string",
            "description": "Optional. Name of the key-value store that holds the seen-jobs list. Defaults to dataloft-seen-remote-jobs-aggregator. Give each watchlist its own name when you run several monitors that should not share history.",
            "default": ""
          },
          "titleIncludeGroups": {
            "title": "Title groups (AND between groups)",
            "type": "array",
            "description": "Each group contains alternative title terms (OR); every group must match (AND). Example: [[\"senior\",\"staff\",\"principal\"],[\"engineer\",\"developer\"]]. Case-insensitive. Applied together with the other filters.",
            "default": []
          },
          "salaryCurrency": {
            "title": "Salary currency",
            "type": "string",
            "description": "Exact three-letter currency code, e.g. USD. Empty accepts any currency. No conversion. Strict matching requires a structured publisher currency or an explicit code/unambiguous symbol in salary text; a bare dollar sign does not confirm USD.",
            "default": ""
          },
          "salaryInterval": {
            "title": "Salary pay period",
            "enum": [
              "any",
              "year",
              "month",
              "week",
              "fortnight",
              "day",
              "hour"
            ],
            "type": "string",
            "description": "Compare only salaries explicitly published for this pay period or provided in structured publisher data. No annualization. Unknown or inferred periods are excluded when a specific period is selected.",
            "default": "any"
          },
          "salaryThresholdBasis": {
            "title": "Salary range value to compare",
            "enum": [
              "maximum",
              "minimum"
            ],
            "type": "string",
            "description": "Minimum salary is compared with this bound. Maximum uses the upper bound, falling back to the lower bound if only that is published. Minimum requires an explicit lower bound. For guaranteed USD annual salary of at least 150000 choose minimum, USD and year.",
            "default": "maximum"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}