{
  "openapi": "3.0.1",
  "info": {
    "title": "Upwork Jobs Scraper - Most Comprehensive",
    "description": "🔥 ~$0.1/1K jobs 🔥 Collect public Upwork job search results by keyword or filtered search URL. Fetch known jobs by URL, optionally add public job details, and export fixed structured records without an Upwork account.",
    "version": "0.1",
    "x-build-id": "2dv5SDFr95YjCMHMy"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/kaix~upwork-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-kaix-upwork-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/kaix~upwork-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-kaix-upwork-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/kaix~upwork-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-kaix-upwork-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": {
          "keyword": {
            "title": "Keyword",
            "maxLength": 200,
            "type": "string",
            "description": "Enter a job title, skill, or phrase. Do not use this field with the Advanced search text fields. A Search URL overrides this field."
          },
          "sort": {
            "title": "Sort results",
            "enum": [
              "relevance",
              "recency"
            ],
            "type": "string",
            "description": "Use Upwork's relevance order or show the newest public jobs first.",
            "default": "relevance"
          },
          "allWords": {
            "title": "All of these words",
            "maxLength": 200,
            "type": "string",
            "description": "Return jobs that contain all of these words. Do not use the Keyword field with Advanced search text."
          },
          "anyWords": {
            "title": "Any of these words",
            "maxLength": 200,
            "type": "string",
            "description": "Return jobs that contain one or more of these words."
          },
          "excludedWords": {
            "title": "None of these words",
            "maxLength": 200,
            "type": "string",
            "description": "Do not return jobs that contain one or more of these words."
          },
          "exactPhrase": {
            "title": "Exact phrase",
            "maxLength": 200,
            "type": "string",
            "description": "Return jobs that contain this exact phrase."
          },
          "titleWords": {
            "title": "Words in the title",
            "maxLength": 200,
            "type": "string",
            "description": "Return jobs that contain these words in the job title."
          },
          "skillIds": {
            "title": "Skill IDs",
            "minItems": 1,
            "maxItems": 50,
            "type": "array",
            "description": "Enter numeric Upwork skill IDs from the ontology_skill_uid value in a public Upwork search URL.",
            "items": {
              "type": "string",
              "minLength": 6,
              "maxLength": 30,
              "pattern": "^\\d{6,30}$"
            }
          },
          "categoryIds": {
            "title": "Category IDs",
            "minItems": 1,
            "maxItems": 12,
            "type": "array",
            "description": "Enter numeric Upwork category IDs from the category2_uid value in a public Upwork search URL.",
            "items": {
              "type": "string",
              "minLength": 6,
              "maxLength": 30,
              "pattern": "^\\d{6,30}$"
            }
          },
          "subcategoryIds": {
            "title": "Subcategory IDs",
            "minItems": 1,
            "maxItems": 50,
            "type": "array",
            "description": "Enter numeric Upwork subcategory IDs from the subcategory2_uid value in a public Upwork search URL.",
            "items": {
              "type": "string",
              "minLength": 6,
              "maxLength": 30,
              "pattern": "^\\d{6,30}$"
            }
          },
          "jobTypes": {
            "title": "Job types",
            "minItems": 1,
            "maxItems": 2,
            "type": "array",
            "description": "Return hourly jobs, fixed-price jobs, or both. An hourly rate adds the hourly type. A fixed-price value adds the fixed type.",
            "items": {
              "type": "string",
              "enum": [
                "hourly",
                "fixed"
              ],
              "enumTitles": [
                "Hourly",
                "Fixed price"
              ]
            }
          },
          "hourlyRateMin": {
            "title": "Minimum hourly rate",
            "minimum": 0,
            "maximum": 99999,
            "type": "number",
            "description": "Minimum hourly rate in US dollars. You can set only one end of the range."
          },
          "hourlyRateMax": {
            "title": "Maximum hourly rate",
            "minimum": 0,
            "maximum": 100000,
            "type": "number",
            "description": "Maximum hourly rate in US dollars. If you set both rates, this value must be greater than the minimum."
          },
          "fixedPriceRanges": {
            "title": "Fixed-price ranges",
            "minItems": 1,
            "maxItems": 5,
            "type": "array",
            "description": "Select one or more public Upwork fixed-price ranges.",
            "items": {
              "type": "string",
              "enum": [
                "0-99",
                "100-499",
                "500-999",
                "1000-4999",
                "5000-"
              ],
              "enumTitles": [
                "Less than $100",
                "$100 to $499",
                "$500 to $999",
                "$1,000 to $4,999",
                "$5,000 or more"
              ]
            }
          },
          "fixedPriceMin": {
            "title": "Custom minimum fixed price",
            "minimum": 0,
            "maximum": 99999,
            "type": "number",
            "description": "Minimum fixed price in US dollars. You can use this with the preset fixed-price ranges."
          },
          "fixedPriceMax": {
            "title": "Custom maximum fixed price",
            "minimum": 0,
            "maximum": 100000,
            "type": "number",
            "description": "Maximum fixed price in US dollars. If you set both prices, this value must be greater than the minimum."
          },
          "experienceLevels": {
            "title": "Experience levels",
            "minItems": 1,
            "maxItems": 3,
            "type": "array",
            "description": "Return jobs for one or more Upwork experience levels.",
            "items": {
              "type": "string",
              "enum": [
                "entry",
                "intermediate",
                "expert"
              ],
              "enumTitles": [
                "Entry level",
                "Intermediate",
                "Expert"
              ]
            }
          },
          "clientHistory": {
            "title": "Client history",
            "minItems": 1,
            "maxItems": 3,
            "type": "array",
            "description": "Filter by the number of people that the client hired on Upwork.",
            "items": {
              "type": "string",
              "enum": [
                "0",
                "1-9",
                "10-"
              ],
              "enumTitles": [
                "No hires",
                "1 to 9 hires",
                "10 or more hires"
              ]
            }
          },
          "clientLocations": {
            "title": "Client locations",
            "minItems": 1,
            "maxItems": 50,
            "type": "array",
            "description": "Enter public Upwork location names, such as Sweden, Europe, or United States. Location and time-zone selections use OR.",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            }
          },
          "clientTimezones": {
            "title": "Client time zones",
            "minItems": 1,
            "maxItems": 50,
            "type": "array",
            "description": "Enter public Upwork time-zone values, such as Europe/Stockholm. Location and time-zone selections use OR.",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 100
            }
          },
          "projectLengths": {
            "title": "Project lengths",
            "minItems": 1,
            "maxItems": 4,
            "type": "array",
            "description": "Filter hourly jobs by the planned project length.",
            "items": {
              "type": "string",
              "enum": [
                "week",
                "month",
                "semester",
                "ongoing"
              ],
              "enumTitles": [
                "Less than one month",
                "1 to 3 months",
                "3 to 6 months",
                "More than 6 months"
              ]
            }
          },
          "hoursPerWeek": {
            "title": "Hours per week",
            "minItems": 1,
            "maxItems": 2,
            "type": "array",
            "description": "Filter hourly jobs by the expected weekly hours.",
            "items": {
              "type": "string",
              "enum": [
                "as_needed",
                "full_time"
              ],
              "enumTitles": [
                "Less than 30 hours per week",
                "30 or more hours per week"
              ]
            }
          },
          "contractToHire": {
            "title": "Contract-to-hire jobs only",
            "type": "boolean",
            "description": "Return only public jobs that can lead to a full-time role.",
            "default": false
          },
          "pageSize": {
            "title": "Jobs per Upwork page",
            "enum": [
              "10",
              "20",
              "50"
            ],
            "type": "string",
            "description": "Select the number of jobs that Upwork returns in each search page. A Search URL overrides this value.",
            "default": "10"
          },
          "searchUrls": {
            "title": "Filtered Upwork search URLs",
            "minItems": 1,
            "maxItems": 20,
            "type": "array",
            "description": "Paste public Upwork URLs from /nx/search/jobs/. When present, these URLs override Keyword, Advanced search, Sort results, all filter fields, and Jobs per Upwork page.",
            "items": {
              "type": "string",
              "maxLength": 2048,
              "pattern": "^\\s*[Hh][Tt][Tt][Pp][Ss]://[Ww][Ww][Ww]\\.[Uu][Pp][Ww][Oo][Rr][Kk]\\.[Cc][Oo][Mm](?::443)?/nx/search/jobs/(?:\\?[^#]*)?(?:#.*)?\\s*$"
            }
          },
          "maxItems": {
            "title": "Maximum jobs",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum number of unique jobs to save across the complete run.",
            "default": 20
          },
          "jobUrls": {
            "title": "Upwork job URLs",
            "minItems": 1,
            "maxItems": 5000,
            "type": "array",
            "description": "Fetch known public Upwork jobs. Full job URLs and short /jobs/~02... URLs are supported. A short URL can include one frkscc tracking value, which the Actor removes. Clear Keyword, Search URLs, Advanced search text, and all search filters before you use direct lookup.",
            "items": {
              "type": "string",
              "maxLength": 2048,
              "pattern": "^\\s*[Hh][Tt][Tt][Pp][Ss]://[Ww][Ww][Ww]\\.[Uu][Pp][Ww][Oo][Rr][Kk]\\.[Cc][Oo][Mm](?::443)?/(?:(?:jobs/[^/?#]+|freelance-jobs/apply/[^/?#]+)_~02\\d{18,30}/?(?:[?#].*)?|jobs/~02\\d{18,30}/?(?:\\?frkscc=[A-Za-z0-9_-]{1,200})?)\\s*$"
            }
          },
          "fetchDetails": {
            "title": "Fetch full job details",
            "type": "boolean",
            "description": "Add the full public description, eligibility, job activity, and client summary. This makes one extra request per job.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}