{
  "openapi": "3.0.1",
  "info": {
    "title": "Working Nomads Jobs Scraper: Salary & Companies",
    "description": "Working Nomads jobs scraper for its whole public board: every remote job with title, company, category, job type, level, locations, salary (and a yearly USD figure), tags, apply link and description, plus each company's website, LinkedIn, X, founded year, hiring regions and benefits.",
    "version": "0.1",
    "x-build-id": "XK3TmcpDqOwaX4pwH"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/deepmine~working-nomads-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-deepmine-working-nomads-jobs-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/deepmine~working-nomads-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-deepmine-working-nomads-jobs-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/deepmine~working-nomads-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-deepmine-working-nomads-jobs-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",
        "properties": {
          "keywords": {
            "title": "🔎 Keywords",
            "type": "array",
            "description": "Words to search for, one per line: python, customer support, data analyst, figma. Each is its own search, matched on the job's title, tags, category and description (role words like design or sales on the title and tags only). Leave empty for the latest jobs of every kind. You pay per job delivered.",
            "items": {
              "type": "string",
              "pattern": "\\S"
            },
            "default": []
          },
          "searchUrl": {
            "title": "🔗 Or paste a Working Nomads search URL",
            "type": "string",
            "description": "Optional. A search page from workingnomads.com: https://www.workingnomads.com/jobs?tag=python&category=development&location=usa, /remote-python-jobs, /remote-design-jobs-europe or /remote-jobs-that-pay-100k. Its tags, categories, locations, job types, levels, posted date and salary range become this run's filters, in the fields below you leave empty, searched the way its site searches them: the same jobs its search lists. One URL per run."
          },
          "boardCategories": {
            "title": "🗂️ Categories",
            "type": "array",
            "description": "Optional. Keep only jobs in these Working Nomads categories. Leave empty for every category.",
            "items": {
              "type": "string",
              "enum": [
                "Administration",
                "Consulting",
                "Customer Success",
                "Design",
                "Development",
                "Education",
                "Finance",
                "Healthcare",
                "Human Resources",
                "Legal",
                "Management",
                "Marketing",
                "Sales",
                "System Administration",
                "Writing"
              ]
            }
          },
          "postedWithinDays": {
            "title": "📅 Posted within (days)",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Keep only jobs posted in the last N days (Working Nomads lists the last 30 days); older ones cost nothing. 0 means any date. Handy for a daily or weekly scheduled run.",
            "default": 0
          },
          "maxJobsPerKeyword": {
            "title": "💯 Max jobs per keyword",
            "minimum": 0,
            "type": "integer",
            "description": "The jobs to keep per keyword (or in all, with no keyword), newest first. You pay per job, so this caps the cost per keyword. 0 means every job (its whole board: about 5,000). Default 100.",
            "default": 100
          },
          "includeCompanyDetails": {
            "title": "🏢 Include company details",
            "type": "boolean",
            "description": "Read each company's Working Nomads page once per run: logo, website, LinkedIn, X, Facebook, Instagram, founded year, headquarters, hiring regions, remote policy, job counts, about and benefits. Same price; turn it off for a faster run.",
            "default": true
          },
          "location": {
            "title": "📍 Location",
            "type": "string",
            "description": "Optional. Text the job's listed locations must contain: USA, Europe, UK, Canada, Latin America, Anywhere, Germany. Leave empty for every place (or use 🌍 Open to candidates in, just below, for every job a country's residents can take)."
          },
          "country": {
            "title": "🌍 Open to candidates in",
            "type": "string",
            "description": "Optional. A country you live in (United States, Germany, India, Brazil...): keeps the jobs open to its residents, including jobs open anywhere and jobs for its region (Europe, EMEA, LATAM, APAC, North America). Type Worldwide for only the jobs open to anyone, anywhere. Leave empty for every job."
          },
          "employmentTypes": {
            "title": "🕒 Job types",
            "type": "array",
            "description": "Optional. Keep only these job types (Working Nomads' full-time, part-time and freelance/contract). Leave empty for every type.",
            "items": {
              "type": "string",
              "enum": [
                "Full-time",
                "Part-time",
                "Contract"
              ]
            }
          },
          "seniority": {
            "title": "🎚️ Seniority",
            "type": "array",
            "description": "Optional. Keep only these levels (Working Nomads' entry, mid and senior; a job it gives none for counts by a clear title word). Leave empty for every level.",
            "items": {
              "type": "string",
              "enum": [
                "Entry-level",
                "Mid-level",
                "Senior"
              ]
            }
          },
          "minSalary": {
            "title": "💰 Minimum salary (USD per year)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Keep only jobs whose pay, as Working Nomads' yearly US-dollar figure (the top of the range, converted), is at least this. About half its jobs list pay; the rest are left out. 0 means no salary filter.",
            "default": 0
          },
          "maxSalary": {
            "title": "💰 Maximum salary (USD per year)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Keep only jobs whose yearly US-dollar pay (the top of the range) is at most this, as Working Nomads' own salary range filter does. Jobs without listed pay are left out. 0 means no top.",
            "default": 0
          },
          "sortBy": {
            "title": "↕️ Sort by",
            "enum": [
              "newest",
              "salary"
            ],
            "type": "string",
            "description": "Newest first, or the best-paid first (jobs with no listed salary after them).",
            "default": "newest"
          },
          "tags": {
            "title": "🏷️ Tags",
            "type": "array",
            "description": "Optional. Keep only jobs that carry at least one of these Working Nomads skill tags: python, react, sql, salesforce, figma. Leave empty for every tag.",
            "items": {
              "type": "string",
              "pattern": "\\S"
            }
          },
          "benefits": {
            "title": "🎁 Benefits",
            "type": "array",
            "description": "Optional. Keep only jobs whose description or tags mention every one of these words or phrases: equity, 401k, health insurance, 4 day week, async. Leave empty for every job.",
            "items": {
              "type": "string",
              "pattern": "\\S"
            }
          },
          "boardLocations": {
            "title": "Working Nomads locations",
            "type": "array",
            "description": "Hidden in the form: a search URL's location filter (its own: USA also keeps jobs open Anywhere or in North America). Region or country names: USA, UK, Europe, Latin America, APAC, EMEA, Germany.",
            "items": {
              "type": "string",
              "pattern": "\\S"
            }
          },
          "strictLocation": {
            "title": "Strict location",
            "type": "boolean",
            "description": "Hidden in the form: with Working Nomads locations, only jobs listing those places themselves (its 'strict location')."
          },
          "timezone": {
            "title": "Time zone",
            "type": "string",
            "description": "Optional UTC offset you work in, e.g. UTC-5, UTC+1, UTC+5:30. Keeps Himalayas jobs that accept it (the only board that lists time zones) and, from the other boards, only jobs open worldwide."
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after this many jobs in total. You pay per job, so this caps the run's cost.",
            "default": 1000
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "type": "integer",
            "description": "Hidden in the form: the run's total, as other Working Nomads scrapers name it (sets Max results, every job per keyword)."
          },
          "includeDescription": {
            "title": "Include job descriptions",
            "type": "boolean",
            "description": "The full job description as plain text. Same price either way; turn it off for smaller rows.",
            "default": true
          },
          "includeDescriptionHtml": {
            "title": "Include descriptions as HTML",
            "type": "boolean",
            "description": "Also the board's description as HTML (links and lists kept), in descriptionHtml. Same price; rows get about twice as big.",
            "default": false
          },
          "findContactEmails": {
            "title": "Find contact emails on company websites ($)",
            "type": "boolean",
            "description": "For jobs whose description gives no email, look for one on the company's own website (confirmed from the company's name). Charged per job that gets an email this way ($); emails a description gives are always free. Slower.",
            "default": false
          },
          "webhookUrl": {
            "title": "🔗 Webhook URL",
            "type": "string",
            "description": "Optional. At the end of the run, every job row is POSTed to this URL as JSON, 50 rows a request ({\"runId\", \"batch\", \"batches\", \"items\": [...]}). A receiver that fails is reported in the run summary; the jobs stay in the dataset."
          },
          "webhookSecret": {
            "title": "🔑 Webhook secret",
            "type": "string",
            "description": "Optional. Sent with each webhook request in the X-Scraper-Secret header."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify Proxy (datacenter) by default; the boards' feeds are public, so it only spreads the requests over several IPs. Residential and SERP proxies are replaced with datacenter. Turn it off to connect directly.",
            "default": {
              "useApifyProxy": true
            }
          },
          "fullBoard": {
            "title": "Whole board",
            "type": "boolean",
            "description": "Fixed on in this Actor: Working Nomads' whole public board, not its latest-jobs feed.",
            "default": true
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}