{
  "openapi": "3.0.1",
  "info": {
    "title": "Remote Job Aggregator — RemoteOK, WeWorkRemotely + 8 Boards",
    "description": "Remote job aggregator sweeping 10 keyless boards in one run - RemoteOK, WeWorkRemotely, Working Nomads, Remotive, Jobicy, Himalayas, DevITjobs (US + UK), The Muse and HN Who is Hiring - deduplicated across boards, salaries annualized. The same role on two boards ships once.",
    "version": "0.1",
    "x-build-id": "ywgSQsOM2O62lcm0o"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/flash_scraper~remote-job-aggregator/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-flash_scraper-remote-job-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/flash_scraper~remote-job-aggregator/runs": {
      "post": {
        "operationId": "runs-sync-flash_scraper-remote-job-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/flash_scraper~remote-job-aggregator/run-sync": {
      "post": {
        "operationId": "run-sync-flash_scraper-remote-job-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": {
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "Keywords matched against job TITLES, case-insensitive. A job matches if ANY term matches (OR). Multi-word terms need every word in the title ('python developer' requires both). Empty = every job. Capped at 10 terms per run - extras beyond the first 10 are ignored, and the run's status message says so.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "matchDescriptions": {
            "title": "Match descriptions too",
            "type": "boolean",
            "description": "OFF (default): searchTerms match job TITLES only — precise, every hit visibly carries your keyword. ON: terms also match the job's tags and the first 500 characters of its description, where boards provide them — more recall, less precision ('python' will also match a marketing role whose blurb mentions the Python team). DevITjobs publishes no descriptions, so there this widens matching to its technology tags only.",
            "default": false
          },
          "boards": {
            "title": "Boards",
            "type": "array",
            "description": "Which boards to sweep. Default: all of them. Results are deduplicated across boards, so selecting more boards never means paying twice for the same role.",
            "items": {
              "type": "string",
              "enum": [
                "remoteok",
                "weworkremotely",
                "working_nomads",
                "devitjobs_us",
                "devitjobs_uk",
                "muse",
                "remotive",
                "jobicy",
                "himalayas",
                "hn_hiring"
              ],
              "enumTitles": [
                "Remote OK",
                "We Work Remotely",
                "Working Nomads",
                "DevITjobs US (remote rows only)",
                "DevITjobs UK (remote rows only)",
                "The Muse (remote filter)",
                "Remotive",
                "Jobicy",
                "Himalayas",
                "Hacker News \"Who is hiring?\" (remote posts only)"
              ]
            },
            "default": [
              "remoteok",
              "weworkremotely",
              "working_nomads",
              "devitjobs_us",
              "devitjobs_uk",
              "muse",
              "remotive",
              "jobicy",
              "himalayas",
              "hn_hiring"
            ]
          },
          "maxItems": {
            "title": "Max jobs",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum number of deduplicated jobs to return across all boards.",
            "default": 100
          },
          "includeDescription": {
            "title": "Include full descriptions",
            "type": "boolean",
            "description": "ON: every row's `description` column carries the job's full HTML-stripped description text (rows get heavy). OFF (default): `description` is null and only the always-on 500-character `description_snippet` ships. Boards that publish no description (DevITjobs) deliver null either way.",
            "default": false
          },
          "onlyNewJobs": {
            "title": "Only new jobs",
            "type": "boolean",
            "description": "Deliver only postings this exact search (same searchTerms + boards) has never delivered before. The first run is the baseline — it delivers everything and says so; every later run returns only new postings. A run where nothing is new delivers 0 rows, reports 'Nothing new since <last run>' and bills nothing. Memory lives in a named key-value store ('remote-job-monitor') in YOUR Apify account, one record per search, entries pruned after 90 days.",
            "default": 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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}