{
  "openapi": "3.0.1",
  "info": {
    "title": "Upwork Jobs Scraper | Skills, Budgets & Filters",
    "description": "Find public Upwork jobs by search query, job type, experience and rate filters. Export titles, descriptions, skills, budgets and job links for freelance research. Source availability and filter coverage may change.",
    "version": "0.1",
    "x-build-id": "U1Y0mfMhrEnrOEfT7"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/keystonelabs~upwork-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-keystonelabs-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/keystonelabs~upwork-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-keystonelabs-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/keystonelabs~upwork-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-keystonelabs-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",
        "required": [
          "searchQueries"
        ],
        "properties": {
          "searchQueries": {
            "title": "Search queries",
            "minItems": 1,
            "type": "array",
            "description": "One search per line, exactly as you would type it into the Upwork job search box: keywords, a skill, a category name (web development), a quoted phrase (\"react native\"), or operators (python AND scraping). Use * to list the newest jobs across all categories.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max jobs",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after this many unique jobs across all queries. Upwork exposes at most 5,050 results per query, so use several narrower queries to go deeper.",
            "default": 100
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "recency",
              "relevance",
              "client_total_charge",
              "client_rating"
            ],
            "type": "string",
            "description": "Order of results within each query. Newest first is best for job-alert feeds; relevance is best for keyword research.",
            "default": "recency"
          },
          "jobType": {
            "title": "Job type",
            "enum": [
              "any",
              "hourly",
              "fixed"
            ],
            "type": "string",
            "description": "Only hourly jobs, only fixed-price jobs, or both.",
            "default": "any"
          },
          "experienceLevels": {
            "title": "Experience level",
            "type": "array",
            "description": "Keep only jobs posted for these experience levels. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "EntryLevel",
                "IntermediateLevel",
                "ExpertLevel"
              ],
              "enumTitles": [
                "Entry level",
                "Intermediate",
                "Expert"
              ]
            },
            "default": []
          },
          "hourlyRateMin": {
            "title": "Min hourly rate (USD)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Keep hourly jobs whose rate range reaches at least this much. Fixed-price jobs are not affected by rate filters."
          },
          "hourlyRateMax": {
            "title": "Max hourly rate (USD)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Keep hourly jobs whose rate range starts at or below this much."
          },
          "clientHires": {
            "title": "Client hiring history",
            "type": "array",
            "description": "Keep only jobs from clients with this many previous hires on Upwork. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "0",
                "1-9",
                "10-"
              ],
              "enumTitles": [
                "No hires yet",
                "1 to 9 hires",
                "10 or more hires"
              ]
            },
            "default": []
          },
          "clientLocations": {
            "title": "Client countries",
            "type": "array",
            "description": "Full country names as Upwork spells them, one per line, e.g. United States, United Kingdom, Germany, Canada, Australia. Leave empty for worldwide.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "workload": {
            "title": "Hours per week",
            "type": "array",
            "description": "Keep only hourly jobs with this expected workload. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "as_needed",
                "part_time",
                "full_time"
              ],
              "enumTitles": [
                "As needed",
                "Part time (under 30 hrs/week)",
                "Full time (30+ hrs/week)"
              ]
            },
            "default": []
          },
          "contractToHireOnly": {
            "title": "Contract-to-hire only",
            "type": "boolean",
            "description": "Keep only jobs the client flagged as contract-to-hire.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many result pages to request in parallel. The default is polite and still fast; raise it only for very large runs.",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. The actor finds a working path on its own — it tries Firefox and Chrome browser fingerprints over a direct connection, then datacenter proxies, then residential — and keeps whichever Upwork accepts. Set this only to force one specific proxy group.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}