Интеграция интернет-магазина с Avito (API)
Avito — крупнейшая доска объявлений России. API доступно для про-аккаунтов и позволяет автоматически размещать и обновлять объявления, управлять ценами и получать сообщения от покупателей.
Аутентификация
Avito использует OAuth2 с client_credentials:
class AvitoClient
{
private string $accessToken;
public function authenticate(): void
{
$resp = Http::post('https://api.avito.ru/token', [
'client_id' => config('services.avito.client_id'),
'client_secret' => config('services.avito.client_secret'),
'grant_type' => 'client_credentials',
]);
$this->accessToken = $resp->json('access_token');
}
private function request(string $method, string $path, array $data = []): array
{
return Http::withToken($this->accessToken)
->{strtolower($method)}("https://api.avito.ru{$path}", $data)
->json();
}
}
Размещение объявления
public function createListing(Product $product): int
{
$resp = $this->request('POST', '/core/v1/accounts/{user_id}/items', [
'ad' => [
'category' => ['id' => $this->getCategoryId($product)],
'title' => $product->name,
'description' => $product->description,
'price' => $product->price,
'images' => $product->images->pluck('url')->map(fn($url) => ['url' => $url])->all(),
'contacts' => [
'phone_number' => config('services.avito.phone'),
],
'location' => ['id' => config('services.avito.city_id')],
]
]);
return $resp['id'];
}
XML-фид (альтернативный способ)
Для массового размещения Avito принимает XML-фид по ссылке:
<?xml version="1.0" encoding="UTF-8"?>
<Ads formatVersion="3">
<Ad>
<Id>product-123</Id>
<Title>iPhone 15 Pro 256GB</Title>
<Category>Телефоны</Category>
<Price>89990</Price>
<Description>Новый, гарантия 1 год</Description>
<Images>
<Image url="https://example.com/images/iphone.jpg"/>
</Images>
<Condition>Новое</Condition>
</Ad>
</Ads>
XML-фид проще API для начальной настройки и массового размещения. Обновляется по расписанию (каждые 24 часа).
Сроки
XML-фид с автогенерацией: 2–3 дня. Полная интеграция через API: 5–7 рабочих дней.







