{
  "openapi": "3.0.1",
  "info": {
    "title": "Upwork Job Scraper - Fresh Jobs & Client Signals",
    "description": "Find fresh Upwork jobs by keyword, filter worthwhile gigs by budget, hourly or fixed type, experience level, proposal count, and title terms, then export clean rows for alerts, lead routing, market research, and workflows. No Upwork login or cookies required.",
    "version": "0.1",
    "x-build-id": "9ESZCWnoYefHqCtze"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/chronometrica~upwork-job-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-chronometrica-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/chronometrica~upwork-job-scraper/runs": {
      "post": {
        "operationId": "runs-sync-chronometrica-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/chronometrica~upwork-job-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-chronometrica-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": {
          "searchTerm": {
            "title": "Keywords",
            "type": "string",
            "description": "Enter one Upwork job keyword, skill, title, or phrase per line. Examples: web scraping, lead generation, data entry, AI automation, Shopify, Python."
          },
          "postedWithin": {
            "title": "Posted within",
            "enum": [
              "any",
              "24h",
              "3d",
              "7d",
              "14d",
              "30d"
            ],
            "type": "string",
            "description": "Keep only jobs posted in this freshness window when publish time is available.",
            "default": "7d"
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "recency",
              "relevance"
            ],
            "type": "string",
            "description": "Choose newest first for job alerts and fast opportunity review, or relevance for broad research.",
            "default": "recency"
          },
          "maxItems": {
            "title": "Jobs to save",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum number of unique job listings to save across all keywords.",
            "default": 25
          },
          "jobType": {
            "title": "Job type",
            "enum": [
              "any",
              "hourly",
              "fixed"
            ],
            "type": "string",
            "description": "Keep hourly jobs, fixed-price jobs, or both.",
            "default": "any"
          },
          "experienceLevel": {
            "title": "Experience level",
            "enum": [
              "any",
              "entry",
              "intermediate",
              "expert"
            ],
            "type": "string",
            "description": "Keep one Upwork experience level, or leave as Any.",
            "default": "any"
          },
          "maxProposalCount": {
            "title": "Maximum proposals",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Skip jobs above this proposal-count ceiling when proposal count is available. Use 0 to keep all.",
            "default": 0
          },
          "minHourlyRate": {
            "title": "Minimum hourly rate",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Keep hourly jobs whose visible max hourly rate is at least this value. Use 0 to keep all.",
            "default": 0
          },
          "maxHourlyRate": {
            "title": "Maximum hourly rate",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Keep hourly jobs whose visible min hourly rate is at most this value. Use 0 to keep all.",
            "default": 0
          },
          "minFixedBudget": {
            "title": "Minimum fixed budget",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "Keep fixed-price jobs where the visible budget is at least this value. Use 0 to keep all.",
            "default": 0
          },
          "maxFixedBudget": {
            "title": "Maximum fixed budget",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "Keep fixed-price jobs where the visible budget is at most this value. Use 0 to keep all.",
            "default": 0
          },
          "titleMustInclude": {
            "title": "Title must include",
            "type": "string",
            "description": "Optional. Enter one word or phrase per line. A job is saved only if its title contains one of these terms.",
            "default": ""
          },
          "titleExclude": {
            "title": "Skip titles containing",
            "type": "string",
            "description": "Optional. Enter one word or phrase per line. Jobs with these words in the title are skipped.",
            "default": ""
          },
          "saveOnlyUniqueItems": {
            "title": "Deduplicate jobs",
            "type": "boolean",
            "description": "Save each Upwork job once, even if it appears under more than one keyword or page.",
            "default": true
          },
          "maxPagesPerSearch": {
            "title": "Search depth",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "How many result pages to check for each keyword. Increase this only when you need more jobs than the first pages return.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}