{
  "openapi": "3.0.1",
  "info": {
    "title": "Upwork Jobs Scraper - Search & All Current Freelance Jobs",
    "description": "Scrape public Upwork freelance jobs from the all-current feed or optional English keywords. Export titles, budget, skills, client signals, and job links with residential-proxy support.",
    "version": "0.2",
    "x-build-id": "NEnpdoF6oe1AUZQ4O"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/lentic_clockss~upwork-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-lentic_clockss-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/lentic_clockss~upwork-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-lentic_clockss-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/lentic_clockss~upwork-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-lentic_clockss-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": {
          "collectionSurface": {
            "title": "Collection surface",
            "enum": [
              "jobs",
              "freelancers",
              "services",
              "sitemap"
            ],
            "type": "string",
            "description": "Which public Upwork surface to collect: job search (default), freelancer profiles, the project catalog, or sitemap enumeration.",
            "default": "jobs"
          },
          "keywords": {
            "title": "Search keywords",
            "maxItems": 10,
            "type": "array",
            "description": "Optional Upwork job search phrases. Leave empty to collect the unfiltered all-jobs feed.",
            "items": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            "default": []
          },
          "maxPagesPerKeyword": {
            "title": "Pages per keyword",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Maximum number of Upwork result pages to visit for each keyword.",
            "default": 1
          },
          "maxItems": {
            "title": "Max results per keyword or URL",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum Dataset rows for each keyword, freelancer profile URL, or freelancer category URL (1–500). Default: 70. Larger requests are collected in parts of at most 70 rows when continuation is available. All row types count together, and the run stops at your maximum total charge. Free Apify plan: 200 rows per run and 10 runs.",
            "default": 70
          },
          "sort": {
            "title": "Sort order",
            "enum": [
              "recency",
              "relevance"
            ],
            "type": "string",
            "description": "Sort Upwork search results by newest jobs or relevance.",
            "default": "recency"
          },
          "scrapeDetails": {
            "title": "Enrich from job detail pages",
            "type": "boolean",
            "description": "Jobs surface only: visit a bounded number of public job detail pages to fill client country/city/spend, proposal, and rate fields. Guest search cards omit those fields, so this defaults on.",
            "default": true
          },
          "maxDetailItems": {
            "title": "Maximum detail pages",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum job detail pages to visit when detail enrichment is enabled.",
            "default": 5
          },
          "profileUrls": {
            "title": "Freelancer profile URLs",
            "type": "array",
            "description": "Public freelancer profile URLs (https://www.upwork.com/freelancers/...). Only used when collectionSurface is \"freelancers\".",
            "items": {
              "type": "string"
            }
          },
          "categoryUrls": {
            "title": "Freelancer category URLs",
            "type": "array",
            "description": "Category landing pages that list freelancer cards (e.g. https://www.upwork.com/hire/ai-generated-video-specialists/). Only used when collectionSurface is \"freelancers\" and no profile URLs are given; maxPagesPerKeyword caps how many are read.",
            "items": {
              "type": "string"
            }
          },
          "maxShards": {
            "title": "Maximum sitemap shards",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "Maximum sitemap shards to read (0 = unlimited). Only used when collectionSurface is \"sitemap\".",
            "default": 0
          },
          "maxUrlsPerShard": {
            "title": "Maximum URLs per shard",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum URLs to read from each sitemap shard (0 = unlimited). Only used when collectionSurface is \"sitemap\".",
            "default": 0
          },
          "timeoutSecs": {
            "title": "Request timeout",
            "minimum": 30,
            "maximum": 180,
            "type": "integer",
            "description": "Maximum HTTP request timeout in seconds.",
            "default": 90
          },
          "debug": {
            "title": "Save debug artifacts",
            "type": "boolean",
            "description": "Save bounded diagnostics for blocked or unrecognized pages. Enable only while troubleshooting.",
            "default": false
          },
          "workerBaseUrl": {
            "title": "Worker base URL (optional)",
            "type": "string",
            "description": "Override worker origin for this run. Default: Actor env WORKER_BASE_URL. Production migrations should update WORKER_BASE_URL in Actor settings (no code change)."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}