API ВЕГА

Walmart MCP Server

Размещённый сервер Model Context Protocol (MCP), который предоставляет Claude, Cursor, Windsurf и любому другому MCP-клиенту три инструмента для чтения данных Walmart. Ищите товары по ключевым словам или категориям, получайте информацию о товаре и продавце, которому принадлежит блок покупки, а также просматривайте отзывы покупателей постранично. Все данные возвращаются в виде структурированного JSON. Аккаунт разработчика Walmart и собственный сервер не нужны.

Сервер считывает общедоступные страницы Walmart, доступные посетителям без авторизации, на walmart.com и walmart.ca.

1 000 бесплатных кредитов каждый месяц, банковская карта не требуется — этого хватит на 100 запросов Walmart по тарифу 10 кредитов за запрос.

https://mcp.hasdata.com/mcp?apis=walmart

Содержание

  • Что потребуется

  • Быстрый старт

  • Примеры запросов

  • Инструменты

  • Ошибки и сбои

  • Стоимость, бесплатный план и ограничения

  • Выбор инструмента

  • Сравнение с аналогами

  • Часто задаваемые вопросы

  • Ссылки HasData

  • Разработка

  • Участие в проекте

  • Лицензия

Что потребуется

MCP-клиент и API-ключ HasData, который можно бесплатно получить в панели управления. Банковская карта не нужна; бесплатного плана хватит примерно на 100 запросов в месяц по тарифу 10 кредитов за запрос. Это удалённый сервер: для подключения достаточно указать URL и заголовок x-api-key, запускать контейнер не нужно. Клиенты, поддерживающие только stdio, подключаются к серверу через лёгкую программу запуска: она опубликована в npm как @hasdata/walmart-mcp и в PyPI как hasdata-walmart-mcp. Пример настройки приведён ниже.

Быстрый старт

URL сервера одинаков для всех клиентов. Мы проверили настройку в Claude Code и Claude Desktop. Примеры для остальных клиентов приведены в формате, описанном в их документации для удалённых серверов.

ПолеЗначение
URLhttps://mcp.hasdata.com/mcp?apis=walmart
ТранспортHTTP, с потоковой передачей данных
Заголовок авторизацииx-api-key: HASDATA_API_KEY

Клиенты с поддержкой OAuth можно подключить по тому же URL и выполнить вход, не добавляя ключ в файл конфигурации.

Claude Code

claude mcp add --transport http walmart "https://mcp.hasdata.com/mcp?apis=walmart" \
  --header "x-api-key: HASDATA_API_KEY"

Claude Desktop

Откройте Settings, затем Connectors, выберите Add custom connector, вставьте https://mcp.hasdata.com/mcp?apis=walmart и выполните вход.

Если вы настраиваете подключение через файл конфигурации, учтите: Claude Desktop загружает только локальные серверы stdio, поэтому для доступа к удалённому серверу ему нужна программа-посредник stdio. Эту роль выполняет пакет @hasdata/walmart-mcp; ключ он получает из переменной окружения. Добавьте в claude_desktop_config.json:

{
  "mcpServers": {
    "walmart": {
      "command": "npx",
      "args": ["-y", "@hasdata/walmart-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

Если вместо Node вы используете Python, замените программу запуска на пакет из PyPI. Его можно запустить через uvx без ручной установки:

{
  "mcpServers": {
    "walmart": {
      "command": "uvx",
      "args": ["hasdata-walmart-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

Cursor

Для всех проектов используйте ~/.cursor/mcp.json, для одного проекта — .cursor/mcp.json:

{
  "mcpServers": {
    "walmart": {
      "url": "https://mcp.hasdata.com/mcp?apis=walmart",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

Windsurf

Файл конфигурации: ~/.codeium/windsurf/mcp_config.json. В Windsurf поле называется serverUrl, а не url:

{
  "mcpServers": {
    "walmart": {
      "serverUrl": "https://mcp.hasdata.com/mcp?apis=walmart",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

VS Code

Файл .vscode/mcp.json в рабочей области:

{
  "servers": {
    "walmart": {
      "type": "http",
      "url": "https://mcp.hasdata.com/mcp?apis=walmart",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

Примеры запросов

Каждый из этих запросов обращается к одному инструменту или последовательно к двум, если второму нужен идентификатор товара, возвращаемый первым.

  • Найди на Walmart подставки для ноутбуков дешевле $30 и отсортируй их по цене.

  • Сколько сейчас стоит товар 18493462688 и какой продавец владеет блоком покупки?

  • Покажи всех остальных продавцов этого товара и укажи их цены с доставкой.

  • Найди отзывы об этом товаре, в которых упоминается время автономной работы.

  • Покажи только отзывы о товаре от подтверждённых покупателей и обобщи жалобы.

  • Сравни цены на этот товар на walmart.com и walmart.ca.

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

Инструменты

ИнструментЧто возвращает
hasdata_walmart_product_getWalmartProductНазвание, бренд, модель, UPC, состояние, наличие, цену и зачёркнутую прежнюю цену, цену за единицу товара, а также сведения о продавце, владеющем блоком покупки, его рейтинге и условиях возврата…. 10 кредитов за вызов
hasdata_walmart_reviews_getWalmartReviewsКаждый отзыв: оценку, заголовок, полный текст с сохранением абзацев, дату публикации, имя автора, признак подтверждённой покупки, количество голосов «полезно» и «не полезно», значки и…. 10 кредитов за вызов
hasdata_walmart_search_getSearchResultsСписок товаров: идентификатор, название, URL товара, бренд, цену и зачёркнутую прежнюю цену, рейтинг, количество отзывов, продавца, наличие, признак спонсируемого размещения, значки и…. 10 кредитов за вызов

Доступны три инструмента; каждый успешно выполненный вызов стоит 10 кредитов. Для каждого нужно указать domain — walmart.com или walmart.ca — и language. Для walmart.com доступны en и es, для walmart.ca — en и fr. Если выбранный язык не поддерживается витриной, используется язык по умолчанию.

Идентификаторы товаров привязаны к конкретной витрине. На walmart.com это числовые значения, например 18493462688, а на walmart.ca — буквенно-цифровые, например 6NZMJ5CW6MH2. Идентификатор с одной витрины нельзя использовать на другой.

Поиск товаров на Walmart

Поиск товаров на Walmart

Возвращает страницу результатов поиска по ключевому слову, категории или обоим параметрам.

ПараметрТипОбязательныйПримечания
qstringсм. нижеПоисковый запрос
catIdstringсм. нижеИдентификатор категории из URL категории, например 976759_1086446_1229651
urlstringПолный URL страницы поиска или категории Walmart; обрабатывается без изменений и имеет приоритет над параметрами выше
domainstringwalmart.com или walmart.ca
languagestringen, es или fr — зависит от витрины
sortstringbestMatch, priceLowToHigh, priceHighToLow, bestseller, highlyRated или newArrivals
pagenumberНомер страницы результатов, начиная с 1
minPrice / maxPricenumberДиапазон цен в валюте витрины
deliveryTypestringshipping или pickup
facetstringОдин фильтр в формате name:value, например brand:Great Value

Укажите q для поиска, catId для просмотра всей категории или оба параметра, чтобы искать внутри категории. Ни один из них не включён в массив required схемы, поскольку для выполнения запроса достаточно любого одного параметра.

Результат содержит searchInformation, массив productResults, блок facets и данные pagination. Для каждого товара возвращаются position, id, title, url, brand, isSponsored, badges, walmartPlusSavings, categoryPathId, объект price, сведения reviews с рейтингом rating и количеством отзывов totalReviews, а также image, seller, availability и fulfillment.

В блоке facets перечислены все фильтры, поддерживаемые запросом. Для каждого значения указана точная строка, которую нужно передать в facet. Сначала выполнить поиск без фильтров, чтобы получить список доступных значений, выгоднее, чем подбирать их наугад.

{
  "position": 1,
  "id": "18493462688",
  "title": "Incipio Portable Foldable Aluminum Laptop Stand and Riser with Adjustable Angles, Anti-Slip and Ventilated Design",
  "url": "https://www.walmart.com/ip/Portable-Laptop-Stand-Black/18493462688",
  "isSponsored": true,
  "badges": ["Overall pick"],
  "walmartPlusSavings": true,
  "categoryPathId": "4125_4134_1074326_9623037_7875081",
  "price": { "currentPrice": 9.96, "currentPriceDisplay": "$9.96" },
  "reviews": { "rating": 4.5, "totalReviews": 49 }
}

Получение сведений о товаре Walmart

hasdata_walmart_product_getWalmartProduct

Полные сведения об одном товаре.

ПараметрТипОбязательныйПримечания
itemIdстрокасм. нижеИдентификатор товара Walmart
urlстрокасм. нижеПолный URL товара. Данные извлекаются непосредственно по нему. Имеет приоритет над itemId и задаёт витрину
domainстрокаwalmart.com или walmart.ca; игнорируется, если указан url
languageстрокаen, es или fr, в зависимости от витрины
otherOffersлогическое значениеТакже собирать предложения конкурентов. Стоит дополнительно 5 кредитов: всего 15 вместо 10

Укажите itemId или url. Как и для поиска, ни один из параметров не отмечен как обязательный, поскольку для запроса достаточно любого из них.

Возвращает объект product со свойствами itemId, title, url, brand, brandUrl, type, model, upc, condition, badges, availability, объектом price, продавцом seller, которому принадлежит блок покупки, а также reviews, images, categoryPath, categoryPathId, highlights, specifications, keyItemFeatures, productDetails и fulfillment.

Базовый запрос уже сообщает, сколько предложений конкурентов указано на странице, и показывает минимальную цену среди них. Включайте otherOffers, только если нужны сами предложения: для этого отправляется дополнительный запрос к Walmart, а стоимость увеличивается в полтора раза.

{
  "itemId": "18493462688",
  "brand": "Incipio",
  "condition": "New",
  "price": { "currentPrice": 9.96, "currentPriceDisplay": "$9.96", "currency": "USD" },
  "seller": {
    "name": "Walmart.com",
    "id": "F55CDC31AB754BB68FE0B39041159D63",
    "returnPolicy": "Free 30-day returns"
  },
  "reviews": {
    "totalReviews": 49,
    "rating": 4.5,
    "fiveStars": 38,
    "fourStars": 4,
    "threeStars": 3,
    "twoStars": 1,
    "oneStar": 3
  },
  "specifications": [{ "name": "Maximum screen size", "value": "16 in" }],
  "fulfillment": {
    "type": "FC",
    "message": "Pickup, today at Fredericksburg Massaponax Supercenter",
    "deliveryDate": "2026-09-09T21:59:00.000Z"
  }
}

Получение отзывов о товаре Walmart

hasdata_walmart_reviews_getWalmartReviews

Лента отзывов об одном товаре: по десять отзывов на странице.

ПараметрТипОбязательныйПримечания
itemIdстрокасм. нижеИдентификатор товара Walmart
urlстрокасм. нижеПолный URL товара, отзывы о котором нужно получить. Имеет приоритет над itemId
domainстрокаwalmart.com или walmart.ca; игнорируется, если указан url
languageстрокаЯзык страницы отзывов, а не самих отзывов
pageчислоСтраница отзывов; по десять отзывов на странице
sortстрокаmostRelevant, mostRecent, mostHelpful, highestRated, lowestRated или oldest
ratingчислоОставить отзывы с указанной оценкой от 1 до 5 звёзд
aspectIdстрокаОставить отзывы, в которых упоминается тема с указанным идентификатором
conditionстрокаОставить отзывы об одном состоянии товара
verifiedPurchasesOnlyлогическое значениеОставить только покупки, подтверждённые Walmart

Возвращает reviewsInformation, массив reviewResults, блок filters, appliedFilters и pagination.

В первую очередь стоит изучить filters. В этом блоке перечислены оценки, часто упоминаемые темы и состояния товара, по которым можно фильтровать отзывы. Для каждого варианта указаны количество отзывов и точное значение value, которое нужно передать в запросе. Например, если указано {"name": "Battery Life", "value": "6049", "count": 8}, передайте aspectId: "6049" и получите восемь отзывов. Если не прочитать этот блок и угадать идентификатор темы, обычно в ответе не окажется отзывов.

В reviewsInformation содержатся оценка товара, распределение оценок по звёздам, оценки по темам и сводка отзывов, составленная с помощью AI от Walmart. Здесь также раздельно указаны totalRatings и totalReviews — это разные показатели. У товара ниже 49 оценок, но только 21 письменный отзыв; пагинация охватывает именно эти 21 отзыв.

{
  "reviewsInformation": {
    "rating": 4.49,
    "totalRatings": 49,
    "totalReviews": 21,
    "recommendedPercentage": 100,
    "ratingBreakdown": { "fiveStars": 38, "fourStars": 4, "threeStars": 3, "twoStars": 1, "oneStar": 3 }
  },
  "reviewResults": [
    {
      "position": 1,
      "id": "434698083",
      "rating": 5,
      "title": "Good value laptop stand.",
      "text": "Good value for money. Not the sturdiest, but that is to be expected for a collapsible laptop stand. Overall gets the job done, I'd buy it again.",
      "date": "8/1/2026",
      "verifiedPurchase": true,
      "helpfulVotes": 0,
      "notHelpfulVotes": 0,
      "badges": ["Verified Purchase"],
      "seller": "Walmart.com",
      "language": "English",
      "aspects": [{ "id": "284", "polarity": "Positive" }]
    }
  ],
  "filters": [
    { "name": "Star rating", "parameter": "rating", "values": [{ "name": "5 stars", "value": "5", "count": 38 }] },
    { "name": "Frequent mentions", "parameter": "aspectId", "values": [{ "name": "Sturdiness", "value": "828", "count": 6 }] }
  ],
  "pagination": { "currentPage": 1, "reviewsPerPage": 10, "totalPages": 3, "totalResults": 21, "nextPage": 2 }
}

Ошибки и нестандартные ситуации

Учитывайте возможные проблемы, а не рассчитывайте только на успешный сценарий.

В одном ответе на поисковый запрос указаны два разных числа результатов — и оба верны. searchInformation.totalResultsDisplay содержит строку, которую Walmart показывает на странице, например "1000+", а pagination.totalResults — точное число, например 8005. Первое значение предназначено для отображения, второе является целым числом. Не преобразуйте первое в число и не показывайте пользователю второе.

Примерно после 10-й страницы Walmart перестаёт возвращать результаты. При запросе более поздней страницы приходит пустой ответ, а не ошибка. Поэтому нельзя получить все результаты по широкому ключевому слову, просто перебирая страницы. Вместо этого уточните запрос с помощью facet, диапазона цен или категории.

Цены относятся к конкретному магазину, и ответ указывает, к какому именно. Его идентификатор указан в searchInformation.storeId, а название — в fulfillment.message, например "Pickup, today at Fredericksburg Massaponax Supercenter". Сравнивать цены в разных запросах имеет смысл, только если магазин остаётся тем же.

Запрос с deliveryType: pickup выполняется для одного магазина. Товар может быть в наличии в целом по стране, но возвращаться как недоступный, если его нет в выбранном магазине.

Инструмент получения сведений о товаре показывает количество оценок там, где можно ожидать количество отзывов. reviews.totalReviews в его ответе содержит число оценок — для товара выше это 49. Инструмент получения отзывов отдельно указывает 49 оценок и 21 письменный отзыв. Если это различие важно, используйте инструмент получения отзывов.

Даты отзывов представлены строками в формате M/D/YYYY. "8/1/2026" означает первое августа, а не восьмое января. Разбирайте дату, явно задав формат, вместо того чтобы полагаться на автоматическое определение библиотекой дат.

Идентификатор темы в отзыве может отсутствовать в filters. В этом блоке перечислены темы, по которым можно фильтровать отзывы о товаре. Их меньше, чем тем, присвоенных отзывам. Получайте идентификаторы тем из самих отзывов, а для фильтрации используйте только идентификаторы, указанные в блоке filters.

У товара без вариантов свойство variants отсутствует, а не содержит пустое значение. Перед чтением проверьте наличие этого ключа.

В одном запросе можно указать только одно значение condition. Поскольку параметр принимает только одно значение, для поиска по двум состояниям товара нужно отправить два запроса.

Ответы с данными также содержат requestMetadata.id. Этот идентификатор полезно указывать при обращении в службу поддержки.

Стоимость, бесплатный тариф и ограничения

Каждый инструмент Walmart стоит 10 кредитов за успешный вызов. Включение otherOffers добавляет 5 кредитов к стоимости запроса о товаре — итого 15 вместо 10. Оставляйте этот параметр выключенным, если предложения конкурентов вам не нужны. Размер ответа на стоимость не влияет.

Бесплатный тариф предоставляет 1 000 кредитов в месяц без привязки карты. По базовой ставке этого хватит на 100 запросов к Walmart. Кредиты обновляются с началом нового платёжного цикла, поэтому агент с небольшим объёмом запросов может бессрочно работать на бесплатном тарифе.

Платные тарифы начинаются от $59 в месяц за 200 000 кредитов, то есть за 20 000 запросов. С увеличением объёма стоимость снижается: от $2.95 за 1 000 запросов на начальном тарифе до $1.19 на Basic и $0.83 на тарифах Growth. Актуальные цены указаны на странице тарифов.

Тариф также определяет уровень параллелизма. На бесплатном тарифе одновременно разрешён 1 запрос, на Startup — 5, на Basic — 15, а на тарифах Growth — от 50 до 500. В автоматических сценариях при ответе 429 повторяйте запрос с увеличивающимися интервалами ожидания. Агент, отправляющий запросы сразу по множеству идентификаторов товаров, может достичь лимита раньше, чем вы успеете это заметить.

Запрос, завершившийся ответом с кодом, отличным от 200, не тарифицируется. Успешный запрос, не нашедший данных, всё равно считается вызовом.

Выбор инструмента

Ориентируйтесь на данные из запроса. Если указано ключевое слово или категория, используйте инструмент поиска; если указан идентификатор товара — сразу переходите к инструменту получения данных о товаре или отзывов. Поиск ради получения уже известного идентификатора — самая частая лишняя операция.

Затем выберите инструмент в зависимости от задачи. Результатов поиска достаточно для ранжирования, сравнения цен и анализа доли присутствия множества товаров. Только инструмент получения данных о товаре возвращает характеристики, продавца, владеющего Buy Box, и количество конкурирующих предложений. А текст отзывов доступен только через инструмент отзывов.

Перед тем как задавать фильтры, изучите блок filters. Один вызов инструмента отзывов без фильтров покажет, какие оценки, темы и условия доступны, а также сколько отзывов соответствует каждому параметру. Так вы будете выбирать фильтр на основе данных, а не предположений.

Сравнение с альтернативами

Официальные способы получить эти данные — Affiliate API и Marketplace API от Walmart. Они предназначены для решения разных задач.

Walmart Affiliate APIWalmart Marketplace APIЭтот сервер
ТребованияОдобренный аккаунт партнёраАккаунт продавца WalmartAPI-ключ
Область данныхТовары из партнёрского каталогаВаши объявления и заказыЛюбая публичная страница товара
Конкурирующие продавцыНе возвращаютсяТолько ваши предложенияСписок предложений с otherOffers
Текст отзывовНе возвращаетсяОтзывы о ваших товарахЛента отзывов с фильтрами
Buy BoxНе возвращаетсяДля ваших товаровТекущий владелец
walmart.caОтдельная программаОтдельный аккаунтПараметр
СтоимостьБесплатно, если вы соответствуете требованиямБесплатно при наличии аккаунта продавцаПлатно после исчерпания бесплатного лимита

Решающая разница — область данных. Оба официальных API отвечают на вопросы о каталоге, с которым у вас есть коммерческие отношения, поэтому не подходят для наблюдения за конкурентами. Если товары принадлежат вам, используйте Marketplace API: это авторитетный и бесплатный источник данных.

FAQ

Есть ли у Walmart официальный MCP-сервер?

Walmart не публикует собственный MCP-сервер. Этот сервер поддерживает HasData, и он работает с публичными страницами Walmart.

Что такое MCP-сервер Walmart?

MCP-сервер предоставляет инструменты, которые может вызывать AI-клиент. Этот сервер преобразует результаты поиска Walmart, страницы товаров и ленты отзывов в JSON, с которым агент может работать без браузера и библиотек для веб-скрейпинга в вашем стеке.

Нужен ли мне аккаунт Walmart или аккаунт продавца?

Нет. Вам понадобится только ключ HasData.

Какие витрины поддерживаются?

walmart.com и walmart.ca. У них разные каталоги, идентификаторы товаров, цены и валюты, поэтому сравнение между витринами — это полноценное сопоставление, а не просто пересчёт валют.

Почему по идентификатору товара ничего не найдено?

Чаще всего идентификатор относится к другой витрине. Числовой идентификатор используется на walmart.com, а буквенно-цифровой — на walmart.ca; они не работают на другой витрине. Укажите domain, чтобы выбрать нужную витрину, или передайте полный url — тогда витрина определится автоматически.

Как получить данные о конкурирующих предложениях?

Укажите otherOffers при вызове инструмента получения данных о товаре. Для каждого предложения возвращаются имя продавца, URL витрины, цена, состояние товара, стоимость доставки, дата доставки и условия возврата. Это стоит на 5 кредитов больше, поскольку требуется второй запрос к Walmart.

Почему в разные дни поиск возвращает разные цены?

Причина может быть как в изменении цен, так и в том, что ответ получен для разных магазинов Walmart. Идентификатор магазина указан в searchInformation.storeId. Прежде чем считать изменение цены реальным, убедитесь, что магазин не менялся.

Можно ли использовать этот сервер вместе с другими API HasData?

Да. Один ключ подходит для всех API, а один endpoint обслуживает их через параметр apis. Укажите клиенту ?apis=walmart,amazon, чтобы подключить оба набора инструментов в одном соединении, или используйте mcp.hasdata.com/api/mcp, чтобы получить доступ ко всему каталогу.

Связана ли HasData с Walmart?

Нет. HasData — независимый сервис, не связанный с Walmart и не одобренный и не спонсируемый этой компанией. Walmart — товарный знак соответствующего владельца. Инструменты работают только с общедоступными данными. Вы несёте ответственность за использование результатов в соответствии с условиями Walmart и применимым законодательством.

Соблюдение требований и персональные данные

В отзывах указывается имя автора — в том виде, в котором он решил опубликовать его, — и отметка о подтверждённой покупке. В сведениях о продавцах Marketplace приводятся название компании и URL витрины. Для анализа тональности или цен эти поля не нужны, поэтому исключайте их, если цель работы не требует их использования. Перед сохранением данных проверьте, какие требования применяются в вашем случае.

Ссылки HasData

Другие MCP-серверы HasData: Google Search, Google Maps, Google Trends, Google Flights, DuckDuckGo, YouTube, TikTok, Instagram, Amazon, Shopify, Yelp, Zillow, Redfin, Airbnb, Booking.com, Indeed.

Разработка

Запускной скрипт — это простой мост stdio к удалённому серверу, поэтому сборка не требуется.

npm install
HASDATA_API_KEY=your_key_here npm test

Тесты в test/ проверяют контракт инструментов — часть проекта, которая может измениться без коммита в этом репозитории. Они проверяют, что ?apis=walmart возвращает ожидаемое количество инструментов, названия не изменились, у каждого инструмента есть описание, альтернативные параметры, описанные в этом README, по-прежнему присутствуют в схеме, а используемый ключ действительно принимается. Последняя проверка вызывает инструмент по-настоящему и стоит 10 кредитов — такова цена контрольного теста, который может завершиться сбоем по ожидаемой причине.

У трёх инструментов нет обязательных параметров, поскольку каждый принимает один из двух вариантов ввода. Набор тестов проверяет наличие альтернатив, а не массив required: проверка только этого массива прошла бы, даже если бы схема вообще ничего не указывала.

Кроме того, набор проверок контракта запускается еженедельно по расписанию: список инструментов во внешнем сервисе может измениться, даже если в этом репозитории никто ничего не менял.

Участие в разработке

Если таблица инструментов, пример ответа или описанное поведение не соответствуют действительности, сообщите об этом через issue. Для таких сообщений предусмотрен отдельный шаблон. Pull request с исправлениями также приветствуются — как для этих материалов, так и для любых частей запускного скрипта.

Лицензия

MIT, см. LICENSE.