{
  "openapi": "3.0.1",
  "info": {
    "title": "HH.ru Jobs Scraper: Вакансии HH.ru, Salaries, Skills & Ratings",
    "description": "Scrape job vacancies from HH.ru (HeadHunter), Russia's largest job board. Search by keyword, city, experience, salary range, and remote flag. Returns title, salary, employer name, rating, review count, trusted-employer flag, viewer count, key skills, and full descriptions. No API key needed.",
    "version": "0.3",
    "x-build-id": "6gqQ5DTInvAx2hpcN"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/getascraper~hh-ru-jobs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-getascraper-hh-ru-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/getascraper~hh-ru-jobs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-getascraper-hh-ru-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/getascraper~hh-ru-jobs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-getascraper-hh-ru-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": {
          "keywords": {
            "title": "Search keywords",
            "type": "string",
            "description": "Job title or keywords to search for, e.g. 'Python developer' or 'менеджер продукта'. Leave blank to return all vacancies in the selected area.",
            "default": ""
          },
          "city": {
            "title": "City",
            "type": "string",
            "description": "City or region name in Russian or English, e.g. 'Москва', 'moscow', 'Saint Petersburg'. Resolved to an HH.ru area ID automatically. Use 'areaId' if you need a specific area not recognised here.",
            "default": ""
          },
          "areaId": {
            "title": "Area ID (advanced)",
            "type": "integer",
            "description": "HH.ru internal area ID. 113 = all Russia, 1 = Moscow, 2 = Saint Petersburg. Overrides the city field when set to anything other than 113 (all Russia). Full list: https://api.hh.ru/areas/113",
            "default": 113
          },
          "salaryFrom": {
            "title": "Minimum salary (RUB)",
            "minimum": 0,
            "type": "integer",
            "description": "Return only vacancies with salary at or above this value. HH.ru filters by this on their end."
          },
          "salaryTo": {
            "title": "Maximum salary (RUB)",
            "minimum": 0,
            "type": "integer",
            "description": "Return only vacancies with salary at or below this value. Applied as a post-filter (HH.ru has no server-side max-salary param)."
          },
          "experience": {
            "title": "Experience level",
            "enum": [
              "noExperience",
              "between1And3",
              "between3And6",
              "moreThan6"
            ],
            "type": "string",
            "description": "Required years of experience."
          },
          "employment": {
            "title": "Employment types",
            "type": "array",
            "description": "Employment types to include. Leave empty for all.",
            "default": []
          },
          "onlyRemote": {
            "title": "Remote only",
            "type": "boolean",
            "description": "Return only vacancies with a remote work schedule.",
            "default": false
          },
          "orderBy": {
            "title": "Sort order",
            "enum": [
              "relevance",
              "publication_time",
              "salary_desc",
              "salary_asc"
            ],
            "type": "string",
            "description": "How to sort search results.",
            "default": "relevance"
          },
          "maxItems": {
            "title": "Max vacancies",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of vacancies to return.",
            "default": 25
          },
          "fetchDetails": {
            "title": "Fetch full details (slower)",
            "type": "boolean",
            "description": "When enabled, fetches each vacancy's detail page to add the full description text and key skills array. Roughly doubles the number of HTTP requests and run time.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Datacenter proxies are confirmed sufficient for hh.ru and cost far less. Switch to Residential only if you encounter blocks at very high volume.",
            "default": {
              "useApifyProxy": true
            }
          },
          "enrichEmails": {
            "title": "Find employer emails",
            "type": "boolean",
            "description": "When on, each company in the results is looked up once and a public contact email from the company's own website is added to its rows, with the website it came from. Companies whose site shows no email are marked as not found. Individual entrepreneurs only get a general company address such as info@, never a personal one. Makes the run slower: about 15 seconds per company, several at a time. Choose 512 MB memory or more for runs with this on, so every company is looked up. Off by default.",
            "default": false
          },
          "monitorMode": {
            "title": "Monitoring mode (only new & changed)",
            "type": "boolean",
            "description": "When on, the run returns only vacancies that are new or have changed since the last run that used the same monitor name. Each returned vacancy is tagged with changeType (new/updated), firstSeen, and lastSeen. Ideal for scheduled runs that watch a search. Requires a monitor name below. Off by default.",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "A short name that identifies this monitor's memory, e.g. 'python-moscow'. Reuse the same name on each run (or schedule) to compare against what was seen before. Required when monitoring mode is on.",
            "default": ""
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}