API для доступа к объявлениям с avito.ru

API позволяет выгружать данные avito.ru В базе присутствуют все категории и объявления. Обновление базы каждую секунду.

Подключение к API

API позволяет выгружать объявления avito.ru. В базе присутствуют все категории и объявления. Обновление базы каждую секунду.

Цена - 3000 руб. в месяц (30 дней).

Тестовый доступ на 15 дней бесплатно *

* Для тестового доступа действуют следующие ограничения: он выдается на 15 дней один раз, часть телефона скрыта, за один запрос можно получить не более 50 записей.


Описание API

Запросы для получения объявлений
выполняются на адрес http://rest-app.net/api/ads методом GET. За один запрос возвращается не больше 1000 объявлений.

Возможные параметры:

GET параметр Обязательный Описание
login да Логин пользователя в системе, e-mail
token да Access token, используемый для авторизации. Выдается на этой странице в разделе "Подключение к API"
category_id да Идентификатор категории, 0 - все категории
region_id нет Идентификатор региона
last_m нет Возможные значения: 1-30. Кол-во последних минут за который нужно вернуть результат (При использовании этого параметра, параметры date1 и date2 не учитываются)
last_s нет Возможные значения: 1-60. Кол-во последних секунд за который нужно вернуть результат (При использовании этого параметра, параметры date1, date2 и last_m не учитываются)
date1 нет Дата от в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС (пример: 2015-09-10 09:05:45 или 2015-09-10)
date2 нет Дата до в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС (пример: 2015-09-10 09:10:45 или 2015-09-10)
price1 нет Цена от
price2 нет Цена до
q нет Текст для поиска по заголовку (названию)
Замечание: Если вы используете спецсимволы, такие как пробел, вам нужно закодировать запрос при помощи urlencode().
phone нет Телефон в формате 8xxxYYYYYYY, по которому требуется фильтрация. Выводит объявления с этим телефоном.
wp нет Использование этого параметра позволяет обращаться к буферу объявлений (за последние сутки) с уже проставлеными телефонами
limit нет (1000) Ограничение кол-ва, не может быть больше 1000
format нет (json) Формат ответов. Возможные значения: json, xml, csv

Примеры:

http://rest-app.net/api/ads?login=ваш_логин&token=ваш_ключ&category_id=9
http://rest-app.net/api/ads?login=ваш_логин&token=ваш_ключ&category_id=9&date1=2015-12-05+17:00:00&date2=2015-12-05+18:00:00
http://rest-app.net/api/ads?login=ваш_логин&token=ваш_ключ&category_id=9&format=xml&limit=10
http://rest-app.net/api/ads?login=ваш_логин&token=ваш_ключ&category_id=9&format=xml&last_m=5

Запрос для получения объявления по id
выполняются на адрес http://rest-app.net/api/ad методом GET.

Возможные параметры:

GET параметр Обязательный Описание
login да Логин пользователя в системе, e-mail
token да Access token, используемый для авторизации. Выдается на этой странице в разделе "Подключение к API".
id да Идентификатор объявления на avito.ru
format нет (json) Формат ответов. Возможные значения: json, xml, csv

Примеры:

http://rest-app.net/api/ad?login=ваш_логин&token=ваш_ключ&id=685674499

Запрос для получения инфомации по аккаунту
выполняются на адрес http://rest-app.net/api/info методом GET.

Возможные параметры:

GET параметр Обязательный Описание
login да Логин пользователя в системе, e-mail
token да Access token, используемый для авторизации. Выдается на этой странице в разделе "Подключение к API".
format нет (json) Формат ответов. Возможные значения: json, xml, csv

Примеры:

http://rest-app.net/api/info?login=ваш_логин&token=ваш_ключ

Пример ответа в формате JSON:

{
	"status":"ok",
	"data":[
		{
			"Id":"56021070",
			"url":"https://www.avito.ru/vichuga/avtomobili/vaz_2110_2001_709412481",
			"avito_id":"709412481",
			"title":"ВАЗ (LADA) 2110 1.5 МТ, 2001, седан",
			"price":"65000",
			"time":"2016-01-11 12:00:01",
			"operator":"Билайн",
			"phone":"89621652602",
			"name":"Роман",
			"region":"Ивановская область",
			"city":"Вичуга",
			"district":"",
			"address":"",
			"metro":"",
			"images":"http://46.img.avito.st/640x480/2182788746.jpg,http://08.img.avito.st/640x480/2182789008.jpg",
			"description":"Есть не большие рыжики,резина зима - лето,остальное по телефону!",
			"params":[
				{
					"name":"Тип автомобиля",
					"value":"С пробегом"
				},
				{
					"name":"Пробег, км",
					"value":"170 000 - 179 999"
				},
				{
					"name":"Цвет",
					"value":"Серебряный"
				},
				{
					"name":"Количество дверей",
					"value":"4"
				},
				{
					"name":"Тип двигателя",
					"value":"Бензин"
				},
				{
					"name":"Привод",
					"value":"Передний"
				},
				{
					"name":"Руль",
					"value":"Левый"
				},
				{
					"name":"Состояние",
					"value":"Не битый"
				},
				{
					"name":"VIN-номер",
					"value":"XTA21102*20****65"
				},
				{
					"name":"Мощность двигателя, л.с.",
					"value":"71"
				}
			]
		},
		{
			"Id": "68453128",
			"url": "https://www.avito.ru/kazan/kvartiry/4-k_kvartira_92_m_1118_et._725486559",
			"avito_id": "725486559",
			"title": "4-к квартира, 92 м², 11/18 эт.",
			"price": "30000",
			"time": "2016-02-09 17:22:45",
			"operator": "МТС",
			"phone": "89179369582",
			"name": "Арсен",
			"region": "Татарстан",
			"city": "Казань",
			"district": "",
			"address": "Академика Глушко ул, 8",
			"metro": "",
			"images": "http://22.img.avito.st/640x480/2237861422.jpg,http://02.img.avito.st/640x480/2237861002.jpg",
			"description": "Евроремонт. 3 изолированных и 1 проходная комната.",
			"params":[
				{
					"name": "Тип объявления",
					"value": "Сдам"
				},
				{
					"name": "Срок аренды"
					"value": "На длительный срок",
				},
				{
					"name": "Комиссия",
					"value": "Нет"
				},
				{
					"name": "Залог",
					"value": "Без залога"
				},
				{
					"name": "Тип дома",
					"value": "Кирпичный"
				}
			],
			"coords": {
				"lat": "55.779722",
				"lng": "49.236697"
			}
		}
	]
}
						

Пример ответа в формате XML:

<?xml version="1.0" encoding="UTF-8"?>
<result>
	<status>ok</status>
	<data>
		<ad>
			<Id>56020970</Id>
			<url>https://www.avito.ru/sankt-peterburg/avtomobili/mitsubishi_pajero_2009_709412345</url>
			<avito_id>709412345</avito_id>
			<title>Mitsubishi Pajero 3.2 AT, 2009, внедорожник</title>
			<price>999000</price>
			<time>2016-01-11 11:59:50</time>
			<operator>Tele2</operator>
			<phone>89522151607</phone>
			<name>Владелец</name>
			<region>Санкт-Петербург</region>
			<city/>
			<district/>
			<address/>
			<metro>Площадь Мужества</metro>
			<images>http://89.img.avito.st/640x480/2182791389.jpg,http://69.img.avito.st/640x480/2182793369.jpg</images>
			<description>Максимальная комплектация.Покупали новым в ноябре 2009 года у оф.дилера Mitsubishi.</description>
		</ad>
		<ad>
			<Id>56020971</Id>
			<url>https://www.avito.ru/samara/avtomobili/vaz_vesta_2015_709412344</url>
			<avito_id>709412344</avito_id>
			<title>ВАЗ (LADA) Vesta 1.6 МТ, 2015, седан</title>
			<price>528000</price>
			<time>2016-01-11 11:59:50</time>
			<operator>Билайн</operator>
			<phone>89033014579</phone>
			<name>Андрей</name>
			<region>Самарская область</region>
			<city>Самара</city>
			<district/>
			<address/>
			<metro>Безымянка</metro>
			<images>http://91.img.avito.st/640x480/2182779891.jpg</images>
			<description>LADA Vesta стильная, стремительная, яркая - такая, каким и должен быть автомобиль LADA.</description>
		</ad>
	</data>
</result>
						

Как использовать

API в основном предназначено для периодического к нему обращения, например, каждую минуту или 5 минут, и загрузки объявлений себе на сайт или CRM.


Пример на языке PHP (получение данных за последнюю минуту):

date_default_timezone_set('Europe/Moscow');
$login = 'user@mail.ru';     //здесь должен быть ваш логин в системе
$token = 'df6fd21c885ec9c55737*********';     //здесь должен быть ваш token

//делаем запрос к api
$str = file_get_contents("http://rest-app.net/api/ads?login=".urlencode($login)."&token=".urlencode($token)."&category_id=9&last_m=1");

//парсим ответ как json
$json = json_decode($str);

//проходим по всем объявлениям
foreach ($json->data as $ad)    //$ad - объект объявления
{
	//выводим: заголовок объявления, город, номер телефона
	echo $ad->title.';'.$ad->city.';'.$ad->phone;
	echo '<br/>';
}
						

Пример на языке PHP (получение данных за период):

date_default_timezone_set('Europe/Moscow');
$login = 'user@mail.ru';     //здесь должен быть ваш логин в системе
$token = 'df6fd21c885ec9c55737*********';     //здесь должен быть ваш token

//задаем время получаемых объявлений
$date = new DateTime();    //текущее время
$date1 = clone $date;      //копируем объект даты
$date1->modify("-32 minute");    //текущее минус 32 минуты
$date2 = clone $date;      //копируем объект даты
$date2->modify("-31 minute");   //текущее минус 31 минуты

//таким образом интервал $date1 и $date2 у нас будет 1 минута, теперь можно делать запрос

//делаем запрос к api
$str = file_get_contents("http://rest-app.net/api/ads?login=".urlencode($login)."&token=".urlencode($token)."&category_id=9"
						  ."&date1=".urlencode($date1->format('Y-m-d H:i:s'))
						  ."&date2=".urlencode($date2->format('Y-m-d H:i:s')));

//парсим ответ как json
$json = json_decode($str);

//проходим по всем объявлениям
foreach ($json->data as $ad)    //$ad - объект объявления
{
	//выводим: заголовок объявления, город, номер телефона
	echo $ad->title.';'.$ad->city.';'.$ad->phone;
	echo '<br/>';
}
						

Скрипт можно запускать по расписанию для получения новых объявлений.

Запук каждые 5 минут, пример для crontab: */5 * * * *   /path/to/php   /path/to/script

или каждую минуту, пример для crontab: * * * * *   /path/to/php   /path/to/script

Для Windows можно использовать стандартный планировщик заданий


Получение данных за большой период или пагинация:

Если вам надо получить объявления, для примера, за неделю, и нужна пагинация, то для этого используйте временной интервал. Т.е. вместо пагинации вы запрашиваете объявления порциями по 5 минут или даже за минуту, используя параметры date1 (Дата от) и date2 (Дата до) для задания границ временного интервала. Только между запросами обязательно делайте задержку.

Пример на языке PHP (получение данных за большой период):

date_default_timezone_set('Europe/Moscow');
$token = '6159c82bcb4ec5************'; //токен (ключ)
$login = 'user@mail.ru'; //логин

#шаг
$interval = "+1 hour";

#получение данных за период (с .. по ..)
$date_start = new DateTime('2017-01-01');
$date_finish = new DateTime(); // текущее время

$i=0;
while($date_start<$date_finish){
	$date1= clone $date_start;

	$date_start->modify($interval);
	if($date_start>$date_finish){
		$date2= clone $date_finish;
	}else{
		$date2= clone $date_start;
	}

	$str = get_data("http://rest-app.net/api/ads?login=".urlencode($login)."&token=".urlencode($token)."&category_id=24"
					  ."&date1=".urlencode($date1->format('Y-m-d H:i:s'))
					  ."&date2=".urlencode($date2->format('Y-m-d H:i:s'))."&limit=1000");

	$arr=json_decode($str, true);
	if($arr['status']=='error'){
		echo $arr['message']."\n";
		die;
	}

	if(!count($arr['data'])){
		continue;
	}

	foreach($arr['data'] as $ad){
		print_r($ad); //выводим объявления
	}

	sleep(2);
}

function get_data($url){
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	$output = curl_exec($ch);
	curl_close($ch);

	return $output;
}
						

Категории

Id Название
9Автомобили
10Запчасти и аксессуары
11Водный транспорт
14Мотоциклы и мототехника
19Ремонт и строительство
20Мебель и интерьер
21Бытовая техника
23Комнаты
24Квартиры
25Дома, дачи, коттеджи
26Земельные участки
27Одежда, обувь, аксессуары
28Часы и украшения
29Детская одежда и обувь
30Товары для детей и игрушки
31Настольные компьютеры
32Аудио и видео
33Билеты и путешествия
34Велосипеды
36Коллекционирование
38Музыкальные инструменты
39Спорт и отдых
40Оборудование для бизнеса
42Коммерческая недвижимость
81Грузовики и спецтехника
82Продукты питания
83Книги и журналы
84Телефоны
85Гаражи и машиноместа
86Недвижимость за рубежом
87Посуда и товары для кухни
88Красота и здоровье
89Собаки
90Кошки
91Птицы
92Аквариум
93Другие животные
94Товары для животных
96Планшеты и электронные книги
97Игры, приставки и программы
98Ноутбуки
99Оргтехника и расходники
101Товары для компьютера
102Охота и рыбалка
105Фототехника
106Растения
111Вакансии
112Резюме
114Предложения услуг
115Запросы на услуги
116Готовый бизнес

Регионы / Города

Id Название
645530Адыгея
621590Алтайский край
622470Амурская область
622650Архангельская область
623110Астраханская область
645790Башкортостан
623410Белгородская область
623840Брянская область
623845Бурятия
624300Владимирская область
624770Волгоградская область
625330Вологодская область
625670Воронежская область
646710Дагестан
626470Еврейская АО
661460Забайкальский край
628450Ивановская область
628455Ингушетия
628780Иркутская область
629430Кабардино-Балкария
629990Калининградская область
629995Калмыкия
630270Калужская область
630660Камчатский край
630750Карачаево-Черкесия
648070Карелия
631080Кемеровская область
631730Кировская область
648340Коми
632390Костромская область
632660Краснодарский край
634930Красноярский край
621550Крым
635730Курганская область
636030Курская область
636370Ленинградская область
637260Липецкая область
637530Магаданская область
648730Марий Эл
648960Мордовия
637640Москва
637680Московская область
640000Мурманская область
640001Ненецкий АО
640310Нижегородская область
641240Новгородская область
641470Новосибирская область
642020Омская область
642480Оренбургская область
643030Орловская область
643250Пензенская область
643700Пермский край
644490Приморский край
645260Псковская область
662811Республика Алтай
651110Ростовская область
652220Рязанская область
652560Самарская область
653240Санкт-Петербург
653420Саратовская область
649330Саха (Якутия)
653430Сахалинская область
653700Свердловская область
649820Северная Осетия
654860Смоленская область
655190Ставропольский край
656520Тамбовская область
650130Татарстан
656890Тверская область
657310Томская область
657610Тульская область
650690Тыва
658170Тюменская область
659200Удмуртия
659540Ульяновская область
659930Хабаровский край
650890Хакасия
660300Ханты-Мансийский АО
660710Челябинская область
660711Чеченская республика
662000Чувашия
662280Чукотский АО
662330Ямало-Ненецкий АО
662530Ярославская область