Wallapop MCP Server
Unofficial MCP server for the Wallapop marketplace, enabling search, listing details, seller profiles, favorites, saved searches, chat, and offers through hybrid API and scraping fallbacks.
README
Wallapop MCP Server
Hybrid, unofficial MCP server for the Wallapop marketplace, built in TypeScript.
- HTTP primary: reverse-engineered calls to the private
api.wallapop.comv3 endpoints - SSR fallback:
__NEXT_DATA__scraping ofes.wallapop.compages (item details, seller profiles) - Playwright fallback: off-screen headed browser as last resort (Wallapop's CDN blocks headless Chrome)
- Authentication: optional email/password or browser-cookie import for favorites, saved searches, chat and offers (token refresh + session persistence)
Unofficial and unaffiliated. Uses Wallapop's undocumented API, which can change or block traffic at any time — use at your own risk, keep request volume low, and respect their Terms of Service.
Tools
| Tool | Auth | Description |
|---|---|---|
search_products |
– | Keyword search with category / price / location / radius / sort filters, cursor pagination (nextPage), reserved items filtered out |
scan_products |
– | Multi-query keyword scan with dedupe, price filtering and scam-flagging (shippable listings) |
get_listing |
– | Full listing detail: description, condition, price, images, views, favorites, seller, shipping |
get_seller |
– | Seller profile by id or web slug: rating (0–100), sold/published counts, registration date, location |
list_categories |
– | Marketplace category tree with ids |
server_status |
– | Health / auth / browser-fallback status |
favorite_listing / unfavorite_listing |
required | Favorites by numeric id, web slug or item URL (API + browser fallback) |
get_saved_searches / create_saved_search / delete_saved_search |
required | Saved search alerts |
list_conversations |
required | Chat inbox: other user, item, unread count, last message |
get_messages |
required | Full message history of a conversation |
send_message |
required | Send a chat message (real-time channel) |
make_offer |
required | Send a purchase offer (EUR) — seller gets it in chat and can accept/reject |
Quick start
git clone <this-repo>
cd WallpopMCP
npm install
npm run build
cp .env.example .env # fill in your keys (see Configuration)
npm run smoke # live sanity check against the API
Connect to an MCP client
# Claude Code (stdio)
claude mcp add wallapop -- node /absolute/path/to/WallpopMCP/dist/index.js
# Inspector (browse tools interactively)
npm run inspector
Configuration (.env, see .env.example)
| Variable | Purpose |
|---|---|
WALLAPOP_EMAIL / WALLAPOP_PASSWORD |
Enable auth tools (favorites, saved searches, chat, offers) |
WALLAPOP_COOKIES_FILE |
Optional JSON array of browser cookies ([{ name, value }]) exported from a logged-in session — the most reliable authenticated path |
WALLAPOP_DEFAULT_LAT / LNG / DISTANCE_KM |
Default search location (Barcelona center) |
WALLAPOP_SESSION_FILE |
Token/cookie persistence (default ./wallapop-session.json, gitignored) |
WALLAPOP_RATE_DELAY_MS |
Min delay between API calls (default 600) |
WALLAPOP_MAX_RESULTS |
Search results cap, 1–200 (default 200) |
WALLAPOP_BROWSER |
auto (default) | chrome | msedge | chromium | off |
Note:
WALLAPOP_EMAIL/WALLAPOP_PASSWORDmay fail for accounts with MFA or Keycloak flows — in that case export cookies from a logged-in browser intoWALLAPOP_COOKIES_FILE(a JSON array of cookie objects) and the server will use them directly.
How it works
Search (two-step API flow)
GET /api/v3/search/components→search_idGET /api/v3/search/section(40 items/page) →meta.next_pageJWT; the server packssearch_id+ cursor into an opaquenextPagetoken so clients just pass it back.
Chat & offers
- Messages are sent through the real-time channel (PubNub) and also land in the inbox API (
/bff/messaging/inbox) — both verified end-to-end. - Offers are created via
POST /api/v3/delivery/buyer/offerswith a client-generated offer id; sellers receive them in the conversation.
Authentication
- Tries
POST /api/v3/access/login→ stores access/refresh tokens + cookies to the session file, refreshes viaPOST /api/v3/access/refreshwhen the JWT is about to expire. - Falls back to an automated browser login; MFA challenges are detected and surfaced as an error (complete it manually, then export cookies to
WALLAPOP_COOKIES_FILE).
Fallback chain
- API request with browser-like headers, UA rotation, exponential back-off on 429, and
X-Signatureretry on 403 - SSR HTML scraping (
es.wallapop.com/item/...,/user/...) — richer data for sellers (ratings, counters) - Off-screen headed Chrome via Playwright (captures
api.wallapop.comXHR responses) — Wallapop's CDN blocks headless mode, so never useWALLAPOP_BROWSER=chromiumwithout manual browser downloads;autoprefers installed Chrome/Edge
Notes and known limits
search_productsprice filtering (minPrice/maxPrice) and radius filtering (distance_in_km) are API-side parameters.favorite_listing/unfavorite_listinguse best-effort endpoint candidates — verify with your account; endpoints change.- Item
conditionis only reliably available viaget_listing(search results usually omit it). - Some sellers disable offers —
make_offersurfaces a 409 error in that case.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。