API (non officielle) AVITO


Le 27/09/2013 j'ai participé avec un ami à un concours concernant le développement d'une application Android, notre idée était de créer une application de recherche sur Avito et Bikhire en même temps via un crawler, car les deux plates-formes n'ont pas une API public.

Nous avons gagné la 2e place -pas mal- cependant les deux plates-formes sont devenues une seule "Avito", oui oui oui notre application est morte, mais ce n'est pas notre sujet, car je vais parler de l'API non officielle d'Avito.Pour avoir et comprendre l'API non officielle d'Avito j'ai téléchargé l'application mobile d'Avito puis j'ai fait un sniff avec Fiddler, voilà les résultats :


1. Pour avoir les villes avec les régions :
http://www.avito.ma/templates/api/confregions.js?v=3
Résultat : 
 { "regions": [  
{
"id" : "1",
"name" : "Khouribga"
},
{
"id" : "2",
"name" : "Safi"
,
"cities" : [
{
"id" : "2",
"name" : "Lalla Hnia Hamria"
},
{
"id" : "162",
"name" : "Ville Nouvelle"
},
{
"id" : "163",
"name" : "Autre secteur"
}
]
},
.................

2. Pour avoir les catégories et les sous catégories :
http://www.avito.ma/templates/api/confcategories.js?v=3
Résultat : 
 {  
"categories": [
{
"id" : 5000,
"level" : 0,
"parent" : null,
"name" : "INFORMATIQUE ET MULTIMEDIA",
"ad_types" : "s,k"
},
{
"id" : 5010,
"level" : 1,
"parent" : 5000,
"name" : "Téléphones",
"ad_types" : "s,k"
},
.................

3. Pour avoir les dernières publications dans tous les catégories :
http://www.avito.ma/lij?fullad=1&w=105&ca=5_s&cg=0&st=s
Résultat : 
 {  
"ads_per_page" : 20,
"extracted_ads" : 20,
"total_ads" : 267032,
"list_ads" : [
{
"id" : 5113563,
"ad_date" : "Aujourd'hui, 23:38",
"subject" : "Montre Guess Collection SPORT X76004G2S",
"thumb" : "http://content.avito.ma/thumbs/70/7063966465.jpg",
"price" : "2.300",
"category" : "3160",
"city" : "",
"type" : "Offre",
"url" : "http://www.beta.avito.ma/vij/5113563.htm",
"full_ad_data":{
"status" : "200",
"id" : "5113563",
"subject" : "Montre Guess Collection SPORT X76004G2S",
"name" : "Amine",
"date" : "2015-02-04 23:38:46",
"body" : "Montre Guess Collection SPORT CLASS XXl X76004G2S",
"region" : "Casablanca",
"city" : "",
"type" : "Offre",
"category" : "3160",
"company_ad" : "1",
"price" : {
"label" : "Prix",
"value" : "2 300 DH"
},
...........................

4. Pour faire une recherche sur un "iphone" ville "Rabat" catégorie "informatique":
http://www.avito.ma/lij?fullad=1&q=iphone&w=112&ca=12_s&cg=5000&st=s
 "q " ---> ce qu'on cherche
 "ca" ---> numéro de ville (voir requête numéro 1)
 "cg" ---> numéro de catégorie (voir requête numéro 2)
Résultat :
 {  
"ads_per_page" : 20,
"extracted_ads" : 20,
"total_ads" : 1060,
"list_ads" : [
{
"id" : 5112288,
"ad_date" : "Hier, 22:01",
"subject" : "Iphone 5s 16GB libre officiel GOLD",
"thumb" : "http://content.avito.ma/thumbs/70/7099136243.jpg",
"price" : "4.000",
"category" : "5010",
"city" : "",
"type" : "Offre",
"url" : "http://www.beta.avito.ma/vij/5112288.htm",
"full_ad_data":{
"status" : "200",
"id" : "5112288",
"subject" : "Iphone 5s 16GB libre officiel GOLD",
"name" : "mounir",
"date" : "2015-02-04 22:01:48",
"body" : "je met en vente iphone 5s presque neuf en tres bon etat dans sa boite avec touts les accessoires d’origine, chargeurs, écouteurs phones, cable USB, chargeurs tous originales et dans la boite, aucune rayure:<br> 2 mois d'utilisations",
"region" : "Tanger",
"city" : "",
"type" : "Offre",
"category" : "5010",
"company_ad" : "0",
"price" : {
"label" : "Prix",
"value" : "4 000 DH"
},
...........................

J'espère que cela pourra vous aider.




Liens utiles :

 

Commentaires

  1. Merci Saad pour l'article, sinon j'aurai une question a te poser, on fait comment pour la pagination des resultats de recherche retourné ?

    RépondreSupprimer
    Réponses
    1. you can use "o" query string param.
      for example, to fetch page #2:
      http://www.avito.ma/lij?o=2

      to get an idea of all available params. please take a look at buildRequest (line 197) method here https://gist.github.com/anonymous/1822920de610551253ae21ec4e78b779

      Supprimer
  2. Hey Adil ,

    iam having some trouble don't know if you can help me but the thing is im trying to replicate the things you did (fiddler to get a look on how the application/api works)
    Now ive set fiddler with my phone (android) everything looks ok it gets data when i try to access a normal website but when i try to access Avito/jumia app it sais (Aucune connexion ) and the error from fiddler is a services.avito.ma:443 error and it works just fine without a "proxy" is there a way to bypass the error thank you

    RépondreSupprimer
    Réponses
    1. update: well after doing my homework i found out that the problem is caused by a certificate pining security measurement ill try to bypass it and keep you updated for the ones that are having the same problem :)

      Supprimer

Enregistrer un commentaire