Перейти к содержанию

Вакансии, отклики и резюме

Этот рецепт показывает основной цикл раздела jobs: найти вакансии, получить отклики, изменить состояние отклика, посмотреть резюме и настроить webhook.

Вакансии

vacancy().list() возвращает список вакансий, а vacancy(vacancy_id).get() открывает карточку конкретной вакансии.

from avito import AvitoClient

with AvitoClient.from_env() as avito:
    vacancies = avito.vacancy().list()
    vacancy = avito.vacancy(101).get()

print(vacancies.items[0].title)
print(vacancy.url)

Идентификаторы откликов

Для инкрементальной синхронизации используйте ApplicationIdsQuery: он возвращает id откликов, обновлённых после указанного момента.

from avito import AvitoClient
from avito.jobs import ApplicationIdsQuery

query = ApplicationIdsQuery(updated_at_from="2026-04-23T00:00:00+03:00")

with AvitoClient.from_env() as avito:
    ids = avito.application().list(query=query)

print(ids.items[0].id)
print(ids.cursor)

Данные откликов

Когда id уже известны, запросите подробные данные через тот же метод list(ids=...).

from avito import AvitoClient

with AvitoClient.from_env() as avito:
    applications = avito.application().list(ids=["app-1"])

print(applications.items[0].applicant_name)
print(applications.items[0].state)

Обработка откликов

Можно получить справочник состояний, отметить отклик просмотренным и выполнить действие над откликом.

from avito import AvitoClient
from avito.jobs import ApplicationViewedItem

with AvitoClient.from_env() as avito:
    states = avito.application().get_states()
    viewed = avito.application().update(
        applies=[ApplicationViewedItem(id="app-1", is_viewed=True)],
        idempotency_key="job-viewed-example-1",
    )
    invited = avito.application().apply(
        ids=["app-1"],
        action="invited",
        idempotency_key="job-invite-example-1",
    )

print(states.items[0].slug)
print(viewed.status)
print(invited.status)

Резюме и контакты

resume().list() ищет резюме, resume(resume_id).get() открывает карточку, а get_contacts() возвращает контактные данные.

from avito import AvitoClient
from avito.jobs import ResumeSearchQuery

with AvitoClient.from_env() as avito:
    resumes = avito.resume().list(query=ResumeSearchQuery(query="оператор"))
    resume = avito.resume("res-1").get()
    contacts = avito.resume("res-1").get_contacts()

print(resumes.items[0].candidate_name)
print(resume.location)
print(contacts.phone)

Webhook откликов

Webhook позволяет получать события по откликам без polling.

from avito import AvitoClient

with AvitoClient.from_env() as avito:
    current = avito.job_webhook().get()
    updated = avito.job_webhook().update(
        url="https://example.com/job",
        idempotency_key="job-webhook-example-1",
    )

print(current.url)
print(updated.is_active)

Словари вакансий

Словари помогают выбирать значения для форм вакансий и фильтров.

from avito import AvitoClient

with AvitoClient.from_env() as avito:
    dictionaries = avito.job_dictionary().list()
    values = avito.job_dictionary("profession").get()

print(dictionaries.items[0].id)
print(values.items[0].name)

Полный контракт смотрите в reference по jobs. Для write-операций вакансий используйте idempotency_key, особенно при повторных запусках фоновых задач.