# Hh Jobs Details Scraper (`soft_alexist/hh-jobs-details-scraper`) Actor

Scrape detailed job vacancies from HH.ru, Russia's largest employment portal. Collect vacancy IDs, titles, compensation, company profiles, location data, work conditions, and 60+ structured fields per listing — perfect for recruitment analytics, market research, and job aggregation.

- **URL**: https://apify.com/soft\_alexist/hh-jobs-details-scraper.md
- **Developed by:** [Soft Alexist](https://apify.com/soft_alexist) (community)
- **Categories:** Automation, Developer tools, Jobs
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## HH.ru Jobs Scraper: Extract Russian Job Data Efficiently

---

### About HH.ru

HH.ru is the leading employment portal in Russia and Eastern Europe, hosting millions of active job vacancies across all industries and experience levels. The platform connects employers with millions of job seekers, making it an invaluable source for recruitment intelligence, labor market research, and competitive hiring analysis. Manually extracting data from HH.ru listings is tedious and error-prone — the **HH.ru Jobs Scraper** automates this, delivering complete vacancy records in structured format.

---

### Overview

The **HH.ru Jobs Scraper** extracts detailed vacancy information from individual job posting pages on HH.ru, transforming semi-structured web content into clean, machine-readable data. It is ideal for:

- **Recruitment teams** analyzing competitor job postings and hiring trends
- **HR analytics professionals** building talent market databases
- **Job aggregators** feeding vacancy data into multi-source job boards
- **Researchers** studying Russian labor market dynamics
- **Staffing agencies** benchmarking compensation and job positioning

The scraper collects 60+ fields per vacancy, covering everything from basic job details to employment conditions, branding settings, and internal metadata.

---

### Input Format

The scraper accepts a simple JSON configuration:

```json
{
  "urls": [
    "https://hh.ru/vacancy/134353241?hhtmFrom=vacancy_search_list"
  ],
  "ignore_url_failures": true
}
````

| Field | Type | Description |
|---|---|---|
| `urls` | Array | Direct links to HH.ru individual vacancy pages. Each URL should point to a specific job posting detail page. Paste URLs one by one or use bulk edit to add multiple at once. |
| `ignore_url_failures` | Boolean | If `true`, the scraper continues running if some URLs fail to load or return errors. If `false`, the entire run stops on first failure. Recommended: `true` for large batch operations. |

> **Note:** Use direct vacancy URLs (e.g., `https://hh.ru/vacancy/123456789`). Search result pages and filtered lists will not work.

***

### Output Format

**Sample output**

```json
{
  "video_vacancy_url": null,
  "video_vacancy_image_url": null,
  "is_branding_preview": false,
  "approved": true,
  "vacancy_id": 134353241,
  "division_id": null,
  "manager_id": 16551429,
  "vacancy_code": null,
  "can_apply_ai_assistant": false,
  "name": "Специалист по работе с документами",
  "multi": false,
  "status": {
    "active": true,
    "archived": false,
    "disabled": false,
    "waiting": false,
    "need_fix": false
  },
  "publication_date": "2026-06-19T06:08:21.974+03:00",
  "compensation": {
    "from": 80000,
    "to": 85000,
    "currency_code": "RUR",
    "gross": true,
    "per_mode_from": 80000,
    "per_mode_to": 85000,
    "mode": "MONTH",
    "frequency": "TWICE_PER_MONTH"
  },
  "company": {
    "@show_similar_vacancies": true,
    "@trusted": true,
    "@category": "AGENCY",
    "@country_id": 1,
    "@state": "APPROVED",
    "id": 12817313,
    "name": "Гроус рф",
    "visible_name": "Гроус рф",
    "logos": {
      "logo": [
        {
          "@type": "ORIGINAL",
          "@url": "/employer-logo-original/1509797.png"
        },
        {
          "@type": "employerPage",
          "@url": "/employer-logo/12329519.png"
        },
        {
          "@type": "searchResultsPage",
          "@url": "/employer-logo/12329520.png"
        },
        {
          "@type": "small",
          "@url": "/employer-logo/12329520.png"
        },
        {
          "@type": "vacancyPage",
          "@url": "/employer-logo/12329521.png"
        },
        {
          "@type": "medium",
          "@url": "/employer-logo/12329521.png"
        }
      ]
    },
    "employer_organization_form_id": null,
    "show_organization_form": false,
    "company_site_url": "",
    "accredited_i_t_employer": false,
    "is_identified_by_esia": false,
    "employer_on_additional_check": false
  },
  "area": {
    "@id": 1,
    "@region_id": 1,
    "@country_iso_code": "RU",
    "name": "Москва",
    "path": ".113.232.1.",
    "region_name": "Москва",
    "area_name_pre": "Москве",
    "area_catalog_title": "в Москве"
  },
  "address": {
    "map_data": null,
    "metro_stations": null
  },
  "contact_info": null,
  "ai_assistant_info": {
    "has_ever_been_enabled": false,
    "is_currently_enabled": false
  },
  "async_contact_info": null,
  "show_contact": null,
  "allow_chat_with_manager": false,
  "valid_through_time": "2026-07-19T06:08:21.982+03:00",
  "hr_brand": null,
  "inclusiveness_types": null,
  "inclusiveness_description": "",
  "age_restriction": null,
  "insider": null,
  "work_experience": "noExperience",
  "employment_form": "SIDE_JOB",
  "work_schedule_by_days": [
    "SIX_ON_ONE_OFF",
    "FIVE_ON_TWO_OFF",
    "FOUR_ON_FOUR_OFF",
    "FOUR_ON_THREE_OFF",
    "FOUR_ON_TWO_OFF",
    "THREE_ON_THREE_OFF",
    "THREE_ON_TWO_OFF",
    "TWO_ON_TWO_OFF",
    "TWO_ON_ONE_OFF",
    "ONE_ON_THREE_OFF",
    "ONE_ON_TWO_OFF",
    "WEEKEND",
    "FLEXIBLE"
  ],
  "working_hours": [
    "HOURS_2",
    "HOURS_3",
    "HOURS_4",
    "HOURS_5",
    "HOURS_6",
    "HOURS_7",
    "HOURS_8",
    "FLEXIBLE"
  ],
  "work_formats": [
    "REMOTE"
  ],
  "fly_in_fly_out_durations": [],
  "night_shifts": true,
  "internship": true,
  "description": "<p>В команду требуется внимательный сотрудник для работы с товарной информацией и внутренними базами данных. Подойдёт тем, кто любит порядок, спокойно работает с документами и умеет концентрироваться на деталях.</p> <p> </p> <p>Формат полностью удалённый, без звонков и общения с клиентами.</p> <p> </p> <p><strong>Что нужно делать:</strong></p> <p> </p> <ul> <li>Проверять прайс-листы и товарные данные на корректность</li> <li>Сверять цены, описания и характеристики товаров</li> <li>Находить ошибки, неточности и повторяющиеся позиции</li> <li>Обновлять информацию во внутренних таблицах и системах</li> <li>Сортировать и структурировать данные</li> <li>Поддерживать актуальность товарной базы и документации</li> </ul> <p> </p> <p><strong>Что важно:</strong></p> <p> </p> <ul> <li>Базовые навыки работы за компьютером</li> <li>Внимательность и аккуратность при работе с информацией</li> <li>Ответственный подход к задачам</li> <li>Усидчивость и умение работать по инструкции</li> <li>Способность сохранять концентрацию при однотипных задачах</li> </ul> <p> </p> <p><strong>Что предлагаем:</strong></p> <p> </p> <ul> <li>Полностью удалённый формат работы</li> <li>Сменный график от 2 часов в день</li> <li>Обучение и поддержка на старте</li> <li>Понятные задачи и чёткие рабочие процессы</li> <li>Стабильные выплаты без задержек</li> <li>Спокойную рабочую атмосферу без общения с клиентами</li> <li>Возможность комфортно распределять нагрузку и работать в своём темпе</li> </ul>",
  "platforms": [
    "HH"
  ],
  "key_skills": {
    "key_skill": [
      "Работа с большим объемом информации",
      "Деловая переписка",
      "Работа с документами",
      "Деловое общение",
      "Работа с базами данных",
      "Ведение переписки",
      "Электронный документооборот",
      "Электронная почта",
      "Поиск информации в интернет",
      "MS PowerPoint",
      "Английский язык",
      "Подготовка презентаций"
    ]
  },
  "driver_license_types": null,
  "map_disabled": false,
  "show_signup_form": true,
  "show_resume_form": false,
  "show_skills_survey": false,
  "skills_survey_profession": null,
  "vacancy_constructor_template": null,
  "branding": null,
  "branding_type": null,
  "brand_snippet_expiration_time": null,
  "system_info": null,
  "can_view_responses": false,
  "user_test_id": null,
  "user_labels": [],
  "features": [
    "canApply"
  ],
  "vacancy_on_map_link": "/search/vacancy/map?vacancy_id=",
  "confirmable_key_skills": {
    "providers": []
  },
  "professional_role_ids": [
    84
  ],
  "translations": {
    "work_experience": "не требуется"
  },
  "vacancy_properties": {
    "properties": [
      {
        "id": 644431593,
        "property_type": "HH_STANDARD",
        "defining": true,
        "classifying": true,
        "bundle": "HH",
        "property_weight": 400,
        "parameters": [
          {
            "key": "packageName",
            "value": "VP"
          },
          {
            "key": "serviceId",
            "value": "67211324"
          }
        ],
        "start_time_iso": "2026-06-19T06:08:21.982+03:00",
        "end_time_iso": "2026-07-19T06:08:21.982+03:00"
      },
      {
        "id": 644439371,
        "property_type": "HH_MONETIZATION_PERFORMANCE_BAD",
        "bundle": "HH",
        "property_weight": 1500,
        "parameters": [
          {
            "key": "actionReason",
            "value": "VACANCY_HYPERLIQUID"
          },
          {
            "key": "packageName",
            "value": "HH_MONETIZATION_PERFORMANCE"
          },
          {
            "key": "serviceId",
            "value": "-200"
          }
        ],
        "start_time_iso": "2026-06-19T07:13:04.817713+03:00"
      },
      {
        "id": 644431594,
        "property_type": "HH_SEARCH_RESULTS_NORMAL_POSITION",
        "bundle": "HH",
        "property_weight": 400,
        "parameters": [
          {
            "key": "packageName",
            "value": "VP"
          },
          {
            "key": "serviceId",
            "value": "67211324"
          }
        ],
        "start_time_iso": "2026-06-19T06:08:21.982+03:00",
        "end_time_iso": "2026-07-19T06:08:21.982+03:00"
      }
    ],
    "calculated_states": {
      "h_h": {
        "advertising": false,
        "anonymous": false,
        "filtered_property_names": [
          "HH_SEARCH_RESULTS_NORMAL_POSITION",
          "HH_STANDARD",
          "HH_MONETIZATION_PERFORMANCE_BAD"
        ],
        "free": false,
        "optimum": false,
        "option_premium": false,
        "pay_for_performance": false,
        "premium": false,
        "standard": true,
        "standard_plus": false,
        "translation_keys": [
          "employer.VacancyCreate.PublicationType.STANDARD"
        ],
        "virtual_recruiter": false,
        "translation": "Стандарт"
      }
    }
  },
  "brand_stickers": null,
  "brand_sticker_ids": null,
  "closed_for_applicants": false,
  "auto_renewal": null,
  "other_collections_links": [
    {
      "path": "/vacancies/operator-excel",
      "title": "Оператор excel"
    },
    {
      "path": "/vacancies/operator-dokumentooborota",
      "title": "Оператор документооборота"
    },
    {
      "path": "/vacancies/operator-1s-8",
      "title": "Оператор 1С 8"
    },
    {
      "path": "/vacancies/operator-na-pervichnuyu-dokumentatsiyu",
      "title": "Оператор на первичную документацию"
    },
    {
      "path": "/vacancies/operator-po-obrabotke-dokumentov",
      "title": "Оператор по обработке документов"
    },
    {
      "path": "/vacancies/operator_pk_na_sklad",
      "title": "Оператор ПК на склад"
    },
    {
      "path": "/vacancies/operator-sistemy-upravleniya-skladom",
      "title": "Оператор системы управления складом"
    },
    {
      "path": "/vacancies/operator-informatsionnogo-otdela",
      "title": "Оператор информационного отдела"
    },
    {
      "path": "/vacancies/operator-1storgovlya-i-sklad",
      "title": "Оператор 1С:Торговля и Склад"
    },
    {
      "path": "/vacancies/operator-1c",
      "title": "Оператор 1C"
    }
  ],
  "accept_labor_contract": true,
  "civil_law_contracts": [
    "SELF_EMPLOYED",
    "INDIVIDUAL_ENTREPRENEUR",
    "INDIVIDUAL_PERSON"
  ],
  "vacancy_map_queries": {
    "vacancy_id": "134353241",
    "items_on_page": 100,
    "page": null,
    "clusters": false,
    "ored_clusters": false,
    "employer_id": null,
    "enable_snippets": false,
    "l_responses_count_enabled": true,
    "l_target": "serp",
    "search_session_id": null
  }
}
```

Each scraped vacancy returns a comprehensive record with 60+ fields:

#### Core Vacancy Information

| Field | Meaning |
|---|---|
| `Vacancy ID` | Unique HH.ru identifier for the vacancy |
| `Vacancy Code` | Alternative internal code for the position |
| `Name` | Official job title as displayed on HH.ru |
| `Status` | Current status (active, archived, etc.) |
| `Description` | Full HTML job description and responsibilities |
| `Platforms` | Job platforms or systems where the vacancy appears |

#### Dates & Lifecycle

| Field | Meaning |
|---|---|
| `Publication Date` | When the vacancy was first published |
| `Valid Through Time` | Closing or expiration date of the vacancy |
| `Auto Renewal` | Whether the listing auto-renews when expiring |
| `Closed For Applicants` | Flag indicating if new applications are blocked |

#### Compensation & Benefits

| Field | Meaning |
|---|---|
| `Compensation` | Salary range or compensation details (may include currency, min/max, salary type) |

#### Company & Contact Details

| Field | Meaning |
|---|---|
| `Company` | Employer company name and profile ID |
| `Division ID` | Company division or subsidiary identifier |
| `Manager ID` | Hiring manager or recruiter account ID |
| `Contact Info` | Recruiter phone, email, or messaging details |
| `Async Contact Info` | Asynchronous contact information (forms, etc.) |
| `Show Contact` | Whether contact info is displayed to applicants |
| `Allow Chat With Manager` | If true, candidates can message the manager directly |
| `AI Assistant Info` | AI-powered assistant or chatbot contact option |
| `Can Apply AI Assistant` | Whether AI assistant can submit applications on behalf of candidates |

#### Location & Work Arrangement

| Field | Meaning |
|---|---|
| `Area` | Geographic region or city where the role is based |
| `Address` | Specific workplace address (may be partial for privacy) |
| `Vacancy On Map Link` | URL to view vacancy location on an embedded map |
| `Work Formats` | Remote, office, hybrid, or relocation options |
| `Working Hours` | Full-time, part-time, shift-based work hours |
| `Work Schedule By Days` | Specific day schedule (Mon-Fri, weekends, etc.) |
| `Fly In Fly Out Durations` | For remote/rotational roles, FIFO shift lengths |
| `Night Shifts` | Whether the role includes night shifts |

#### Experience & Skills

| Field | Meaning |
|---|---|
| `Work Experience` | Required years of experience (e.g., entry, 1-3 years, 3+ years) |
| `Key Skills` | Essential technical or soft skills required |
| `Confirmable Key Skills` | Skills candidates can confirm in their profiles |
| `Professional Role IDs` | Standardized job category or role codes |
| `Skills Survey Profession` | Professional specialization for skills assessment |
| `Show Skills Survey` | Whether candidates must complete a skills test |
| `Driver License Types` | Required driver's license categories (if applicable) |

#### Employment Terms

| Field | Meaning |
|---|---|
| `Employment Form` | Contract type (permanent, fixed-term, project, etc.) |
| `Internship` | Whether this is an internship or training position |
| `Accept Labor Contract` | Standard employment agreement required |
| `Civil Law Contracts` | Alternative non-employment contracts allowed |
| `Age Restriction` | Minimum or maximum age requirements |
| `Work Experience` | Years or type of prior experience needed |

#### Accessibility & Inclusivity

| Field | Meaning |
|---|---|
| `Inclusiveness Types` | Programs for people with disabilities or underrepresented groups |
| `Inclusiveness Description` | Details on inclusive hiring initiatives |
| `Map Disabled` | Whether location mapping is disabled for privacy |

#### Application & Branding

| Field | Meaning |
|---|---|
| `Show Signup Form` | Whether candidates must create a new account |
| `Show Resume Form` | If candidates can upload a CV during application |
| `Is Branding Preview` | Whether the posting uses branded presentation |
| `Branding` | Employer branding template or style applied |
| `Branding Type` | Category of branding (e.g., premium, standard) |
| `Brand Snippet Expiration Time` | Duration the branded snippet appears |
| `Brand Stickers` | Special badges or stickers on the posting |
| `Brand Sticker IDs` | Internal IDs for branding elements |
| `HR Brand` | HR department branding or employer brand |

#### Recruitment Features

| Field | Meaning |
|---|---|
| `Video Vacancy URL` | URL to video introduction or company tour |
| `Video Vacancy Image URL` | Thumbnail image for the video preview |
| `Features` | Special features enabled (e.g., priority, boost, etc.) |
| `Can View Responses` | Whether the recruiter can view candidate responses |
| `Insider` | Whether the vacancy is marked as insider/internal recommendation |
| `Approved` | Moderation status (approved, pending review, etc.) |
| `Vacancy Constructor Template` | Template used to create the vacancy |
| `Multi` | Whether the vacancy has multiple open positions |
| `Translations` | Available languages for the vacancy description |

#### System & Analytics

| Field | Meaning |
|---|---|
| `System Info` | Internal system metadata |
| `User Test ID` | A/B testing or experiment identifier |
| `User Labels` | Custom labels or tags applied by recruiters |
| `Other Collections Links` | Related vacancies or collections |
| `Vacancy Properties` | Flexible metadata properties |
| `Vacancy Map Queries` | Search queries used to locate the vacancy |

***

### How to Use

1. **Find vacancy URLs** — Browse HH.ru and open individual job posting pages. Copy the full URL from the address bar.
2. **Prepare your input** — Add URLs to the `urls` array. You can add one at a time or use bulk edit for multiple.
3. **Configure error handling** — Set `ignore_url_failures: true` to skip failed URLs without stopping the entire run.
4. **Start the scraper** — Launch the actor and monitor the progress in the run log.
5. **Download results** — Export the structured data as JSON, CSV, Excel, or Google Sheets for analysis.

**Tips:**

- Use individual vacancy URLs, not search result pages.
- For large batches (100+ URLs), enable `ignore_url_failures` to avoid interruptions.
- The scraper preserves all HH.ru metadata, making it suitable for compliance and audit trails.

***

### Use Cases & Business Value

- **Recruitment intelligence:** Monitor hiring patterns, salary trends, and competitor job positioning in Russia
- **Talent pool analysis:** Identify high-demand skills and experience levels across industries
- **Job aggregation:** Feed HH.ru vacancies into multi-source job boards or internal systems
- **Market research:** Analyze Russian labor market supply and demand dynamics
- **Staffing optimization:** Benchmark your open roles against similar positions on HH.ru

By automating HH.ru data extraction, you save weeks of manual research and unlock insights that inform better hiring strategies and market positioning.

***

### Conclusion

The **HH.ru Jobs Scraper** is the reliable solution for anyone needing structured Russian job market data. With 60+ output fields and flexible configuration, it integrates seamlessly into recruitment platforms, analytics dashboards, and research pipelines. Start scraping HH.ru vacancies today and transform raw listings into actionable intelligence.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the Specific jobs urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## Actor input object example

```json
{
  "urls": [
    "https://hh.ru/vacancy/134353241?hhtmFrom=vacancy_search_list"
  ],
  "ignore_url_failures": true
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "https://hh.ru/vacancy/134353241?hhtmFrom=vacancy_search_list"
    ],
    "ignore_url_failures": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("soft_alexist/hh-jobs-details-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "urls": ["https://hh.ru/vacancy/134353241?hhtmFrom=vacancy_search_list"],
    "ignore_url_failures": True,
}

# Run the Actor and wait for it to finish
run = client.actor("soft_alexist/hh-jobs-details-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "https://hh.ru/vacancy/134353241?hhtmFrom=vacancy_search_list"
  ],
  "ignore_url_failures": true
}' |
apify call soft_alexist/hh-jobs-details-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=soft_alexist/hh-jobs-details-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Hh Jobs Details Scraper",
        "description": "Scrape detailed job vacancies from HH.ru, Russia's largest employment portal. Collect vacancy IDs, titles, compensation, company profiles, location data, work conditions, and 60+ structured fields per listing — perfect for recruitment analytics, market research, and job aggregation.",
        "version": "0.0",
        "x-build-id": "fSz4dTYtgYVufdFeR"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/soft_alexist~hh-jobs-details-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-soft_alexist-hh-jobs-details-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/soft_alexist~hh-jobs-details-scraper/runs": {
            "post": {
                "operationId": "runs-sync-soft_alexist-hh-jobs-details-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/soft_alexist~hh-jobs-details-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-soft_alexist-hh-jobs-details-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": {
                    "urls": {
                        "title": "URLs of the Specific jobs urls to scrape",
                        "type": "array",
                        "description": "Add the URLs of the Specific jobs urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ignore_url_failures": {
                        "title": "Continue running even if some URLs fail to be scraped",
                        "type": "boolean",
                        "description": "If true, the scraper will continue running even if some URLs fail to be scraped."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
