{
  "openapi": "3.0.1",
  "info": {
    "title": "Remote Jobs API & Scraper – Jobicy, Remote OK, Only New",
    "description": "Remote jobs from sources licensed for commercial republishing (Jobicy, Remote OK). Deduplicated, yearly salary, filters, only-new mode. Pay per new job.",
    "version": "0.1",
    "x-build-id": "GUI3C9BtbR9gKAUco"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/far003~remote-jobs-feed/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-far003-remote-jobs-feed",
        "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/far003~remote-jobs-feed/runs": {
      "post": {
        "operationId": "runs-sync-far003-remote-jobs-feed",
        "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/far003~remote-jobs-feed/run-sync": {
      "post": {
        "operationId": "run-sync-far003-remote-jobs-feed",
        "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": "Sources",
            "type": "array",
            "description": "Which boards to read. Both are public APIs that need no key. Leave both selected for the widest feed; duplicates between them are merged.",
            "items": {
              "type": "string",
              "enum": [
                "jobicy",
                "remoteok"
              ],
              "enumTitles": [
                "Jobicy",
                "Remote OK"
              ]
            },
            "default": [
              "jobicy",
              "remoteok"
            ]
          },
          "keywords": {
            "title": "Keywords (any of)",
            "type": "array",
            "description": "Keep a posting if ANY of these words or phrases appears as a whole word in its title, company, tags or description (\"java\" does not match \"javascript\"). Leave empty for no keyword filter.",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Drop a posting if any of these appears. Same whole-word rule as above.",
            "items": {
              "type": "string"
            }
          },
          "keywordsInTitleOnly": {
            "title": "Match keywords in the title only",
            "type": "boolean",
            "description": "Look for the keywords in the job title only, not in the description. Fewer, more precise results.",
            "default": false
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Keep only these categories. Every posting gets one shared category whatever its source calls it. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "engineering",
                "devops",
                "data",
                "security",
                "design",
                "product",
                "marketing",
                "sales",
                "support",
                "finance",
                "hr",
                "legal",
                "operations",
                "healthcare",
                "education",
                "other"
              ],
              "enumTitles": [
                "Software engineering",
                "DevOps, cloud & infrastructure",
                "Data, analytics & AI",
                "Cybersecurity",
                "Design & creative",
                "Product & project management",
                "Marketing & content",
                "Sales & business development",
                "Customer support & success",
                "Finance & accounting",
                "HR & recruiting",
                "Legal",
                "Operations & admin",
                "Healthcare",
                "Education",
                "Other"
              ]
            }
          },
          "employmentTypes": {
            "title": "Contract types",
            "type": "array",
            "description": "Keep only these. Postings whose source does not state a type (most of Remote OK) are left out when you pick one.",
            "items": {
              "type": "string",
              "enum": [
                "full_time",
                "part_time",
                "contract",
                "freelance",
                "internship",
                "temporary",
                "other"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Freelance",
                "Internship",
                "Temporary",
                "Other"
              ]
            }
          },
          "seniorities": {
            "title": "Experience levels",
            "type": "array",
            "description": "Keep only these. Jobicy's level is used unless the title contradicts it; for Remote OK, and when Jobicy's level looks wrong, it is guessed from the title (see seniorityInferred). Postings with no level are left out when you pick one.",
            "items": {
              "type": "string",
              "enum": [
                "entry",
                "mid",
                "senior",
                "lead_director"
              ],
              "enumTitles": [
                "Entry / junior",
                "Mid-level",
                "Senior",
                "Lead / director"
              ]
            }
          },
          "countries": {
            "title": "Allowed countries",
            "type": "array",
            "description": "Keep postings someone living in one of these countries can take. Use ISO codes (US, DE), names (Germany) or regions (Europe, EU, EMEA, APAC, LATAM, North America). Worldwide postings are kept too (see below). The sources do not publish time zones, so there is no time-zone filter.",
            "items": {
              "type": "string"
            }
          },
          "includeWorldwide": {
            "title": "Include worldwide postings",
            "type": "boolean",
            "description": "With \"Allowed countries\" set, also keep postings that say \"Anywhere\" or \"Worldwide\".",
            "default": true
          },
          "includeUnspecifiedLocation": {
            "title": "Include postings with no usable location",
            "type": "boolean",
            "description": "With \"Allowed countries\" set, also keep postings whose location is empty, a bare \"Remote\" or a city we cannot place. Off by default: we do not guess.",
            "default": false
          },
          "onlyWithSalary": {
            "title": "Only postings with a salary",
            "type": "boolean",
            "description": "Drop postings that publish no salary.",
            "default": false
          },
          "minSalaryYearly": {
            "title": "Minimum yearly salary",
            "minimum": 1,
            "type": "integer",
            "description": "Keep postings whose top yearly salary reaches this amount, in the currency below (hourly, weekly and monthly figures are converted to a year first). Postings with no salary or in another currency are dropped. Leave empty for no minimum."
          },
          "salaryCurrency": {
            "title": "Currency for the minimum",
            "type": "string",
            "description": "Three-letter code of the currency the minimum is in. Currencies are never converted.",
            "default": "USD"
          },
          "postedAfter": {
            "title": "Posted after",
            "type": "string",
            "description": "Only postings published on or after this date, such as 2026-10-15, or a relative time such as \"3 days\" or \"2 weeks\"."
          },
          "descriptionFormat": {
            "title": "Description format",
            "enum": [
              "text",
              "html",
              "none"
            ],
            "type": "string",
            "description": "Plain text (easy to read and search), the original HTML (safe to sanitize before showing it), or no description (smaller output). E-mail addresses are removed either way.",
            "default": "text"
          },
          "maxItems": {
            "title": "Maximum new postings",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many postings are delivered (and charged). Postings held back stay \"new\" for the next run when \"Only new postings\" is on. Leave empty for no limit. The spending limit you set on the run is respected too."
          },
          "onlyNew": {
            "title": "Only new postings",
            "type": "boolean",
            "description": "Deliver only postings this feed has not delivered before. Run it on a schedule and every run returns just what appeared since. The memory is saved after each delivered batch. First run: everything currently listed counts as new.",
            "default": false
          },
          "memoryKey": {
            "title": "Memory key",
            "type": "string",
            "description": "Name of the memory used by \"Only new postings\". Use a different key for each scheduled task (for example one per filter set) so they do not share what was delivered. Letters, digits, - and _.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}