Skip to main content

avito-sdk

PyPI Version Python Versions License: MIT Conda Forge Free-Threaded No-GIL CI

Высокопроизводительная библиотека и SDK для работы с Avito без GUI.
Разработана ключевым контрибьютором Duff89/parser_avito.


🚀 Возможности

  • 🚀 100% Headless и легкий вес: Никаких оконных библиотек (Tkinter, CustomTkinter, Flet, PyInstaller). Работает прямо в Linux, Docker, AWS, Raspberry Pi, macOS и Windows.
  • ⚡ Asyncio и Синхронный режим: AsyncAvitoClient для высоконагруженных Telegram-ботов (Aiogram 3, Telethon), FastAPI, и AvitoClient для простых скриптов.
  • 📉 Отслеживание изменения цен (PR #334 / Issue #214): Автоматическая фиксация старой цены, вычисление снижения цены (price_drop) и ведение истории в SQLite.
  • 👤 Извлечение данных продавца (PR #334 / Issue #333): Сбор имени продавца (seller_name) и slug/ID профиля/магазина (seller_id).
  • 📋 Глубокий сбор характеристик (PR #337 / Issue #335): Извлечение всех параметров («О помещении», площадь, этаж, тех. характеристики авто и электроники) из Beduin-сценариев и Mobile API.
  • 📝 Полный текст описания (PR #329 / Issue #305): Извлечение многострочного описания из микроразметки Schema.org и сценариев Avito.
  • 🛡️ Обход TLS-fingerprinting: Имитация сетевого отпечатка Chrome/Safari через curl_cffi с автоматическим фолбэком на стандартный HTTP-транспорт.
  • 📊 Экспорт данных: В Excel (.xlsx со стилями), CSV, JSON, JSONL, а также в Pandas и Polars DataFrame.
  • 💻 Консольная утилита (CLI): Быстрый поиск прямо из терминала через avito-sdk search или avito-parser.
  • 🌐 Мультиплатформенность: Поддержка Python 3.8 – 3.16+, Free-Threaded No-GIL (3.13t–3.15t) и PyPy.

📦 Установка

# Базовая установка
pip install avito-sdk

# С поддержкой обхода анти-бот защиты (рекомендуется)
pip install "avito-sdk[tls]"

# Полная установка (Excel, TLS, Async, DataFrames)
pip install "avito-sdk[all]"

Или через Conda / Mamba:

conda install -c conda-forge avito-sdk

⚡ Быстрый старт

1. Синхронный поиск объявлений

from avito_sdk import AvitoClient

client = AvitoClient()

# Поиск ноутбуков в Москве до 80 000 ₽
for item in client.search("ноутбук thinkpad", region="Москва", max_price=80000, limit=10):
    print(f"[{item.id}] {item.title} — {item.price:,} ₽ | Продавец: {item.seller_name}")
    if item.has_price_changed:
        print(f"  🔥 Цена изменилась! Старая: {item.old_price:,} ₽ (Снижение: {item.price_drop:,} ₽)")

2. Асинхронный стриминг (для Telegram-ботов и FastAPI)

import asyncio
from avito_sdk import AsyncAvitoClient

async def main():
    async with AsyncAvitoClient() as client:
        async for item in client.search("rtx 4070", region="Санкт-Петербург", limit=20):
            print(f"Найдено: {item.title} ({item.price:,} ₽) -> {item.url}")

asyncio.run(main())

3. Получение полных параметров и характеристик (PR #337)

from avito_sdk import AvitoClient

client = AvitoClient()

# Получаем карточку объявления со всеми характеристиками
item = client.get_item(1234567890)

print("Название:", item.title)
print("Цена:", item.price)
print("Продавец:", item.seller_name)
print("Просмотры:", f"{item.total_views} всего, {item.today_views} сегодня")

print("\nХарактеристики (PR #337):")
for param_name, param_val in item.params.items():
    print(f"  • {param_name}: {param_val}")

print("\nОписание (PR #329):")
print(item.description)

4. Отслеживание падения цен (PR #334)

from avito_sdk import AvitoClient, PriceTracker

client = AvitoClient(tracker_db="prices.db")

# Запускаем сбор и авто-трекинг
items = list(client.search("iPhone 15 Pro", region="Москва", limit=50))

# Получаем список объявлений, у которых цена упала:
tracker = client.tracker
drops = tracker.get_price_drops()
for drop in drops:
    diff = drop["initial_price"] - drop["current_price"]
    print(f"📉 Скидка! {drop['title']}: {drop['initial_price']:,} -> {drop['current_price']:,} ₽ (-{diff:,} ₽)")

5. Экспорт в Excel / JSON / Pandas

from avito_sdk import AvitoClient, to_excel, to_json, to_dataframe

client = AvitoClient()
items = list(client.search("PlayStation 5", limit=30, enrich_details=True))

# 1. Красивый Excel с автошириной колонок и форматированием
to_excel(items, "ps5_listings.xlsx")

# 2. JSON Lines для ML и потоковой обработки
to_json(items, "ps5_listings.json")

# 3. Pandas DataFrame
df = to_dataframe(items)
print(df[["id", "title", "price", "seller_name"]].head())

🖥️ Использование из консоли (CLI)

Библиотека включает встроенную консольную команду avito-sdk (или avito-parser):

# Поиск с выводом на экран и сохранением в Excel:
avito-sdk search "MacBook M2" --region moskva --max-price 90000 --output macbooks.xlsx

# Просмотр детальной карточки объявления:
avito-sdk item 3854129841

# Просмотр всех зафиксированных снижений цен:
avito-sdk drops --db prices.db

🛠️ Сравнение: parser_avito (GUI) vs avito-sdk (Библиотека)

Функция Duff89/parser_avito avito-sdk
Назначение Десктопное приложение для пользователей Автономная Python-библиотека & SDK
Графический интерфейс ✅ Есть (CustomTkinter / GUI) ❌ Отсутствует (100% Headless)
Запуск на сервере / Docker / VPS Требует виртуальный дисплей (xvfb) ✅ Из коробки без зависимостей
Асинхронный API (asyncio) ❌ Нет ✅ AsyncAvitoClient
Использование в Telegram-ботах Сложно ✅ pip install avito-sdk
Отслеживание цен (PR #334) ✅ Есть ✅ Встроенный PriceTracker
Характеристики товара (PR #337) ✅ Есть ✅ Глубокий парсер Beduin & Mobile
Поддержка Python 3.8 – 3.16+ 3.11 – 3.13 ✅ 3.8 – 3.16, No-GIL, PyPy

📄 Лицензия

Распространяется под свободной лицензией MIT.
Автор: eminsk (M_N_N@tut.by)

Metadata

Release files for avito-sdk 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for avito-sdk 0.1.0
File Size Uploaded
avito_sdk-0.1.0.tar.gz 97.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for avito-sdk 0.1.0
File Interpreter ABI Platform
avito_sdk-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 124.3 kB

Release files / avito_sdk-0.1.0.tar.gz

Download URL avito_sdk-0.1.0.tar.gz
Size 97.2 kB
Tags Source
SHA-256 checksum
How to use checksums
d363d25238239d15c32526835b970b9baaea52a5dfde35c19c66b2ae70599649
BLAKE2b-256 checksum
How to use checksums
3dac30fbea378e1d09ec3a64145c861dc95f5cafb225e2a85e56c0b6240b758f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.8

Release files / avito_sdk-0.1.0-py3-none-any.whl

Download URL avito_sdk-0.1.0-py3-none-any.whl
Size 27.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8bdb32b222883c1c3483046347f0be2a7b35cb0ec5d34cfc9533eae62e264fc4
BLAKE2b-256 checksum
How to use checksums
7c8e87e54b745a67d3c2cd94f85ffb20f45c919c2703c8bb4201033ec9a63377
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.8

Release history Release notifications | RSS feed

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page