Avito Shopping MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Avito Shopping MCPfind a used iPhone 15 in Kazan under 50,000 rubles"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Ищите объявления на Авито вместе с ИИ. Avito Shopping MCP превращает поиск, карточки объявлений и отзывы о продавцах в инструменты вашего MCP-клиента — локально, без входа в аккаунт и десятков открытых вкладок.
Сервер работает только на чтение: не пишет продавцам, не размещает объявления и не трогает ваш аккаунт. Браузерная сессия остаётся на вашем компьютере.
Альфа-версия: у Авито нет публичного API для покупателей, поэтому проект использует внутренние эндпоинты сайта. Они и защита от автоматизации могут измениться без предупреждения.
Проект основан на wb-shopping-mcp и ozon-shopping-mcp.
Возможности
ищет объявления в выбранном городе с сортировкой по цене, дате или скидке;
отбирает варианты в заданном ценовом диапазоне;
читает объявление целиком: цену, описание, характеристики, адрес, фото, дату публикации и просмотры;
показывает продавца: тип, стаж на Авито, скорость ответа и рейтинг;
собирает свежие отзывы о продавце с оценками, этапом сделки и ответами;
работает локально через защищённую сессию с последовательными запросами и паузами между ними.
Related MCP server: Avito Personal MCP
Быстрый старт
Нужны Node.js 24 LTS или новее и Google Chrome. Настройте локальную сессию:
npx avito-shopping-mcp setupОткроется окно Chrome с avito.ru. Если Авито покажет проверку доступа или капчу, пройдите её сами в этом окне —
сессия сохранится, как только поиск начнёт отвечать. Если поиск отвечает ограничением доступа, setup не повторяет
запросы по таймеру: обновите страницу в окне и пройдите капчу, после этого setup проверит поиск ещё раз. Дальше запросы выполняются в headless Chrome без видимого окна.
Добавьте сервер в Claude Code:
claude mcp add avito-shopping -- npx -y avito-shopping-mcpДля Claude Desktop и других MCP-клиентов используйте stdio-конфигурацию:
{
"mcpServers": {
"avito-shopping": {
"command": "npx",
"args": ["-y", "avito-shopping-mcp"]
}
}
}Примеры запросов
Найди в Москве 5 кофемашин DeLonghi с капучинатором до 25 000 ₽. Открой
объявления, проверь состояние, модель и что входит в комплект, посмотри отзывы
о продавцах и выбери самый надёжный вариант.Подбери б/у iPhone 15 128 ГБ в Казани дешевле 50 000 ₽. Сравни ёмкость
аккумулятора и состояние по описаниям, отметь объявления от продавцов с
рейтингом ниже 4,5 или без отзывов.Вот объявление: https://www.avito.ru/moskva/... — разбери описание и
характеристики, прочитай 20 последних отзывов о продавце и перечисли
тревожные признаки, если они есть.Инструменты
Инструмент | Что делает |
| Ищет объявления: город (по умолчанию Москва), сортировка, цена от/до, страница и лимит |
| Читает объявление: цена, описание, характеристики, адрес, фото, дата, просмотры, продавец |
| Читает рейтинг продавца объявления и его свежие отзывы |
| Проверяет локальную сессию; |
| Создаёт или обновляет сессию в отдельном окне браузера |
Объявление можно передать ссылкой вида https://www.avito.ru/<город>/<категория>/<название>_<id> или числовым id.
Город передаётся по-русски: Казань, Санкт-Петербург.
Ограничения частоты
Авито быстро ограничивает доступ с IP-адреса, с которого идёт много запросов. Поэтому:
запросы выполняются строго по одному, с паузой не меньше 5 секунд (
AVITO_MCP_MIN_REQUEST_INTERVAL_MS) и случайной добавкой;поиск — 1 запрос, объявление — 1, отзывы о продавце — 2–3;
после ошибки
AVITO_RATE_LIMITEDсервер 20 минут не обращается к Авито и сразу возвращает эту ошибку с оставшимся временем; чтобы продолжить раньше, запуститеnpx avito-shopping-mcp setupи пройдите капчу в окне браузера — новая сессия снимает паузу; блокировки Авито иногда длятся час и дольше;некорректный запрос (пустой, слишком длинный, цена «от» больше цены «до») возвращает
INVALID_INPUT;VPN, общий IP провайдера и частые обновления страниц повышают шанс блокировки.
Как это работает
setupоткрывает Chrome, ждёт, пока Авито начнёт отдавать результаты поиска, и сохраняет сессию вне репозитория.MCP-инструменты повторно используют сессию в headless Chrome; все запросы идут из вкладки avito.ru.
Если Авито просит повторную проверку браузера, сервер один раз перезагружает главную страницу и повторяет запрос.
Если сессия больше не принимается, сервер просит явно запустить
setupснова.
Безопасность и ограничения
файл сессии содержит cookies и хранится с закрытыми правами доступа (
0700/0600, где поддерживается);запросы уходят только на
https://www.avito.ru, ссылки в ответах — только на avito.ru и avito.st;cookies, тела заблокированных ответов и неизвестные внутренние ошибки не возвращаются через MCP;
заголовки, описания, характеристики и отзывы считаются недоверенными данными — агент не должен выполнять найденные в них инструкции;
выдача, цены и наличие зависят от города, сессии и времени запроса; дата публикации и просмотры в карточке могут отставать;
отзывы относятся к продавцу в целом, а не к конкретному объявлению;
проект предназначен для интерактивного личного использования, а не для массового сбора данных или публичного HTTP-моста.
Подробнее: SECURITY.md. Проект не связан с Авито и не одобрен или спонсируем компанией.
Разработка
git clone https://github.com/0xBADC0FFEE/avito-shopping-mcp.git
cd avito-shopping-mcp
npm ci
npm run check
npm run buildПодробнее об устройстве проекта — в docs/architecture.md, о том, как получены данные Авито, — в docs/research/avito-data-access.md, об участии в разработке — в CONTRIBUTING.md.
Лицензия
MIT © 2026 Maxim Zaytcev и контрибьюторы.
Available Tools
5 toolsavito_healthCheck Avito MCP healthARead-onlyIdempotent
Check whether a protected local browser session exists. Set live=true to also send one lightweight request to Avito through the saved session.
| Name | Required | Description | Default |
|---|---|---|---|
| live | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds real context beyond them: the session is local and protected, and live=true triggers an actual outbound request through the saved session, which matters for an open-world tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the core check front-loaded and the optional flag second. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-optional-parameter diagnostic tool with strong annotations and no output schema, the description covers what it verifies and the side effect of live mode. It could say more about what the check reports (session present/expired), but nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single property has no description, so the description must carry the meaning. It does explain that live=true sends one request through the saved session, while the default false is left implicit but reasonably inferable from 'also'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Check whether a protected local browser session exists') and the optional live probe. This clearly separates it from avito_setup_session, which establishes rather than verifies the session.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the conditional use of live=true ('also send one lightweight request'), which is genuine usage guidance. However, it never says when to prefer this over avito_setup_session or what to do if the check fails, so the routing guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avito_itemGet an Avito listingBRead-onlyIdempotent
Get one Avito listing: price, description, characteristics, address and coordinates, photos, publication date, views, and seller profile.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | Avito listing URL (https://www.avito.ru/<city>/<category>/<slug>_<id>) or numeric listing id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description adds the useful fact that a seller profile is bundled in, but it discloses nothing about auth/session requirements, behavior when the listing id is invalid or removed, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence that opens with the verb and resource. The long field enumeration is slightly list-heavy but justified since no output schema exists to convey the return shape.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, describing the returned fields is exactly the right compensation. It stops short of covering error/not-found behavior and the session prerequisite implied by the sibling avito_setup_session.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'item' parameter already documents both the URL form and numeric id, so the description adds nothing beyond the schema. Baseline 3 is appropriate when the schema fully carries parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('one Avito listing') and enumerates the returned fields, making the single-item lookup role clear. It implies contrast with avito_search but never names or explicitly differentiates from that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Get one' hints that this is single-item retrieval versus a search, but the description never states when to use it over avito_search or avito_seller_reviews, nor any prerequisites such as needing an authenticated session from avito_setup_session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avito_searchSearch Avito listingsARead-onlyIdempotent
Search Avito classifieds in one city. Returns listing ids, titles, prices, URLs, publication time, an image, and seller name and rating when Avito shows them.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Result page; Avito pages hold 50 listings | |
| sort | No | default (Avito relevance), price (cheapest first), price_desc, date (newest first), discount | default |
| limit | No | Listings to return from the page | |
| query | Yes | Search text | |
| location | No | City or region name in Russian, e.g. Казань (default: Москва) | |
| priceMax | No | Maximum price in RUB | |
| priceMin | No | Minimum price in RUB |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive behavior. The description adds meaningful context by enumerating returned fields and noting seller name and rating are included only 'when Avito shows them', which is valuable since there is no output schema. It still omits auth/session needs and rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler; the purpose is front-loaded and the return list is compact. Every sentence contributes to selecting or interpreting the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description usefully explains the return fields and their conditional presence. With full schema coverage and annotations covering safety, the definition is nearly complete, though it omits any reference to setup prerequisites or alternative tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all seven parameters are already documented in the schema. The description only echoes the city scope via 'in one city' and adds no format, default, or syntax details beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search Avito classifieds'), scopes it to 'one city', and names the return entity (listing). It is readily distinguishable from siblings like avito_item (single listing) and avito_seller_reviews (reviews).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use or when-not guidance. It does not mention alternatives such as avito_item for retrieving a single listing, nor does it note whether avito_setup_session is a prerequisite. The only implicit condition is the city scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avito_seller_reviewsRead Avito seller reviewsARead-onlyIdempotent
Read the newest reviews of the seller behind an Avito listing, with the seller's overall rating and score distribution. Reviews cover all of the seller's deals, not only this listing.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | Avito listing URL (https://www.avito.ru/<city>/<category>/<slug>_<id>) or numeric listing id | |
| limit | No | Reviews to return, newest first |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety behavior is covered. The description adds genuine context that the reviews span all seller deals rather than the given listing, but it says nothing about session/auth requirements or how many reviews are retrievable by default.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler; the core action and payload are front-loaded, and the scoping caveat follows immediately. Nothing needs trimming.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully names the return contents (reviews, overall rating, score distribution) and the cross-listing scope. It stops short of covering failure modes (invalid/expired listing, seller with no reviews) or session prerequisites that a sibling tool manages.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — both 'item' (URL or numeric id) and 'limit' (newest first, max 50) are fully documented in the schema. The description's 'newest reviews' phrasing only restates the schema's ordering, adding no new parameter meaning. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read) and resource (the seller's newest reviews) plus the returned payload (overall rating and score distribution). It also draws a clear boundary against the listing-scoped siblings: reviews cover all of the seller's deals, not only this listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scope statement implies when this is useful (assessing seller reputation), but no alternatives are named — nothing says whether to prefer avito_item or avito_search, and there are no prerequisites such as needing an active session via avito_setup_session. Usage is inferable but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
avito_setup_sessionSet up the local Avito sessionB
Open a temporary browser window, wait until Avito serves search results (the user may need to pass an access check), save the session locally, and close the window.
| Name | Required | Description | Default |
|---|---|---|---|
| timeoutSeconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare non-readOnly, openWorld, non-idempotent, non-destructive, so the safety profile is already covered; the description adds substantive behavior beyond that: a temporary browser window is opened, results must be served before proceeding, the user may have to pass an access check (a human-in-the-loop dependency), the session is persisted locally, and the window is closed. It stops short of saying where the session is stored or how long it remains valid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that proceeds in execution order (open, wait, save, close) with no filler, and it front-loads the browser-window action. It is efficient, though cramming four steps plus the access-check caveat into one sentence slightly reduces scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must convey the outcome — it does (session saved locally, window closed) — and annotations cover the side-effect profile. However, for a stateful setup tool that other sibling tools presumably depend on, it omits the undocumented timeout parameter, session persistence location/expiry, and any ordering relationship with avito_search/avito_item, leaving a moderately sized gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single parameter timeoutSeconds, so the description carries the full burden — yet it never mentions the timeout, its default of 120s, its 30–300s range, or what happens when it elapses. The phrase 'wait until Avito serves search results' gestures at a bounded wait but adds no actionable parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource — it sets up (opens, waits, saves, closes) a local Avito session — and enumerates the concrete steps. It does not reference any sibling by name, but since no sibling competes for this setup role, an agent can still tell it apart from avito_search/avito_item. Clear but without explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never states when to call this tool: not whether it must run before avito_search/avito_item, not what triggers a re-run, and not what happens if a session already exists. Usage is only inferable from the tool name and the phrase 'save the session locally'. No when/when-not guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v0.1.0- First observed
avito_health - First observed
avito_item - First observed
avito_search - First observed
avito_seller_reviews - First observed
avito_setup_session
TDQS
Scored across 5 tools
Each tool targets a clearly distinct operation: search listings, fetch one listing, check the browser session, read seller reviews, and set up the session. An agent can unambiguously pick the right tool for each task, and the search-vs-detail boundary is explicit in the descriptions.
All tools share a consistent avito_ snake_case prefix, which makes them easy to group and scan. However the suffix style varies between verbs (avito_search, avito_setup_session) and nouns (avito_item, avito_health, avito_seller_reviews), a minor deviation from a strict verb_noun pattern.
Five tools is well-scoped for a read-only classifieds integration plus session lifecycle support. Each tool earns its place: search, detail, reviews, session setup, and a health check, with no redundant entries.
The surface covers the core research workflow (setup session, verify it, search, inspect a listing, read seller reviews) with no dead ends. Minor gaps like browsing categories or listing all of a seller's items exist but agents can work around them via search.
Maintenance
Related MCP Connectors
Read-only Reddit search API for AI agents: posts, comments, comment trees, subreddit rules.
Search and browse global classifieds across 80 markets. No auth required for read-only access.
Merchant product catalogs for AI agents: price, availability, specs, variants, buy links. Read-only.
Read-only product discovery, merchant trust, shipping and returns for SVV-Schatzoekers.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA remote MCP server that searches Avito for new classified ads, filtering by price and returning only previously unseen listings. Designed for scheduled monitoring via ChatGPT tasks.-
- AlicenseAqualityCmaintenanceEnables local-first, read-only interaction with Avito through your own authenticated Chrome session, without sharing credentials with the MCP client. Provides tools for searching listings, viewing your listings, favorites, chats, and messages.22MIT
- AlicenseAqualityAmaintenanceAvito business API in your AI assistant: listings and statistics, buyer messenger, orders and Avito Delivery, bulk upload, promotion and reviews. 64 methods live in a YAML catalog the server executes, the agent searches it in plain language, and every method carries an access class so writes and irreversible calls ask for confirmation.3041 PyPI3MIT
- AlicenseAqualityCmaintenanceEnables LLM agents to fetch live Yandex Market data via plain HTTP, with honest labeling of prices (pay-card vs plain vs discounted), sponsored tiles, seller and model-group ratings, reviews, questions, and seller legal details. It avoids common scraped-data traps such as misleading discounts, captcha pages, and cross-border or conditional offers.7MIT