1C-Bitrix Integration with Avito
Avito is not classic marketplace but classifieds board with marketplace elements. This defines integration specifics: products uploaded as listings via XML feed (Avito Autoload), management via personal account or Avito API. Main complexity — each Avito category has its own set of fields and moderation rules, different from any other marketplace.
Two Integration Channels
1. Avito Autoload (XML feed). Primary method for bulk upload. Seller places XML file on own server, specifies URL in Avito settings: Professional tools → Auto-upload. Avito parses feed on schedule (every few hours).
2. Avito API (https://api.avito.ru/). REST API for managing listings, statistics, messages. Authorization — OAuth 2.0 (client_id + client_secret → access_token).
For 1C-Bitrix integration, usually combination used: feed for catalog upload + API for monitoring statuses and automation.
Avito Autoload Feed Format
Avito XML feed has its own schema, incompatible with YML:
<Ads formatVersion="3" target="Avito.ru">
<Ad>
<Id>unique_id</Id>
<Category>Home Electronics</Category>
<AdType>Item for resale</AdType>
<Title>Samsung Galaxy S24 Smartphone</Title>
<Description>Description text</Description>
<Price>79990</Price>
<Images>
<Image url="https://site.ru/photo1.jpg"/>
<Image url="https://site.ru/photo2.jpg"/>
</Images>
<Address>Moscow, Sample St., 1</Address>
<ContactMethod>By phone and messages</ContactMethod>
<!-- Category-specific fields -->
<GoodsType>Phones</GoodsType>
<Brand>Samsung</Brand>
<Model>Galaxy S24</Model>
</Ad>
</Ads>
Category fields — main complexity. For "Home Electronics" category you need GoodsType, Brand, Model. For "Clothing" — Size, Gender, ClothingType. For "Auto parts" — OEMPartNumber, Brand, PartType. Full category list and fields — in Avito Autoload documentation.
Feed Generation from Bitrix Infoblock
No standard export profile for Avito in Bitrix. Implementation:
Custom PHP script — file /local/avito_feed.php, called via cron or accessible by URL. Logic:
- Get infoblock elements via
CIBlockElement::GetList()with active and availability filter. - For each element — determine Avito category. Mapping stored in separate element property (
PROPERTY_AVITO_CATEGORY) or correspondence table infoblock section → Avito category. - Depending on category — form set of specific tags.
- Collect XML and write to file.
Field mapping:
| Avito Tag | Bitrix Field | Note |
|---|---|---|
<Id> |
Element ID or article |
Must be stable — ID change = new listing |
<Title> |
NAME |
Up to 50 characters for most categories |
<Description> |
DETAIL_TEXT |
Up to 7500 characters, limited HTML |
<Price> |
Catalog price | Integer, rubles |
<Images> |
DETAIL_PICTURE + multiple property |
Up to 10 photos, minimum 400×300 |
<Address> |
Fixed or from property | Must match address in Avito account |
<Id> problem. Avito identifies listing by <Id>. If ID changes (e.g., catalog reindexing in Bitrix) — Avito creates new listing, deletes old. Lost views, statistics, reviews. Use article or external code (XML_ID), not element ID.
<Address> problem. Avito binds listing to address. Feed address must exactly match one of addresses in seller profile. Mismatch — reason for listing rejection.
Avito API: Management and Automation
API used for tasks feed doesn't cover:
-
Get listing statistics.
GET /core/v1/items/{item_id}/stats— views, calls, messages. Data can be saved to infoblock custom property for efficiency analysis. -
Manage listings.
PUT /core/v1/items/{item_id}— update fields without feed reload. -
Get messages.
GET /messenger/v3/accounts/{user_id}/chats— automation of responses or forwarding to Bitrix24 CRM. - Activate/deactivate. When product ends — deactivate listing via API faster than waiting for feed update.
Working with Trade Offers
Avito doesn't support product variants within one listing. Each SKU (size, color) — separate listing. For online store with size grid this means:
- T-shirt S, M, L, XL — 4 listings in feed.
- Each with unique
<Id>(e.g.,ARTICLE_SIZE). - Each with size specified in title or description.
When generating feed, iterate through trade offers infoblock and create separate <Ad> for each offer with non-zero inventory. This significantly increases feed size — for catalog of 1000 products with 4 sizes results in 4000 listings.
Limits and Moderation
Avito limits listing quantity: free limit depends on category (usually 1–5), then — paid packages. For online stores — "For Business" plan with increased limits.
Each listing moderation — 1–24 hours. Common rejection reasons: duplicates (identical photos or description), prohibited items, category mismatch, spammy description.
Integration Timeline
| Scenario | Timeline |
|---|---|
| Simple feed, one category, up to 200 products | 3–5 days |
| Multiple categories, field mapping, 1000+ products | 1–1.5 weeks |
| Full integration: feed + API + statistics + CRM | 1.5–2 weeks |







