API разработчикам
REST API нужен, чтобы запускать парсинг товаров, собирать категории сайтов, выгружать товары в нужный формат и забирать результаты из своих скриптов и сервисов — без ручной работы на сайте.
Базовый адрес: https://q-parser.ru/api/v1. API-ключ можно посмотреть и перевыпустить в настройках профиля.
Тело POST-запросов — JSON с заголовком Content-Type: application/json. Даты в ответах — unix timestamp в миллисекундах.
Ошибки приходят в виде { "error": { "code": "...", "message": "..." } }. Типичные коды: unauthorized, bad_request, forbidden, not_found, unprocessable, internal.
Авторизация
В каждом запросе передайте API-ключ в заголовке Authorization: Bearer ВАШ_КЛЮЧ или X-Api-Key: ВАШ_КЛЮЧ.
Ключ передавайте только в заголовках, не публикуйте его и не вставляйте в клиентский код.
GET /api/v1/me
Текущий пользователь: тариф, баланс и AI Points.
Ответ (200):
email— email пользователяtariff_id— идентификатор тарифаtariff_until— срок действия тарифа (unix ms)balance— баланс в рубляхai_points— AI Points, как в шапке кабинета
GET /api/v1/website/:domain
Схема настроек парсера для сайта: нужна ли авторизация, ручные категории и какие опции передавать при запуске.
Запрос: domain в пути (например example.com).
Ответ (200):
domain— канонический доменprotocol—httpилиhttpsauth_required— нужна ли авторизация на сайтеmanual_categories— нужно ли передавать категории вручнуюoptions— объект опций (может быть пустым). Ключ опции передаётся вoptionsпри запуске парсинга категорий или товаров. Типы:select,input,file,text,html,vkcom,okru
GET /api/v1/credentials
Список сохранённых логинов для сайтов, где нужна авторизация. Пароли не возвращаются.
Запрос: необязательный query-параметр domain — фильтр по сайту.
Ответ (200): объект credentials — массив записей:
id— идентификатор записи (UUID), его передают вcredentials_iddomain— домен сайтаlogin— логинlast_login— время последней успешной авторизации (unix ms) илиnull
POST /api/v1/credentials
Добавляет логин и пароль. Если такая пара уже есть, пароль обновляется, id остаётся прежним.
Запрос (JSON):
domain— домен сайтаlogin— логинpassword— пароль
Ответ (201): id, login, domain.
POST /api/v1/categories
Запускает сбор категорий сайта. Если список уже есть в кэше, сразу возвращается completed без повторного сбора.
Запрос (JSON):
domain— домен сайтаcredentials_id— UUID сохранённого логина, если на сайте нужна авторизацияoptions— значения опций сайта (ключи изGET /api/v1/website/:domain), строки илиnull
Ответ (201):
id— идентификатор задачи, его передают вGET /api/v1/categories/:idstatus—runningилиcompleted
GET /api/v1/categories/:id
Статус и результат сбора категорий.
Запрос: id задачи из POST /api/v1/categories.
Ответ (200):
id— идентификатор задачиstatus—running,completedилиerrorupdated— время обновления кэша (unix ms) илиnullcategories— массив{ title, url }илиnull, пока статусrunning
POST /api/v1/parser
Запускает парсинг товаров. Полноценный парсинг платного сайта — только с действующим тарифом. Пробный парсинг — с trial: true, доступен без тарифа. Если categories не передан или пустой, список категорий будет загружен автоматически
на старте парсинга.
Одновременно не больше 100 незавершенных парсингов. Пока лимит занят, запрос вернёт unprocessable.
Запрос (JSON):
domain— домен сайтаcategories— необязательный массив{ title, url }. Элементы без названия или ссылки пропускаются. Ссылка должна вести на этот же сайтcredentials_id— UUID логина, если нужна авторизацияoptions— значения опций сайтаtrial—trueдля пробного парсинга
Ответ (201): id парсинга в виде id1234567.
GET /api/v1/parser/list
История парсингов.
Запрос:
limit— размер страницы, по умолчанию 100, максимум 1000offset— смещение, по умолчанию 0
Ответ (200):
total— всего парсинговlimit,offset— фактическая пагинацияlist— массив:id,domain,status(queued,running,completed,canceled,error),goods_processed,goods_limited,categories_total,categories_processed,created,finished(unix ms,finishedможет бытьnull),archive
GET /api/v1/parser/:id
Статус парсинга: очередь, прогресс, ошибка.
Запрос: id в пути — полный id парсинга, например id1234567.
Ответ (200):
id— идентификатор парсингаstatus—queued,running,completed,canceledилиerrordomain— домен сайтаgoods_processed— сколько товаров уже спарсеноgoods_limited— лимит товаров по тарифу илиnullcategories_total— всего категорий в заданииcategories_processed— сколько категорий уже обработаноcreated— время создания (unix ms)finished— время завершения (unix ms) илиnullarchive— архивный парсингerror— текст ошибки илиnull
GET /api/v1/parser/:id/goods
Список товаров парсинга с постраничной выдачей.
Для архивного парсинга товары недоступны, запрос вернёт unprocessable.
Запрос:
idв пути — полный id парсинга, напримерid1234567limit— размер страницы, по умолчанию 100, максимум 1000offset— смещение, по умолчанию 0
Ответ (200):
total— всего товаровlimit,offset— фактическая пагинацияgoods— массив товаров:title,article,url,price,old_price,currency,brand,quantity,publish(наличие,true/false/null),images,file_links,video_links(массивы ссылок),category_title,category_url,description,short_description,data— дополнительные характеристики с человекочитаемыми ключами
GET /api/v1/format
Список форматов выгрузки: идентификаторы, названия и схема опций.
Ответ (200): объект formats — массив записей:
id— идентификатор формата, его передают вPOST /api/v1/exporttitle— название форматаoptions— объект опций (может быть пустым). Ключ опции передаётся вoptionsпри запуске выгрузки. Каждая опция:title,type,values— массив{ key, label }. Для выбора обычно берутkeyпервого элементаvalues
POST /api/v1/export
Запускает выгрузку товаров парсинга в выбранный формат.
Одновременно не больше 100 незавершенных выгрузок любого формата. Пока лимит занят, запрос вернёт unprocessable.
Запрос (JSON):
parser_id— полный id парсинга, напримерid1234567format— id формата изGET /api/v1/formatoptions— значения опций формата (ключи из схемы формата). Необязательно можно передатьoffset(с какого товара, с нуля) иlimit(сколько товаров выгрузить)
Ответ (201): id выгрузки (UUID).
GET /api/v1/export/:id
Статус выгрузки: очередь, прогресс, файлы или ссылки результата.
Запрос: id в пути — UUID выгрузки из POST /api/v1/export.
Ответ (200):
id— идентификатор выгрузкиstatus—queued,running,completed,canceledилиerrorparser_id— id парсингаformat— id форматаgoods_exported— сколько товаров уже обработаноcreated— время создания (unix ms)finished— время завершения (unix ms) илиnullerror— текст ошибки илиnullmessage— сообщение результата илиnullfiles— массив ссылок на файлы выгрузки (может быть пустым)links— массив{ title, url }(может быть пустым)progress—{ current, max, message }во время работы илиnull
Связанные материалы
- Advantshop 1.0 (advantshop.net)
- Advantshop 2.0 (advantshop.net)
- CMS.S3 (Megagroup)
- CS-Cart (cs-cart.ru)
- Diskaunts CSV (diskaunts.net)
- Epicentrk YML (epicentrk.ua)
- Eshoper (eshoper.ru)
- HostCMS (hostcms.ru)
- InSales CSV (insales.ru)
- InSales XLS (insales.ru)
- JoomShopping (Comiel)
- LPmotor (CSV)
- Moguta (moguta.ru)
- Okay CMS (okay-cms.com)
- OpenCart CSV Export/Import Light
- OpenCart CSV Price Pro
- OpenCart Export/Import
- Osclass (Ad Importer)
- PHPShop
- PrestaShop (CSV)
- PrestaShop MagicOne Store Manager
- Prom.ua (YML)
- Rozetka (YML)
- Shopify (shopify.com)
- Simpla CMS
- Storeland
- Tilda CSV (tilda.cc)
- Tilda YML (tilda.cc)
- Ural CMS (CSV)
- uShop YML (ucoz.ru)
- Webasyst Shop-Script
- Wix (wix.com)
- WooCommerce (CSV)
- Битрикс (CSV)