{
  "openapi": "3.0.1",
  "info": {
    "title": "Prace.cz Scraper: Czech Jobs, Salaries & Companies",
    "description": "Scrape Prace.cz jobs with salary, company, region and remote work. Track new and removed jobs, get a salary summary and optional ARES company data. Unofficial.",
    "version": "0.0",
    "x-build-id": "r828JTlb3QJLGQwuy"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/tsutseisoftware~prace-cz-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-tsutseisoftware-prace-cz-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/tsutseisoftware~prace-cz-scraper/runs": {
      "post": {
        "operationId": "runs-sync-tsutseisoftware-prace-cz-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/tsutseisoftware~prace-cz-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-tsutseisoftware-prace-cz-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": "Prace.cz URLs",
            "type": "array",
            "description": "Search or listing URLs from Prace.cz, e.g. https://www.prace.cz/nabidky/brno/?keywords[]=skladník (set the search and filters on the website and paste the URL), or job URLs, e.g. https://www.prace.cz/nabidka/<id>/. Website filters below are added to these URLs too, unless the URL already sets them.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "searchQueries": {
            "title": "Search queries",
            "type": "array",
            "description": "Keywords to search for, e.g. 'python', 'skladník', 'účetní'. Each query is a separate search (combined with Location and the website filters). At most 20.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "One city or region as in the website URL, e.g. 'praha', 'brno', 'ostrava', 'jihomoravsky-kraj', 'stredocesky-kraj', 'zahranici' (abroad). Czech names work too ('Jihomoravský kraj'). Used for Search queries and website filters, not for Prace.cz URLs. For several places use Locations."
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Several cities or regions, one search each (e.g. 'praha', 'brno', 'ostrava'), at most 20. Same format as Location; both can be used together. Not used for Prace.cz URLs.",
            "items": {
              "type": "string"
            }
          },
          "regions": {
            "title": "Regions",
            "type": "array",
            "description": "Only jobs in these regions (kraj). Without a Location and without Prace.cz URLs, the actor runs one search per region on the website, so you pay and wait only for those jobs. Otherwise it checks the region of each job's place of work and skips jobs it can't place (e.g. \"Česko\" for the whole country).",
            "items": {
              "type": "string",
              "enum": [
                "praha",
                "stredocesky-kraj",
                "jihocesky-kraj",
                "plzensky-kraj",
                "karlovarsky-kraj",
                "ustecky-kraj",
                "liberecky-kraj",
                "kralovehradecky-kraj",
                "pardubicky-kraj",
                "kraj-vysocina",
                "jihomoravsky-kraj",
                "olomoucky-kraj",
                "zlinsky-kraj",
                "moravskoslezsky-kraj"
              ],
              "enumTitles": [
                "Prague (Hlavní město Praha)",
                "Central Bohemia (Středočeský kraj)",
                "South Bohemia (Jihočeský kraj)",
                "Plzeň (Plzeňský kraj)",
                "Karlovy Vary (Karlovarský kraj)",
                "Ústí nad Labem (Ústecký kraj)",
                "Liberec (Liberecký kraj)",
                "Hradec Králové (Královéhradecký kraj)",
                "Pardubice (Pardubický kraj)",
                "Vysočina (Kraj Vysočina)",
                "South Moravia (Jihomoravský kraj)",
                "Olomouc (Olomoucký kraj)",
                "Zlín (Zlínský kraj)",
                "Moravia-Silesia (Moravskoslezský kraj)"
              ]
            }
          },
          "maxItems": {
            "title": "Max jobs",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of jobs saved. You pay per saved job. 0 = no limit.",
            "default": 100
          },
          "maxItemsPerStartUrl": {
            "title": "Max jobs per search",
            "minimum": 0,
            "type": "integer",
            "description": "Limit for each search query or URL separately, so one large search doesn't use up the whole Max jobs. 0 = no limit.",
            "default": 0
          },
          "includeDetails": {
            "title": "Add description and details",
            "type": "boolean",
            "description": "Open each job page to add the description (e-mails and phone numbers removed), benefits, required education and languages, contract type, street and whether the advertiser is an agency. Slower: one extra request per job (2 seconds each). Jobs published on an employer's own career site keep the listing data only.",
            "default": false
          },
          "descriptionMaxLength": {
            "title": "Description length limit",
            "minimum": 0,
            "type": "integer",
            "description": "With \"Add description and details\": shorten the description to about this many characters (e.g. 300 for a snippet). 0 = full text.",
            "default": 0
          },
          "jobTypes": {
            "title": "Employment type",
            "type": "array",
            "description": "Only these employment types, as in the website's filter. Several values = any of them.",
            "items": {
              "type": "string",
              "enum": [
                "fullTime",
                "partTime",
                "temporary",
                "internship"
              ],
              "enumTitles": [
                "Full-time (plný úvazek)",
                "Part-time (zkrácený úvazek)",
                "Temporary / side job (brigáda)",
                "Internship (stáž)"
              ]
            }
          },
          "contractTypes": {
            "title": "Contract type",
            "type": "array",
            "description": "Only these contract types. Several values = any of them.",
            "items": {
              "type": "string",
              "enum": [
                "employee",
                "freelance",
                "workAgreement"
              ],
              "enumTitles": [
                "Employment contract (pracovní smlouva)",
                "Self-employed / ICO (živnost)",
                "Work agreement DPP/DPČ (dohoda)"
              ]
            }
          },
          "education": {
            "title": "Education",
            "type": "array",
            "description": "Only jobs for these education levels, as in the website's filter.",
            "items": {
              "type": "string",
              "enum": [
                "elementary",
                "apprenticeship",
                "highSchool",
                "university"
              ],
              "enumTitles": [
                "Elementary (základní)",
                "Apprenticeship (vyučení)",
                "High school with diploma (maturita)",
                "University (vysokoškolské)"
              ]
            }
          },
          "minSalary": {
            "title": "Salary from (CZK per month)",
            "minimum": 0,
            "type": "integer",
            "description": "Only jobs offering at least this monthly salary, e.g. 40000. The website also matches jobs whose employer hid the salary on the page; such jobs are returned without a salary (combine with \"Only jobs with a salary\" to skip them)."
          },
          "workArrangement": {
            "title": "Work from home / remote",
            "type": "array",
            "description": "Only jobs with this place of work.",
            "items": {
              "type": "string",
              "enum": [
                "onsite",
                "hybrid",
                "remote"
              ],
              "enumTitles": [
                "On site (na pracovišti)",
                "Hybrid (částečně z domova)",
                "Remote (převážně z domova)"
              ]
            }
          },
          "languages": {
            "title": "Language skills",
            "type": "array",
            "description": "Only jobs that ask for one of these languages.",
            "items": {
              "type": "string",
              "enum": [
                "cs",
                "en",
                "de",
                "fr",
                "ru",
                "pl",
                "it",
                "es"
              ],
              "enumTitles": [
                "Czech",
                "English",
                "German",
                "French",
                "Russian",
                "Polish",
                "Italian",
                "Spanish"
              ]
            }
          },
          "suitableFor": {
            "title": "Suitable for",
            "type": "array",
            "description": "Only jobs the employer marked as suitable for these groups.",
            "items": {
              "type": "string",
              "enum": [
                "noExperience",
                "graduates",
                "seniors",
                "parentsOnLeave",
                "disabled",
                "refugees"
              ],
              "enumTitles": [
                "No experience needed",
                "Graduates",
                "Seniors / pensioners",
                "Parents on leave",
                "People with disabilities",
                "Refugees from Ukraine"
              ]
            }
          },
          "employerType": {
            "title": "Employer type",
            "enum": [
              "any",
              "directEmployer",
              "agency"
            ],
            "type": "string",
            "description": "Direct employers only (no recruitment agencies), or agencies only. Sets isAgency in the results.",
            "default": "any"
          },
          "postedWithinDays": {
            "title": "Posted in the last N days",
            "minimum": 0,
            "type": "integer",
            "description": "Only jobs posted in the last N days. 1, 3 and 7 days are applied by the website; other values are checked by the actor on the posting date. 0 = any time."
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Only jobs in at least one of these categories (obor), as listed on the website. Checked by the actor on each job, so combine it with a search or location to save time.",
            "items": {
              "type": "string",
              "enum": [
                "Administrativa",
                "Auto - moto",
                "Bankovnictví a finanční služby",
                "Cestovní ruch a ubytování",
                "Doprava, logistika a zásobování",
                "Ekonomika a podnikové finance",
                "Elektrotechnika a energetika",
                "Farmacie",
                "Gastronomie a pohostinství",
                "IS/IT: Konzultace, analýzy a projektové řízení",
                "IS/IT: Správa systémů a HW",
                "IS/IT: Vývoj aplikací a systémů",
                "Kultura, umění a tvůrčí práce",
                "Kvalita a kontrola jakosti",
                "Marketing",
                "Média, reklama a PR",
                "Nákup",
                "Ostraha a bezpečnost",
                "Personalistika a HR",
                "Pojišťovnictví",
                "Potravinářství",
                "Prodej a obchod",
                "Právní služby",
                "Řemeslné a manuální práce",
                "Služby",
                "Stavebnictví a reality",
                "Strojírenství",
                "Státní a veřejná správa",
                "Technika a vývoj",
                "Telekomunikace",
                "Věda a výzkum",
                "Vrcholový management",
                "Výroba a průmysl",
                "Vzdělávání a školství",
                "Zákaznický servis",
                "Zdravotnictví a sociální péče",
                "Zemědělství, lesnictví a ekologie"
              ],
              "enumTitles": [
                "Administrativa (Administration)",
                "Auto - moto (Automotive)",
                "Bankovnictví a finanční služby (Banking & financial services)",
                "Cestovní ruch a ubytování (Tourism & accommodation)",
                "Doprava, logistika a zásobování (Transport, logistics & supply)",
                "Ekonomika a podnikové finance (Economics & corporate finance)",
                "Elektrotechnika a energetika (Electrical engineering & energy)",
                "Farmacie (Pharmacy)",
                "Gastronomie a pohostinství (Gastronomy & hospitality)",
                "IS/IT: Konzultace, analýzy a projektové řízení (IT: consulting, analysis & project management)",
                "IS/IT: Správa systémů a HW (IT: system administration & hardware)",
                "IS/IT: Vývoj aplikací a systémů (IT: software development)",
                "Kultura, umění a tvůrčí práce (Culture, arts & creative work)",
                "Kvalita a kontrola jakosti (Quality control)",
                "Marketing",
                "Média, reklama a PR (Media, advertising & PR)",
                "Nákup (Purchasing)",
                "Ostraha a bezpečnost (Security)",
                "Personalistika a HR (HR)",
                "Pojišťovnictví (Insurance)",
                "Potravinářství (Food industry)",
                "Prodej a obchod (Sales & trade)",
                "Právní služby (Legal services)",
                "Řemeslné a manuální práce (Crafts & manual work)",
                "Služby (Services)",
                "Stavebnictví a reality (Construction & real estate)",
                "Strojírenství (Mechanical engineering)",
                "Státní a veřejná správa (Public administration)",
                "Technika a vývoj (Engineering & R&D)",
                "Telekomunikace (Telecommunications)",
                "Věda a výzkum (Science & research)",
                "Vrcholový management (Top management)",
                "Výroba a průmysl (Manufacturing & industry)",
                "Vzdělávání a školství (Education)",
                "Zákaznický servis (Customer service)",
                "Zdravotnictví a sociální péče (Healthcare & social care)",
                "Zemědělství, lesnictví a ekologie (Agriculture, forestry & ecology)"
              ]
            }
          },
          "onlyWithSalary": {
            "title": "Only jobs with a salary",
            "type": "boolean",
            "description": "Skip jobs that don't show a salary on the website.",
            "default": false
          },
          "titleKeywords": {
            "title": "Title must contain",
            "type": "array",
            "description": "Keep only jobs whose title contains at least one of these words (case and diacritics don't matter).",
            "items": {
              "type": "string"
            }
          },
          "excludeKeywords": {
            "title": "Title must not contain",
            "type": "array",
            "description": "Skip jobs whose title contains any of these words, e.g. 'senior', 'brigáda'.",
            "items": {
              "type": "string"
            }
          },
          "companies": {
            "title": "Company",
            "type": "array",
            "description": "Keep only jobs of companies whose name contains one of these texts, e.g. 'Škoda', 'O2'.",
            "items": {
              "type": "string"
            }
          },
          "excludeCompanies": {
            "title": "Exclude companies",
            "type": "array",
            "description": "Skip jobs of companies whose name contains any of these texts.",
            "items": {
              "type": "string"
            }
          },
          "includeCompanyInfo": {
            "title": "Add company data from ARES (extra charge)",
            "type": "boolean",
            "description": "Add data about the employer from ARES, the public register of economic subjects of the Czech Ministry of Finance: IČO (company ID), legal form, registered office, employee count range, main activity (CZ-NACE) and founding date. Off by default: when off, the actor never contacts ARES. Extra charge \"Company info\" (see the Pricing tab) only for saved jobs whose company data were found and returned; jobs without a match cost nothing extra. Matching is by the exact company name including its legal form, so some jobs stay without company data. Recruitment agencies (when known) and private persons are never looked up or returned. About 1 second per new company name.",
            "default": false
          },
          "includeRecruiterContacts": {
            "title": "Include recruiter contacts (personal data)",
            "type": "boolean",
            "description": "Off by default. Adds recruiterName, recruiterPhone and recruiterEmail exactly as the job page shows them in its \"Kontaktní údaje\" block (the site almost never shows an e-mail, so recruiterEmail is nearly always empty). Needs \"Add description and details\". Never for private employers or jobs on career sites; nothing is guessed or looked up elsewhere, and e-mails and phones in descriptions stay removed. These are personal data and YOU are the data controller (GDPR): use them only to contact the person about that specific job ad, inform them (Art. 14 GDPR) at the latest when you first contact them, respect objections and delete the data when no longer needed. Commercial e-mails/SMS without prior consent (Act 480/2004 Coll., § 7) and marketing calls without consent (Act 127/2005 Coll., § 96) are illegal in Czechia, also to business addresses and numbers. Don't use the contacts for marketing, don't resell them and don't build contact databases. No extra charge.",
            "default": false
          },
          "onlyNewOrChanged": {
            "title": "Monitoring: only new or changed jobs",
            "type": "boolean",
            "description": "Return only jobs that are new or whose title, company, salary, place or type of work changed since the previous run with the same Monitoring key. Unchanged jobs are free.",
            "default": false
          },
          "monitoringKey": {
            "title": "Monitoring: key",
            "type": "string",
            "description": "Name of the saved state. Use a different key for each watched search (e.g. 'python-praha').",
            "default": "default"
          },
          "includeRemovedJobs": {
            "title": "Monitoring: include removed jobs",
            "type": "boolean",
            "description": "With \"Monitoring: only new or changed jobs\": also return jobs from the previous run with the same Monitoring key that are no longer in the search, as rows with changeType \"removed\", removedAt, firstSeenAt, daysOnline and the last known title, company, place, salary and URL. Checked only when the run reads the whole search (Max jobs, Max jobs per search, Max pages per search, unread pages or rejected requests skip the check, and the status message says why). Removed rows are normal dataset rows and are charged like any other job.",
            "default": false
          },
          "fastMode": {
            "title": "Fast mode (small extra charge)",
            "type": "boolean",
            "description": "Reads Prace.cz up to 4x faster: at most 120 requests per minute and 4 at a time instead of 30 per minute and 2 at a time. It stays polite: the moment the website answers \"too many requests\", \"service unavailable\" or slows down, the run switches back to the normal speed for the rest of the run, it waits when the website asks it to wait, and it never changes IP address to get around a limit. Extra charge \"Fast mode\" (see the Pricing tab, $0.01 per 1 000 jobs) only for jobs saved while the fast speed was on. Limits (Max jobs, Max pages) stay the same. Please don't run several fast-mode runs at the same time.",
            "default": false
          },
          "maxPages": {
            "title": "Max pages per search",
            "minimum": 0,
            "type": "integer",
            "description": "Safety limit for each search or URL (40 jobs per page). The website itself shows at most 250 pages (10 000 jobs) per search. 0 = no limit.",
            "default": 50
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Not needed: Prace.cz works without a proxy, including from Apify servers. You can use Apify Proxy or your own proxies if you prefer.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}