scraper-apis/yandex-parser
Composer 安装命令:
composer require scraper-apis/yandex-parser
包简介
PHP client library for scraping Yandex data (places, reviews, market products) using Apify actors
README 文档
README
English | Русский
PHP-библиотека для парсинга данных Яндекса: организации и места (Яндекс Карты), отзывы (Яндекс Карты), товары (Яндекс Маркет), недвижимость (Яндекс Недвижимость).
Работает через Apify API — запускает акторы и возвращает типизированные DTO.
Установка
composer require scraper-apis/yandex-parser
Быстрый старт
use YandexParser\Client; $client = new Client('apify_api_ваш_токен'); // Поиск ресторанов в Москве $places = $client->scrapePlaces( query: ['ресторан'], location: 'Москва', maxResults: 50, ); foreach ($places as $place) { echo "{$place->title} — {$place->address}" . PHP_EOL; echo "Рейтинг: {$place->rating}, отзывов: {$place->reviewCount}" . PHP_EOL; if ($place->hasContactInfo()) { echo "Тел: {$place->getFirstPhone()}" . PHP_EOL; } }
Методы
Организации (Яндекс Карты)
use YandexParser\Language; $places = $client->scrapePlaces( query: ['стоматология', 'клиника'], location: 'Санкт-Петербург', maxResults: 200, language: Language::Russian, options: [ 'filterRating' => 4.5, 'filterOpenNow' => true, 'filterCardPayment' => true, 'maxPhotos' => 5, ], );
Отзывы (Яндекс Карты)
use YandexParser\ReviewSort; $reviews = $client->scrapeReviews( startUrls: ['https://yandex.ru/maps/org/pushkin/1124715036/'], maxReviewsPerPlace: 100, reviewSort: ReviewSort::Newest, minRating: 1, maxRating: 3, ); foreach ($reviews as $review) { echo "{$review->authorName}: {$review->rating}/5" . PHP_EOL; if ($review->hasBusinessReply()) { echo "Ответ: {$review->getBusinessReplyText()}" . PHP_EOL; } }
Товары (Яндекс Маркет)
use YandexParser\MarketSort; use YandexParser\MarketRegion; $products = $client->scrapeProducts( query: 'ноутбук ASUS', maxItems: 50, region: MarketRegion::Moscow, sort: MarketSort::PriceAsc, options: [ 'priceFrom' => 30000, 'priceTo' => 80000, ], ); foreach ($products as $product) { echo "{$product->title} — {$product->getPriceFormatted()}" . PHP_EOL; echo "Продавец: {$product->sellerName}, рейтинг: {$product->rating}" . PHP_EOL; $discount = $product->getYaBankDiscount(); if ($discount !== null) { echo "Скидка по Я.Банку: {$discount}%" . PHP_EOL; } }
Недвижимость (Яндекс Недвижимость)
use YandexParser\DealType; use YandexParser\PropertyCategory; use YandexParser\RealtySort; $listings = $client->scrapeListings( location: 'Москва', dealType: DealType::Sell, category: PropertyCategory::Apartment, maxItems: 50, sort: RealtySort::PriceAsc, roomsTotal: ['1', '2'], options: [ 'priceMin' => 5000000, 'priceMax' => 15000000, ], ); foreach ($listings as $listing) { echo "{$listing->getAddress()} — {$listing->getPriceValue()} ₽" . PHP_EOL; echo "Площадь: {$listing->getAreaValue()} м², этаж: {$listing->floorsOffered[0] ?? '?'}/{$listing->floorsTotal}" . PHP_EOL; if ($listing->hasPhones()) { echo "Тел: {$listing->getFirstPhone()}" . PHP_EOL; } if (!$listing->isFromOwner()) { echo "Агентство: {$listing->getSellerName()}" . PHP_EOL; } }
Перечисления
| Enum | Значения |
|---|---|
Language |
Auto, Russian, English, Turkish, Ukrainian, Kazakh |
ReviewSort |
Relevance, Newest, Highest, Lowest |
MarketSort |
Default, Popular, PriceAsc, PriceDesc, Rating |
MarketRegion |
Moscow, SaintPetersburg, Yekaterinburg, Kazan, Novosibirsk, NizhnyNovgorod, Samara, RostovOnDon, Krasnodar, Chelyabinsk, Ufa, Perm, Voronezh, Volgograd, Krasnoyarsk, Omsk |
DealType |
Sell, Rent |
PropertyCategory |
Apartment, Rooms, House, Lot, Commercial, Garage |
RealtySort |
Relevance, Newest, PriceAsc, PriceDesc, AreaAsc, AreaDesc, CommissioningDate |
Конфигурация
use YandexParser\Client; use YandexParser\Config; // Изменить таймаут или базовый URL $client = new Client('токен', new Config( apiToken: 'токен', timeout: 600, ));
Обработка ошибок
use YandexParser\Exception\ApiException; use YandexParser\Exception\RateLimitException; try { $places = $client->scrapePlaces(query: ['кафе'], location: 'Казань'); } catch (RateLimitException $e) { sleep($e->retryAfter); // повторить запрос } catch (ApiException $e) { echo "Ошибка API: {$e->getMessage()}" . PHP_EOL; }
Требования
- PHP 8.3+
- Токен Apify API
См. также
- 2GIS Parser PHP — парсинг 2ГИС (организации и отзывы, недвижимость, вакансии)
Лицензия
MIT
scraper-apis/yandex-parser 适用场景与选型建议
scraper-apis/yandex-parser 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 0 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 02 月 20 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 scraper-apis/yandex-parser 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 scraper-apis/yandex-parser 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 37
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-02-20