Метод: POST
https://baziscrm.ru/api/parser/get_new/
Что вернет успешный запрос?
Успешный запрос вернет XML-фид, в котором будут новые объявления согласно условиям. Если новых объявлений нет — фид будет пустой.
Какой принцип?
Мы выбрали самый простой и надежный алгоритм передачи данных в Вашу базу. Важно понять его принцип, чтобы правильно написать обработчик на стороне Вашего ПО.
Опишем принцип:
При каждом успешном запросе API возвращает порцию актуальных на текущий момент объявлений в формате XML. Максимально за один запрос возвращается 25 объявлений. На своей стороне получив порцию объявлений Вы сохраняете их в свою базу.
У каждого объявления есть уникальный ID, который представлен в теге <id>
. Обязательно сохраняйте значение этого тега в свою базу. При повторных запросах в параметре запроса NEXT_ID передавайте ID c самым большим значением среди всех уже загруженных в Вашу базу объектов. Таким образом каждый последующий запрос возвращает следующую более новую порцию объявлений.
Если при повторных запросах не передавать параметр NEXT_ID Вы будете получать 25 объявлений с самыми минимальными значениями ID в базе. Это неправильно. Указывая параметр запроса NEXT_ID Вы говорите API — верни мне теперь следующую порцию объявлений, у которых ID больше значения NEXT_ID.
Для надежности перед сохранением объявления в своей базе обязательно проверяйте не было ли уже загружено объявление. Это можно делать также по тегу <id>
.
Запускать свой обработчик можете по заданию в CRON, достаточным будет запускать обработчик каждые 5 минут.
Что отправлять?
Параметр | Тип | Обязат. | Описание |
CLIENT_ID | Целое число | Да | Ваш идентификатор. |
PASS | Строка | Да | Ваш пароль доступа. |
NEXT_ID | Целое число | Да |
Передаете ID последнего загруженного объявления (из тега <id> — это уникальное ID объявления в базе). При передаче этого параметра API вернет следующую порцию объявлений с большим ID.
|
TYPE_OBJECTS | Массив строковых значений. | Нет |
Типы недвижимости. Если необходимы объявления с определенными типами недвижимости (напр. Квартиры в продажу, Офисы в аренду, Земельные уч. в продажу...), то в данном параметре их можно перечислить. Если необходимы любые (все) типы недвижимости, то данный параметр передавать не нужно. Что необходимо передавать в случае, когда нужны только определенные типы недвижимости: В продажу Квартиры —sale_flat Дома — sale_house Дачи — sale_dacha Таунхаусы — sale_townhouse Земельные уч. — sale_land Офисы — sale_office ПСН — sale_free Производства — sale_production Склады — sale_warehouse Торговые помещ. — sale_trade В аренду Квартиры —rent_flat Дома — rent_house Дачи — rent_dacha Таунхаусы — rent_townhouse Земельные уч. — rent_land Офисы — rent_office ПСН — rent_free Производства — rent_production Склады — rent_warehouse Торговые помещ. — rent_trade
|
TYPE_CONTACT | Строка | Нет |
Типы контактов. Если необходимы объявления только от собственников, то в данном параметре необходимо передать значение —sob . Если необходимы объявления только от агентов, то в данном параметре необходимо передать значение — agent . Если необходимы объявления и от собственников, и от агентов, то данный параметр не нужно передавать вообще.
|
API вернет ошибку в формате JSON если в запросе были переданы неверные данные авторизации или закончился срок подписки на базу.
Если переданы неверные CLIENT_ID или PASS:
{
"Status": "Error",
"Code": "401",
"Description": "Request authorization error."
}
Если срок подписки истек:
{
"Status": "Error",
"Code": "402",
"Description": "Paid subscription period has expired."
}
Поставьте запуск
данного
обработчика в CRON
на каждые 5 минут.
Это оптимальная
периодичность.
/*
1. Получаете из таблицы своей базы
самое большое значение,
записанное из тега <id>,
для того чтобы подставить это значение
в параметр NEXT_ID текущего запроса.
Это нужно чтобы запрос
вернул следующие незагруженные объявления,
если они есть.
*/
/*
Получение
значения
для NEXT_ID
*/
$next_id = /*
Сюда должно быть записано
значение для подстановки
в NEXT_ID
*/
/*
2. Отправляете запрос по адресу:
https://baziscrm.ru/api/parser/get_new/
чтобы получить следующую порцию новых объявлений, если они есть.
Если на текущий момент все объявления загружены
(нет новых для Вас объявлений),
то запрос вернет пустой XML.
*/
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://baziscrm.ru/api/parser/get_new/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query(array(
"CLIENT_ID" => "", // Вписать значение CLIENT_ID (Это логин)
"PASS" => "", // Вписать значение PASS (Это пароль)
"NEXT_ID" => $next_id,
"TYPE_OBJECTS" => array(), // Необходимые типы объектов
"TYPE_CONTACT" => "", // sob
// или agent
// или вообще не передавать,
// если необходимо все.
))
));
$response = curl_exec($curl);
$error = curl_error($curl);
curl_close($curl);
if($error){
echo "cURL Error #:" . $error;
}else{
echo $response;
}
/*
3. Обрабатываете и записываете
полученные объявления
в свою базу.
Перед записью объявления
желательно делать проверку,
было ли уже записано данное объявление
или нет?
Это можно делать по уникальному ID,
которое передается в теге <id>.
*/
Тег | Описание |
<id> |
Уникальный ID объявления в нашей базе. Обязательно сохраняйте значение данного тега в своей базе. По данному ID можно в дальнейшем проверять актуальность объявления и данный ID участвует в определении следующих порций объявлений (параметр запроса NEXT_ID). |
<date_create> |
Дата и время добавления объявления в нашу базу.
|
<date_actual> |
Дата проверки актуальности объявления на источнике.
|
<source> |
Источник объявления. avito — avito.ru cian — cian.ru yandex — yandex.ru youla — youla.ru domclick — domclick.ru
|
<source_url> |
Ссылка на объявление на источнике. |
<deal> |
Вид сделки. sale — В продажуrent — В аренду
|
<type> |
Тип недвижимости. flat — Квартира house — Дом dacha — Дача townhouse — Таунхаусoffice — Офис trade — Торговая площадь food — Общепит carservice — Автосервис hotel — Гостиница, отель production — Производство warehouse — Склад free — ПСН building — Зданиеland — Земельный участок
|
<location> |
Адрес объекта. |
<lat> |
Широта (геокоордината). |
<lng> |
Долгота (геокоордината). |
<rooms> |
Кол-во комнат. studio — Студия 1 — 1 комн. 2 — 2 комн. 3 — 3 комн. 4 — 4 комн. 5 — 5 комн.
|
<total_area> |
Общая площадь в м2. |
<residential_area> |
Жилая площадь в м2 (для жилых помещений). |
<kitchen_area> |
Площадь кухни в м2 (для жилых помещений). |
<area_of_land> |
Площадь зем. участка в сотках. |
<landstatus> |
Статус земельного участка. ijs — ИЖС sntdnp — СНТ, ДНП prom — Промназначение
|
<floor> |
Этаж |
<storey> |
Этажность. |
<cost> |
Цена в руб. |
<description> |
Описание объекта. |
<more_photo> |
Фотографии. |
<type_contact> |
Тип контакта. sob — Собственник agent — Агент
|
<us_phone> |
Номер телефона. |
<accessphone> |
y — Подменный номер телефона.
|
Мы периодически проверяем все объявления на актуальность. Вы можете уточнять актуальность объявлений, которые Вы загрузили через наше API.
Это достаточно просто сделать, отправив GET-запрос по указанному ниже адресу. В ответе Вы получите JSON массив с ID объектов, которые на данный момент актуальны. На основе получаемых данных Вы можете построить логику удаления неактуальных объектов в своей базе.
Ответ приходит в формате JSON
Проверяйте, что получили ответ полностью. Вы получаете массив ID, который по стандарту JSON заключен в квадратные скобки [...]. Получив ответ, проверяйте наличие закрывающей скобки, это гарантирует что Вы получили ответ полностью.
Рекомендуем повторять операцию 1 раз в час.