{
  "openapi": "3.0.1",
  "info": {
    "title": "Upwork Jobs Scraper - $0.80 / 1000 Jobs",
    "description": "Scrape Upwork job posts as clean JSON: title, full description, budget or hourly range, experience level, skills and post time for any search or the newest-jobs feed, with Upwork's filters. Optional proposals and client stats. No login. $0.80 per 1000 jobs.",
    "version": "0.1",
    "x-build-id": "w6ivakvvrJYgjRKuU"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapeunblocker~upwork-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapeunblocker-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/scrapeunblocker~upwork-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapeunblocker-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/scrapeunblocker~upwork-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapeunblocker-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": {
          "searches": {
            "title": "Search terms",
            "type": "array",
            "description": "Keywords to search Upwork jobs for (one search each), e.g. 'python' or 'logo design'. Add '*' (or an empty string through the API) for the newest jobs feed: every new job, newest first.",
            "default": [
              "python"
            ],
            "items": {
              "type": "string"
            }
          },
          "maxResultsPerSearch": {
            "title": "Max jobs per search",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "How many jobs to collect for each search (1-5000). Upwork shows signed-out visitors the first 5000 results of a search.",
            "default": 50
          },
          "includeDetails": {
            "title": "Add job page details",
            "type": "boolean",
            "description": "On: every job also gets what its Upwork job page shows - number of proposals, interviews, invites sent, hires, positions to hire, the client's last activity, qualifications, the category and the client's country, city, payment verification, rating, review count, total spent, hires and member-since date (never the client's name). One more request per job, so a run takes longer; each job that comes back with its page details is also charged the 'job-details' event. Private listings are marked 'privateListing: true' and not charged for details.",
            "default": false
          },
          "jobType": {
            "title": "Job type",
            "enum": [
              "",
              "hourly",
              "fixed"
            ],
            "type": "string",
            "description": "Only hourly or only fixed-price jobs.",
            "default": ""
          },
          "experienceLevel": {
            "title": "Experience level",
            "type": "array",
            "description": "Only jobs asking for these experience levels. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "entry",
                "intermediate",
                "expert"
              ],
              "enumTitles": [
                "Entry level",
                "Intermediate",
                "Expert"
              ]
            },
            "default": []
          },
          "fixedPriceMin": {
            "title": "Fixed-price budget from (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Only fixed-price jobs with a budget of at least this many US dollars."
          },
          "fixedPriceMax": {
            "title": "Fixed-price budget up to (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Only fixed-price jobs with a budget of at most this many US dollars."
          },
          "hourlyRateMin": {
            "title": "Hourly rate from (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Only hourly jobs paying at least this hourly rate."
          },
          "hourlyRateMax": {
            "title": "Hourly rate up to (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Only hourly jobs paying at most this hourly rate."
          },
          "clientHires": {
            "title": "Client's past hires",
            "type": "array",
            "description": "Only jobs from clients with this many past hires. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "0",
                "1-9",
                "10-"
              ],
              "enumTitles": [
                "No hires yet",
                "1 to 9 hires",
                "10 or more hires"
              ]
            },
            "default": []
          },
          "workload": {
            "title": "Hours per week",
            "enum": [
              "",
              "part_time",
              "full_time"
            ],
            "type": "string",
            "description": "Only hourly jobs with this workload.",
            "default": ""
          },
          "projectLength": {
            "title": "Project length",
            "type": "array",
            "description": "Only jobs with these project lengths. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "week",
                "month",
                "semester",
                "ongoing"
              ],
              "enumTitles": [
                "Less than 1 month",
                "1 to 3 months",
                "3 to 6 months",
                "More than 6 months"
              ]
            },
            "default": []
          },
          "clientLocations": {
            "title": "Client locations",
            "type": "array",
            "description": "Only jobs from clients in these regions or countries, written as Upwork names them, e.g. 'Europe', 'Americas', 'United States', 'Germany'.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Only jobs in these Upwork categories. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "531770282584862721",
                "531770282580668416",
                "531770282580668417",
                "531770282580668420",
                "531770282580668421",
                "531770282584862722",
                "531770282580668419",
                "531770282584862723",
                "531770282580668422",
                "531770282584862720",
                "531770282580668418",
                "531770282580668423"
              ],
              "enumTitles": [
                "Accounting & Consulting",
                "Admin Support",
                "Customer Service",
                "Data Science & Analytics",
                "Design & Creative",
                "Engineering & Architecture",
                "IT & Networking",
                "Legal",
                "Sales & Marketing",
                "Translation",
                "Web, Mobile & Software Dev",
                "Writing"
              ]
            },
            "default": []
          },
          "contractToHire": {
            "title": "Contract-to-hire only",
            "type": "boolean",
            "description": "Only jobs open to a contract-to-hire arrangement.",
            "default": false
          },
          "sort": {
            "title": "Sort by",
            "enum": [
              "",
              "relevance",
              "recency"
            ],
            "type": "string",
            "description": "Order of the jobs.",
            "default": ""
          },
          "concurrency": {
            "title": "Parallel searches",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many searches to run at the same time (1-5).",
            "default": 2
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}