{
  "openapi": "3.0.1",
  "info": {
    "title": "Upwork Job Scraper | Live Jobs, No Login, Filters & Scoring",
    "description": "Search public Upwork jobs without a login or user-provided cookies. Filter budgets, skills and experience; review opportunity scores and incremental new-job feeds. Source availability varies. Pay for delivered jobs.",
    "version": "0.1",
    "x-build-id": "OESEFGaRnkeTlbmOQ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/apivault_labs~upwork-job-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-apivault_labs-upwork-job-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/apivault_labs~upwork-job-scraper/runs": {
      "post": {
        "operationId": "runs-sync-apivault_labs-upwork-job-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/apivault_labs~upwork-job-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-apivault_labs-upwork-job-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": {
          "searchQuery": {
            "title": "Search keyword",
            "type": "string",
            "description": "Keyword / phrase to search Upwork jobs for, e.g. \"python developer\", \"logo design\", \"shopify\". Leave empty to pull the latest jobs across all categories."
          },
          "sort": {
            "title": "Sort by",
            "enum": [
              "recency",
              "relevance"
            ],
            "type": "string",
            "description": "Order of jobs returned.",
            "default": "recency"
          },
          "maxResults": {
            "title": "Max jobs to return",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Hard cap on how many jobs to return (and be charged for). Upwork paginates up to ~5000.",
            "default": 5
          },
          "maxCostUsd": {
            "title": "Max cost (USD)",
            "minimum": 0,
            "type": "number",
            "description": "Conservative cap on job event charges using the highest published job rate and a start allowance. Proxy and platform resources are additional; use the Apify run charge limit for event enforcement.",
            "default": 0
          },
          "jobType": {
            "title": "Job type",
            "enum": [
              "",
              "hourly",
              "fixed"
            ],
            "type": "string",
            "description": "Keep only hourly or only fixed-price jobs.",
            "default": ""
          },
          "experienceLevel": {
            "title": "Experience level",
            "enum": [
              "",
              "Entry",
              "Intermediate",
              "Expert"
            ],
            "type": "string",
            "description": "Keep only jobs at this experience level.",
            "default": ""
          },
          "minBudget": {
            "title": "Min budget",
            "minimum": 0,
            "type": "integer",
            "description": "Only jobs whose budget (fixed price, or max hourly rate) is at least this. Empty = no minimum."
          },
          "requiredSkills": {
            "title": "Required skills",
            "type": "array",
            "description": "Keep only jobs that list at least one of these skills, e.g. [\"React\", \"Django\"].",
            "items": {
              "type": "string"
            }
          },
          "urgentOnly": {
            "title": "Urgent jobs only",
            "type": "boolean",
            "description": "Keep only jobs whose title/description signals urgency (urgent, asap, deadline…).",
            "default": false
          },
          "minOpportunityScore": {
            "title": "Min opportunity score (0-100)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Keep only jobs scoring at or above this (well-paid, well-specified, higher-tier jobs score higher). 0 = no filter.",
            "default": 0
          },
          "onlyNewJobs": {
            "title": "Only new jobs since last run (incremental)",
            "type": "boolean",
            "description": "Remember jobs seen in previous runs and return only jobs that are new since then. Run on a schedule to get a clean feed of fresh jobs with no repeats.",
            "default": false
          },
          "flatOutput": {
            "title": "Flat output (for spreadsheets / n8n / Zapier)",
            "type": "boolean",
            "description": "Flatten list fields (skills) into single comma-joined columns for easy CSV / Sheets mapping.",
            "default": false
          },
          "includeClientDetails": {
            "title": "Include public client and competition details",
            "type": "boolean",
            "description": "Fetch each selected public job page for visible client spend, hires, payment status and proposal activity. Private or blocked pages keep search data and an explicit status. Adds proxy usage.",
            "default": true
          },
          "maxClientLookups": {
            "title": "Maximum client page lookups",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Bounds additional page requests, including unavailable pages and rows rejected by client filters. The run can return fewer jobs when this limit is reached.",
            "default": 50
          },
          "clientPaymentVerifiedOnly": {
            "title": "Only clients with verified payment",
            "type": "boolean",
            "description": "Requires a public client page showing payment verification. Unknown or unavailable values do not pass.",
            "default": false
          },
          "minClientSpend": {
            "title": "Minimum visible client spend",
            "minimum": 0,
            "type": "number",
            "description": "Minimum lifetime spend exposed in the public client panel. Unknown amounts do not pass. Enables client page lookups."
          },
          "maxProposals": {
            "title": "Maximum proposals",
            "minimum": 0,
            "type": "integer",
            "description": "Keep jobs with an exposed proposal count at or below this value. Unknown values do not pass. Enables client page lookups."
          },
          "incrementalStoreName": {
            "title": "Incremental state store",
            "type": "string",
            "description": "Persistent store owned by your account for onlyNewJobs. Use separate names for separate feeds; keep the same name between runs.",
            "default": "upwork-seen"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}