parser_avito: Watching a Classifieds Board for New Listings
Avito Parser —бесплатный парсер для автоматического мониторинга новых объявлений Avito и\или выгрузки объявлений в файл
At a glance
- What is it?
- parser_avito is a Python tool that monitors new listings on the Avito classifieds site, exports them to Excel and pushes notifications to Telegram or VK, with a GUI, a console mode and a Docker image. It suits sellers and analysts who need to see a new listing the moment it appears.
- Who is it for?
- parser_avito fits a seller or analyst who needs to react to a new listing within minutes rather than hours, and who is comfortable running a Playwright browser on a server to do it. It is the wrong tool if you only need a market-wide price index once a day, since the whole design assumes a continuously running browser, and the wrong tool if your hosting blocks the traffic the tool needs.
- Can I use it commercially?
- Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
- Is it still maintained?
- Yes. The repository last received commits 25 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 24, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A monitoring tool aimed at sellers and price watchers
The Avito Parser is presented in its own description as a tool for automatically monitoring new listings on Avito, with the option of instantly sending notifications to Telegram or VK and exporting listings to a file. The stated fit is sellers, analysts and anyone watching prices and offers. What that framing tells you is the shape of the workload: this is a continuous process, not a one-shot export. A seller wants to know about a competitor's new listing within minutes, because by the time they check an evening later the opportunity is gone. That is why the feature list leads with real-time monitoring of new listings rather than with bulk scraping, and why the background polling and the notification channels matter more than the export formats.
What the tool filters and tracks
The flexible settings list is the core of the configuration surface. There is a black and white list of keywords, a filter by region and by seller, a limit on publication time, and optional parsing of the view count. The notification and storage group adds sending to Telegram with several recipients, sending to VK with several recipients, ignoring listings that have already been seen, and tracking price changes on a listing you already know about. That last one is a different feature from the rest, since a price drop on an existing item is often the signal you actually care about. The performance group claims high speed, continuous checking in the background, and support for up to 100 links, with the note that the limit does not apply in headless mode, which is an interesting admission about where the real ceiling is.
A browser under the hood, and what that costs you
The dependency list explains the architecture. Playwright and playwright-stealth are both required, along with beautifulsoup4 for parsing the returned HTML, curl_cffi and requests for the HTTP side, pydantic for the data models, openpyxl and pyexcel for the Excel export, and flet for the graphical interface. The stealth component is the part that shapes everything else. Avito is a browser-facing site, so the tool drives a real browser rather than issuing plain HTTP requests, and the stealth plugin exists to make that browser look less like one. The consequence is that this is a heavy tool. It needs a Chromium binary installed, the Dockerfile runs `python -m playwright install chromium-headless-shell` for exactly that reason, and the compose file mounts a cookies file, a configuration file and a results directory into the container. A scheduled cron job that reads a JSON API would be lighter, and cheaper to run, but it would be doing something different.
Running it as a program, a script or a container
There are three run modes, described as a graphical interface, a console mode and a Docker container. The quickest path is a release archive and the AvitoParser executable, followed by filling in the settings and pressing Start. If that will not run, the project can be run as an ordinary Python project, which needs Python 3.11 or newer.
pip install -r requirements.txtThe graphical mode is the entry script.
python AvitoParser.pyAnd the console mode, for running on a server, is a different script.
python parser_cls.pyThe repository also has a Makefile wrapping the container workflow, with build, run, restart, rebuild, logs, shell and clean targets, so the usual loop of rebuilding an image and restarting the container is one command. The compose file pulls a published image from ghcr.io rather than building locally, and mounts config.toml read-only, the cookies file, the results directory and the database file.
The container image and how the state is kept
The Dockerfile is based on python:3.11-slim, and the dependency list it installs is the interesting part, because it is the set of system libraries a headless Chromium needs on a slim image. The list covers the accessibility and screen stack with libatk, libatspi, libcairo, libdrm, libgbm and libglib, the browser and TLS libraries with libnss3, libnspr4 and libxkbcommon, the X libraries with libxcomposite1, libxdamage1, libxfixes3 and libxrandr2, plus libpango and libasound2 for text and audio. The image then upgrades pip, installs the Python requirements, and installs the headless Chromium shell. The compose file mounts the database with a bind and SELinux relabelling, and the volume list shows that the tool's persistent state is a config file, a cookies file, a results directory and a database file, which is everything you would back up to move the installation to another host.
Anti-block handling, proxies and a cookies service
The settings list includes support for proxies with an automatic IP ban bypass, and support for getting around blocks through a third-party service, and there is a separate document in the documentation folder covering that topic. The mechanics visible in the changelog are that on a block or a network error the program changes proxy, refreshes the cookies and retries the request, and that the wait time for the cookies service response was increased so that slow answers cause fewer errors. There is a dedicated get_cookies.py script in the repository root, and the compose file mounts a cookies.json, so the session cookies are a first-class piece of state rather than something incidental. The honest framing is that this is the part of the tool that fights a site which does not want to be scraped, and it is the part that will change shape whenever the site changes its defences.
What changed in the latest release
The 3.2.23 release from 2026-09-30 shows a project tightening behaviour around large data sets. A new option parses the full description instead of the short text from the listing page, and automatic cleanup was added so that logs older than five days are deleted and their total count is capped. Several fixes are about not losing work: results are now saved after every page, so listings already collected are not lost if the next page errors, and the window no longer freezes during parsing and responds correctly to the Stop button. Other fixes cover the address filter and other parameters when a listing is missing part of its data, saving listings that have no price, date, coordinates or photos, and the check and installation of the Playwright browser on Windows, Linux and macOS. The changelog also notes that old parameters in config.toml no longer prevent the program from starting, which is the kind of backward compatibility note that matters when a configuration file has accumulated options over dozens of releases.
Licence, support and what to check first
The licence is not declared in the repository metadata, and the readme closes with a disclaimer that the software is provided as is, without express or implied warranties, that the author does not guarantee stable operation, conformance to expectations or the absence of errors, that use is at the user's own risk, and that the author bears no responsibility for any consequences. That is an unusually direct statement for a project readme, and it is worth taking seriously if you are planning to run it against a live marketplace. Support is handled through GitHub issues, with the author asking for your operating system, the script version, the launch method and a screenshot or log of the error, and explicitly asking people not to email about bugs. The documentation covers anti-block handling, notifications, Docker and server deployment, and a developer document, with a separate changelog file, and the last push was on 2026-09-30, matching the v3.2.23 release.
Editorial conclusion
parser_avito fits a seller or analyst who needs to react to a new listing within minutes rather than hours, and who is comfortable running a Playwright browser on a server to do it. It is the wrong tool if you only need a market-wide price index once a day, since the whole design assumes a continuously running browser, and the wrong tool if your hosting blocks the traffic the tool needs. Before you rely on it, run one short session in console mode and confirm the notifications arrive, since the browser and cookie handling is where a first run tends to fail.
Frequently asked questions
What does parser_avito actually do?
It monitors new listings on the Avito classifieds site, exports the ones it finds to Excel, and can send instant notifications to Telegram or VK. It is aimed at sellers, analysts and anyone tracking prices and offers.
How do I run parser_avito on a server without a desktop?
Run it as an ordinary Python project with Python 3.11 or newer, install the requirements with pip install -r requirements.txt and start the console script with python parser_cls.py. The graphical mode is a separate entry point, python AvitoParser.py, and a Docker image is published on ghcr.io.
Why does parser_avito need a browser?
The dependency list includes Playwright and playwright-stealth, and the Dockerfile installs the headless Chromium shell, because the site is browser-facing rather than a plain HTTP API. The cost is that the tool needs a Chromium binary and real session state, including a cookies file that the compose file mounts into the container.
What filters and notifications does parser_avito support?
Black and white lists of keywords, filters by region and seller, a publication time limit, optional view count parsing, price change tracking, ignoring already seen listings, Excel export, and notifications to several Telegram or VK recipients.
What licence is parser_avito under?
No licence is recorded in the repository metadata, and the readme states the software is provided as is, without warranties, that use is at the user's own risk and that the author bears no responsibility for consequences. Issues are handled on GitHub rather than by email.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/duff89-parser-avito)Was this useful?