{
  "openapi": "3.0.1",
  "info": {
    "title": "NoFluffJobs Scraper — IT Jobs & Salary Data API",
    "description": "Export NoFluffJobs job offers with salary ranges per contract, must-have skills, seniority, locations, benefits and recruitment steps. USD 2.50 per 1,000 jobs.",
    "version": "1.0",
    "x-build-id": "0tdKottrIWFdM7sFL"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/muhammadafzal~nofluffjobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-muhammadafzal-nofluffjobs-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/muhammadafzal~nofluffjobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-muhammadafzal-nofluffjobs-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/muhammadafzal~nofluffjobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-muhammadafzal-nofluffjobs-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": {
          "startUrls": {
            "title": "NoFluffJobs URLs",
            "type": "array",
            "description": "Use this for individual job or regional/category pages. Accepts URLs such as https://nofluffjobs.com/job/example-slug or https://nofluffjobs.com/pl/backend. Direct job URLs are always collected; page URLs add region/category filters. Job URLs alone, with no keywords or filters, collect only those jobs.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Use this to keep jobs matching any title, company, technology, or visible skill keyword. Enter literal strings such as Python or Kubernetes. Empty means no keyword filter.",
            "items": {
              "type": "string"
            }
          },
          "region": {
            "title": "Region",
            "enum": [
              "pl",
              "cz",
              "sk",
              "hu",
              "ua"
            ],
            "type": "string",
            "description": "Use this to select the NoFluffJobs market. Choose the site region code; defaults to Poland. This is not a free-form location filter.",
            "default": "pl"
          },
          "categories": {
            "title": "Job categories",
            "uniqueItems": true,
            "type": "array",
            "description": "Use this to keep one or more NoFluffJobs categories such as backend, frontend, data, or devops. Empty means every category. Leave empty with only direct job URLs to collect just those jobs.",
            "items": {
              "type": "string",
              "enum": [
                "backend",
                "frontend",
                "fullstack",
                "mobile",
                "embedded",
                "testing",
                "devops",
                "architecture",
                "security",
                "artificialintelligence",
                "data",
                "businessintelligence",
                "sysadministrator",
                "projectmanager",
                "businessanalyst",
                "productmanagement",
                "agile",
                "ux",
                "support",
                "gamedev",
                "erp",
                "electronics",
                "telecommunication",
                "automation",
                "robotics",
                "sales",
                "marketing",
                "hr",
                "finance",
                "consulting",
                "customerservice",
                "officeadministration",
                "logistics",
                "law",
                "other"
              ]
            }
          },
          "seniority": {
            "title": "Seniority levels",
            "uniqueItems": true,
            "type": "array",
            "description": "Use this to keep jobs at selected experience levels. Empty means all levels; values map to the listing's seniority tags.",
            "items": {
              "type": "string",
              "enum": [
                "Trainee",
                "Junior",
                "Mid",
                "Senior",
                "Lead",
                "Expert"
              ]
            },
            "default": []
          },
          "remoteOnly": {
            "title": "Remote jobs only",
            "type": "boolean",
            "description": "Use this to keep listings that NoFluffJobs marks as fully remote or containing a Remote location. Defaults to false and is not the same as hybrid work.",
            "default": false
          },
          "salaryCurrency": {
            "title": "Salary display currency",
            "enum": [
              "PLN",
              "EUR",
              "USD",
              "GBP",
              "CZK",
              "HUF",
              "UAH"
            ],
            "type": "string",
            "description": "Use this to request list-level salary normalization from NoFluffJobs. Enter a three-letter currency such as PLN, EUR, USD, GBP, CZK, HUF, or UAH. Original detail contracts remain in their published currency.",
            "default": "PLN"
          },
          "salaryPeriod": {
            "title": "Salary display period",
            "enum": [
              "month",
              "hour"
            ],
            "type": "string",
            "description": "Use this to request list-level salary normalization per month or hour. Original detail contracts preserve their published period.",
            "default": "month"
          },
          "enrichDetails": {
            "title": "Enrich job details",
            "type": "boolean",
            "description": "Use this to fetch each public job-detail endpoint for descriptions, contract salaries, must-have skills, benefits, and recruitment steps. Disable for faster list-only collection.",
            "default": true
          },
          "maxResults": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Use this to cap delivered and billable job records. Defaults to 20; accepted range is 1 to 10000. This is not a page limit.",
            "default": 20
          },
          "maxPages": {
            "title": "Maximum listing pages to scan",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "Use this to bound how far keyword filters scan the public listing feed. Defaults to 50; accepted range is 1 to 200. Direct job URLs do not consume this allowance.",
            "default": 50
          },
          "maxConcurrency": {
            "title": "Detail request concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Use this to tune simultaneous public detail requests. Defaults to 8; accepted range is 1 to 20. Higher values may trigger upstream throttling.",
            "default": 8
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}