Avito API Entegrasyonu: Kayıttan İlk İsteklere Kadar
Avito API ile çalışmak için geliştirici panelinde kayıt olmanız, bir uygulama oluşturmanız ve moderasyondan geçmeniz gerekir. Veri alma (okuma) işlevlerine erişim genellikle temel kayıttan sonra açıktır, ancak ilan yayınlama ve yönetim yöntemleri ortak veya doğrulanmış faaliyete sahip iş hesabı statüsü gerektirir. Yetkilendirme, access_token kullanılarak OAuth 2.0 protokolü üzerinden gerçekleştirilir.
Aşağıda bağlantı kurma, güvenliği yapılandırma ve entegrasyon için kod örneklerini içeren güncel talimatlar yer almaktadır.
Önemli: Avito erişim politikasını düzenli olarak günceller. Toplu veri kazıma (parsing) için genel ücretsiz bir API bulunmamaktadır. Çalışmalar resmi geliştirici platformu (developers.avito.ru) üzerinden yürütülür.
Gereksinimler ve Erişim Alma
Geliştirmeye başlamadan önce aktif bir Avito hesabınız olduğundan emin olun. Anahtarları alma süreci birkaç aşamadan oluşur:
- Geliştirici panelinde kayıt. Avito geliştirici portalına gidin ve ana hesabınızla giriş yapın.
- Uygulama oluşturma. "Uygulamalarım" bölümünde "Oluştur" düğmesine tıklayın. Aşağıdakileri belirtmeniz gerekecektir:
- Proje adı.
- Uygulama türü (web hizmeti, mobil uygulama veya sunucudan-sunucuya).
- Redirect URI (kullanıcının yetkilendirmeden sonra yönlendirileceği adres).
- Kimlik bilgilerini alma. Oluşturduktan sonra
Client IDveClient Secretalacaksınız. Bu veriler üçüncü taraflara aktarılamaz veya istemci tarafında (frontend'de) açık şekilde saklanamaz. - Tarife ve erişim haklarının seçimi.
- Temel erişim: Kendi ilanlarınız hakkında veri okumanıza ve istatistik almanıza olanak tanır.
- Genişletilmiş erişim (Ortak): Toplu ilan yükleme, otomatik öne çıkarma ve sohbetleri yönetmek için gereklidir. Ortak anketinin doldurulmasını ve işletme moderasyonundan geçilmesini gerektirir.
Client Secret öğesini tarayıcıdaki JavaScript kodunda veya mobil uygulamalarda kullanmayın. Bu senaryolar için PKCE (Proof Key for Code Exchange) veya bir sunucu katmanı kullanın.
OAuth 2.0 Yetkilendirme Mekanizması
Avito standart Authorization Code Grant akışını kullanır. Token alma süreci şu şekildedir:
Adım 1. Yetkilendirme bağlantısının oluşturulması
Kullanıcının uygulamanın verilerine erişmesine izin vermesi için bir bağlantıya tıklaması gerekir.
https://api.avito.ru/oauth/authorize?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&scope=ads_user ads_read
Burada scope erişim haklarını belirler:
ads_user— ilan yönetimi.ads_read— veri okuma.messages_user— sohbetlerle çalışma.
Adım 2. Yetkilendirme kodunun alınması
Kullanıcı onayladıktan sonra Avito, onu code parametresiyle redirect_uri adresinize yönlendirecektir:
YOUR_REDIRECT_URI?code=AUTH_CODE
Adım 3. Kodun token ile değiştirilmesi
Geçici kodu access_token ve refresh_token ile değiştirmek için Avito sunucusuna bir POST isteği gönderin.
İstek örneği (cURL):
curl -X POST https://api.avito.ru/oauth/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=authorization_code" \
-d "code=AUTH_CODE" \
-d "client_id=YOUR_CLIENT_ID" \
-d "client_secret=YOUR_CLIENT_SECRET" \
-d "redirect_uri=YOUR_REDIRECT_URI"
Sunucu yanıtı:
{
"access_token": "eyJhbGciOi...",
"token_type": "Bearer",
"expires_in": 86400,
"refresh_token": "def50200..."
}
access_token 24 saat geçerlidir. Mevcut token süresi dolduğunda kullanıcı müdahalesi olmadan yeni token almak için refresh_token kullanın.
API Kullanım Örnekleri
API yöntemlerine yapılan tüm istekler yetkilendirme başlığı içermelidir:
Authorization: Bearer YOUR_ACCESS_TOKEN
Çoğu yöntem için temel URL: https://api.avito.ru/core/v1/
1. Kendi ilanlarınızın listesini alma
Bu yöntem, kullanıcının tüm aktif ve arşivlenmiş ilanları hakkında bilgi indirmesine olanak tanır.
İstek:
GET /accounts/{account_id}/items
Parametreler:
account_id— mağaza veya kişisel panel tanımlayıcısı.limit— sayfa başına öğe sayısı (maks. 100).page— sayfa numarası.
Yanıt örneği:
{
"items": [
{
"id": 123456789,
"title": "iPhone 13, 128 GB",
"price": 45000,
"status": "active",
"category": "telefony",
"address": {
"city": "Moskova",
"street": "Lenin Caddesi, 1"
}
}
],
"total_items": 1,
"page": 1,
"pages_count": 1
}
2. Yeni ilan oluşturma
Yayınlama için genişletilmiş erişim gerekir. Veriler JSON formatında iletilir.
İstek:
POST /accounts/{account_id}/items
Content-Type: application/json
İstek gövdesi:
{
"title": "Dağ bisikleti",
"description": "Yeni bisiklet, 1 yıl garanti.",
"category": "velosipedy",
"price": 15000,
"address": {
"city": "Saint Petersburg",
"street": "Nevski Prospekti, 10"
},
"images": ["https://example.com/img1.jpg"],
"attributes": [
{
"key": "brand",
"value": "Merida"
}
]
}
Görseller önceden Avito sunucusuna yüklenmeli veya platformun desteklediği doğrudan bağlantılar aracılığıyla sunulmalıdır. İçerik moderasyon kurallarının ihlal edilmesi ilanın reddedilmesine yol açar.
3. Fiyat ve durum güncelleme
Stok ve fiyatların çevrimiçi mağazayla senkronize edilmesi için sıkça yapılan bir işlemdir.
İstek:
PATCH /accounts/{account_id}/items/{item_id}
Content-Type: application/json
İstek gövdesi:
{
"price": 14000,
"status": "active"
}
Entegrasyonda Sık Karşılaşılan Hatalar
| Hata Kodu | Neden | Çözüm |
|---|---|---|
401 Unauthorized | Geçersiz veya süresi dolmuş token | Authorization başlığını kontrol edin. Token'ı refresh_token aracılığıyla yenileyin. |
403 Forbidden | İşlem için yetki yok | Yetkilendirme sırasında scope içinde gerekli hakların (örneğin ads_user) istendiğinden emin olun. |
429 Too Many Requests | İstek limiti aşıldı | Tekrarlanan istekler arasında üstel geri çekilme (exponential backoff) uygulayın. |
400 Bad Request | Parametrelerde hata | JSON geçerliliğini, zorunlu alanların varlığını ve kategorilerin Avito sözlüğüne uygunluğunu kontrol edin. |
SSS
Başkalarının ilanlarını kazımak (parse etmek) için Avito API kullanılabilir mi? Hayır. Resmi API yalnızca kendi hesabınızın veya (ortak programı kapsamında) yönettiğiniz hesapların verilerine erişim sağlar. Site izinsiz veri toplamak kullanıcı sözleşmesini ihlal eder.
İstek sayısı limitleri nelerdir? Limitler tarifeye ve yöntem türüne bağlıdır. Standart ortaklar için genellikle dakikada yaklaşık 100–300 istek limiti uygulanır. Kesin değerler, geliştirici panelindeki "Limitler" bölümünde belirtilmiştir.
Görsellerle nasıl çalışılır?
Avito, görsellerin ayrı bir /images/upload uç noktası üzerinden yüklenmesini veya doğrudan içerik sunumunu destekleyen harici barındırma hizmetlerine bağlantı verilmesini gerektirir. Yüklemeden sonra, ilan oluştururken belirttiğiniz bir image_id alırsınız.
Token sürekli süresi doluyorsa ne yapılmalı?
Backend'de token'ların otomatik yenilenmesini ayarlayın. refresh_token öğesini güvenli bir depolama alanında saklayın ve mevcut access_token süresi dolmadan önce yeni token çifti almak için kullanın.