{
  "openapi": "3.0.1",
  "info": {
    "title": "Remote OK Scraper",
    "description": "Scrape Remote OK, the leading remote job board. Search remote jobs by keyword, tag (python, design, marketing, ...), region, salary, or fetch by direct URL. Returns position, company, salary range, tags, location, apply URL, full description, and posting date.",
    "version": "1.0",
    "x-build-id": "WfP0ly7pVCM8kzRtR"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawlerbros~remote-ok-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawlerbros-remote-ok-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/crawlerbros~remote-ok-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawlerbros-remote-ok-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/crawlerbros~remote-ok-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawlerbros-remote-ok-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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "byTag",
              "byTags",
              "byUrls",
              "latest"
            ],
            "type": "string",
            "description": "What to fetch.",
            "default": "search"
          },
          "searchQuery": {
            "title": "Search query",
            "type": "string",
            "description": "Free-text query matched against job title, company name, description, and tags (mode=search). Case-insensitive substring match.",
            "default": "engineer"
          },
          "tag": {
            "title": "Tag (mode=byTag)",
            "type": "string",
            "description": "Single Remote OK tag. Use lowercase, hyphen-separated values (e.g. `python`, `rust`, `nextjs`, `typescript`, `vue3`, `gatsby`, `terraform`, `data-science`, `customer-support`). Any of the 240+ tags from https://remoteok.com/sitemap-tags-1.xml is accepted. Common examples: ai, amazon, android, angular, api, aws, backend, blockchain, ceo, cloud, css, customer-support, data-science, design, designer, developer, devops, django, docker, engineer, engineering, finance, fintech, frontend, full-stack, full-time, gatsby, golang, graphql, growth, html, infosec, ios, java, javascript, junior, kubernetes, laravel, linux, manager, marketing, mobile, mongodb, nextjs, node, nodejs, nosql, php, postgres, product, python, qa, rails, react, redis, ruby, rust, saas, sales, scala, security, senior, seo, serverless, shopify, software, support, swift, technical, terraform, typescript, ui, ux, vue, vue3, web, web3, wordpress.",
            "default": "python"
          },
          "tags": {
            "title": "Tags (mode=byTags)",
            "type": "array",
            "description": "List of Remote OK tags. The actor fetches each tag separately and merges results (jobs matching ANY of the tags). Use lowercase, hyphen-separated values like `python`, `data-science`, `customer-support`.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs (mode=byUrls)",
            "type": "array",
            "description": "Direct Remote OK job URLs, e.g. `https://remoteok.com/remote-jobs/remote-senior-backend-engineer-acme-12345`.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "region": {
            "title": "Region",
            "enum": [
              "any",
              "worldwide",
              "americas",
              "europe",
              "asia",
              "africa",
              "oceania",
              "usOnly"
            ],
            "type": "string",
            "description": "Filter jobs by region. Remote OK encodes worldwide jobs with a `digital nomad` tag and otherwise hints region via the `location` field. `any` returns all jobs. Note: many Remote OK jobs have empty or US/India locations, so filtering by a specific region (e.g. `europe`) excludes jobs whose location text isn't recognized as that region — including many engineering roles with empty location text. For broader results, combine with `containsKeyword` or leave `region` empty.",
            "default": "any"
          },
          "minSalary": {
            "title": "Min salary (USD)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Drop jobs whose published max salary is below this value. Jobs without a published salary are dropped only when this filter is set."
          },
          "maxSalary": {
            "title": "Max salary (USD)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Drop jobs whose published min salary is above this value."
          },
          "postedSinceDays": {
            "title": "Posted within last N days",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Only emit jobs posted within the last N days. Leave blank for no time filter."
          },
          "salaryOnly": {
            "title": "Only jobs with published salary",
            "type": "boolean",
            "description": "Drop jobs that do not publish a salary range.",
            "default": false
          },
          "containsKeyword": {
            "title": "Contains keyword",
            "type": "string",
            "description": "Extra substring filter applied to the job title, company name, and description (case-insensitive)."
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Hard cap on emitted records. Remote OK's feed returns ~100 latest jobs per tag; combining tags or no filter rarely exceeds 600.",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}