{
  "openapi": "3.0.1",
  "info": {
    "title": "Workana Jobs Scraper",
    "description": "Scrape open Workana freelance projects across the English, Spanish and Portuguese boards. Every row carries the title, full brief, category and skills, budget band, fixed or hourly, proposal count, client country and rating, and how long ago it was posted. No account needed.",
    "version": "0.1",
    "x-build-id": "JL0Zak7HOk0Ab71fn"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/dami_studio~workana-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-dami_studio-workana-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/dami_studio~workana-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-dami_studio-workana-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/dami_studio~workana-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-dami_studio-workana-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": {
          "searchQuery": {
            "title": "Keyword",
            "type": "string",
            "description": "Free-text search across open Workana projects, e.g. \"wordpress\", \"diseño de logo\", \"tradução\". Leave it empty to take whatever is newest on the boards you selected below."
          },
          "languages": {
            "title": "Project language",
            "type": "array",
            "description": "Workana keeps three separate boards and a project sits on exactly one of them. They do not overlap: the same four pages returned 30 English projects and 32 Spanish ones with nothing in common. Spanish and Portuguese are far larger than English, so tick those if you want volume.",
            "items": {
              "type": "string",
              "enum": [
                "en",
                "es",
                "pt"
              ],
              "enumTitles": [
                "English",
                "Spanish",
                "Portuguese"
              ]
            }
          },
          "maxItems": {
            "title": "Maximum projects",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Hard cap on projects returned across the whole run. You are charged per project you receive; sample and diagnostic rows are free. One search reaches at most 99 pages, so a very large number only pays off if you also tick more languages or add categories."
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Workana's top-level categories. Use the slug from the site's own URL (\"it-programming\", \"design-multimedia\", \"sales-marketing\", \"writing-translation\", \"admin-support\", \"legal\", \"finance-management\", \"engineering-manufacturing\"). Each category is searched separately.",
            "items": {
              "type": "string"
            }
          },
          "subcategories": {
            "title": "Subcategories",
            "type": "array",
            "description": "More specific than a category, and again the slug from the URL: \"web-development\", \"mobile-development\", \"e-commerce\", \"wordpress-1\", \"data-science-1\". Searched separately from the categories above, not combined with them.",
            "items": {
              "type": "string"
            }
          },
          "skills": {
            "title": "Skills",
            "type": "array",
            "description": "Only return projects tagged with these skills. Use the slug Workana uses in its own skill links — \"adobe-photoshop\", \"microsoft-excel\", \"logo-design-1\". A wrong slug quietly matches nothing rather than erroring, so check one against a live Workana search first.",
            "items": {
              "type": "string"
            }
          },
          "clientCountries": {
            "title": "Client country",
            "type": "array",
            "description": "Two-letter country codes for the client who posted the project: \"BR\", \"MX\", \"AR\", \"CO\", \"US\", \"ES\". Each is searched separately. Brazil dominates the Portuguese board; Argentina, Colombia and Mexico the Spanish one.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Workana search URLs",
            "type": "array",
            "description": "Paste the address bar from a Workana search you already set up, e.g. https://www.workana.com/jobs?category=it-programming&language=es — the filters are read straight out of it. When you use this, the fields above are ignored except the keyword.",
            "items": {
              "type": "string"
            }
          },
          "projectType": {
            "title": "Project type",
            "enum": [
              "any",
              "fixed",
              "hourly"
            ],
            "type": "string",
            "description": "Fixed-price projects quote a total; hourly projects quote a rate per hour. Workana has no server-side filter for this, so it is applied here after the listing is read — projects that do not match are dropped and never charged."
          },
          "maxProposals": {
            "title": "Maximum proposals",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only projects with at most this many proposals. Set it to 5 if you are looking for work nobody has quoted on yet — plenty of rows come back at 0."
          },
          "minProposals": {
            "title": "Minimum proposals",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only projects with at least this many proposals. Useful the other way round, for reading what a busy brief looks like."
          },
          "postedWithinDays": {
            "title": "Posted within (days)",
            "minimum": 1,
            "maximum": 365,
            "type": "integer",
            "description": "Keep only projects posted in the last N days. Workana publishes an age (\"5 hours ago\", \"2 weeks ago\") rather than a timestamp, so this is accurate to the hour on fresh projects and to the week on older ones. Every row carries postedAtPrecision so you can see which."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. Leave this alone unless you need the run to go out through a particular network. Your own proxy servers are used exactly as given."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}