{
  "openapi": "3.0.1",
  "info": {
    "title": "All Jobs Scraper",
    "description": "All-in-one job scraper that aggregates 26+ job boards. Indeed, Adzuna, USAJobs, Reed, Remotive, and more into one de-duplicated feed by keyword. Get title, company, salary, location, remote status, and posting date, ready for JSON, CSV, Excel, or API/webhook delivery into Notion, Slack, or Airtable.",
    "version": "0.1",
    "x-build-id": "9urWjrRkplV6bHsfI"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/techforce.global~all-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-techforce.global-all-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/techforce.global~all-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-techforce.global-all-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/techforce.global~all-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-techforce.global-all-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",
        "required": [
          "keyword"
        ],
        "properties": {
          "keyword": {
            "title": "Keyword",
            "type": "string",
            "description": "Job title, skill, or company name to search for"
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City or region to focus results on. Leave blank for a broad/remote search."
          },
          "country": {
            "title": "Country",
            "enum": [
              "",
              "Algeria",
              "Angola",
              "Argentina",
              "Australia",
              "Austria",
              "Azerbaijan",
              "Bahrain",
              "Bangladesh",
              "Belgium",
              "Bosnia and Herzegovina",
              "Brazil",
              "Bulgaria",
              "Cameroon",
              "Canada",
              "Chile",
              "China",
              "Colombia",
              "Costa Rica",
              "Croatia",
              "Cyprus",
              "Czechia",
              "Denmark",
              "Dominican Republic",
              "Ecuador",
              "Egypt",
              "El Salvador",
              "Estonia",
              "Finland",
              "France",
              "Germany",
              "Ghana",
              "Greece",
              "Guatemala",
              "Hong Kong",
              "Hungary",
              "India",
              "Indonesia",
              "Iraq",
              "Ireland",
              "Israel",
              "Italy",
              "Ivory Coast",
              "Japan",
              "Jordan",
              "Kazakhstan",
              "Kenya",
              "Kuwait",
              "Latvia",
              "Lebanon",
              "Libya",
              "Lithuania",
              "Luxembourg",
              "Malaysia",
              "Malta",
              "Mexico",
              "Morocco",
              "Mozambique",
              "Netherlands",
              "New Zealand",
              "Nigeria",
              "Norway",
              "Oman",
              "Pakistan",
              "Panama",
              "Peru",
              "Philippines",
              "Poland",
              "Portugal",
              "Puerto Rico",
              "Qatar",
              "Romania",
              "Russia",
              "Saudi Arabia",
              "Senegal",
              "Serbia",
              "Singapore",
              "Slovakia",
              "Slovenia",
              "South Africa",
              "South Korea",
              "Spain",
              "Sweden",
              "Switzerland",
              "Taiwan",
              "Thailand",
              "Tunisia",
              "Turkey",
              "Uganda",
              "Ukraine",
              "United Arab Emirates",
              "United Kingdom",
              "United States",
              "Uruguay",
              "Uzbekistan",
              "Venezuela",
              "Vietnam",
              "Yemen",
              "Zambia"
            ],
            "type": "string",
            "description": "Optional. Used by country-scoped sources (Adzuna, USAJobs) and as a location fallback for others. Leave blank for a broad, unrestricted search - each source falls back to its own sensible default (e.g. Adzuna defaults to the US, Bayt.com searches its whole international scope).",
            "default": ""
          },
          "remote_only": {
            "title": "Remote only",
            "type": "boolean",
            "description": "Restrict results to remote-friendly positions only, where the source tells us that",
            "default": false
          },
          "job_type": {
            "title": "Job type",
            "enum": [
              "all",
              "fulltime",
              "parttime",
              "contract",
              "internship"
            ],
            "type": "string",
            "description": "Employment type to filter by",
            "default": "all"
          },
          "max_results": {
            "title": "Max results",
            "minimum": 10,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum number of jobs to return in total, across all selected sources",
            "default": 100
          },
          "sources": {
            "title": "Sources",
            "type": "array",
            "description": "Which job boards to scrape. All sources work out of the box using the Actor's built-in access - no setup needed. The fields below let you optionally use your own API keys for Adzuna, USAJobs, Reed, Jooble, Arbeitsagentur, or France Travail instead. Indeed, Arbeitsagentur, France Travail, VDAB, Freelancer.com, Foundit, Bayt.com, Job Bank, jobs.ch, kariyer.net, Talent.com, OnlineJobs.ph, Glints, and CV-Library are best-effort - see README. Talroo requires your own Publisher ID/Password (see the fields below) - it has no built-in fallback and returns nothing until those are set.",
            "items": {
              "type": "string",
              "enum": [
                "remotive",
                "remoteok",
                "arbeitnow",
                "jobicy",
                "weworkremotely",
                "themuse",
                "adzuna",
                "usajobs",
                "arbetsformedlingen",
                "reed",
                "jooble",
                "france_travail",
                "indeed",
                "freelancer",
                "foundit",
                "jobbank",
                "jobs_ch",
                "kariyer",
                "talent_com",
                "onlinejobsph",
                "glints"
              ],
              "enumTitles": [
                "Remotive",
                "RemoteOK",
                "Arbeitnow",
                "Jobicy",
                "We Work Remotely",
                "The Muse",
                "Adzuna",
                "USAJobs (US gov jobs only)",
                "Arbetsformedlingen (Sweden)",
                "Reed.co.uk (UK jobs only)",
                "Jooble",
                "France Travail (France)",
                "Indeed (needs proxy)",
                "Freelancer.com",
                "Foundit (India only)",
                "Job Bank (Canada only)",
                "jobs.ch (Switzerland only)",
                "kariyer.net (Turkey only)",
                "Talent.com",
                "OnlineJobs.ph (Philippines only)",
                "Glints (Southeast Asia only)"
              ]
            },
            "default": [
              "remotive",
              "remoteok",
              "arbeitnow",
              "jobicy",
              "weworkremotely",
              "themuse",
              "adzuna",
              "usajobs",
              "reed",
              "jooble"
            ]
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Only used by the Indeed source, which is heavily rate-limited/blocked without a proxy. The other sources are plain public APIs and don't need one.",
            "default": {
              "useApifyProxy": false
            }
          },
          "mcpConnector": {
            "title": "Deliver to (MCP connector)",
            "type": "string",
            "description": "Optionally deliver scraped jobs into a connector you have authorized - Notion, Slack, Airtable, Linear, or any MCP-compatible connector. Leave empty to only save results to the dataset."
          },
          "deliveryMode": {
            "title": "Delivery mode",
            "enum": [
              "perJob",
              "chunked",
              "summary",
              "none"
            ],
            "type": "string",
            "description": "How to deliver to the connector: 'perJob' (one call per job listing - best for creating one Notion page/database row per job), 'chunked' (split the job list across a few calls so services like Notion never time out), 'summary' (one call with all jobs as a single text block), or 'none' (save to dataset only).",
            "default": "none"
          },
          "mcpTool": {
            "title": "Connector tool name",
            "type": "string",
            "description": "Name of the tool to call on the connector (e.g. 'notion-create-pages' for Notion, 'send_message' for Slack, 'create_issue' for Jira/GitHub). If unsure, run once with a connector selected - the log lists the connector's available tools, and once a valid tool name is set, also prints that tool's exact expected argument schema.",
            "default": ""
          },
          "mcpArguments": {
            "title": "Connector tool arguments",
            "type": "object",
            "description": "Arguments passed to the connector tool. String values support {placeholders}. In 'perJob' mode: {title}, {company}, {location}, {url}, {source}, {jobType}, {remote}, {salary}, {description}, {postedDate}, {tags}, {keyword}, {jobCount}, and {message}. In 'summary'/'chunked' mode: {jobsText} (formatted job list, or one part of it in chunked mode), {keyword}, {jobCount}, and in chunked mode also {part}/{partCount}. IMPORTANT: this must match the tool's real argument shape exactly, or every call fails with an MCP 'Input validation error' (the dataset is unaffected - only delivery is skipped). After your first run, check the run log for 'Tool ... expects arguments shaped like:' followed by the connector's own full JSON Schema for the selected tool. For Notion's official 'notion-create-pages' tool (confirmed from its schema): the call takes a top-level \"pages\" ARRAY (max 100, required) plus an optional top-level \"parent\" object - {\"page_id\": \"...\"}, {\"database_id\": \"...\"}, or {\"data_source_id\": \"...\"} (omit entirely to create private workspace-level pages). Each item inside \"pages\" only accepts \"properties\" (a flat map of property name to string/number/array-of-strings/null - not the raw Notion API's nested rich_text format), \"content\" (Markdown), \"template_id\", \"icon\", and \"cover\" - a \"parent\" key inside a page item is rejected. Example (perJob mode, one call per job, creating a database page each time): {\"parent\": {\"database_id\": \"YOUR_NOTION_DATABASE_ID\"}, \"pages\": [{\"properties\": {\"Name\": \"{title}\", \"Company\": \"{company}\", \"Location\": \"{location}\", \"URL\": \"{url}\", \"Source\": \"{source}\"}, \"content\": \"{description}\"}]}. Match the property names to your actual Notion database's columns.",
            "default": {}
          },
          "mcpMessageTemplate": {
            "title": "Message template",
            "type": "string",
            "description": "Optional template rendered and exposed as the {message} placeholder in the tool arguments. Per-job example: '{title} at {company} ({location}) - {url}'. Summary example: 'Found {jobCount} jobs for \"{keyword}\":\\n\\n{jobsText}'.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}