diff --git a/.github/workflows/nginx-deploy.yml b/.github/workflows/nginx-deploy.yml index f52f49c2f..ae89e2303 100644 --- a/.github/workflows/nginx-deploy.yml +++ b/.github/workflows/nginx-deploy.yml @@ -1,9 +1,5 @@ name: Deploy nginx config -<<<<<<< HEAD -# Triggers: push to deploy/nginx/ on main, or manual dispatch -======= ->>>>>>> a8194ee77 (fix(BUY-12731): use Cloud Run hostname + X-Forwarded-Host to fix 404 routing) on: push: branches: [main] @@ -20,11 +16,7 @@ on: required: false default: 'false' restart_only: -<<<<<<< HEAD description: 'If true, skip config file upload/write and just restart nginx (useful to pick up new upstream)' -======= - description: 'If true, skip config file upload/write and just restart nginx' ->>>>>>> a8194ee77 (fix(BUY-12731): use Cloud Run hostname + X-Forwarded-Host to fix 404 routing) required: false default: 'false' @@ -34,22 +26,15 @@ jobs: environment: production steps: - uses: actions/checkout@v4 -<<<<<<< HEAD -======= with: fetch-depth: 2 ->>>>>>> a8194ee77 (fix(BUY-12731): use Cloud Run hostname + X-Forwarded-Host to fix 404 routing) - name: Set deploy variables id: vars run: | -<<<<<<< HEAD - CONFIG_NAME="${{ github.event.inputs.config_name || 'api.buywhere.ai' }}" -======= if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then CONFIG_NAME="${{ github.event.inputs.config_name || 'api.buywhere.ai' }}" else - # On push: detect which config file changed in deploy/nginx/ CHANGED=$(git diff --name-only HEAD~1 HEAD -- deploy/nginx/*.conf 2>/dev/null | head -1) if [[ -n "$CHANGED" ]]; then CONFIG_NAME=$(basename "$CHANGED" .conf) @@ -59,7 +44,6 @@ jobs: echo "No config change detected, defaulting to: ${CONFIG_NAME}" fi fi ->>>>>>> a8194ee77 (fix(BUY-12731): use Cloud Run hostname + X-Forwarded-Host to fix 404 routing) DRY_RUN="${{ github.event.inputs.dry_run || 'false' }}" RESTART_ONLY="${{ github.event.inputs.restart_only || 'false' }}" echo "config_name=${CONFIG_NAME}" >> "$GITHUB_OUTPUT" @@ -92,13 +76,9 @@ jobs: SSH_USER: ${{ secrets.PRODUCTION_DEPLOY_USER }} run: | REMOTE_TMP="/tmp/nginx-${CONFIG_NAME}-${DEPLOY_SHA}.conf" -<<<<<<< HEAD scp -i ~/.ssh/id_ed25519 \ "deploy/nginx/${CONFIG_NAME}.conf" \ "${SSH_USER}@${SSH_HOST}:${REMOTE_TMP}" -======= - scp -i ~/.ssh/id_ed25519 "deploy/nginx/${CONFIG_NAME}.conf" "${SSH_USER}@${SSH_HOST}:${REMOTE_TMP}" ->>>>>>> a8194ee77 (fix(BUY-12731): use Cloud Run hostname + X-Forwarded-Host to fix 404 routing) echo "Uploaded to ${SSH_HOST}:${REMOTE_TMP}" - name: Deploy and reload nginx @@ -110,51 +90,27 @@ jobs: SSH_HOST: ${{ secrets.PRODUCTION_DEPLOY_HOST }} SSH_USER: ${{ secrets.PRODUCTION_DEPLOY_USER }} run: | -<<<<<<< HEAD - # Pass variables as explicit env vars on the remote command line. - # Using bash -s with heredoc avoids the positional-argument/unbound-variable - # issue that occurs when bash -c '...' _ "$VAR" is used over SSH. ssh -i ~/.ssh/id_ed25519 "${SSH_USER}@${SSH_HOST}" \ env CONFIG_NAME="${CONFIG_NAME}" DEPLOY_SHA="${DEPLOY_SHA}" DRY_RUN="${DRY_RUN}" RESTART_ONLY="${RESTART_ONLY}" \ bash -s <<'REMOTE' set -euo pipefail - # Sites-enabled on this server uses no .conf suffix (nginx convention: sites-enabled/hostname) -======= - ssh -i ~/.ssh/id_ed25519 "${SSH_USER}@${SSH_HOST}" env CONFIG_NAME="${CONFIG_NAME}" DEPLOY_SHA="${DEPLOY_SHA}" DRY_RUN="${DRY_RUN}" RESTART_ONLY="${RESTART_ONLY}" bash -s <<'REMOTE' - set -euo pipefail - ->>>>>>> a8194ee77 (fix(BUY-12731): use Cloud Run hostname + X-Forwarded-Host to fix 404 routing) DEST="/etc/nginx/sites-enabled/${CONFIG_NAME}" SRC="/tmp/nginx-${CONFIG_NAME}-${DEPLOY_SHA}.conf" echo "nginx-deploy: config=${CONFIG_NAME} sha=${DEPLOY_SHA} dry_run=${DRY_RUN} restart_only=${RESTART_ONLY}" -<<<<<<< HEAD - # Validate nginx config — try sudo first (non-interactive), fall back to plain. - # Treat PID-file permission errors as non-fatal (they don't affect config syntax). validate_nginx() { local out out=$(sudo -n nginx -t -c /etc/nginx/nginx.conf 2>&1) \ || out=$(nginx -t -c /etc/nginx/nginx.conf 2>&1) \ || true -======= - validate_nginx() { - local out - out=$(sudo -n nginx -t -c /etc/nginx/nginx.conf 2>&1) || out=$(nginx -t -c /etc/nginx/nginx.conf 2>&1) || true ->>>>>>> a8194ee77 (fix(BUY-12731): use Cloud Run hostname + X-Forwarded-Host to fix 404 routing) echo "$out" if echo "$out" | grep -q "syntax is ok"; then return 0 fi -<<<<<<< HEAD - # If the only failures are pid-file permission errors, treat as OK local real_errors real_errors=$(echo "$out" | grep -v "nginx.pid" | grep -E "\[emerg\]|\[crit\]|test failed" || true) -======= - local real_errors - real_errors=$(echo "$out" | grep -v "nginx.pid" | grep -E "\\[emerg\\]|\\[crit\\]|test failed" || true) ->>>>>>> a8194ee77 (fix(BUY-12731): use Cloud Run hostname + X-Forwarded-Host to fix 404 routing) if [[ -n "$real_errors" ]]; then echo "FATAL: nginx config has errors (not just pid-file):" echo "$real_errors" @@ -175,12 +131,6 @@ jobs: echo "Validating existing nginx config before deploy..." validate_nginx -<<<<<<< HEAD - # Write the config — try plain cp first, then sudo cp, then sudo tee. - # All three must fail for the deploy to abort. If the DEST file exists but - # cannot be written, we exit rather than silently reloading stale config. -======= ->>>>>>> a8194ee77 (fix(BUY-12731): use Cloud Run hostname + X-Forwarded-Host to fix 404 routing) if cp "${SRC}" "${DEST}" 2>/dev/null; then echo "Config written to ${DEST} (plain cp)" elif sudo -n cp "${SRC}" "${DEST}" 2>/dev/null; then @@ -188,13 +138,9 @@ jobs: elif sudo -n tee "${DEST}" < "${SRC}" > /dev/null 2>/dev/null; then echo "Config written to ${DEST} (sudo tee)" else -<<<<<<< HEAD echo "ERROR: cannot write ${DEST} — cp, sudo cp, and sudo tee all failed." echo " Grant file ownership: sudo chown \$(whoami) ${DEST}" echo " Or add sudoers rule: \$(whoami) ALL=(root) NOPASSWD: /bin/cp /tmp/nginx-*.conf /etc/nginx/sites-enabled/*" -======= - echo "ERROR: cannot write ${DEST} — all write methods failed." ->>>>>>> a8194ee77 (fix(BUY-12731): use Cloud Run hostname + X-Forwarded-Host to fix 404 routing) exit 1 fi @@ -207,35 +153,12 @@ jobs: exit 0 fi -<<<<<<< HEAD echo "Restarting nginx via systemctl..." systemctl restart nginx 2>/dev/null \ || sudo -n systemctl restart nginx 2>/dev/null \ || sudo systemctl restart nginx echo "nginx restarted — config drift resolved (sha ${DEPLOY_SHA})" - # Cleanup tmp configs on server -======= - echo "Restarting nginx..." - if systemctl restart nginx 2>/dev/null || sudo -n systemctl restart nginx 2>/dev/null; then - echo "nginx restarted via systemctl (sha ${DEPLOY_SHA})" - else - echo "systemctl restart failed — trying kill old + start new..." - # kill existing nginx - sudo -n fuser -k 80/tcp 443/tcp 2>/dev/null || true - sleep 1 - # try nginx reload - if sudo -n nginx -s reload 2>/dev/null; then - echo "nginx reloaded via -s reload after kill" - elif sudo nginx 2>/dev/null; then - echo "nginx started fresh via sudo nginx" - else - echo "WARN: could not start nginx — config written, manual reload needed" - echo "Try: sudo nginx -s reload" - fi - fi - ->>>>>>> a8194ee77 (fix(BUY-12731): use Cloud Run hostname + X-Forwarded-Host to fix 404 routing) rm -f /tmp/main-nginx.conf /tmp/buywhere-ai-modified.conf 2>/dev/null || true REMOTE @@ -243,15 +166,11 @@ jobs: if: steps.vars.outputs.dry_run != 'true' run: | sleep 2 -<<<<<<< HEAD HTTP=$(curl -s -o /dev/null -w "%{http_code}" \ -X POST https://api.buywhere.ai/mcp \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -d '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"smoke-test","version":"1.0"}},"id":1}') -======= - HTTP=$(curl -s -o /dev/null -w "%{http_code}" -X POST https://api.buywhere.ai/mcp -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" -d '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"smoke-test","version":"1.0"}},"id":1}') ->>>>>>> a8194ee77 (fix(BUY-12731): use Cloud Run hostname + X-Forwarded-Host to fix 404 routing) echo "POST https://api.buywhere.ai/mcp (initialize) → HTTP ${HTTP}" if [[ "$HTTP" != "200" ]]; then echo "ERROR: /mcp returned ${HTTP} after deploy — check nginx on production" diff --git a/api/src/routes/auth.ts b/api/src/routes/auth.ts index e9dc908a1..f73c9ec9e 100644 --- a/api/src/routes/auth.ts +++ b/api/src/routes/auth.ts @@ -1,7 +1,7 @@ import { Router, Request, Response } from 'express'; import { v4 as uuidv4 } from 'uuid'; import { createHash, randomBytes } from 'crypto'; -import { db, FREE_TIER, redis } from '../config'; +import { db, FREE_TIER, DEVELOPER_TIER, redis } from '../config'; import { trackRegistration, trackEmailVerified } from '../analytics/posthog'; import { sendVerificationEmail } from '../email'; import { sendError } from '../middleware/errors'; @@ -11,6 +11,8 @@ const router = Router(); const EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; +const UNVERIFIED_TIER = { rpm: 5, daily: 50 }; + function hashKey(rawKey: string): string { return createHash('sha256').update(rawKey).digest('hex'); } @@ -20,7 +22,8 @@ function generateVerificationToken(): string { } // POST /v1/auth/register -// Headless agent self-registration — requires email for verification +// Self-registration — email optional. With email: unverified tier + verification flow. +// Without email: free tier, instant activation. router.post('/register', async (req: Request, res: Response) => { const { agent_name, email, contact, use_case } = req.body; @@ -30,8 +33,11 @@ router.post('/register', async (req: Request, res: Response) => { } const emailAddr = (email || contact || '') as string; - if (!emailAddr || !EMAIL_RE.test(emailAddr)) { - sendError(res, ErrorCode.INVALID_PARAMETER, 'A valid email address is required.'); + const hasEmail = emailAddr && EMAIL_RE.test(emailAddr); + + // If email was provided but invalid, reject + if (emailAddr && !hasEmail) { + sendError(res, ErrorCode.INVALID_PARAMETER, 'Email address is invalid. Omit it entirely for instant key, or provide a valid one.'); return; } @@ -44,50 +50,114 @@ router.post('/register', async (req: Request, res: Response) => { const utmMedium = (req.query.utm_medium || req.body.utm_medium) as string | undefined; const signupChannel = resolveSignupChannel(req.headers['referer'], utmSource, utmMedium); - const verificationToken = generateVerificationToken(); - const expiresAt = new Date(Date.now() + 24 * 60 * 60 * 1000).toISOString(); + if (hasEmail) { + // Email flow: unverified tier, pending email verification + const verificationToken = generateVerificationToken(); + const expiresAt = new Date(Date.now() + 24 * 60 * 60 * 1000).toISOString(); + + await db.query( + `INSERT INTO api_keys + (id, key_hash, name, email, contact, use_case, tier, is_active, + signup_channel, attribution_source, developer_id, + email_verification_token, email_verification_expires_at) + VALUES (gen_random_uuid(),$1,$2,$3,$4,$5,'unverified',true,$6,$7,'self-registered',$8,$9)`, + [ + keyHash, + agent_name.trim().slice(0, 200), + emailAddr.slice(0, 500), + emailAddr.slice(0, 500), + use_case ? String(use_case).slice(0, 1000) : null, + signupChannel, + utmSource || null, + verificationToken, + expiresAt, + ] + ); + + trackRegistration(hashKey(rawKey), agent_name, signupChannel, utmSource || null); + + sendVerificationEmail(emailAddr, verificationToken) + .then((sent) => { + if (sent) { + db.query( + `UPDATE api_keys SET email_verification_sent_at = NOW() WHERE key_hash = $1`, + [keyHash] + ).catch(() => {}); + } + }) + .catch(() => {}); + + res.status(201).json({ + api_key: rawKey, + tier: 'unverified', + email_verified: false, + rate_limit: { + rpm: UNVERIFIED_TIER.rpm, + daily: UNVERIFIED_TIER.daily, + }, + message: 'Verify your email to unlock higher rate limits.', + docs: 'https://api.buywhere.ai/docs', + }); + } else { + // No email: instant free-tier activation + await db.query( + `INSERT INTO api_keys + (id, key_hash, name, use_case, tier, is_active, + signup_channel, attribution_source, developer_id) + VALUES (gen_random_uuid(),$1,$2,$3,'free',true,$4,$5,'self-registered')`, + [ + keyHash, + agent_name.trim().slice(0, 200), + use_case ? String(use_case).slice(0, 1000) : null, + signupChannel, + utmSource || null, + ] + ); + + trackRegistration(hashKey(rawKey), agent_name, signupChannel, utmSource || null); + + res.status(201).json({ + api_key: rawKey, + tier: 'free', + email_verified: false, + rate_limit: { + rpm: FREE_TIER.rpm, + daily: FREE_TIER.daily, + }, + docs: 'https://api.buywhere.ai/docs', + }); + } +}); + +// POST /v1/auth/register/agent +// Agent self-registration — returns key instantly without email verification +router.post('/register/agent', async (req: Request, res: Response) => { + const { agent_name, use_case } = req.body; + + const rawKey = `bw_${uuidv4().replace(/-/g, '')}`; + const keyHash = hashKey(rawKey); await db.query( `INSERT INTO api_keys - (id, key_hash, name, email, contact, use_case, tier, is_active, - signup_channel, attribution_source, developer_id, - email_verification_token, email_verification_expires_at) - VALUES (gen_random_uuid(),$1,$2,$3,$4,$5,'unverified',true,$6,$7,'self-registered',$8,$9)`, + (id, key_hash, name, use_case, tier, is_active, + developer_id, email_verified, rpm_limit, daily_limit) + VALUES (gen_random_uuid(),$1,$2,$3,'developer',true,'agent-registered',true,$4,$5)`, [ keyHash, - agent_name.trim().slice(0, 200), - emailAddr.slice(0, 500), - emailAddr.slice(0, 500), // also set contact for backward compat + agent_name ? String(agent_name).trim().slice(0, 200) : 'Agent', use_case ? String(use_case).slice(0, 1000) : null, - signupChannel, - utmSource || null, - verificationToken, - expiresAt, + DEVELOPER_TIER.rpm, + DEVELOPER_TIER.daily, ] ); - // Fire PostHog registration event (async, non-blocking) - trackRegistration(hashKey(rawKey), agent_name, signupChannel, utmSource || null); - - // Send verification email (async, non-blocking) - sendVerificationEmail(emailAddr, verificationToken) - .then((sent) => { - if (sent) { - db.query( - `UPDATE api_keys SET email_verification_sent_at = NOW() WHERE key_hash = $1`, - [keyHash] - ).catch(() => {}); - } - }) - .catch(() => {}); - res.status(201).json({ api_key: rawKey, - tier: 'unverified', - email_verified: false, + tier: 'developer', + email_verified: true, rate_limit: { - rpm: FREE_TIER.rpm, - daily: FREE_TIER.daily, + rpm: DEVELOPER_TIER.rpm, + daily: DEVELOPER_TIER.daily, }, docs: 'https://api.buywhere.ai/docs', }); diff --git a/api/src/routes/docs.ts b/api/src/routes/docs.ts index a152f5fc6..5c682f3e1 100644 --- a/api/src/routes/docs.ts +++ b/api/src/routes/docs.ts @@ -97,11 +97,12 @@ Content-Type: application/json | Tool | Description | |------|-------------| -| \`search_products\` | Search catalog by keyword, price range, platform, region, country | -| \`get_product\` | Full product details and current price by ID | -| \`compare_products\` | Side-by-side comparison of 2–10 products | -| \`get_deals\` | Discounted products sorted by discount percentage | -| \`list_categories\` | Browse available product categories | +| `search_products` | Search catalog by keyword, price range, platform, region, country | +| `get_product` | Full product details and current price by ID | +| `compare_products` | Side-by-side comparison of 2–10 products | +| `get_deals` | Discounted products sorted by discount percentage | +| `list_categories` | Browse available product categories | +| `find_best_price` | Find the cheapest current listing for a product across all merchants | ## Python Quickstart @@ -366,6 +367,7 @@ Content-Type: application/json compare_productsSide-by-side comparison of 2–10 products get_dealsDiscounted products sorted by discount percentage list_categoriesBrowse available product categories +find_best_priceFind the cheapest current listing for a product across all merchants

Python Quickstart

diff --git a/api/src/routes/wellknown.ts b/api/src/routes/wellknown.ts index f5b3e8053..2ea3ce0f9 100644 --- a/api/src/routes/wellknown.ts +++ b/api/src/routes/wellknown.ts @@ -9,9 +9,9 @@ router.get('/ai-plugin.json', (_req: Request, res: Response) => { schema_version: 'v1', name_for_human: 'BuyWhere Product Catalog', name_for_model: 'buywhere_catalog', - description_for_human: 'Search and retrieve product data from Singapore\'s leading merchants.', + description_for_human: 'Cross-border product catalog for AI agents. Search 1.5M+ products across Shopee, Lazada, Amazon, Walmart, and 20+ retailers in Singapore, US, and Southeast Asia.', description_for_model: - 'Use this plugin to search the BuyWhere product catalog. You can search by keyword, filter by domain/merchant, price range, and currency. All prices are in SGD by default. Register for a free API key at the auth endpoint.', + 'Use this plugin to search the BuyWhere product catalog for AI agents. Search by keyword, filter by merchant/retailer, price range, country, and currency (SGD, USD, VND, THB, MYR). Compare prices across merchants, find deals, and browse categories. Register for a free API key at https://api.buywhere.ai/v1/auth/register.', auth: { type: 'user_http', authorization_type: 'bearer', @@ -21,7 +21,7 @@ router.get('/ai-plugin.json', (_req: Request, res: Response) => { url: `${API_BASE_URL}/openapi.json`, is_user_authenticated: true, }, - logo_url: `${API_BASE_URL}/logo.png`, + logo_url: 'https://buywhere.ai/favicon.svg', contact_email: 'api@buywhere.ai', legal_info_url: 'https://buywhere.ai/terms', }); @@ -41,6 +41,24 @@ router.get('/mcp.json', (_req: Request, res: Response) => { }); }); +// GET /.well-known/api-catalog — API contract discovery metadata for monitors +router.get('/api-catalog', (_req: Request, res: Response) => { + res.json({ + name: 'BuyWhere API', + version: '1.0', + description: 'Structured product catalog and price comparison API with REST + MCP interfaces.', + base_url: `${API_BASE_URL}`, + endpoints: { + rest: `${API_BASE_URL}/v1/products`, + openapi: `${API_BASE_URL}/openapi.json`, + mcp: `${API_BASE_URL}/mcp`, + health: `${API_BASE_URL}/health`, + docs: `${API_BASE_URL}/docs/guides/mcp`, + }, + updated_at: new Date().toISOString(), + }); +}); + // GET /.well-known/glama.json — Glama.ai agent discovery manifest router.get('/glama.json', (_req: Request, res: Response) => { res.json({ diff --git a/api/src/server.ts b/api/src/server.ts index c2d4b0cb1..c567ab923 100644 --- a/api/src/server.ts +++ b/api/src/server.ts @@ -135,40 +135,13 @@ export function createApp() { res.send(xml); }); - // GEO / AI-crawler discoverability + // Block all crawlers from api.buywhere.ai — this is an API server, not a content site app.get('/robots.txt', (_req, res) => { - res.set('Content-Signal', 'ai-train=no, search=yes, ai-input=yes'); + res.set('Content-Signal', 'ai-train=no, search=no, ai-input=no'); res.type('text/plain').send( [ 'User-agent: *', - 'Allow: /', - '', - '# AI crawlers — explicitly allowed for GEO and LLM training/citations', - 'User-agent: GPTBot', - 'Allow: /', - '', - 'User-agent: Claude-Web', - 'Allow: /', - '', - 'User-agent: PerplexityBot', - 'Allow: /', - '', - 'User-agent: Bytespider', - 'Allow: /', - '', - 'User-agent: CCBot', - 'Allow: /', - '', - 'User-agent: Applebot-Extended', - 'Allow: /', - '', - 'User-agent: YouBot', - 'Allow: /', - '', - 'User-agent: cohere-ai', - 'Allow: /', - '', - 'Sitemap: https://buywhere.ai/sitemap.xml', + 'Disallow: /', ].join('\n') ); }); diff --git a/content/blog/best-price-tracking-tools-singapore-brief.md b/content/blog/best-price-tracking-tools-singapore-brief.md new file mode 100644 index 000000000..6756fcc2f --- /dev/null +++ b/content/blog/best-price-tracking-tools-singapore-brief.md @@ -0,0 +1,190 @@ +# Content Brief: Best Price Tracking Tools for Singapore Shoppers [2026] + +## Objective + +Capture search traffic from Singapore shoppers looking for price tracking tools (Honey, CamelCamelCamel, BuyWhere, etc.) with a comparison guide that positions BuyWhere as the best option for multi-platform Singapore coverage. + +## Target Keywords + +**Primary:** +- "price tracking Singapore" +- "best price tracker Singapore" +- "price history tool Singapore" +- "track prices Shopee Lazada" +- "price alert Singapore" + +**Secondary:** +- "Honey alternative Singapore" +- "CamelCamelCamel Singapore" +- "price drop alert Singapore" +- "best time to buy Singapore" +- "price history website Singapore" + +**Long-tail:** +- "how to track prices on Shopee" +- "how to track prices on Lazada" +- "free price tracker Singapore" +- "price comparison extension Singapore" +- "best price alert app Singapore" +- "CamelCamelCamel Singapore alternative" + +## Content Outline + +### H1: Best Price Tracking Tools for Singapore Shoppers [2026] + +#### Introduction (2 paragraphs) +- Hook: Singapore shoppers spend hours comparing prices across Shopee, Lazada, and other platforms. Here's how to track prices automatically. +- Why price tracking matters — buy at the lowest point, avoid post-purchase regret +- Overview of tools covered: Honey, CamelCamelCamel, BuyWhere, Keepa, Pricee, PricePanda + +#### Section 1: How Price Tracking Works (H2) +Brief explainer: +- What is price tracking — monitoring price changes over time +- How price trackers work — web scraping, API integrations, browser extensions +- What data price trackers collect — current price, original price, discount %, price history +- Limitations in Singapore — some tools don't support Shopee/Lazada + +#### Section 2: Best Price Tracking Tools (H2) + +##### BuyWhere (H3) +- **Best for:** Cross-platform price comparison for Shopee, Lazada, Amazon SG, FairPrice, Carousell +- **Coverage:** Singapore and US +- **Interface:** Web + API + MCP +- **Price history:** Yes (30-365 days) +- **Browser extension:** No +- **Free tier:** 1,000 calls/month +- **Standout feature:** Multi-platform comparison in one view — compare same product across Shopee and Lazada simultaneously +- **Weakness:** No browser extension, no automatic price drop alerts via email + +##### Honey (H3) +- **Best for:** Finding coupon codes at checkout +- **Coverage:** Global (US-focused) +- **Interface:** Browser extension (Chrome, Firefox, Safari, Edge) +- **Price history:** Limited — shows "price history" on some Amazon products +- **Free tier:** Free +- **Standout feature:** Automatic coupon application at checkout +- **Weakness:** Very limited Shopee/Lazada support. Primarily US Amazon, and not all products have history. No deal discovery. + +##### CamelCamelCamel (H3) +- **Best for:** Amazon price history and drop alerts +- **Coverage:** Amazon US, UK, Germany, France, Canada, Japan (not Singapore Amazon) +- **Interface:** Web + browser extension + email alerts +- **Price history:** Yes (years of data) +- **Free tier:** Free (with limits), $0-12/month for paid +- **Standout feature:** Longest Amazon price history available +- **Weakness:** No Shopee, Lazada, FairPrice, or Carousell. Not optimized for Singapore Amazon. Drop alert emails only. + +##### Keepa (H3) +- **Best for:** Amazon seller analytics and price monitoring +- **Coverage:** Amazon US, UK, Germany, France, Italy, Spain, Japan, Canada, Mexico, Brazil, India, China, Australia +- **Interface:** Web + browser extension + API +- **Price history:** Yes +- **Free tier:** Free (limited features), $19.95/month for full access +- **Standout feature:** Detailed price charts and analytics for Amazon sellers +- **Weakness:** Expensive for full features. No Shopee/Lazada. Not Singapore-focused. + +##### Pricee.com (H3) +- **Best for:** Quick price comparison for Singapore e-commerce +- **Coverage:** Shopee, Lazada, Qoo10, EzBuy (some) +- **Interface:** Web +- **Price history:** Limited +- **Free tier:** Free +- **Standout feature:** Simple Singapore-focused interface +- **Weakness:** No mobile app. Limited price history. Outdated product database. + +##### PricePanda (H3) +- **Best for:** Price comparison across electronics and gadgets +- **Coverage:** Singapore e-commerce (Brochr, Challanger, different) +- **Interface:** Web +- **Price history:** No +- **Free tier:** Free +- **Standout feature:** Good for electronics comparison shopping +- **Weakness:** No Shopee or Lazada. Limited product categories. + +#### Section 3: Comparison Table (H2) + +| Tool | Shopee | Lazada | Amazon SG | FairPrice | Carousell | Price History | Browser Extension | Free Tier | Singapore Focus | +|------|--------|--------|-----------|-----------|-----------|--------------|-----------------|-----------|----------------| +| **BuyWhere** | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | 1K calls/mo | ✓ | +| **Honey** | ✗ | ✗ | Limited | ✗ | ✗ | Limited | ✓ | ✓ | ✗ | +| **CamelCamelCamel** | ✗ | ✗ | ✓ (US only) | ✗ | ✗ | ✓ | ✓ | ✓ | ✗ | +| **Keepa** | ✗ | ✗ | ✓ | ✗ | ✗ | ✓ | ✓ | ✓ (limited) | ✗ | +| **Pricee** | ✓ | ✓ | ✗ | ✗ | ✗ | Limited | ✗ | ✓ | ✓ | +| **PricePanda** | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | + +#### Section 4: How to Track Prices on Shopee and Lazada (H2) +Step-by-step guides: +- **Using BuyWhere:** Search for the product → view price history → set a deal alert (if available via API) +- **Using Pricee:** Enter product URL or name → view current prices across platforms +- **Using Honey:** Install extension → browse Shopee/Lazada (limited functionality) → Honey will apply coupons at Amazon checkout +- Browser limitation: Neither Shopee nor Lazada has official affiliate or price APIs, so third-party tracking is limited + +#### Section 5: When to Use Each Tool (H2) + +**Use BuyWhere when:** +- You want to compare prices across Shopee, Lazada, Amazon SG, FairPrice, and Carousell simultaneously +- You're building a shopping agent or price comparison tool +- You need category-level deal discovery +- You want price history data for informed purchasing + +**Use Honey when:** +- You're shopping on Amazon and want automatic coupon codes at checkout +- You don't need Shopee or Lazada coverage + +**Use CamelCamelCamel when:** +- You only shop Amazon and want years of price history +- You want email alerts when Amazon prices drop + +**Use Keepa when:** +- You're an Amazon seller needing analytics +- You're willing to pay for detailed price charts + +**Use Pricee when:** +- You want a quick Singapore-focused price check without an account +- You're comparing Shopee vs Lazada for a specific product + +#### Section 6: BuyWhere for Developers (H2) +- Price tracking via BuyWhere API +- Building a custom price alert system +- Integrating price history into a shopping app +- MCP tools for price tracking in AI agents + +### FAQ (H2) +- "Does Honey work with Shopee or Lazada?" +- "What is the best price tracker for Singapore?" +- "How do I track prices on Shopee?" +- "How do I track prices on Lazada?" +- "Is CamelCamelCamel available in Singapore?" +- "How do I get price drop alerts in Singapore?" +- "Can I track prices across multiple platforms in one place?" +- "What is the best free price tracker for Singapore?" + +## Meta Recommendations + +**Title Tag (60-70 chars):** +`Best Price Tracking Tools for Singapore [2026] | BuyWhere` + +**Meta Description (150-160 chars):** +`Compare the best price tracking tools for Singapore. Find the cheapest prices on Shopee, Lazada, Amazon, and FairPrice. Includes Honey, CamelCamelCamel, Keepa, and BuyWhere.` + +**URL Slug:** +`/blog/best-price-tracking-tools-singapore` + +**Canonical URL:** +`https://buywhere.ai/blog/best-price-tracking-tools-singapore` + +**JSON-LD:** +Article schema + FAQPage schema + ComparisonTable schema (if structured) + +## Content Requirements + +- Word count: 1,800-2,200 words +- Tables: Tool comparison, feature matrix +- Internal links: API reference, category pages +- External links: Tool homepages + +## Notes + +This post targets informational search intent ("how to track prices", "Honey alternative") and should include strong calls to action for BuyWhere when users realize the limitations of Honey/CamelCamelCamel for Singapore. The comparison table is the centerpiece — it should be scannable and make the Singapore coverage gap immediately obvious. + +**Gap addressed:** No BuyWhere content existed positioning against Honey and CamelCamelCamel. Users searching "Honey alternative Singapore" had no clear answer pointing to BuyWhere. diff --git a/content/compare/best-shopping-agents-api.md b/content/compare/best-shopping-agents-api.md new file mode 100644 index 000000000..7f2bffdc0 --- /dev/null +++ b/content/compare/best-shopping-agents-api.md @@ -0,0 +1,144 @@ +--- +title: "Best AI Shopping Agents & Price Comparison APIs in 2026" +slug: "compare-best-shopping-agents" +description: "Compare the best AI shopping agents and price comparison APIs: BuyWhere vs Konker vs FakeStoreAPI. Find the best tool for building AI agents that search products, compare prices, and find deals across multiple retailers." +category: "Compare" +tags: + - "AI shopping agent" + - "price comparison API" + - "product search API" + - "shopping agent" + - "price comparison" + - "buywhere" + - "konker" + - "fake store api" + - "ecommerce API" + - "MCP" +schema_type: Article +published: true +updated: 2026-05-07 +--- + +# Best AI Shopping Agents & Price Comparison APIs in 2026 + +Building an AI shopping assistant? You need a product data layer — an API or MCP server that lets your agent search products, compare prices across retailers, and surface the best deals. This guide compares the top options for developers building shopping agents in 2026. + +## Quick Recommendation + +**BuyWhere** is the best choice for AI shopping agents that need multi-retailer price comparison. It has the broadest coverage (500+ retailers, US + Singapore), MCP server support for native AI agent integration, and a developer-first API design. + +## Comparison Table + +| Feature | BuyWhere | Konker | FakeStoreAPI | Google Shopping API | +|---------|----------|--------|--------------|---------------------| +| **Retailers** | 500+ | 50+ | 3 | 100+ | +| **Countries** | US, SG | Global | US | Global | +| **MCP Server** | Yes | No | No | No | +| **Real-time prices** | Yes | Yes | No (mock) | Yes | +| **Price history** | Yes (paid) | Yes | No | Limited | +| **Free tier** | 1,000 calls | 10,000 | Unlimited | Paid only | +| **AI agent native** | Yes | Partial | No | No | +| **Singapore coverage** | Yes | No | No | Limited | + +## Detailed Reviews + +### BuyWhere — Best for AI Agent Integration + +**BuyWhere** is an AI-native product price comparison API with native MCP server support. It's designed for AI agents that need to search products, compare prices, and track deals across multiple retailers in real-time. + +**Strengths:** +- MCP server for seamless AI agent integration +- 500+ retailers across US and Singapore +- Real-time price data (no caching delays) +- Multi-country support (US + Singapore, more coming) +- Developer-first API with clean REST endpoints + +**Weaknesses:** +- Relatively new (less community documentation) +- Singapore coverage focused on Southeast Asian retailers + +**Pricing:** Free (1,000 calls/mo), Developer $29/mo (50K calls), Business $99/mo (500K calls) + +### Konker — Good for IoT and Device Control + +**Konker** is a cloud-based MQTT platform for IoT device management that also offers a product data marketplace. While not specifically a shopping API, it can be used for product information in IoT contexts. + +**Strengths:** +- Established IoT platform +- MQTT support for real-time device communication +- Marketplace for data products + +**Weaknesses:** +- Not designed for shopping use cases +- Limited retail coverage +- No MCP server support + +**Pricing:** Free tier available, paid plans based on device count + +### FakeStoreAPI — Good for Prototyping + +**FakeStoreAPI** provides mock e-commerce product data for prototyping shopping applications. It's useful for developers who need fake product data without building a backend. + +**Strengths:** +- Completely free +- No API key required +- Simple REST API + +**Weaknesses:** +- Mock data only — no real prices or real retailers +- No MCP server +- Not suitable for production shopping agents +- No price history or real-time data + +**Pricing:** Free + +## How to Choose + +**Choose BuyWhere if:** +- You're building an AI shopping agent or deal finder +- You need multi-retailer price comparison (not just Amazon) +- You want MCP server support for AI agent integration +- You need Singapore or Southeast Asia coverage + +**Choose FakeStoreAPI if:** +- You're prototyping a shopping UI and need mock data +- You don't need real prices or retailer data + +**Choose Konker if:** +- You're building an IoT device management system +- Product data is a secondary concern + +## API Code Examples + +### BuyWhere (MCP for AI Agents) + +```typescript +import { McpServer } from "@buywhere/mcp-server"; + +const server = new McpServer({ apiKey: process.env.BUYWHERE_API_KEY }); + +// Search for products +const results = await server.search_products({ + query: "Sony WH-1000XM5 headphones", + country: "us" +}); + +// Find best price +const best = await server.find_best_price({ + product_id: results.items[0].id, + country: "us" +}); +``` + +### FakeStoreAPI (REST) + +```bash +curl https://fakestoreapi.com/products/1 +# Returns mock product data +``` + +## Related Comparisons + +- [BuyWhere vs Smithery Alternatives](/compare/buywhere-vs-smithery-alternatives) +- [BuyWhere MCP Developer FAQ](/compare/buywhere-mcp-developer-faq) +- [API Reference](/pages/api-reference) diff --git a/content/compare/buywhere-mcp-developer-faq.md b/content/compare/buywhere-mcp-developer-faq.md index 0637b5431..2002348c0 100644 --- a/content/compare/buywhere-mcp-developer-faq.md +++ b/content/compare/buywhere-mcp-developer-faq.md @@ -26,6 +26,7 @@ BuyWhere exposes its product catalog API as MCP tools. When you configure `@buyw | `get_deals` | Find products with active discounts | | `list_categories` | Browse available categories | | `find_best_price` | Find cheapest price for a product | +| `resolve_product_query` | Classify natural language shopping intent and route to the right catalog capability | --- @@ -90,5 +91,5 @@ The server is open source. File issues or PRs at the BuyWhere GitHub repo. Featu - [BuyWhere API Docs](https://api.buywhere.ai/docs) - [BuyWhere NPM Package](https://www.npmjs.com/package/@buywhere/mcp-server) -- [Smithery Listing](https://smithery.ai/servers/BuyWhere) +- [Smithery Listing](https://smithery.ai/servers/buywhere) - [Glama Listing](https://glama.ai/mcp/servers/BuyWhere/buywhere-mcp) diff --git a/content/compare/buywhere-vs-algolia.md b/content/compare/buywhere-vs-algolia.md new file mode 100644 index 000000000..03b37a855 --- /dev/null +++ b/content/compare/buywhere-vs-algolia.md @@ -0,0 +1,171 @@ +--- +title: "BuyWhere vs Algolia — Product Search API Compared" +slug: "buywhere-vs-algolia" +description: "Compare BuyWhere and Algolia for product search. BuyWhere is a cross-merchant price comparison API and MCP server for AI agents; Algolia is a site search and discovery platform. Features, pricing, and use cases compared." +category: Compare +tags: + - "BuyWhere vs Algolia" + - "Algolia alternative" + - "product search API" + - "site search platform" + - "AI shopping agent" + - "price comparison API" + - "MCP server" +schema_type: Article +published: true +updated: 2026-05-07 +--- + +# BuyWhere vs Algolia — Product Search API Compared + +Comparing BuyWhere and Algolia for developers evaluating product search and discovery APIs. + +--- + +## Overview + +BuyWhere and Algolia are both search APIs, but they solve different problems. + +**BuyWhere** is a product catalog API and MCP server that gives AI agents and developers access to live product pricing and availability data across 500+ retailers in the US and Southeast Asia. It is designed for cross-merchant price comparison, deal discovery, and AI agent integrations. + +**Algolia** is a site search and discovery platform that helps teams implement fast, relevant search on their own websites and applications. It indexes your product catalog and provides tools to tune search relevance, faceting, and ranking. + +--- + +## Key Differences + +| Capability | BuyWhere | Algolia | +|-----------|----------|---------| +| **Purpose** | Cross-merchant product data for AI agents | On-site search relevance for your catalog | +| **Data scope** | 500+ retailers — multi-merchant | Single merchant — your catalog | +| **Price comparison** | Real-time, cross-merchant | No | +| **Countries** | US, SG, MY, TH, VN, PH, ID | Global | +| **MCP server** | Yes — @buywhere/mcp-server | No | +| **AI agent native** | Yes | No | +| **Free tier** | 1,000 calls/month | 14-day trial only | +| **Pricing** | Usage-based from $9/month | Usage-based, custom quote | + +--- + +## When to Choose BuyWhere + +Choose BuyWhere when you need: + +- **Cross-merchant price comparison** — not just searching within one catalog +- **AI agent integration** via MCP for Claude Desktop, Cursor, or custom agents +- **Deal discovery** — find products with active discounts across retailers +- **Multi-country search** in SGD, USD, MYR, THB, VND, PHP, IDR +- **Affiliate product links** with real-time pricing data +- **Product data infrastructure** for building price comparison tools + +BuyWhere provides the product data layer — you bring the interface. + +--- + +## When to Choose Algolia + +Choose Algolia when you need: + +- **Fast on-site search** for your own e-commerce catalog +- **Relevance tuning** with synonyms, typos, and custom ranking rules +- **Faceted search** with filters for attributes like size, colour, and brand +- **Search analytics** to understand what users are searching for +- **A managed search solution** with implementation support + +Algolia requires you to send your own product catalog for indexing. It does not provide cross-merchant product data. + +--- + +## Technical Comparison + +### Data Model + +BuyWhere normalises products across multiple merchants into a unified schema — you get pricing and availability data without maintaining a product database: + +```json +{ + "id": "bw_sg_12345", + "name": "Sony WH-1000XM5 Wireless Headphones", + "price": 429.00, + "currency": "SGD", + "merchant": "lazada_sg", + "domain": "lazada.sg", + "in_stock": true, + "rating": 4.8 +} +``` + +Algolia indexes your own product catalog. You maintain the catalog and send product data to Algolia's indexing API. + +### API vs SDK Integration + +BuyWhere is API-first: + +```bash +curl "https://api.buywhere.ai/v1/products/search?q=macbook+air&country=US" \ + -H "Authorization: Bearer $BUYWHERE_API_KEY" +``` + +Algolia uses a combination of REST API, SDKs (JavaScript, Python, Ruby, PHP, Java, Go), and an analytics dashboard. Both are developer-friendly. + +### MCP Server Support + +BuyWhere ships as an MCP server: + +```bash +npx -y @buywhere/mcp-server +``` + +Once installed, BuyWhere tools are available inside any MCP-compatible agent (Claude Desktop, Cursor, Cline, Windsurf, and more). Algolia does not offer an MCP server. + +--- + +## Pricing + +| Plan | BuyWhere | Algolia | +|------|----------|---------| +| Free | 1,000 calls/month | 14-day trial | +| Entry | $9/month (50,000 calls) | Custom quote | +| Growth | $49/month (500,000 calls) | Custom quote | +| Enterprise | Custom | Custom (managed) | + +BuyWhere offers transparent, usage-based pricing. Algolia pricing requires a sales conversation and is typically custom-quoted based on record count and usage. + +--- + +## Use Cases + +### AI Shopping Agent + +BuyWhere is purpose-built for this: + +> "Find the cheapest iPhone 15 Pro across Singapore, Japan, and the US." + +One `find_best_price` MCP tool call returns structured data from multiple merchants. No catalog maintenance required. + +### On-site Search Relevance + +Algolia is purpose-built for this: + +> "When a user types 'blck runng shs', return our black running shoes, not unrelated products. Apply our custom ranking rules." + +Algolia gives you fine-grained control over search relevance within your own catalog. + +--- + +## Summary + +BuyWhere and Algolia serve different needs. BuyWhere is for developers who need cross-merchant product data — pricing, availability, and deal information from multiple retailers — to power AI agents, price comparison tools, and deal aggregators. Algolia is for teams who need to improve search relevance on their own e-commerce catalog. + +If you need **cross-retailer product pricing data** for an AI agent or price comparison application, **BuyWhere** is the right choice. + +If you need **on-site search relevance tuning** for your own product catalog, **Algolia** is purpose-built for that. + +--- + +## Get Started with BuyWhere + +- [Get API key](https://buywhere.ai/api-keys) — free tier, no credit card +- [Quickstart](https://buywhere.ai/quickstart) — first query in 5 minutes +- [MCP setup](https://buywhere.ai/integrate) — connect to Claude, Cursor, or any MCP client +- [API docs](https://api.buywhere.ai/docs) \ No newline at end of file diff --git a/content/compare/buywhere-vs-amazon-paapi.md b/content/compare/buywhere-vs-amazon-paapi.md new file mode 100644 index 000000000..21427ee76 --- /dev/null +++ b/content/compare/buywhere-vs-amazon-paapi.md @@ -0,0 +1,190 @@ +--- +title: "BuyWhere vs Amazon Product Advertising API — Product Search Compared" +slug: "buywhere-vs-amazon-paapi" +description: "Compare BuyWhere and Amazon Product Advertising API for product search. BuyWhere is a cross-merchant price comparison API and MCP server for AI agents; Amazon PA API focuses only on Amazon products. Features, coverage, and use cases compared." +category: Compare +tags: + - "BuyWhere vs Amazon PA API" + - "Amazon Product Advertising API alternative" + - "Amazon API comparison" + - "product search API" + - "price comparison API" + - "MCP server" + - "multi-retailer" +schema_type: Article +published: true +updated: 2026-05-07 +--- + +# BuyWhere vs Amazon Product Advertising API — Product Search Compared + +Comparing BuyWhere and Amazon Product Advertising API for developers building product search and price comparison applications. + +--- + +## Overview + +BuyWhere and Amazon Product Advertising API serve different product search needs. + +**BuyWhere** is a product catalog API and MCP server that aggregates product pricing and availability data across 500+ retailers. It provides cross-merchant price comparison, deal discovery, and AI agent integration via MCP — all from a single API. + +**Amazon Product Advertising API (PA API)** is Amazon's official API for approved sellers and affiliates to access Amazon product data, offers, and customer reviews. It is restricted to Amazon products only and requires an approved Associates account. + +--- + +## Key Differences + +| Capability | BuyWhere | Amazon PA API | +|-----------|----------|---------------| +| **Retailers** | 500+ — Amazon, Walmart, Shopee, Lazada, +more | Amazon only | +| **Countries** | US, SG, MY, TH, VN, PH, ID | US, UK, DE, JP, FR, IT, ES, CN, IN, CA | +| **Price comparison** | Cross-merchant in single call | Amazon-only pricing | +| **MCP server** | Yes — @buywhere/mcp-server | No | +| **AI agent native** | Yes | No | +| **Authentication** | API key | PA API credentials + Associate tag | +| **Free tier** | 1,000 calls/month | Associates program (free if approved) | +| **Affiliate links** | Yes — across all merchants | Amazon only | +| **Deal discovery** | Yes — cross-merchant | No | + +--- + +## When to Choose BuyWhere + +Choose BuyWhere when you need: + +- **Cross-merchant price comparison** — compare prices across Amazon, Walmart, Shopee, and 500+ other retailers in a single call +- **Multi-country search** — cover US, Singapore, Malaysia, Thailand, Vietnam, Philippines, Indonesia +- **AI agent integration** via MCP for Claude Desktop, Cursor, or custom agents +- **Deal discovery** — find products with active discounts across all supported merchants +- **Non-Amazon retailers** — if your users shop across multiple platforms +- **Affiliate links** across all merchants, not just Amazon + +BuyWhere is platform-agnostic and designed for developers who need comprehensive product data without restricting to Amazon. + +--- + +## When to Choose Amazon PA API + +Choose Amazon PA API when you: + +- **Operate as an Amazon Associate** and primarily earn affiliate commissions on Amazon purchases +- **Need deep Amazon-specific data** — customer reviews, A+ content, BSR (best seller rank), Offer listings +- **Already have Amazon Associates approval** and are building an Amazon-centric shopping tool +- **Require Amazon-specific features** like SQS real-time notifications or Inventory Analytics API + +PA API is powerful for Amazon-specific use cases but limited to Amazon's catalog. + +--- + +## Technical Comparison + +### Data Coverage + +BuyWhere aggregates across multiple merchants: + +```json +{ + "items": [ + { + "id": "bw_us_001", + "name": "Sony WH-1000XM5", + "price": 349.99, + "merchant": "amazon_us", + "currency": "USD" + }, + { + "id": "bw_us_002", + "name": "Sony WH-1000XM5", + "price": 329.99, + "merchant": "walmart_us", + "currency": "USD" + } + ] +} +``` + +Amazon PA API returns only Amazon offer listings and pricing. + +### API Access + +BuyWhere — API-first, simple authentication: + +```bash +curl "https://api.buywhere.ai/v1/products/search?q=sony+wh-1000xm5&country=US" \ + -H "Authorization: Bearer $BUYWHERE_API_KEY" +``` + +Amazon PA API — requires signature-based authentication: + +```bash +curl "https://webservices.amazon.com/paapi5/searchitems" \ + -H "X-Amz-Access-Token: $AWS_ACCESS_KEY" \ + -H "X-Amz-Timestamp: $TIMESTAMP" \ + -H "X-Amz-Signature: $SIGNATURE" +``` + +### MCP Server + +BuyWhere ships as an MCP server: + +```bash +npx -y @buywhere/mcp-server +``` + +Amazon PA API is not available as an MCP server. + +--- + +## Use Cases + +### Price Comparison Tool + +BuyWhere is designed for this: + +> "Show me the cheapest price for this product across all retailers." + +Amazon PA API can only show Amazon's price. + +### AI Shopping Agent + +BuyWhere gives agents cross-merchant data: + +> "Find this product at the cheapest price, whichever retailer it's on." + +Amazon PA API limits the agent to Amazon data only. + +### Affiliate Marketing + +BuyWhere provides affiliate links across all merchants. Amazon PA API provides Amazon Associate links only. + +--- + +## Pricing + +| Plan | BuyWhere | Amazon PA API | +|------|----------|--------------| +| Free | 1,000 calls/month | Associates program (free if approved) | +| Entry | $9/month (50,000 calls) | Associates commission (varies) | +| Growth | $49/month (500,000 calls) | Higher tier by application | +| Enterprise | Custom | By agreement | + +Amazon PA API has no direct monetary cost beyond Associate requirements, but access requires approval and commission-based earnings. + +--- + +## Summary + +BuyWhere and Amazon PA API serve different scopes. BuyWhere is for developers who need **cross-merchant product data** — pricing, availability, and deals across 500+ retailers for AI agents, price comparison tools, and multi-merchant affiliate applications. Amazon PA API is for **Amazon-focused applications** where deep Amazon-specific data and Amazon affiliate commissions are the primary use case. + +If you need **cross-retailer coverage** and **multi-merchant price comparison**, **BuyWhere** is the right choice. + +If you are an **Amazon Associate** building an **Amazon-centric shopping tool**, **Amazon PA API** may be appropriate — and BuyWhere can complement it by providing the non-Amazon data layer. + +--- + +## Get Started with BuyWhere + +- [Get API key](https://buywhere.ai/api-keys) — free tier, no credit card +- [Quickstart](https://buywhere.ai/quickstart) — first query in 5 minutes +- [MCP setup](https://buywhere.ai/integrate) — connect to Claude, Cursor, or any MCP client +- [API docs](https://api.buywhere.ai/docs) \ No newline at end of file diff --git a/content/compare/buywhere-vs-chatgpt.md b/content/compare/buywhere-vs-chatgpt.md new file mode 100644 index 000000000..2b0835a46 --- /dev/null +++ b/content/compare/buywhere-vs-chatgpt.md @@ -0,0 +1,135 @@ +--- +title: "BuyWhere vs ChatGPT Shopping — AI Product Search Compared" +slug: "buywhere-vs-chatgpt" +description: "Compare BuyWhere and ChatGPT Shopping for product search and price comparison. BuyWhere is a developer commerce API and MCP server; ChatGPT Shopping is a consumer chatbot feature. Features, data access, and use cases compared." +category: Compare +tags: + - "BuyWhere vs ChatGPT Shopping" + - "ChatGPT product search" + - "AI shopping agent" + - "price comparison API" + - "MCP server" + - "developer API" +schema_type: Article +published: true +updated: 2026-05-07 +--- + +# BuyWhere vs ChatGPT Shopping — AI Product Search Compared + +Comparing BuyWhere and ChatGPT Shopping for developers and users evaluating AI-powered product search tools. + +--- + +## Overview + +BuyWhere and ChatGPT Shopping serve different users and use cases. + +**BuyWhere** is a developer API and MCP server that provides structured, real-time product pricing data across 500+ retailers. It is built for developers who need programmatic access to commerce data to power AI agents, price comparison tools, and deal aggregators. + +**ChatGPT Shopping** is a consumer-facing feature within ChatGPT that helps users discover and research products through conversational AI. It is designed for end users — not developers building on top of it. + +--- + +## Key Differences + +| Capability | BuyWhere | ChatGPT Shopping | +|-----------|----------|-------------------| +| **Audience** | Developers | End consumers | +| **Interface** | REST API + MCP server | Chatbot in ChatGPT | +| **Use case** | Build shopping agents and tools | Discover and research products | +| **Data access** | 500+ retailers via API | ChatGPT product index | +| **Price comparison** | Real-time, cross-merchant | Limited to ChatGPT results | +| **Countries** | US, SG, MY, TH, VN, PH, ID | Global | +| **MCP server** | Yes — @buywhere/mcp-server | No | +| **AI agent native** | Yes | No | +| **Developer access** | Full API access | No public API | +| **Free tier** | 1,000 calls/month | Free (consumer) | + +--- + +## When to Choose BuyWhere + +Choose BuyWhere when you need: + +- **Programmatic access** to product pricing and availability data +- **Cross-merchant price comparison** across Amazon, Walmart, Shopee, Lazada, and 500+ retailers +- **MCP server integration** for Claude Desktop, Cursor, or custom AI agents +- **Deal discovery** — find products sorted by discount percentage +- **Affiliate product links** with real-time pricing +- **Multi-country search** in SGD, USD, MYR, THB, VND, PHP, IDR + +BuyWhere gives developers raw product data via REST API or MCP. You control the interface and logic. + +--- + +## When to Use ChatGPT Shopping + +Use ChatGPT Shopping when you are: + +- **An end user** looking for product recommendations in a conversational interface +- **Doing general product research** without specific price comparison needs +- **Comparing products within ChatGPT's curated product index** + +ChatGPT Shopping has no public API. You cannot build on top of it or integrate it into your own products. + +--- + +## Developer Access Comparison + +### BuyWhere API + +```bash +curl "https://api.buywhere.ai/v1/products/search?q=sony+wh-1000xm5&country=US&limit=5" \ + -H "Authorization: Bearer $BUYWHERE_API_KEY" +``` + +Returns structured JSON with product name, price, merchant, URL, availability, and ratings. + +MCP server: +```bash +npx -y @buywhere/mcp-server +``` + +Tools: `search_products`, `get_product`, `compare_products`, `get_deals`, `list_categories`, `find_best_price`. + +### ChatGPT Shopping + +ChatGPT Shopping is accessible only through the ChatGPT interface. There is no public API for developers to access ChatGPT Shopping data or integrate it into custom applications. + +--- + +## Use Cases + +### AI Shopping Agent + +BuyWhere is purpose-built for this: +> "Build an agent that finds the cheapest MacBook across Singapore, Japan, and the US." + +BuyWhere gives your agent the raw data to answer this. ChatGPT Shopping is the answer — you cannot build on it. + +### Consumer Product Discovery + +ChatGPT Shopping is designed for this: +> "What is the best laptop for a college student under $1000?" + +ChatGPT returns a conversational answer with product suggestions. + +--- + +## Summary + +BuyWhere is infrastructure for developers building AI shopping agents, price comparison tools, and commerce data applications. ChatGPT Shopping is a consumer chatbot feature for end users researching products. + +If you need **programmatic access to product pricing data** to build your own shopping experience, **BuyWhere** is the right choice. + +If you are an **end user** looking for a quick product recommendation in ChatGPT, **ChatGPT Shopping** serves that directly. + +--- + +## Get Started with BuyWhere + +- [Get API key](https://buywhere.ai/api-keys) — free tier, no credit card +- [Quickstart](https://buywhere.ai/quickstart) — first query in 5 minutes +- [MCP setup](https://buywhere.ai/integrate) — connect to Claude, Cursor, or any MCP client +- [API docs](https://api.buywhere.ai/docs) \ No newline at end of file diff --git a/content/compare/buywhere-vs-constructor.md b/content/compare/buywhere-vs-constructor.md new file mode 100644 index 000000000..703f665ba --- /dev/null +++ b/content/compare/buywhere-vs-constructor.md @@ -0,0 +1,178 @@ +--- +title: "BuyWhere vs Constructor.io — Product Search and Discovery Platform Comparison" +slug: "buywhere-vs-constructor" +description: "Compare BuyWhere and Constructor.io for product search and discovery. BuyWhere focuses on AI agent-native price comparison across 500+ retailers; Constructor.io offers enterprise site search with merchandising controls. Features, pricing, and use cases compared." +category: Compare +tags: + - "BuyWhere vs Constructor.io" + - "Constructor.io alternative" + - "product search API" + - "site search platform" + - "AI shopping agent" + - "price comparison API" + - "discovery platform" +schema_type: Article +published: true +updated: 2026-05-07 +--- + +# BuyWhere vs Constructor.io — Product Search and Discovery Platform Comparison + +Comparing BuyWhere and Constructor.io for teams evaluating product search APIs and site search platforms for e-commerce. + +--- + +## Overview + +BuyWhere and Constructor.io are both product search and discovery platforms, but they serve different primary audiences and use cases. + +**BuyWhere** is a product catalog API and MCP server purpose-built for AI agents. It provides cross-merchant product search, live price comparison, and deal discovery across 500+ retailers in the US and Southeast Asia. BuyWhere is designed for developers integrating commerce data into AI agent workflows. + +**Constructor.io** is an enterprise site search and product discovery platform focused on helping e-commerce teams improve on-site search relevance, autocomplete, recommendations, and merchandising controls. It targets digital commerce teams who need to optimise their own product catalog's search experience. + +--- + +## Key Differences + +| Capability | BuyWhere | Constructor.io | +|-----------|----------|----------------| +| **Primary audience** | AI agent developers | E-commerce merchandising teams | +| **Core use case** | Cross-merchant product data for AI agents | On-site search relevance and conversions | +| **Data scope** | Multi-merchant (500+ retailers) | Single-merchant (your catalog) | +| **Price comparison** | Real-time, cross-merchant | No — price data not in scope | +| **MCP server** | Yes — @buywhere/mcp-server | No | +| **AI agent native** | Yes | No | +| **Countries** | US, SG, MY, TH, VN, PH, ID | Global | +| **Integration** | API-first | SDK + API | +| **Free tier** | 1,000 calls/month | No free tier | +| **Pricing** | Usage-based | Enterprise / custom | + +--- + +## When to Choose BuyWhere + +Choose BuyWhere when you are: + +- **Building an AI shopping agent** that needs live product data from multiple retailers +- **Comparing prices across merchants** — not just searching within one catalog +- **Building a deal discovery or price alert tool** +- **An affiliate marketer** who needs cross-merchant product links and pricing +- **Integrating commerce data into AI workflows** via MCP for Claude Desktop, Cursor, or custom agents +- **Building a price comparison dashboard** across retailers like Amazon, Walmart, Shopee, and Lazada + +BuyWhere is API-first and designed for developers who need raw product data to power their own interfaces and agents. + +--- + +## When to Choose Constructor.io + +Choose Constructor.io when you are: + +- **Optimising on-site search** for an existing e-commerce store +- **A merchandising team** that needs to control search rankings and synonyms +- **Building recommendation carousels** and autocomplete for a storefront +- **Focused on conversion rate optimisation** within a single product catalog +- **Willing to pay enterprise pricing** for managed implementation support + +Constructor.io requires your own product catalog as the data source — it does not provide cross-retailer product data. + +--- + +## Technical Comparison + +### Data Model + +BuyWhere normalises products across multiple merchants into a unified schema: + +```json +{ + "id": "bw_sg_12345", + "name": "Sony WH-1000XM5 Wireless Headphones", + "price": 429.00, + "currency": "SGD", + "merchant": "lazada_sg", + "domain": "lazada.sg", + "in_stock": true, + "rating": 4.8 +} +``` + +Constructor.io indexes your own product catalog and optimizes search relevance within it. + +### API vs SDK Integration + +BuyWhere is API-first — any client that can make HTTP requests can integrate: + +```bash +curl "https://api.buywhere.ai/v1/products/search?q=macbook+air&country=SG" \ + -H "Authorization: Bearer $BUYWHERE_API_KEY" +``` + +Constructor.io uses a combination of client-side JavaScript SDK and backend API for catalog management and analytics. + +### MCP Server Support + +BuyWhere ships as an MCP server: + +```bash +npx -y @buywhere/mcp-server +``` + +After configuration, BuyWhere tools are available inside any MCP-compatible agent: + +- Claude Desktop, Cursor, Cline, Windsurf, VS Code Copilot +- LangChain, CrewAI, AutoGen, LlamaIndex + +Constructor.io does not offer an MCP server. + +--- + +## Pricing + +| Plan | BuyWhere | Constructor.io | +|------|----------|----------------| +| Free | 1,000 calls/month | No free tier | +| Entry | $9/month (50,000 calls) | Custom enterprise | +| Growth | $49/month (500,000 calls) | Custom enterprise | +| Enterprise | Custom | Custom (managed implementation) | + +BuyWhere offers transparent, usage-based pricing accessible to developers and indie projects. Constructor.io is enterprise-focused with custom pricing requiring a sales conversation. + +--- + +## Use Case Comparison + +### AI Shopping Agent + +BuyWhere is purpose-built for this use case: + +> "Find the cheapest MacBook Air M3 across Singapore, Japan, and the US." + +BuyWhere MCP tools let an AI agent answer this with a single tool call, returning structured product data from multiple merchants and countries. + +### E-commerce Site Search + +Constructor.io is purpose-built for this use case: + +> "When a user types 'laptop', show our top-selling laptops first, apply our synonym rules, and boost products with higher margins." + +Constructor.io gives merchandising teams controls to configure this without code. + +--- + +## Summary + +BuyWhere and Constructor.io solve different problems. BuyWhere is for developers building AI agents and applications that need cross-retailer product data. Constructor.io is for e-commerce merchandising teams improving on-site search within their own catalog. + +If you need **live, cross-merchant product data** for an AI agent, price comparison tool, or multi-retailer deal aggregator, **BuyWhere** is the right choice. + +If you need **on-site search relevance tuning** and merchandising controls for your own e-commerce store, **Constructor.io** may be the right choice — and BuyWhere can complement it by providing the external product data layer when needed. + +--- + +## Get Started with BuyWhere + +- [Get API key](https://buywhere.ai/api-keys) — free tier, no credit card +- [Quickstart](https://buywhere.ai/quickstart) — first query in 5 minutes +- [MCP setup](https://buywhere.ai/integrate) — connect to Claude, Cursor, or any MCP client +- [API docs](https://api.buywhere.ai/docs) \ No newline at end of file diff --git a/content/compare/buywhere-vs-copilot.md b/content/compare/buywhere-vs-copilot.md new file mode 100644 index 000000000..1599d97eb --- /dev/null +++ b/content/compare/buywhere-vs-copilot.md @@ -0,0 +1,173 @@ +--- +title: "BuyWhere vs Microsoft Copilot Shopping — AI Product Search Compared" +slug: "buywhere-vs-copilot" +description: "Compare BuyWhere and Microsoft Copilot (Bing Chat) for AI-powered product search. BuyWhere is a developer API and MCP server for cross-merchant price comparison; Copilot Shopping is a consumer chatbot feature. Features, data access, and use cases compared." +category: Compare +tags: + - "BuyWhere vs Copilot Shopping" + - "BuyWhere vs Bing Chat" + - "Microsoft Copilot shopping" + - "AI product search" + - "AI shopping agent" + - "price comparison API" + - "MCP server" + - "developer API" +schema_type: Article +published: true +updated: 2026-05-07 +--- + +# BuyWhere vs Microsoft Copilot Shopping — AI Product Search Compared + +Comparing BuyWhere and Microsoft Copilot (formerly Bing Chat) for AI-powered product search, price comparison, and shopping assistance. + +--- + +## Overview + +BuyWhere and Microsoft Copilot Shopping take fundamentally different approaches to AI-powered product search. + +**BuyWhere** is a developer API and MCP server that gives AI agents and applications structured access to product pricing and availability data across 500+ retailers. It is built for developers who need raw commerce data to power their own AI shopping experiences. + +**Microsoft Copilot Shopping** (built into Copilot, Bing Chat, and Edge) is a consumer-facing chatbot feature that helps users discover and research products using natural language. It is designed for end users shopping in Bing or Edge — not for developers building shopping applications. + +--- + +## Key Differences + +| Capability | BuyWhere | Microsoft Copilot Shopping | +|-----------|----------|---------------------------| +| **Audience** | Developers, AI agent builders | End consumers | +| **Interface** | API + MCP server | Chatbot in Bing/Edge | +| **Use case** | Build shopping agents and tools | Discover and research products | +| **Data access** | 500+ retailers via API | Bing product index | +| **Price comparison** | Real-time, cross-merchant | Limited to Bing product results | +| **Countries** | US, SG, MY, TH, VN, PH, ID | US primary | +| **MCP server** | Yes — @buywhere/mcp-server | No | +| **AI agent native** | Yes | No | +| **Developer access** | Full API access | No public API | +| **Free tier** | 1,000 calls/month | Free (consumer) | + +--- + +## When to Choose BuyWhere + +Choose BuyWhere when you are: + +- **Building an AI shopping agent** that needs programmatic access to product data +- **Creating a price comparison tool or deal aggregator** +- **Building an affiliate marketing site** that needs real-time product pricing and links +- **An AI developer** integrating commerce data into a custom agent workflow +- **Running a comparison site** that needs structured product data from multiple retailers + +BuyWhere gives developers raw product data via REST API or MCP tools. You control the interface, the UX, and the logic. + +--- + +## When to Use Microsoft Copilot Shopping + +Use Microsoft Copilot Shopping when you are: + +- **An end consumer** using Bing, Edge, or Windows Copilot to research products +- **Looking for quick product recommendations** without installing anything +- **Comparing products within Bing's product index** + +Copilot Shopping is not available as a developer API. You cannot build on top of it, integrate it into your own product, or access its data programmatically. + +--- + +## Developer Access Comparison + +### BuyWhere API + +BuyWhere is built for developers: + +```bash +curl "https://api.buywhere.ai/v1/products/search?q=macbook+air&country=US&limit=5" \ + -H "Authorization: Bearer $BUYWHERE_API_KEY" +``` + +Returns structured JSON with product name, price, merchant, URL, availability, and ratings. + +BuyWhere also ships as an MCP server for AI agent integration: + +```bash +npx -y @buywhere/mcp-server +``` + +Tools available: `search_products`, `get_product`, `compare_products`, `get_deals`, `list_categories`, `find_best_price`. + +### Microsoft Copilot Shopping + +Copilot Shopping is accessible only through Bing Chat, Edge Copilot, and Windows Copilot interfaces. There is no public API for developers to access Copilot Shopping data or integrate it into custom applications. + +--- + +## Data Comparison + +### BuyWhere + +- **500+ retailers** across US and Southeast Asia +- Real-time price and availability data +- Cross-merchant price comparison in a single call +- Deal discovery sorted by discount percentage +- Multi-currency support (USD, SGD, MYR, THB, VND, PHP, IDR) + +### Microsoft Copilot Shopping + +- Bing product index — limited to products indexed by Bing +- No real-time price monitoring across multiple merchants +- No cross-merchant comparison tool +- Results ranked by Copilot's own ranking algorithm + +--- + +## Use Cases + +### Building an AI Shopping Agent + +BuyWhere is designed for this: + +> "Build an AI agent that tells a user the best time to buy a product based on price history and current deals across Amazon, Walmart, and Shopee." + +BuyWhere gives your agent the raw data to answer this question. Copilot Shopping is the answer itself — you cannot build on top of it. + +### Consumer Product Research + +Microsoft Copilot Shopping is designed for this: + +> "What is the best laptop for college students under $1000?" + +Copilot Shopping returns a conversational answer with product suggestions from Bing's index. + +--- + +## Pricing + +| Plan | BuyWhere | Microsoft Copilot Shopping | +|------|----------|---------------------------| +| Free | 1,000 calls/month | Free (consumer use) | +| Entry | $9/month (50,000 calls) | N/A | +| Growth | $49/month (500,000 calls) | N/A | +| Enterprise | Custom | N/A | + +BuyWhere pricing is usage-based developer pricing. Copilot Shopping is free for consumers but has no developer-accessible tier. + +--- + +## Summary + +BuyWhere and Microsoft Copilot Shopping serve different users. BuyWhere is infrastructure for developers building AI shopping agents, price comparison tools, and commerce data applications. Copilot Shopping is a consumer chatbot feature within Bing and Edge for end users researching products. + +If you need **programmatic access to product pricing and availability data** to build your own shopping experience, **BuyWhere** is the right choice. + +If you are an **end user** looking for a quick product recommendation in Bing, **Microsoft Copilot Shopping** serves that use case directly. + +--- + +## Get Started with BuyWhere + +- [Get API key](https://buywhere.ai/api-keys) — free tier, no credit card +- [Quickstart](https://buywhere.ai/quickstart) — first query in 5 minutes +- [MCP setup](https://buywhere.ai/integrate) — connect to Claude, Cursor, or any MCP client +- [API docs](https://api.buywhere.ai/docs) \ No newline at end of file diff --git a/content/compare/buywhere-vs-doofinder.md b/content/compare/buywhere-vs-doofinder.md new file mode 100644 index 000000000..2c845032e --- /dev/null +++ b/content/compare/buywhere-vs-doofinder.md @@ -0,0 +1,169 @@ +--- +title: "BuyWhere vs Doofinder — Product Search API Compared" +slug: "buywhere-vs-doofinder" +description: "Compare BuyWhere and Doofinder for product search. BuyWhere is a cross-merchant price comparison API and MCP server for AI agents; Doofinder is a site search and discovery platform for e-commerce. Features, pricing, and use cases compared." +category: Compare +tags: + - "BuyWhere vs Doofinder" + - "Doofinder alternative" + - "product search API" + - "site search platform" + - "AI shopping agent" + - "price comparison API" + - "MCP server" +schema_type: Article +published: true +updated: 2026-05-07 +--- + +# BuyWhere vs Doofinder — Product Search API Compared + +Comparing BuyWhere and Doofinder for developers and teams evaluating product search APIs. + +--- + +## Overview + +BuyWhere and Doofinder serve different search use cases in e-commerce. + +**BuyWhere** is a product catalog API and MCP server that gives AI agents and developers access to live product pricing and availability data across 500+ retailers. It is built for cross-merchant price comparison, deal discovery, and AI agent integrations. + +**Doofinder** is a site search and discovery platform for e-commerce teams. It indexes your own product catalog and provides search, autocomplete, faceting, and ranking tools to improve the on-site search experience. + +--- + +## Key Differences + +| Capability | BuyWhere | Doofinder | +|-----------|----------|-----------| +| **Purpose** | Cross-merchant product data for AI agents | On-site search for your catalog | +| **Data scope** | 500+ retailers — multi-merchant | Single merchant — your catalog | +| **Price comparison** | Real-time, cross-merchant | No | +| **Countries** | US, SG, MY, TH, VN, PH, ID | Global | +| **MCP server** | Yes — @buywhere/mcp-server | No | +| **AI agent native** | Yes | No | +| **Free tier** | 1,000 calls/month | Free 30-day trial | +| **Pricing** | Usage-based from $9/month | Usage-based from €49/month | + +--- + +## When to Choose BuyWhere + +Choose BuyWhere when you need: + +- **Cross-merchant price comparison** across Amazon, Walmart, Shopee, Lazada, and 500+ retailers +- **AI agent integration** via MCP for Claude Desktop, Cursor, or custom agents +- **Deal discovery** — find products with active discounts across retailers +- **Multi-country product search** in SGD, USD, MYR, THB, VND, PHP, IDR +- **Affiliate product links** with real-time pricing +- **A price comparison API** that works independently of any e-commerce platform + +BuyWhere is platform-agnostic and designed for developers building commerce applications and AI agents. + +--- + +## When to Choose Doofinder + +Choose Doofinder when you need: + +- **Fast on-site search** for your own e-commerce catalog +- **Autocomplete and type-ahead** search suggestions +- **Faceted search** with filters for attributes like size, colour, and brand +- **Search analytics** to understand user intent +- **Multi-language search** support for international stores + +Doofinder requires you to send your own product catalog for indexing. It does not provide cross-merchant product data. + +--- + +## Technical Comparison + +### Data Model + +BuyWhere provides the product data infrastructure — no catalog to maintain: + +```json +{ + "id": "bw_sg_12345", + "name": "Sony WH-1000XM5 Wireless Headphones", + "price": 429.00, + "currency": "SGD", + "merchant": "lazada_sg", + "domain": "lazada.sg", + "in_stock": true, + "rating": 4.8 +} +``` + +Doofinder indexes your own product catalog. You maintain the catalog and send updates via their indexing API. + +### API vs SDK Integration + +BuyWhere is API-first: + +```bash +curl "https://api.buywhere.ai/v1/products/search?q=laptop&country=US" \ + -H "Authorization: Bearer $BUYWHERE_API_KEY" +``` + +Doofinder provides a REST API plus SDKs (JavaScript, PHP, Python) for search integration. Both are developer-friendly. + +### MCP Server Support + +BuyWhere ships as an MCP server: + +```bash +npx -y @buywhere/mcp-server +``` + +Tools are available inside Claude Desktop, Cursor, Cline, Windsurf, and any MCP-compatible agent. Doofinder does not offer an MCP server. + +--- + +## Pricing + +| Plan | BuyWhere | Doofinder | +|------|----------|-----------| +| Free | 1,000 calls/month | 30-day trial | +| Entry | $9/month (50,000 calls) | €49/month | +| Growth | $49/month (500,000 calls) | €199/month+ | +| Enterprise | Custom | Custom | + +BuyWhere offers transparent, usage-based pricing in USD. Doofinder pricing is in EUR and tiered by search requests. + +--- + +## Use Cases + +### AI Shopping Agent + +BuyWhere is purpose-built for this: + +> "Find the best price for a MacBook Air M3 across Singapore retailers." + +One `find_best_price` MCP tool call returns the answer from multiple merchants and countries. + +### On-site Search + +Doofinder is purpose-built for this: + +> "When a user searches 'blue running shoes size 42', return only in-stock items from our catalog with our brand-boosted ranking applied." + +--- + +## Summary + +BuyWhere and Doofinder solve different problems. BuyWhere is infrastructure for cross-merchant product data — pricing, availability, and deal information from multiple retailers — for AI agents, price comparison tools, and deal aggregators. Doofinder is a site search platform for e-commerce teams improving search on their own catalog. + +If you need **cross-retailer product pricing data** for an AI agent or price comparison application, **BuyWhere** is the right choice. + +If you need **on-site search and discovery tools** for your own e-commerce catalog, **Doofinder** is purpose-built for that. + +--- + +## Get Started with BuyWhere + +- [Get API key](https://buywhere.ai/api-keys) — free tier, no credit card +- [Quickstart](https://buywhere.ai/quickstart) — first query in 5 minutes +- [MCP setup](https://buywhere.ai/integrate) — connect to Claude, Cursor, or any MCP client +- [API docs](https://api.buywhere.ai/docs) \ No newline at end of file diff --git a/content/compare/buywhere-vs-gemini.md b/content/compare/buywhere-vs-gemini.md new file mode 100644 index 000000000..61b256b38 --- /dev/null +++ b/content/compare/buywhere-vs-gemini.md @@ -0,0 +1,172 @@ +--- +title: "BuyWhere vs Google Gemini — AI Product Search Compared" +slug: "buywhere-vs-gemini" +description: "Compare BuyWhere and Google Gemini for AI product search. BuyWhere is a developer commerce API and MCP server; Gemini is a consumer AI chatbot with product research features. Features, data access, and use cases compared." +category: Compare +tags: + - "BuyWhere vs Google Gemini" + - "Google Gemini shopping" + - "AI product search" + - "AI shopping agent" + - "price comparison API" + - "MCP server" + - "developer API" +schema_type: Article +published: true +updated: 2026-05-07 +--- + +# BuyWhere vs Google Gemini — AI Product Search Compared + +Comparing BuyWhere and Google Gemini for developers building AI shopping agents and product research tools. + +--- + +## Overview + +BuyWhere and Google Gemini serve different users and use cases. + +**BuyWhere** is a developer API and MCP server that provides structured, real-time product pricing and availability data across 500+ retailers. It is built for developers who need programmatic access to commerce data for AI agents, price comparison tools, and deal aggregators. + +**Google Gemini** (formerly Bard) is a consumer AI chatbot by Google. It can help with general research including product questions, but it is not a commerce data API and does not provide structured, real-time pricing data for developers. + +--- + +## Key Differences + +| Capability | BuyWhere | Google Gemini | +|-----------|----------|--------------| +| **Audience** | Developers, AI agent builders | End consumers | +| **Interface** | REST API + MCP server | Chatbot (gemini.google.com) | +| **Use case** | Build shopping agents and tools | General AI assistance, product research | +| **Data access** | 500+ retailers via API | General web knowledge | +| **Price comparison** | Real-time, cross-merchant | Limited to web-cited prices | +| **Countries** | US, SG, MY, TH, VN, PH, ID | Global | +| **MCP server** | Yes — @buywhere/mcp-server | No | +| **AI agent native** | Yes | No | +| **Developer access** | Full API access | No public API | +| **Free tier** | 1,000 calls/month | Free (consumer) | + +--- + +## When to Choose BuyWhere + +Choose BuyWhere when you need: + +- **Programmatic access** to product pricing and availability data +- **Cross-merchant price comparison** across Amazon, Walmart, Shopee, Lazada, and 500+ retailers +- **AI agent integration** via MCP for Claude Desktop, Cursor, or custom agents +- **Deal discovery** — find products with active discounts across retailers +- **Affiliate product links** with real-time pricing +- **Multi-country search** in SGD, USD, MYR, THB, VND, PHP, IDR + +BuyWhere gives developers raw commerce data — you build the interface. + +--- + +## When to Use Google Gemini + +Use Google Gemini when you are: + +- **An end user** doing general product research +- **Looking for broad product comparisons** across categories +- **Asking general questions** that benefit from Google's web knowledge + +Gemini is a consumer chatbot. There is no public API for accessing product pricing data from Gemini. + +--- + +## Developer Access Comparison + +### BuyWhere API + +BuyWhere is built for developers: + +```bash +curl "https://api.buywhere.ai/v1/products/search?q=sony+wh-1000xm5&country=US&limit=5" \ + -H "Authorization: Bearer $BUYWHERE_API_KEY" +``` + +Returns structured JSON: +```json +{ + "items": [{ + "id": "bw_us_12345", + "name": "Sony WH-1000XM5 Wireless Headphones", + "price": 349.99, + "currency": "USD", + "merchant": "amazon_us", + "in_stock": true + }] +} +``` + +MCP server: +```bash +npx -y @buywhere/mcp-server +``` + +Tools: `search_products`, `get_product`, `compare_products`, `get_deals`, `list_categories`, `find_best_price`. + +### Google Gemini API + +Google offers the Gemini API (`ai.google.dev`) for accessing Gemini models, but it is a general LLM API — not a commerce data API. Gemini can discuss products based on its training data, but it does not provide structured, real-time product pricing data. + +--- + +## Data Comparison + +### BuyWhere — Commerce Data + +- **500+ retailers** across US and Southeast Asia +- Real-time price and stock availability +- Cross-merchant price comparison +- Deal discovery with discount percentages +- Product specifications, ratings, merchant info +- Affiliate redirect links + +### Google Gemini — General Knowledge + +- Broad product knowledge from training data +- No real-time price monitoring +- No structured commerce data format +- Cannot power a price comparison tool + +--- + +## Use Cases + +### AI Shopping Agent + +BuyWhere is purpose-built for this: + +> "Find the cheapest MacBook Pro 14-inch across Singapore, Japan, and the US retailers in your catalog." + +One `find_best_price` MCP tool call returns structured data the agent can reason over. + +### General Product Research + +Gemini is well-suited for: + +> "What are the key differences between the Sony WH-1000XM5 and Apple AirPods Max?" + +But for real-time pricing, stock availability, or affiliate links, BuyWhere is required. + +--- + +## Summary + +BuyWhere and Google Gemini answer different questions. BuyWhere is infrastructure for developers building AI shopping agents, price comparison tools, and commerce data applications — it provides structured, real-time product pricing data. Gemini is a consumer chatbot for general research — it cannot provide programmatic access to live commerce data. + +If you need **programmatic access to product pricing, availability, and merchant data** to build shopping agents or price comparison tools, **BuyWhere** is the right choice. + +If you are an **end user** looking for a general product overview or comparison, **Google Gemini** serves that use case directly. + +--- + +## Get Started with BuyWhere + +- [Get API key](https://buywhere.ai/api-keys) — free tier, no credit card +- [Quickstart](https://buywhere.ai/quickstart) — first query in 5 minutes +- [MCP setup](https://buywhere.ai/integrate) — connect to Claude, Cursor, or any MCP client +- [API docs](https://api.buywhere.ai/docs) \ No newline at end of file diff --git a/content/compare/buywhere-vs-google-shopping.md b/content/compare/buywhere-vs-google-shopping.md new file mode 100644 index 000000000..c73c671ea --- /dev/null +++ b/content/compare/buywhere-vs-google-shopping.md @@ -0,0 +1,159 @@ +--- +title: "BuyWhere vs Google Shopping API — Product Data for Developers" +slug: "buywhere-vs-google-shopping" +description: "Compare BuyWhere and the Google Shopping API for developers building price comparison tools, shopping agents, and deal aggregators. BuyWhere provides cross-merchant price data via REST and MCP server; Google's APIs serve Shopping Actions sellers and product listing ads. Features, data access, and use cases compared." +category: Compare +tags: + - "BuyWhere vs Google" + - "Google Shopping API" + - "Google Shopping Actions API" + - "price comparison API" + - "shopping agent API" + - "MCP server" + - "product data API" + - "cross-merchant price data" + - "developer commerce API" + - "Google Product Category" +schema_type: Article +published: true +updated: 2026-05-07 +--- + +# BuyWhere vs Google Shopping API — Product Data for Developers + +Comparing BuyWhere and Google's commerce APIs for developers building shopping agents, price comparison tools, and deal aggregators. + +--- + +## Overview + +BuyWhere and Google's commerce-related APIs serve different developer needs despite both relating to product discovery and pricing. + +**BuyWhere** is a developer-first commerce API and MCP server that aggregates real-time pricing and availability data across 500+ retailers. It is built for developers who need cross-merchant product data to power shopping agents, price comparison tools, and deal aggregators — without the overhead of managing individual retailer integrations. + +**Google** offers several commerce-related APIs: the **Shopping API** (part of Google Shopping Actions for resellers), the **Product Ratings API**, and general **Search API** with shopping knowledge panels. These are designed primarily for merchants running Shopping ads, product listings, or seller programmes — not for developers building independent cross-merchant comparison tools. + +--- + +## Key Differences + +| Capability | BuyWhere | Google Shopping API | +|-----------|----------|-------------------| +| **Primary purpose** | Cross-merchant commerce data API | Shopping ads, product listings, seller programme | +| **Interface** | REST API + MCP server | REST API (Shopping API) | +| **Use case** | Build shopping agents, price tools, deal sites | Run Shopping ads, manage product inventory | +| **Data scope** | 500+ retailers, multiple countries | Google Shopping inventory (paid listings) | +| **Price comparison** | Real-time, cross-merchant | Google merchant listings only (paid placements) | +| **MCP server** | Yes — @buywhere/mcp-server | No | +| **Developer access** | Direct API key, self-serve | Google Cloud + merchant account required | +| **Countries** | US, SG, MY, TH, VN, PH, ID | Global (country-specific programmes) | +| **Free tier** | 1,000 calls/month | Shopping Actions: variable fees per transaction | +| **Pricing model** | Usage-based from $9/month | Fee per transaction or ad spend | + +--- + +## Data Access and Coverage + +### BuyWhere — Cross-Merchant Data + +BuyWhere aggregates product pricing and availability from 500+ retailers across eight countries, giving developers a single API to query: + +- Real-time price across competing retailers for the same product +- Stock availability at each retailer +- Historical price context (where available) +- Freshness timestamps on all data points + +This makes BuyWhere suitable for building: +- Price comparison applications +- Shopping agent tools that recommend the best current deal +- Deal alert systems monitoring multiple merchants simultaneously +- AI agents that need structured commerce data to make purchase recommendations + +### Google Shopping API — Merchant Inventory + +Google's commerce APIs serve different functions: + +**Google Shopping API (Shopping Actions)**: Enables resellers to list products and process transactions through Google. Data is limited to the seller's own inventory shown via Google. + +**Merchant Center API**: Lets merchants manage product inventory and configuration for Shopping ads. Still merchant-specific — not a cross-merchant data source. + +**Google Search (general)**: Shopping knowledge panels and product carousels in search results are generated from broad web indexing. They do not provide structured, developer-accessible pricing comparison APIs for building independent tools. + +Google does not expose: +- Cross-merchant price comparison data via API +- Real-time pricing across different retailers +- API access to Shopping knowledge panel data for building comparison tools + +--- + +## For Shopping Agent Developers + +### When to Use BuyWhere + +BuyWhere is purpose-built for developers building shopping agents that need to: + +1. **Compare prices across retailers** — A shopping agent that answers "where is the cheapest place to buy this product right now?" needs cross-merchant data. BuyWhere provides this directly; Google's APIs do not. +2. **Access multiple retailers via a single integration** — Maintaining individual API integrations with 500+ retailers is impractical. BuyWhere handles aggregation, normalisation, and freshness management. +3. **Give AI agents structured product context** — BuyWhere's MCP server lets AI agents query product pricing and availability using natural language via the Model Context Protocol. +4. **Build region-specific shopping tools** — BuyWhere covers Southeast Asian markets (SG, MY, TH, VN, PH, ID) where Google's commerce APIs have limited coverage. + +### When to Use Google APIs + +Google's commerce APIs are the right tool when: + +1. **You are a merchant selling on Google** — The Shopping API and Merchant Center API let you manage your product listings and inventory for Shopping ads and Shopping Actions transactions. +2. **You run Google Shopping ads** — The Ads API integrates with Google Merchant Center to power Shopping campaign management. +3. **You want your products in Google's shopping surfaces** — If you sell products and want them to appear in Google's shopping search results, Google's merchant APIs are the correct integration path. + +--- + +## Developer Experience + +### BuyWhere + +- **Getting started**: Get an API key from buywhere.com, make REST calls or connect via MCP server +- **Authentication**: Bearer token (API key) +- **SDK support**: MCP server (`@buywhere/mcp-server`) for AI agent integration +- **Data format**: JSON REST responses, structured product objects +- **Rate limits**: 1,000 calls/month free; usage-based paid plans + +### Google Shopping API + +- **Getting started**: Google Cloud project, Merchant Center account, product data upload, Shopping Actions programme application +- **Authentication**: OAuth 2.0 + Google Cloud IAM +- **SDK support**: Google API client libraries +- **Data format**: JSON via REST, structured product feeds +- **Costs**: No API subscription; Shopping Actions charges transaction fees per sale + +--- + +## Integration Comparison + +| Factor | BuyWhere | Google Shopping API | +|--------|----------|-------------------| +| **Setup time** | Minutes — get key, start calling | Weeks — cloud project, merchant verification, programme application | +| **Coverage** | 500+ retailers | Google Shopping inventory (paid listings) | +| **Cross-merchant comparison** | Native | Not available | +| **MCP server** | Yes | No | +| **Southeast Asia coverage** | Full (SG, MY, TH, VN, PH, ID) | Limited | +| **Use without being a seller** | Yes | No (must be a registered merchant) | +| **AI agent integration** | Native via MCP | Not designed for AI agents | + +--- + +## Summary + +BuyWhere and Google's commerce APIs serve different developer needs: + +- **BuyWhere** is for developers building independent shopping agents, price comparison tools, and deal aggregators that need cross-merchant pricing data. It provides a single, developer-friendly API with MCP server support for AI agent integration. +- **Google's Shopping API** is for merchants who want to list and sell products through Google's shopping surfaces — it serves the seller's own inventory, not cross-merchant comparison data. + +For developers building AI shopping agents or price comparison applications, BuyWhere provides the cross-merchant data layer that Google's APIs cannot. The two can be complementary — an AI agent might use BuyWhere for cross-retailer price comparison and Google Ads APIs when the best recommendation involves a Google Shopping merchant. + +--- + +## Related Comparisons + +- [BuyWhere vs Amazon](/compare/buywhere-vs-amazon) — developer commerce API vs Amazon SP-API +- [BuyWhere vs Perplexity](/compare/buywhere-vs-perplexity) — AI product search compared +- [BuyWhere MCP Developer FAQ](/compare/buywhere-mcp-developer-faq) — technical integration questions diff --git a/content/compare/buywhere-vs-klevu.md b/content/compare/buywhere-vs-klevu.md new file mode 100644 index 000000000..9e4ba0cb0 --- /dev/null +++ b/content/compare/buywhere-vs-klevu.md @@ -0,0 +1,167 @@ +--- +title: "BuyWhere vs Klevu — Product Search API Compared" +slug: "buywhere-vs-klevu" +description: "Compare BuyWhere and Klevu for product search. BuyWhere is a cross-merchant price comparison API and MCP server for AI agents; Klevu is an AI-powered site search and discovery platform for e-commerce. Features, pricing, and use cases compared." +category: Compare +tags: + - "BuyWhere vs Klevu" + - "Klevu alternative" + - "product search API" + - "site search platform" + - "AI shopping agent" + - "price comparison API" + - "MCP server" +schema_type: Article +published: true +updated: 2026-05-07 +--- + +# BuyWhere vs Klevu — Product Search API Compared + +Comparing BuyWhere and Klevu for developers evaluating AI-powered product search APIs. + +--- + +## Overview + +BuyWhere and Klevu take different approaches to product search. + +**BuyWhere** is a product catalog API and MCP server that provides structured, real-time product pricing and availability data across 500+ retailers in the US and Southeast Asia. It is built for developers who need cross-merchant price comparison data for AI agents, price comparison tools, and deal aggregators. + +**Klevu** is an AI-powered site search and discovery platform for e-commerce. It uses machine learning to improve search relevance, autocomplete, and product recommendations on your own storefront. Klevu requires you to send your product catalog for indexing. + +--- + +## Key Differences + +| Capability | BuyWhere | Klevu | +|-----------|----------|--------| +| **Purpose** | Cross-merchant product data for AI agents | On-site search relevance for your catalog | +| **Data scope** | 500+ retailers — multi-merchant | Single merchant — your catalog | +| **Price comparison** | Real-time, cross-merchant | No | +| **Countries** | US, SG, MY, TH, VN, PH, ID | Global | +| **MCP server** | Yes — @buywhere/mcp-server | No | +| **AI agent native** | Yes | No | +| **Free tier** | 1,000 calls/month | Free 14-day trial | +| **Pricing** | Usage-based from $9/month | Custom quote | + +--- + +## When to Choose BuyWhere + +Choose BuyWhere when you need: + +- **Cross-merchant price comparison** across Amazon, Walmart, Shopee, Lazada, and 500+ retailers +- **AI agent integration** via MCP for Claude Desktop, Cursor, or custom agents +- **Deal discovery** — find products with active discounts across retailers +- **Multi-country search** in SGD, USD, MYR, THB, VND, PHP, IDR +- **Affiliate product links** with real-time pricing +- **Product data infrastructure** for building price comparison tools + +BuyWhere provides the product data — no catalog maintenance required. + +--- + +## When to Choose Klevu + +Choose Klevu when you need: + +- **AI-powered search relevance** for your own e-commerce store +- **Natural language search** that understands shopper intent +- **Personalised product recommendations** on your storefront +- **Search analytics** and merchandising controls +- **Multi-language search** for international e-commerce + +Klevu requires you to maintain and send your own product catalog for indexing. + +--- + +## Technical Comparison + +### Data Model + +BuyWhere normalises products across multiple merchants — no catalog to maintain: + +```json +{ + "id": "bw_sg_12345", + "name": "Sony WH-1000XM5 Wireless Headphones", + "price": 429.00, + "currency": "SGD", + "merchant": "lazada_sg", + "domain": "lazada.sg", + "in_stock": true, + "rating": 4.8 +} +``` + +Klevu indexes your own product catalog and provides tools to tune relevance ranking. + +### API vs SDK Integration + +BuyWhere is API-first: + +```bash +curl "https://api.buywhere.ai/v1/products/search?q=headphones&country=US" \ + -H "Authorization: Bearer $BUYWHERE_API_KEY" +``` + +Klevu provides a JavaScript search SDK, REST API, and Shopify/WooCommerce/BigCommerce connectors. Both are developer-friendly. + +### MCP Server Support + +BuyWhere ships as an MCP server: + +```bash +npx -y @buywhere/mcp-server +``` + +After configuration, BuyWhere tools are available inside any MCP-compatible client. Klevu does not offer an MCP server. + +--- + +## Pricing + +| Plan | BuyWhere | Klevu | +|------|----------|--------| +| Free | 1,000 calls/month | 14-day trial | +| Entry | $9/month (50,000 calls) | Custom quote | +| Growth | $49/month (500,000 calls) | Custom quote | +| Enterprise | Custom | Custom (managed implementation) | + +--- + +## Use Cases + +### AI Shopping Agent + +BuyWhere is purpose-built for this: + +> "Find the cheapest MacBook Air across Singapore, Japan, and the US." + +One `find_best_price` MCP tool call returns structured data from multiple merchants. + +### On-site Search Relevance + +Klevu is purpose-built for this: + +> "When a user types 'womns blk runng', return women's black running shoes with our top-sellers boosted. Apply our trending category rules." + +--- + +## Summary + +BuyWhere and Klevu serve different needs. BuyWhere is for developers building AI agents, price comparison tools, and deal aggregators who need cross-retailer product pricing data. Klevu is for e-commerce teams who need AI-powered search relevance tuning on their own storefront. + +If you need **cross-retailer product pricing data** for an AI agent or price comparison application, **BuyWhere** is the right choice. + +If you need **on-site search relevance improvement** with AI-powered merchandising for your own catalog, **Klevu** is purpose-built for that. + +--- + +## Get Started with BuyWhere + +- [Get API key](https://buywhere.ai/api-keys) — free tier, no credit card +- [Quickstart](https://buywhere.ai/quickstart) — first query in 5 minutes +- [MCP setup](https://buywhere.ai/integrate) — connect to Claude, Cursor, or any MCP client +- [API docs](https://api.buywhere.ai/docs) \ No newline at end of file diff --git a/content/compare/buywhere-vs-lister.md b/content/compare/buywhere-vs-lister.md new file mode 100644 index 000000000..50bcb6e5c --- /dev/null +++ b/content/compare/buywhere-vs-lister.md @@ -0,0 +1,148 @@ +--- +title: "BuyWhere vs Lister AI — Product Search API Comparison" +slug: "buywhere-vs-lister" +description: "Compare BuyWhere and Lister AI for product search and price comparison. BuyWhere covers 500+ retailers across US and SG with MCP support; Lister focuses on brand voice and customer support. Full comparison of features, pricing, and use cases." +category: Compare +tags: + - "BuyWhere vs Lister" + - "Lister AI alternative" + - "product search API" + - "AI shopping agent" + - "price comparison API" + - "MCP server" + - "shopping agent" +schema_type: Article +published: true +updated: 2026-05-07 +--- + +# BuyWhere vs Lister AI — Product Search API Comparison + +Comparing BuyWhere and Lister AI for developers building AI shopping agents, price comparison tools, and e-commerce integrations. + +--- + +## Overview + +BuyWhere and Lister AI serve different primary use cases despite both being AI-powered commerce tools. + +**BuyWhere** is a product catalog API and MCP server designed for AI agents that need to search products, compare prices, and discover deals across multiple retailers and markets. It is built for developers integrating live commerce data into AI workflows. + +**Lister AI** is a brand voice and customer support AI platform focused on helping e-commerce brands automate responses, manage reviews, and handle customer interactions. Its product search capabilities are secondary to its conversational AI features. + +--- + +## Key Differences + +| Capability | BuyWhere | Lister AI | +|-----------|----------|-----------| +| **Primary use case** | Product search, price comparison, deal discovery | Customer support automation, brand voice | +| **API type** | Product catalog API + MCP server | Conversational AI / chatbot platform | +| **Product data** | 500+ retailers, multi-country | Limited to catalogued products | +| **Price comparison** | Real-time, cross-merchant | Not a core feature | +| **MCP server** | Yes — @buywhere/mcp-server | No | +| **AI agent native** | Yes | Partial | +| **Countries** | US, SG, MY, TH, VN, PH, ID | US primary | +| **Retailers** | Amazon, Best Buy, Walmart, Shopee, Lazada, +500+ | Varies by integration | +| **Free tier** | 1,000 calls/month | Varies | +| **Pricing model** | Usage-based API calls | Per-seat or subscription | + +--- + +## When to Choose BuyWhere + +Choose BuyWhere when you need: + +- **Live product search** across multiple retailers and countries +- **Cross-merchant price comparison** in a single API call +- **MCP server integration** for Claude Desktop, Cursor, or custom AI agents +- **Deal discovery** — find discounted products sorted by discount percentage +- **Affiliate integration** with monetized product links +- **Multi-currency support** across Southeast Asian markets + +Typical BuyWhere users: AI agent developers, price comparison dashboard builders, deal aggregators, affiliate marketers, and e-commerce analytics platforms. + +--- + +## When to Choose Lister AI + +Choose Lister AI when you need: + +- **Customer support automation** for an e-commerce brand +- **Review management** and response automation +- **Brand voice customisation** for conversational interactions +- **Chatbot deployment** on store landing pages + +Lister AI is not a product data API. If your primary need is accessing product prices, inventory, or search results, Lister AI will not serve that use case. + +--- + +## MCP Server Comparison + +BuyWhere is one of the few MCP servers purpose-built for commerce data: + +``` +npx -y @buywhere/mcp-server +``` + +Once installed, BuyWhere MCP tools are available to any MCP-compatible client: + +- `search_products` — Full-text search across 500+ retailers +- `get_product` — Product details by ID +- `compare_products` — Side-by-side merchant comparison +- `get_deals` — Discounted products sorted by savings +- `list_categories` — Category taxonomy +- `find_best_price` — Cheapest listing across all merchants + +Lister AI does not offer an MCP server for product data access. + +--- + +## Use Case Comparison + +### AI Shopping Agent + +BuyWhere is purpose-built for AI agents that need to answer shopping questions with real product data. + +Example agent prompt: +> "Find the best price for a MacBook Air M3 across Singapore retailers. Show me the cheapest option with a link." + +BuyWhere returns structured product data the agent can reason over and present to the user. + +### Customer Support Bot + +Lister AI is designed for brands that want to automate FAQ responses, handle order enquiries, and manage customer interactions on their store. + +This is a complementary use case — Lister AI handles the conversation, while BuyWhere handles the product data layer if the conversation requires it. + +--- + +## Pricing + +| Plan | BuyWhere | Lister AI | +|------|----------|-----------| +| Free | 1,000 calls/month | Varies | +| Entry | $9/month (50,000 calls) | Per-seat pricing | +| Growth | $49/month (500,000 calls) | Custom | +| Enterprise | Custom | Custom | + +BuyWhere pricing is usage-based and tied to API call volume. Lister AI pricing is typically per-seat or subscription-based for team use. + +--- + +## Summary + +BuyWhere and Lister AI solve different problems. BuyWhere is infrastructure for AI agents that need live commerce data — product search, price comparison, and deal discovery across multiple retailers. Lister AI is a customer support automation platform for e-commerce brands. + +If you are building a shopping agent, price comparison tool, or any AI application that needs access to real product pricing and availability data, **BuyWhere** is the right choice. + +If you are automating customer support conversations for your e-commerce store, **Lister AI** may be the right choice — and BuyWhere can complement it by providing the product data layer when a support conversation requires it. + +--- + +## Get Started with BuyWhere + +- [Get API key](https://buywhere.ai/api-keys) — free tier, no credit card +- [Quickstart guide](https://buywhere.ai/quickstart) — first query in 5 minutes +- [MCP setup](https://buywhere.ai/integrate) — connect to Claude, Cursor, or any MCP client +- [Developer docs](https://api.buywhere.ai/docs) \ No newline at end of file diff --git a/content/compare/buywhere-vs-octane.md b/content/compare/buywhere-vs-octane.md new file mode 100644 index 000000000..dc496be9c --- /dev/null +++ b/content/compare/buywhere-vs-octane.md @@ -0,0 +1,153 @@ +--- +title: "BuyWhere vs Octane AI — Product Search and Quiz-Based Product Discovery" +slug: "buywhere-vs-octane" +description: "Compare BuyWhere and Octane AI for product discovery. BuyWhere is a cross-merchant price comparison API and MCP server for AI agents; Octane AI focuses on Shopify product quizzes and Facebook Messenger bots. Features, pricing, and use cases compared." +category: Compare +tags: + - "BuyWhere vs Octane AI" + - "Octane AI alternative" + - "product search API" + - "Shopify product quiz" + - "AI shopping agent" + - "price comparison API" + - "MCP server" +schema_type: Article +published: true +updated: 2026-05-07 +--- + +# BuyWhere vs Octane AI — Product Search and Quiz-Based Product Discovery + +Comparing BuyWhere and Octane AI for teams evaluating product discovery tools for e-commerce, affiliate marketing, and AI agent integrations. + +--- + +## Overview + +BuyWhere and Octane AI take different approaches to product discovery. + +**BuyWhere** is a product catalog API and MCP server that gives AI agents and developers access to live product pricing and availability across 500+ retailers in the US and Southeast Asia. It is designed for cross-merchant price comparison, deal discovery, and AI agent integrations via the Model Context Protocol. + +**Octane AI** is a Shopify-focused platform that helps brands create product recommendation quizzes, Facebook Messenger bots, and post-purchase automation. It is designed for Shopify merchants who want to increase average order value through personalised quiz-driven recommendations. + +--- + +## Key Differences + +| Capability | BuyWhere | Octane AI | +|-----------|----------|-----------| +| **Platform** | API-first, any platform | Shopify-exclusive | +| **Core feature** | Cross-merchant product search and price comparison | Product recommendation quizzes and Messenger bots | +| **Data scope** | 500+ retailers, multi-country | Single Shopify store catalog | +| **Price comparison** | Real-time, cross-merchant | No | +| **MCP server** | Yes — @buywhere/mcp-server | No | +| **AI agent native** | Yes | No | +| **Countries** | US, SG, MY, TH, VN, PH, ID | Global (Shopify) | +| **Use case** | AI agents, price tools, affiliates | Shopify quiz funnels, Messenger marketing | +| **Free tier** | 1,000 calls/month | 14-day free trial | +| **Pricing** | Usage-based from $9/month | $49/month+ | + +--- + +## When to Choose BuyWhere + +Choose BuyWhere when you need: + +- **Cross-merchant price comparison** across Amazon, Walmart, Shopee, Lazada, and more +- **AI agent integration** via MCP for Claude Desktop, Cursor, or custom agents +- **Deal discovery** — find products with active discounts across retailers +- **Multi-country product search** in SGD, USD, MYR, THB, VND, PHP, IDR +- **Affiliate product links** with real-time pricing data +- **A price comparison API** that works independently of any e-commerce platform + +BuyWhere is platform-agnostic and designed for developers building commerce applications, AI agents, and price comparison tools. + +--- + +## When to Choose Octane AI + +Choose Octane AI when you are: + +- **A Shopify merchant** looking to increase conversions with product recommendation quizzes +- **Building Messenger bot flows** for abandoned cart recovery or post-purchase follow-ups +- **Running Facebook/Instagram marketing campaigns** that need quiz-driven product recommendations +- **Focused on increasing average order value** through personalised cross-sell recommendations + +Octane AI requires a Shopify store and is optimised for marketing funnel use cases rather than raw product data access. + +--- + +## Integration Comparison + +### BuyWhere API + +BuyWhere is API-first, accessible from any platform: + +```bash +curl "https://api.buywhere.ai/v1/products/search?q=wireless+headphones&country=SG&limit=5" \ + -H "Authorization: Bearer $BUYWHERE_API_KEY" +``` + +BuyWhere also ships as an MCP server: + +```bash +npx -y @buywhere/mcp-server +``` + +After configuration, BuyWhere MCP tools work inside Claude Desktop, Cursor, and any MCP-compatible AI agent. + +### Octane AI + +Octane AI integrates directly with Shopify through its app installation flow. Quizzes and bot flows are configured within the Octane AI dashboard. API access is available for data syncing but the core product is the no-code quiz builder. + +--- + +## Pricing + +| Plan | BuyWhere | Octane AI | +|------|----------|-----------| +| Free | 1,000 calls/month | 14-day trial | +| Entry | $9/month (50,000 calls) | $49/month (1,000 quizzes) | +| Growth | $49/month (500,000 calls) | $149/month+ | +| Enterprise | Custom | Custom | + +BuyWhere pricing is transparent and usage-based. Octane AI pricing is tied to quiz volume and channel features. + +--- + +## Use Case Comparison + +### AI Shopping Agent + +BuyWhere is purpose-built for AI agents that need live commerce data: + +> "Find the best price for an iPhone 15 Pro across Singapore retailers. Show me where it is cheapest and include the affiliate link." + +One `find_best_price` MCP tool call returns the answer from multiple merchants. + +### Shopify Quiz Funnel + +Octane AI is purpose-built for Shopify quiz flows: + +> A customer takes a quiz: "What is your skin type?" → Results show personalised product recommendations from the merchant's catalog. + +The quiz is configured in Octane AI's no-code builder and integrated into the Shopify store. + +--- + +## Summary + +BuyWhere and Octane AI serve different use cases. BuyWhere is infrastructure for cross-merchant product data access — price comparison, deal discovery, and AI agent integrations. Octane AI is a Shopify marketing tool for personalised product quiz funnels and Messenger bots. + +If you need **cross-retailer product pricing data** for an AI agent, price comparison tool, or affiliate application, **BuyWhere** is the right choice. + +If you are a **Shopify merchant** who wants to increase conversions through **product recommendation quizzes and Messenger bots**, **Octane AI** is purpose-built for that. + +--- + +## Get Started with BuyWhere + +- [Get API key](https://buywhere.ai/api-keys) — free tier, no credit card +- [Quickstart](https://buywhere.ai/quickstart) — first query in 5 minutes +- [MCP setup](https://buywhere.ai/integrate) — connect to Claude, Cursor, or any MCP client +- [API docs](https://api.buywhere.ai/docs) \ No newline at end of file diff --git a/content/compare/buywhere-vs-perplexity.md b/content/compare/buywhere-vs-perplexity.md new file mode 100644 index 000000000..e93031405 --- /dev/null +++ b/content/compare/buywhere-vs-perplexity.md @@ -0,0 +1,198 @@ +--- +title: "BuyWhere vs Perplexity — AI Product Search Compared" +slug: "buywhere-vs-perplexity" +description: "Compare BuyWhere and Perplexity AI for product search. BuyWhere is a developer commerce API and MCP server for cross-merchant price data; Perplexity is an AI answer engine with broad research capabilities. Features, data access, and use cases compared." +category: Compare +tags: + - "BuyWhere vs Perplexity" + - "Perplexity AI shopping" + - "AI product search" + - "AI answer engine" + - "AI shopping agent" + - "price comparison API" + - "MCP server" + - "developer API" +schema_type: Article +published: true +updated: 2026-05-07 +--- + +# BuyWhere vs Perplexity — AI Product Search Compared + +Comparing BuyWhere and Perplexity AI for developers building AI shopping agents, product research tools, and price comparison applications. + +--- + +## Overview + +BuyWhere and Perplexity AI serve fundamentally different purposes despite both being AI-powered search tools. + +**BuyWhere** is a developer API and MCP server that gives AI agents structured, real-time access to product pricing and availability data across 500+ retailers. It is built for developers who need programmatic commerce data to power shopping agents, price comparison tools, and deal aggregators. + +**Perplexity AI** is an AI answer engine that provides direct, cited answers to broad research questions. It searches the web and synthesises information across many topics including product research, but it is not a commerce data API and does not provide structured product pricing data for developers. + +--- + +## Key Differences + +| Capability | BuyWhere | Perplexity AI | +|-----------|----------|---------------| +| **Purpose** | Commerce data API for developers | AI answer engine for general research | +| **Interface** | REST API + MCP server | Chat interface (web + API) | +| **Use case** | Build shopping agents and price tools | Research products, ask questions | +| **Data type** | Structured product pricing, real-time | Web citations, general knowledge | +| **Price comparison** | Real-time, cross-merchant | No structured commerce data | +| **Countries** | US, SG, MY, TH, VN, PH, ID | Global (general) | +| **MCP server** | Yes — @buywhere/mcp-server | No | +| **Developer API** | Full REST API access | Perplexity API (general search) | +| **Free tier** | 1,000 calls/month | 5 queries/day (free), Pro available | +| **Pricing** | Usage-based from $9/month | Pro $20/month | + +--- + +## When to Choose BuyWhere + +Choose BuyWhere when you need: + +- **Structured product data** — prices, availability, merchant, ratings in JSON +- **Cross-merchant price comparison** across Amazon, Walmart, Shopee, Lazada, and 500+ retailers +- **MCP server integration** for Claude Desktop, Cursor, or custom AI agents +- **Deal discovery** — find products sorted by discount percentage +- **Affiliate product links** with real-time pricing +- **Multi-country search** in SGD, USD, MYR, THB, VND, PHP, IDR + +BuyWhere is infrastructure for developers building commerce-powered applications and agents. + +--- + +## When to Use Perplexity AI + +Use Perplexity AI when you need: + +- **General research** on products, technologies, or broad topics +- **Web-cited answers** to open-ended questions +- **Quick product overviews** without visiting multiple sites +- **Academic or technical research** with cited sources + +Perplexity does not provide structured commerce data, real-time pricing, or cross-merchant comparison data. + +--- + +## Developer Access Comparison + +### BuyWhere API + +BuyWhere is built for developers needing structured commerce data: + +```bash +curl "https://api.buywhere.ai/v1/products/search?q=sony+wh-1000xm5&country=US&limit=5" \ + -H "Authorization: Bearer $BUYWHERE_API_KEY" +``` + +Returns structured JSON: +```json +{ + "items": [{ + "id": "bw_us_12345", + "name": "Sony WH-1000XM5 Wireless Headphones", + "price": 349.99, + "currency": "USD", + "merchant": "amazon_us", + "domain": "amazon.com", + "in_stock": true + }] +} +``` + +BuyWhere also ships as an MCP server: +```bash +npx -y @buywhere/mcp-server +``` + +### Perplexity API + +Perplexity offers the `sonar` model API for general search: + +```bash +curl -X POST https://api.perplexity.ai/chat/completions \ + -H "Authorization: Bearer $PERPLEXITY_API_KEY" \ + -d '{ + "model": "sonar", + "messages": [{"role": "user", "content": "What is the best wireless headphone?"}] + }' +``` + +The Perplexity API returns natural language answers with web citations. It is not a commerce data API. + +--- + +## Data Comparison + +### BuyWhere — Commerce Data + +- **500+ retailers** across US and Southeast Asia +- Real-time price and stock availability +- Cross-merchant price comparison +- Deal discovery with discount percentages +- Product specifications, ratings, merchant info +- Affiliate redirect links + +### Perplexity AI — General Research + +- Web citations from broad sources +- General product overviews and comparisons +- No real-time price monitoring across merchants +- No structured commerce data format +- Cannot power a price comparison tool + +--- + +## Use Case Comparison + +### AI Shopping Agent + +BuyWhere is purpose-built for AI agents that need commerce data: + +> "Find the cheapest MacBook Pro 14-inch across Singapore, Japan, and the US retailers in your catalog." + +BuyWhere returns structured data the agent can present, compare, and act on. + +Perplexity can answer general product research questions, but it cannot power an agent that needs structured, real-time pricing data across merchants. + +### General Product Research + +Perplexity is well-suited for: + +> "What are the pros and cons of the Sony WH-1000XM5 vs Apple AirPods Max?" + +Perplexity synthesises information from web sources into a cited answer. + +--- + +## Pricing + +| Plan | BuyWhere | Perplexity AI | +|------|----------|---------------| +| Free | 1,000 calls/month | 5 queries/day (sonar) | +| Entry | $9/month (50,000 calls) | Pro $20/month (unlimited) | +| Growth | $49/month (500,000 calls) | — | +| Enterprise | Custom | Enterprise plans | + +--- + +## Summary + +BuyWhere and Perplexity AI answer different questions. BuyWhere is infrastructure for developers building AI shopping agents, price comparison tools, and commerce data applications — it provides structured, real-time product pricing data. Perplexity AI is an answer engine for general research questions with web citations — it is not a commerce API and cannot power shopping applications with structured product data. + +If you need **programmatic access to product pricing, availability, and merchant data** to build shopping agents or price comparison tools, **BuyWhere** is the right choice. + +If you need **general product research** with cited web sources, **Perplexity AI** serves that use case. + +--- + +## Get Started with BuyWhere + +- [Get API key](https://buywhere.ai/api-keys) — free tier, no credit card +- [Quickstart](https://buywhere.ai/quickstart) — first query in 5 minutes +- [MCP setup](https://buywhere.ai/integrate) — connect to Claude, Cursor, or any MCP client +- [API docs](https://api.buywhere.ai/docs) \ No newline at end of file diff --git a/content/compare/editorial-content.json b/content/compare/editorial-content.json index 8940fd8a0..045ab2ed9 100644 --- a/content/compare/editorial-content.json +++ b/content/compare/editorial-content.json @@ -218,5 +218,39 @@ "answer": "Ingredient quality and formulation standards vary significantly. Look for products that meet AAFCO or equivalent regional nutritional standards rather than relying on price alone as a proxy for quality. Your veterinarian is the best source of guidance for your pet's specific dietary needs." } ] + }, + "outdoor-living": { + "expertSummaries": [ + { + "title": "Buy patio and outdoor furniture off-season for the biggest savings", + "body": "Outdoor furniture, BBQ grills, and garden tools see their deepest discounts in late summer and early autumn as retailers clear inventory. If you are planning ahead, shopping outside peak outdoor season can deliver 30–40% off compared to spring pricing. Our price comparison table captures these seasonal shifts across all major retailers." + }, + { + "title": "Material quality determines long-term value more than initial price", + "body": "A teak or powder-coated steel set costs more upfront but resists rust and UV damage far better than lower-priced acacia or unprotected metal. For frequently-used outdoor items like BBQ grills, cooking equipment, and garden furniture, amortising the cost over a 5–10 year lifespan often makes premium materials the cheaper choice over multiple seasons." + } + ], + "faqs": [ + { + "question": "Why do BBQ grill prices vary so much for similar cooking areas?", + "answer": "Build materials (cast iron vs enamelled steel, stainless vs chrome-plated components), burner count and heat output, and ignition systems drive cost differences more than raw cooking area. A 3-burner grill with solid construction often outperforms a cheaper 4-burner model in durability and heat distribution. Check the grill's total BTU output and burner quality before assuming a larger cooking area is better value." + }, + { + "question": "Are solar lights bright enough to use as primary outdoor lighting?", + "answer": "Solar light output has improved significantly, but lumen ratings still lag wired LED equivalents. Solar path lights and decorative string lights work well for ambient use; for security or task lighting, a hardwired or plugin LED system with a motion sensor is more reliable. Check the battery capacity (mAh) and hours of full sun exposure needed — partial shade drastically reduces runtime." + }, + { + "question": "How do I compare garden hose prices when lengths and fittings differ?", + "answer": "Convert to cost per metre and verify the fitting type matches your outdoor taps. Expandable hoses cost more per metre but are lighter to handle and coil compactly; standard reinforced hoses are more durable against punctures but require more storage space. Always check whether the listed price includes spray nozzles or only the hose itself." + }, + { + "question": "What drives the price difference between lawn mower types?", + "answer": "Corded electric mowers are cheapest to run but require a power cable; cordless battery models cost more upfront with no ongoing fuel cost; petrol mowers suit large uneven lawns but carry maintenance overhead. For typical suburban yards under 500 sqm, a quality battery mower often represents the best balance of convenience and total cost." + }, + { + "question": "Are outdoor speakers worth the premium over indoor models?", + "answer": "Outdoor speakers are specifically rated for UV resistance, humidity, and temperature extremes — indoor speakers degrade quickly when exposed to weather. All-weather ratings (IP65 or higher) add to cost but prevent premature failure. If you entertain outdoors regularly, weatherproof speakers typically pay back the price premium within the first season." + } + ] } } diff --git a/content/compare/mcp-servers-shopping.md b/content/compare/mcp-servers-shopping.md new file mode 100644 index 000000000..f2257af27 --- /dev/null +++ b/content/compare/mcp-servers-shopping.md @@ -0,0 +1,130 @@ +--- +title: "Best MCP Servers for Shopping & E-Commerce in 2026" +slug: "compare-mcp-servers-shopping" +description: "Compare the best MCP servers for shopping and e-commerce: BuyWhere MCP vs Amazon Product API vs FakeStore MCP. Find the best MCP server for building AI agents that search products, compare prices, and find deals." +category: "Compare" +tags: + - "MCP server" + - "shopping" + - "e-commerce" + - "price comparison" + - "product search" + - "AI agent" + - "Claude" + - "Cursor" + - "buywhere" + - "amazon product API" +schema_type: Article +published: true +updated: 2026-05-07 +--- + +# Best MCP Servers for Shopping & E-Commerce in 2026 + +The Model Context Protocol (MCP) is becoming the standard for connecting AI agents to external data sources. For shopping and e-commerce use cases, the right MCP server determines what products your agent can search, what prices it can compare, and what retailers it can cover. + +## Quick Recommendation + +**BuyWhere MCP** is the best choice for shopping agents that need multi-retailer price comparison. It has native MCP support, covers 500+ retailers in the US and Singapore, and is designed specifically for AI agent use cases. + +## MCP Servers for Shopping + +### BuyWhere MCP — Best Overall + +**Coverage:** 500+ retailers (Amazon, Best Buy, Walmart, Target, Costco, Newegg, Shopee, Lazada, Courteney) + +**Countries:** US (USD), Singapore (SGD) + +**Tools:** +- `search_products` — Full-text product search with filters +- `get_product` — Full product details by ID +- `compare_products` — Compare 2–10 products side-by-side +- `get_deals` — Discounted products sorted by discount % +- `list_categories` — Top-level product categories +- `find_best_price` — Cheapest listing across all merchants + +**Best for:** AI shopping agents, deal finders, price comparison tools + +**Pricing:** Free (1K calls/mo), Starter $9/mo (50K calls), Pro $49/mo (500K calls) + +### Amazon MCP (via Smithery) + +**Coverage:** Amazon only (US, UK, DE, JP, etc.) + +**Tools:** Product search, pricing, reviews, ASIN lookup + +**Best for:** Amazon-only shopping agents + +**Limitations:** Single-retailer (Amazon), no Singapore coverage + +### FakeStore MCP + +**Coverage:** Mock data only (FakeStoreAPI) + +**Tools:** Product listing, cart operations + +**Best for:** Prototyping shopping UIs, not production use + +**Limitations:** Mock data only, no real prices or retailers + +## Feature Comparison + +| Feature | BuyWhere MCP | Amazon MCP | FakeStore MCP | +|---------|--------------|-----------|---------------| +| **Retailers** | 500+ | 1 (Amazon) | Mock only | +| **Countries** | US, SG | Global | Mock | +| **Real prices** | Yes | Yes | No | +| **Price history** | Yes (paid) | Yes | No | +| **Singapore** | Yes | Limited | No | +| **AI agent optimized** | Yes | Partial | No | + +## When to Use Each + +**Use BuyWhere MCP when:** +- You need multi-retailer comparison +- You're building for Singapore or Southeast Asia +- Your AI agent needs to find the best deal across retailers +- You want real-time price data + +**Use Amazon MCP when:** +- Your agent only needs Amazon products +- You're building an Amazon-specific shopping tool +- You don't need Singapore coverage + +**Use FakeStore MCP when:** +- You're prototyping a shopping UI +- You need mock data for testing +- You don't need real prices or retailer data + +## Integration Example: BuyWhere MCP + +```json +{ + "mcpServers": { + "buywhere": { + "command": "npx", + "args": ["-y", "@buywhere/mcp-server"], + "env": { + "BUYWHERE_API_KEY": "your-api-key" + } + } + } +} +``` + +Then in your AI agent: + +``` +User: Find me the cheapest MacBook Pro with 16GB RAM +Agent: Let me search across retailers for that. + +[Calls search_products with query "MacBook Pro 16GB RAM"] +[Calls find_best_price to locate lowest price] +[Returns: Amazon at $1,899, Best Buy at $1,949, Walmart at $1,879] +``` + +## Related Resources + +- [BuyWhere vs Smithery Alternatives](/compare/buywhere-vs-smithery-alternatives) +- [BuyWhere MCP Developer FAQ](/compare/buywhere-mcp-developer-faq) +- [API Reference](/pages/api-reference) diff --git a/content/directory/ai-agent-tools-buywhere.md b/content/directory/ai-agent-tools-buywhere.md new file mode 100644 index 000000000..e50708bd0 --- /dev/null +++ b/content/directory/ai-agent-tools-buywhere.md @@ -0,0 +1,113 @@ +--- +title: "BuyWhere - AI Agent for Real-Time Product Price Comparison" +slug: "ai-agent-tools-buywhere" +description: "BuyWhere is an AI agent tool for real-time product price comparison across 7 platforms in the US and Singapore. Features MCP server integration for AI agents, REST API for developers, and coverage of Amazon, Best Buy, Walmart, Target, Shopee, Lazada, and Courteney." +category: "AI Agent Tools" +subcategory: "Shopping & E-Commerce" +tags: + - "price comparison" + - "shopping agent" + - "product search API" + - "MCP server" + - "price tracking" + - "deal discovery" + - "AI agent" + - "e-commerce" + - "Amazon" + - "Shopee" + - "Lazada" + - "Best Buy" + - "Walmart" +published: true +featured: true +website: "https://buywhere.ai" +pricing: "Freemium" +api_available: true +mcp_server: true +open_source: false +--- + +# BuyWhere — AI Agent for Real-Time Product Price Comparison + +## About BuyWhere + +BuyWhere is an **AI-native product price comparison API and MCP server** that enables developers to build shopping agents, price tracking tools, and deal discovery applications. The platform processes product searches across major US retailers (Amazon, Best Buy, Walmart, Target, Costco, Newegg, B&H Photo) and Singapore retailers (Shopee, Lazada, Courteney). + +## Core Features + +### Multi-Platform Coverage +- **United States**: Amazon, Best Buy, Walmart, Target, Costco, Newegg, B&H Photo — 120,000+ products in USD +- **Singapore**: Shopee, Lazada, Courteney — 100,000+ products in SGD + +### AI Agent Integration +BuyWhere provides an **MCP (Model Context Protocol) server** that AI agents like Claude, Cursor, and other MCP-compatible AI assistants can use directly. No manual API calls required — agents can search products, compare prices, and find deals through natural language. + +**MCP Tools Available:** +- `search_products` — Full-text product search with price, category, merchant, region, and rating filters +- `get_product` — Full product details by ID including price, brand, ratings, merchant info, specifications +- `compare_products` — Compare 2–10 products side-by-side across merchants +- `get_deals` — Find discounted products sorted by discount percentage +- `list_categories` — List top-level product categories with product counts +- `find_best_price` — Find the cheapest current listing for a product across all merchants + +### Developer API +RESTful API with comprehensive documentation, supporting: +- Product search with filtering and pagination +- Real-time price comparison +- Price history and trend data +- Merchant information lookup + +## Use Cases + +1. **AI Shopping Assistants** — Embed live price data into AI agents so they can recommend where to buy products at the best price +2. **Deal Alert Bots** — Monitor price changes and notify users when products hit target prices +3. **Affiliate Shopping Pages** — Create monetized content with real-time product links and pricing +4. **Price Comparison Dashboards** — Build comparison UIs showing prices across multiple retailers +5. **Research Tools** — Pull product data for market research and competitive analysis + +## Quick Start + +```bash +# Install via npx +npx -y @buywhere/mcp-server + +# Or use hosted MCP endpoint +# https://api.buywhere.ai/mcp +``` + +```json +// Claude Desktop configuration +{ + "mcpServers": { + "buywhere": { + "command": "npx", + "args": ["-y", "@buywhere/mcp-server"], + "env": { + "BUYWHERE_API_KEY": "your-api-key" + } + } + } +} +``` + +## Pricing + +| Plan | Price | Monthly Calls | Features | +|------|-------|---------------|----------| +| Free | $0 | 1,000 | Basic search, no credit card required | +| Starter | $9 | 50,000 | Full API access | +| Pro | $49 | 500,000 | Full API + priority support | +| Enterprise | Custom | Unlimited | Dedicated infrastructure | + +## Security & Privacy + +- API keys are never logged or stored in plain text +- All API traffic is encrypted via HTTPS +- No personal data is collected from product searches +- Merchant data is sourced from public product listings + +## Related Listings + +- [BuyWhere on Smithery](https://smithery.ai/servers/buywhere) — Direct MCP server installation +- [BuyWhere API Reference](/pages/api-reference) — Complete API documentation +- [BuyWhere MCP Developer FAQ](/compare/buywhere-mcp-developer-faq) — Common integration questions diff --git a/content/directory/alternativeto-buywhere.md b/content/directory/alternativeto-buywhere.md new file mode 100644 index 000000000..6c2ab9a67 --- /dev/null +++ b/content/directory/alternativeto-buywhere.md @@ -0,0 +1,114 @@ +--- +title: "BuyWhere - Price Comparison Alternative to Honey, CamelCamelCamel, Keepa" +slug: "buywhere-alternativeto" +description: "BuyWhere is a price comparison and shopping agent alternative to Honey, CamelCamelCamel, and Keepa. Compare prices across Amazon, Best Buy, Walmart, Shopee, and Lazada. Supports real-time API access, MCP server for AI agents, and price tracking for both US and Singapore." +category: "Shopping & E-Commerce" +tags: + - "price comparison" + - "Honey alternative" + - "CamelCamelCamel alternative" + - "Keepa alternative" + - "shopping agent" + - "deal discovery" + - "price tracking" + - "Amazon price tracker" + - "Singapore price comparison" + - "Shopee" + - "Lazada" + - "MCP" + - "AI agent" +published: true +featured: false +--- + +# BuyWhere — Alternative to Honey, CamelCamelCamel, Keepa + +## Why BuyWhere? + +BuyWhere is the most comprehensive **price comparison and shopping agent platform** for developers and AI agents. Unlike Honey (which only works at checkout), CamelCamelCamel (Amazon-only), and Keepa (Amazon-only), BuyWhere spans **multiple retailers and countries** with a first-class **MCP server** for AI agent integration. + +## What is BuyWhere? + +BuyWhere is an API and MCP server that gives AI agents and developers real-time access to product pricing across major US and Singapore retailers. Whether you're building a shopping agent, a price comparison dashboard, or a deal alert system, BuyWhere provides the structured data and tools you need. + +## Key Differences + +| Capability | BuyWhere | Honey | CamelCamelCamel | Keepa | +|-----------|----------|-------|-----------------|-------| +| **Multi-retailer** | Amazon, Best Buy, Walmart, Target, Costco, Newegg, Shopee, Lazada | Amazon, but mainly coupon application | Amazon only | Amazon only | +| **Multi-country** | US + Singapore | US only | US, UK, DE | US only | +| **MCP server** | Yes | No | No | No | +| **Real-time API** | Yes | No | Limited | Limited | +| **Historical prices** | Yes | No | Yes | Yes | +| **AI agent native** | Yes | No | No | No | +| **Developer-first** | Yes | No | Partial | Partial | +| **Free tier** | 1,000 calls/mo | Yes (limited) | Yes (limited) | Limited | + +## Supported Countries & Currencies + +| Country | Currency | Retailers | +|---------|----------|-----------| +| United States | USD | Amazon, Best Buy, Walmart, Target, Costco, Newegg, B&H Photo | +| Singapore | SGD | Shopee, Lazada, Courteney | + +## API Features + +### Core Endpoints +- **Product Search** — Search across all supported retailers with country filter +- **Price Comparison** — Compare prices for the same product across all merchants +- **Price History** — Get historical price data for trend analysis +- **Merchant Info** — Retrieve merchant details including ratings and shipping policies +- **Category Browse** — Explore product categories + +### MCP Server Tools for AI Agents +- `search_products` — Find products by query +- `compare_prices` — Cross-merchant price comparison +- `find_best_price` — Locate the lowest price +- `track_price` — Monitor price changes +- `get_merchant_info` — Merchant details and policies + +## Use Cases + +### Build AI Shopping Agents +```typescript +// Use BuyWhere MCP server in Claude, Cursor, or any MCP-compatible AI +const result = await mcp.buywhere.search_products({ + query: "Sony WH-1000XM5 headphones", + country: "us" +}); +``` + +### Create Price Comparison Dashboards +```javascript +// REST API example +const response = await fetch( + `https://api.buywhere.ai/v1/products/search?q=MacBook+Air&country=us`, + { headers: { "X-API-Key": process.env.BUYWHERE_API_KEY } } +); +const data = await response.json(); +``` + +### Build Deal Alert Systems +Monitor price changes and notify users when products drop below threshold prices. + +## How BuyWhere Compares + +**Honey** is a browser extension that automatically applies coupon codes at checkout. BuyWhere is not a browser extension — it's an API and AI agent tool for building shopping intelligence into your own products. + +**CamelCamelCamel** and **Keepa** focus exclusively on Amazon price tracking with historical charts. BuyWhere expands this model to multi-retailer, multi-country price comparison with AI agent-native MCP tooling. + +## Get Started + +- [API Documentation](/pages/api-reference) +- [Developer Portal](/developers) +- [MCP Server Setup](/compare/buywhere-mcp-developer-faq) +- [GitHub Repository](https://github.com/buywhere) + +## Pricing + +| Plan | Price | API Calls/Month | +|------|-------|-----------------| +| Free | $0 | 1,000 | +| Developer | $29 | 50,000 | +| Business | $99 | 500,000 | +| Enterprise | Custom | Unlimited | diff --git a/content/directory/api-listings-buywhere.md b/content/directory/api-listings-buywhere.md new file mode 100644 index 000000000..fbb9274f9 --- /dev/null +++ b/content/directory/api-listings-buywhere.md @@ -0,0 +1,119 @@ +--- +title: "BuyWhere — API for Real-Time Product Price Comparison" +slug: "api-listings-buywhere" +description: "BuyWhere is a product price comparison API with MCP server support. Compare prices across Amazon, Best Buy, Walmart, Shopee, Lazada and 500+ retailers. Free tier includes 1,000 API calls/month." +category: "API Marketplace" +tags: + - "price comparison API" + - "product search API" + - "shopping API" + - "MCP server" + - "e-commerce API" + - "price tracking API" + - "product data API" + - "affiliate API" +published: true +--- + +# BuyWhere — API for Real-Time Product Price Comparison + +## API Description + +BuyWhere is a product price comparison API that aggregates pricing data from 500+ retailers in the US and Singapore. The API returns live prices, merchant ratings, stock availability, and price history data. An MCP server is available for AI agent integration. + +## API Characteristics + +| Attribute | Value | +|-----------|-------| +| **Protocol** | REST + MCP (Model Context Protocol) | +| **Authentication** | API Key (X-API-Key header) | +| **Data freshness** | Real-time | +| **Rate limits** | 1,000–500,000 calls/month depending on plan | +| **Coverage** | US (Amazon, Best Buy, Walmart, Target, Costco, Newegg, B&H Photo) + SG (Shopee, Lazada, Courteney) | +| **Products indexed** | 120,000+ | +| **Uptime** | 99.9% SLA for Business+ | + +## Core Endpoints + +### Product Search +``` +GET /v1/products/search?q={query}&country={us|sg}&category={category}&limit={1-50} +``` + +### Price Comparison +``` +GET /v1/compare-prices?product_id={id}&country={us|sg} +``` + +### Price History +``` +GET /v1/price-history/{product_id}?country={us|sg}&days={30|90|365} +``` + +### Merchant Info +``` +GET /v1/merchants/{merchant_id} +``` + +## MCP Tools + +For AI agent integration, BuyWhere provides MCP tools: + +- `search_products` — Full-text product search with filters for keyword, merchant, price, category, country, currency +- `get_product` — Get full product details by BuyWhere product ID +- `compare_products` — Compare 2–10 products side-by-side across merchants +- `get_deals` — Find discounted products sorted by discount percentage +- `list_categories` — List top-level product categories with product counts +- `find_best_price` — Find the cheapest current listing across all merchants + +## Code Examples + +### cURL +```bash +curl "https://api.buywhere.ai/v1/products/search?q=MacBook+Air&country=us" \ + -H "X-API-Key: your-api-key" +``` + +### JavaScript/TypeScript +```javascript +const response = await fetch( + 'https://api.buywhere.ai/v1/products/search?q=MacBook+Air&country=us', + { headers: { 'X-API-Key': process.env.BUYWHERE_API_KEY } } +); +const { items } = await response.json(); +``` + +### Python +```python +import requests + +response = requests.get( + 'https://api.buywhere.ai/v1/products/search', + params={'q': 'MacBook Air', 'country': 'us'}, + headers={'X-API-Key': 'your-api-key'} +) +items = response.json()['items'] +``` + +## Use Cases + +1. **Shopping agents** — AI agents that recommend products and show live prices +2. **Deal aggregators** — Sites that compile deals across multiple retailers +3. **Price comparison dashboards** — Tools that compare prices for users +4. **Affiliate marketing** — Generate monetized product links with live pricing +5. **Market research** — Pull product pricing data for competitive analysis + +## Pricing + +| Plan | Price | Monthly Calls | Features | +|------|-------|---------------|---------| +| Free | $0 | 1,000 | Basic search, no history | +| Developer | $29 | 50,000 | Full API, price history | +| Business | $99 | 500,000 | Priority support, webhooks | +| Enterprise | Custom | Unlimited | Dedicated infrastructure | + +## Get Started + +- [API Documentation](https://buywhere.ai/developers) +- [API Reference](https://buywhere.ai/pages/api-reference) +- [MCP Server Setup](https://buywhere.ai/compare/buywhere-mcp-developer-faq) diff --git a/content/directory/mcp-buywhere.md b/content/directory/mcp-buywhere.md new file mode 100644 index 000000000..0da2146ed --- /dev/null +++ b/content/directory/mcp-buywhere.md @@ -0,0 +1,142 @@ +--- +title: "BuyWhere — MCP Server for AI Shopping Agents" +slug: "mcp-server-buywhere" +description: "BuyWhere is an MCP server and API for AI shopping agents that compares product prices across Amazon, Best Buy, Walmart, Shopee, Lazada and 500+ retailers in real-time. Built for Claude, Cursor, and any MCP-compatible AI agent." +category: "Developer Tools" +tags: + - "MCP server" + - "model context protocol" + - "shopping agent" + - "price comparison API" + - "AI agent" + - "product search" + - "Claude" + - "Cursor" + - "Windsurf" +published: true +--- + +# BuyWhere — MCP Server for AI Shopping Agents + +## Overview + +BuyWhere provides a Model Context Protocol (MCP) server that gives AI agents real-time access to product pricing across 500+ retailers in the US and Singapore. AI agents can search products, compare prices, find the best deals, and track price changes — all through natural language commands. + +## MCP Server Features + +### Available Tools + +| Tool | Description | +|------|-------------| +| `search_products` | Full-text product search with filters for keyword, merchant, price, category, country, currency | +| `get_product` | Get full product details by BuyWhere product ID | +| `compare_products` | Compare 2–10 products side-by-side across merchants | +| `get_deals` | Find discounted products sorted by discount percentage | +| `list_categories` | List top-level product categories with product counts | +| `find_best_price` | Find the cheapest current listing for a product across all merchants | + +### Supported Regions + +| Region | Currency | Retailers | +|--------|----------|-----------| +| United States | USD | Amazon, Best Buy, Walmart, Target, Costco, Newegg, B&H Photo | +| Singapore | SGD | Shopee, Lazada, Courteney | + +## Installation + +```bash +# Install via npx +npx -y @buywhere/mcp-server + +# Or use hosted MCP endpoint +# https://api.buywhere.ai/mcp +``` + +## Configuration + +```json +{ + "mcpServers": { + "buywhere": { + "command": "npx", + "args": ["-y", "@buywhere/mcp-server"], + "env": { + "BUYWHERE_API_KEY": "your-api-key" + } + } + } +} +``` + +## Usage Example + +```typescript +// Search for products +const results = await mcp.buywhere.search_products({ + query: "Sony WH-1000XM5", + country_code: "US", + limit: 5 +}); + +// Compare prices across retailers +const prices = await mcp.buywhere.compare_products({ + ids: [results.items[0].id, results.items[1].id] +}); + +// Find the best price +const best = await mcp.buywhere.find_best_price({ + product_name: "Sony WH-1000XM5", + country_code: "US" +}); +``` + +## API Response Format + +```json +{ + "items": [ + { + "id": "12345", + "name": "Sony WH-1000XM5 Wireless Headphones", + "price": 349.99, + "currency": "USD", + "merchant": "Amazon", + "url": "https://amazon.com/dp/...", + "in_stock": true, + "rating": 4.8 + } + ], + "total": 45, + "page": 1 +} +``` + +## Use Cases + +### AI Shopping Assistants +Build AI agents that recommend products and show live prices from multiple retailers. + +### Deal Alert Systems +Monitor price changes and notify users when products hit target prices. + +### Price Comparison Dashboards +Create comparison UIs showing prices across multiple retailers in real-time. + +### Affiliate Marketing +Generate affiliate links with live pricing data for monetized shopping content. + +## Pricing + +| Plan | Price | API Calls | Features | +|------|-------|-----------|---------| +| Free | $0 | 1,000/month | Basic search, no credit card required | +| Starter | $9 | 50,000/month | Full API access | +| Pro | $49 | 500,000/month | Full API + priority support | +| Enterprise | Custom | Unlimited | Dedicated infrastructure | + +## Related Documentation + +- [API Reference](/pages/api-reference) +- [Developer Documentation](/developers) +- [BuyWhere vs Smithery Alternatives](/compare/buywhere-vs-smithery-alternatives) +- [BuyWhere MCP Developer FAQ](/compare/buywhere-mcp-developer-faq) diff --git a/content/directory/theres-an-ai-for-that-buywhere.md b/content/directory/theres-an-ai-for-that-buywhere.md new file mode 100644 index 000000000..9fcd1b2e8 --- /dev/null +++ b/content/directory/theres-an-ai-for-that-buywhere.md @@ -0,0 +1,130 @@ +--- +title: "BuyWhere - AI Agent for Shopping Price Comparison" +slug: "buywhere-ai-agent-shopping-price-comparison" +description: "BuyWhere is an AI agent and API for comparing product prices across major US and Singapore retailers including Amazon, Best Buy, Walmart, Target, Shopee, and Lazada. Find the cheapest prices, track price changes, and build shopping agents with the BuyWhere MCP server." +category: "Shopping & E-Commerce" +tags: + - "price comparison" + - "shopping agent" + - "product search" + - "MCP server" + - "price tracking" + - "e-commerce API" + - "Amazon" + - "Best Buy" + - "Walmart" + - "Shopee" + - "Lazada" + - "deal discovery" + - "Singapore" + - "United States" +published: true +featured: true +--- + +# BuyWhere — AI Agent for Shopping Price Comparison + +## Overview + +BuyWhere is an AI-native product price comparison API and MCP server that helps developers build shopping agents, price tracking tools, and deal discovery applications. The platform covers major US retailers (Amazon, Best Buy, Walmart, Target, Costco, Newegg, B&H Photo) and Singapore retailers (Shopee, Lazada, Courteney), with support for 120,000+ products across 7 platforms. + +## Use Cases + +- **AI Shopping Agents**: Embed real-time product search and price comparison into AI agents using the MCP protocol +- **Price Comparison Tools**: Build dashboards that compare prices across multiple retailers in real time +- **Deal Discovery**: Surface the best prices and discount windows for any product category +- **Price Alert Systems**: Monitor price changes and notify users when deals drop below target thresholds +- **Affiliate Shopping Pages**: Create monetized shopping pages with live merchant links and price data + +## Platform Coverage + +| Region | Retailers | Products | Currency | +|--------|-----------|----------|----------| +| United States | Amazon, Best Buy, Walmart, Target, Costco, Newegg, B&H Photo | 120,000+ | USD | +| Singapore | Shopee, Lazada, Courteney | 100,000+ | SGD | + +## API Capabilities + +### REST API +- `GET /v1/products/search` — Search products across all supported retailers +- `GET /v1/products/{id}` — Get product details with merchant availability +- `GET /v1/merchants` — List supported merchants by country +- `GET /v1/categories` — Browse product categories +- `GET /v1/price-history/{id}` — Historical price data for price trend analysis + +### MCP Server Tools +- `search_products` — Full-text product search with filters for keyword, merchant, price, category, country, currency +- `get_product` — Get full product details by BuyWhere product ID +- `compare_products` — Compare 2–10 products side-by-side across merchants +- `get_deals` — Find discounted products sorted by discount percentage +- `list_categories` — List top-level product categories with product counts +- `find_best_price` — Find the cheapest current listing for a product across all merchants + +### Authentication +- API key authentication via `X-API-Key` header +- MCP server authentication via API key in server configuration + +## Pricing + +- **Free tier**: 1,000 API calls/month — no credit card required +- **Starter tier**: $9/month — 50,000 API calls/month +- **Pro tier**: $49/month — 500,000 API calls/month +- **Enterprise**: Custom limits and dedicated infrastructure + +## Quick Start + +```bash +# Install via npx +npx -y @buywhere/mcp-server + +# Or use hosted MCP endpoint +# https://api.buywhere.ai/mcp +``` + +```typescript +import { McpServer } from "@buywhere/mcp-server"; + +const server = new McpServer({ + apiKey: process.env.BUYWHERE_API_KEY, +}); + +await server.connect(); +``` + +## Integration Examples + +### Claude Desktop +```json +{ + "mcpServers": { + "buywhere": { + "command": "npx", + "args": ["-y", "@buywhere/mcp-server"], + "env": { + "BUYWHERE_API_KEY": "your-api-key" + } + } + } +} +``` + +### Cursor +Add to Cursor settings → MCP Servers. + +## Comparison with Similar Tools + +| Feature | BuyWhere | Honey | CamelCamelCamel | Keepa | +|---------|----------|-------|-----------------|-------| +| Multi-retailer (US + SG) | Yes | Partial | Yes | Yes | +| MCP server | Yes | No | No | No | +| Real-time API | Yes | No | Yes | Yes | +| Singapore support | Yes | No | No | No | +| AI agent native | Yes | No | No | No | +| Free tier | Yes | Yes | Yes | Limited | + +## Related Tools + +- [BuyWhere API Reference](/pages/api-reference) +- [BuyWhere MCP Developer FAQ](/compare/buywhere-mcp-developer-faq) +- [BuyWhere vs Smithery Alternatives](/compare/buywhere-vs-smithery-alternatives) +- [BuyWhere Developer Documentation](/developers) diff --git a/content/pages/best-headphones-singapore.md b/content/pages/best-headphones-singapore.md new file mode 100644 index 000000000..4896a0acc --- /dev/null +++ b/content/pages/best-headphones-singapore.md @@ -0,0 +1,352 @@ +--- +title: "Best Headphones Singapore 2026 — Compare Prices Across Shopee, Lazada & More" +slug: best-headphones-singapore +description: Compare the best headphones in Singapore 2026. Find the best prices on Sony, Apple, Bose, Samsung, and more across Shopee, Lazada, Amazon, and local retailers. +category: Product Guide +tags: + - headphones + - singapore + - sony + - apple + - bose + - samsung + - audio + - wireless headphones + - earbuds + - noise cancelling + - shopee + - lazada + - price comparison + - best headphones + - singapore 2026 +featured: true +published: 2026-01-01 +updated: 2026-05-07 +--- + +# Best Headphones Singapore 2026 — Compare Prices Across Shopee, Lazada & More + +## Overview + +Finding the best headphones in Singapore means comparing prices across Shopee, Lazada, Amazon, Challenger, and other retailers — and that's before deciding between wireless earbuds, over-ear noise-cancelling, or sports headphones. This guide covers the top models across each category, with indicative prices and tips for finding the best deal. + +--- + +## How to Get the Best Price on Headphones in Singapore + +Before buying, search BuyWhere to compare prices across Shopee, Lazada, Amazon SG, FairPrice, and Carousell in one view. Prices for the same model can vary by S$20-S$50 across retailers — worth checking before you buy. + +[Compare headphone prices →](https://buywhere.ai/search?q=headphones) + +--- + +## Best Wireless Earbuds Singapore 2026 + +### Sony WF-1000XM5 — Best Overall + +**Best for:** Commuters, office workers, and audiophiles who want the best noise cancellation in an earbud form factor. + +The Sony WF-1000XM5 are widely considered the best wireless earbuds available in Singapore. They deliver class-leading noise cancellation, excellent sound quality, and solid call performance in a compact design. + +**Indicative price range:** S$329-S$399 +**Where to buy:** Shopee, Lazada, Amazon SG, Challenger + +**Typical discounts:** +- GSS (June-August): S$279-S$349 +- 11.11: S$269-S$349 +- 7.7/9.9 sales: S$299-S$369 + +**Key specs:** +- Driver: 8.4mm dynamic driver +- ANC: Yes (best-in-class) +- Battery: 8 hours (earbuds) + 24 hours (case) +- Water resistance: IPX4 +- Codecs: LDAC, AAC, SBC +- Connectivity: Bluetooth 5.3 + +### Apple AirPods Pro 3 — Best for iPhone Users + +**Best for:** iPhone users who want seamless Apple ecosystem integration, good noise cancellation, and a comfortable fit. + +The third-generation AirPods Pro deliver significant improvements in sound quality and noise cancellation over previous models, with the H2 chip enabling adaptive audio and longer battery life. + +**Indicative price range:** S$299-S$349 +**Where to buy:** Apple Store, Shopee, Lazada, Amazon SG + +**Typical discounts:** +- GSS: S$269-S$319 +- 11.11: S$259-S$309 +- Christmas sales: S$269-S$329 + +**Key specs:** +- Chip: Apple H2 +- ANC: Yes (improved over AirPods Pro 2) +- Battery: 6 hours (earbuds) + 30 hours (case) +- Water resistance: IP54 +- Connectivity: Bluetooth 5.3 (Apple devices) + +### Samsung Galaxy Buds3 Pro — Best for Samsung Users + +**Best for:** Samsung Galaxy phone users who want good integration, solid ANC, and a competitive price. + +The Galaxy Buds3 Pro offer competent noise cancellation, good sound quality, and seamless switching between Samsung devices. They slot below Sony and Apple on features but offer good value for Samsung users. + +**Indicative price range:** S$229-S$279 +**Where to buy:** Shopee, Lazada, Samsung Experience Store, Amazon SG + +**Typical discounts:** +- GSS: S$199-S$249 +- 11.11: S$189-S$239 +- Samsung sales: S$199-S$269 + +**Key specs:** +- Driver: 10mm + 5.3mm dual driver +- ANC: Yes +- Battery: 7 hours (earbuds) + 21 hours (case) +- Water resistance: IP54 +- Connectivity: Bluetooth 5.4 + +### Bose QuietComfort Earbuds II — Best for Comfort + +**Best for:** Users who prioritize comfort and want strong noise cancellation without the premium price of Sony. + +The Bose QuietComfort Earbuds II are slightly older but remain competitive on noise cancellation and offer a more comfortable fit than most competitors. + +**Indicative price range:** S$299-S$349 +**Where to buy:** Shopee, Lazada, Challenger, Amazon SG + +**Typical discounts:** +- GSS: S$249-S$299 +- Year-end clearance: S$229-S$299 + +**Key specs:** +- Driver: Custom +- ANC: Yes (excellent) +- Battery: 6 hours (earbuds) + 18 hours (case) +- Water resistance: IPX4 +- Connectivity: Bluetooth 5.3 + +--- + +## Best Over-Ear Headphones Singapore 2026 + +### Sony WH-1000XM5 — Best Noise Cancelling + +**Best for:** Frequent travellers, office workers, and anyone who prioritizes ANC above all else. + +The Sony WH-1000XM5 remain the benchmark for over-ear noise-cancelling headphones in Singapore. They offer exceptional ANC, excellent sound quality, and 30 hours of battery life. + +**Indicative price range:** S$449-S$549 +**Where to buy:** Shopee, Lazada, Challenger, Harvey Norman, Amazon SG + +**Typical discounts:** +- GSS: S$379-S$449 +- 11.11: S$359-S$429 +- 7.7/9.9: S$399-S$479 +- Year-end: S$369-S$449 + +**Key specs:** +- Driver: 30mm carbon fibre composite +- ANC: Yes (best-in-class) +- Battery: 30 hours +- Weight: 250g +- Codecs: LDAC, AAC, SBC +- Connectivity: Bluetooth 5.2 +- Charging: USB-C + +### Apple AirPods Max — Best for Apple Ecosystem + +**Best for:** iPhone/Mac users who want premium over-ear headphones with seamless ecosystem integration. + +AirPods Max deliver excellent sound quality and good ANC in a distinctive design. The premium price reflects the build quality and Apple ecosystem benefits. + +**Indicative price range:** S$679-S$749 +**Where to buy:** Apple Store, Shopee, Lazada, Amazon SG + +**Typical discounts:** +- GSS: S$599-S$679 +- 11.11: S$579-S$649 +- Rarely discounted below S$549 + +**Key specs:** +- Chip: Apple H1 +- ANC: Yes +- Battery: 20 hours +- Weight: 384g +- Connectivity: Bluetooth 5.0 (Apple devices) +- Charging: Lightning + +### Bose QuietComfort Ultra Headphones — Best Comfort + +**Best for:** Users who prioritize long-wear comfort and want a premium listening experience without the Sony premium. + +The Bose QuietComfort Ultra offer excellent comfort, good ANC, and a spacious soundstage. They compete directly with Sony's XM5 on features but win on fit for some users. + +**Indicative price range:** S$499-S$549 +**Where to buy:** Shopee, Lazada, Challenger, Amazon SG + +**Typical discounts:** +- GSS: S$429-S$499 +- 11.11: S$399-S$479 +- Bose sales: S$449-S$529 + +**Key specs:** +- Driver: Custom +- ANC: Yes (excellent) +- Battery: 24 hours +- Weight: 250g +- Connectivity: Bluetooth 5.3 + +--- + +## Best Budget Headphones Singapore 2026 + +### Sony WH-CH520 — Best Budget Wireless + +**Best for:** Students and casual listeners who want Sony quality at an accessible price. + +The WH-CH520 offer surprisingly good sound for the price, 50 hours of battery life, and a lightweight design. They're a solid choice under S$100. + +**Indicative price range:** S$79-S$99 +**Where to buy:** Shopee, Lazada, Sony Centre, Amazon SG + +**Typical discounts:** +- Frequent on Shopee: S$59-S$79 +- GSS: S$49-S$69 + +**Key specs:** +- Driver: 30mm +- ANC: No +- Battery: 50 hours +- Weight: 147g +- Connectivity: Bluetooth 5.2 + +### Anker Soundcore Space Q45 — Best Budget ANC + +**Best for:** Budget buyers who want ANC without paying Sony/Bose prices. + +The Anker Soundcore Space Q45 offer surprisingly good ANC performance at under S$150. Sound quality is good for the price, and battery life is excellent. + +**Indicative price range:** S$109-S$149 +**Where to buy:** Shopee, Lazada, Amazon SG + +**Typical discounts:** +- Shopee flash sales: S$79-S$99 +- GSS: S$89-S$119 + +**Key specs:** +- Driver: 40mm +- ANC: Yes (good for price) +- Battery: 50 hours (ANC off), 35 hours (ANC on) +- Weight: 295g +- Connectivity: Bluetooth 5.3 + +--- + +## Best Sports Headphones Singapore 2026 + +### Shokz OpenRun Pro 2 — Best for Running + +**Best for:** Runners and cyclists who need to hear ambient traffic while listening to music or podcasts. + +Bone conduction headphones leave your ears open to traffic sounds, making them the safest choice for outdoor exercise in Singapore. + +**Indicative price range:** S$199-S$229 +**Where to buy:** Shopee, Lazada, Decathlon, Amazon SG + +**Typical discounts:** +- GSS: S$169-S$199 +- Decathlon sales: S$159-S$189 + +### Jabra Elite 8 Active — Best All-Round Sports Earbuds + +**Best for:** Gym-goers and cyclists who want a secure fit, good ANC, and solid durability. + +The Jabra Elite 8 Active are IP68-rated, withstand saltwater exposure, and offer excellent fit for exercise. They're a top choice for Singapore's humid conditions. + +**Indicative price range:** S$249-S$299 +**Where to buy:** Shopee, Lazada, Challenger, Amazon SG + +**Typical discounts:** +- GSS: S$199-S$249 +- 11.11: S$189-S$239 + +--- + +## Price Comparison: Where to Buy Headphones in Singapore + +| Model | Shopee | Lazada | Amazon SG | Challenger | +|-------|--------|--------|-----------|-----------| +| Sony WF-1000XM5 | S$349 | S$359 | S$359 | S$379 | +| Apple AirPods Pro 3 | S$299 | S$309 | S$299 | S$329 | +| Sony WH-1000XM5 | S$449 | S$459 | S$449 | S$479 | +| Apple AirPods Max | S$679 | S$689 | S$679 | S$699 | +| Sony WH-CH520 | S$79 | S$89 | S$79 | — | +| Anker Soundcore Q45 | S$109 | S$119 | S$109 | — | + +*Prices are indicative and vary by seller. Search BuyWhere for live prices.* + +--- + +## When to Buy Headphones in Singapore + +### Best Time: GSS (June-August) + +The Great Singapore Sale offers the deepest discounts on headphones, particularly at Shopee and Lazada. Expect 15-30% off flagship models and up to 50% off older or budget models. + +### Second Best: 11.11 (November) + +The 11.11 sale on Shopee and Lazada matches or slightly exceeds GSS discounts on electronics. BuyWhere tracks both events — search before either sale to identify the best current price. + +### Good: 7.7 and 9.9 Sales + +Mid-year sales events offer decent discounts, typically 10-20% off. Useful for picking up budget models at their lowest. + +### Avoid: January-February + +Post-holiday pricing tends to be flat. Wait for GSS unless you need something immediately. + +--- + +## FAQ + +**What is the best headphone brand in Singapore?** + +Sony dominates the Singapore market for both earbuds and over-ear headphones. Apple is the top choice for iPhone users. Bose is preferred by users who prioritize comfort. For budget options, Anker (Soundcore) and Sony's entry-level line offer the best value. + +**Are AirPods or Sony earbuds better for iPhone users?** + +AirPods Pro 3 offer tighter Apple ecosystem integration (instant pairing, Find My, spatial audio with head tracking). Sony WF-1000XM5 offer better noise cancellation and sound quality. For most iPhone users, AirPods Pro 3 are the more convenient choice; Sony wins on raw audio performance. + +**Where is the cheapest place to buy headphones in Singapore?** + +Shopee generally has the lowest prices, especially during flash sales and GSS. Lazada is competitive and sometimes undercuts Shopee by a few dollars. Amazon SG and Challenger are slightly more expensive but offer faster delivery and better buyer protection for high-value items. + +**Is it worth buying headphones from Shopee?** + +Yes — Shopee's official stores for Sony, Apple, Samsung, and Bose are reliable. Stick to official stores or authorised sellers with high ratings. The price advantage over Challenger or Harvey Norman can be S$20-S$50, which is worth it for most models. + +**Do noise-cancelling headphones work well in Singapore's MRT?** + +Yes — Sony WH-1000XM5 and Apple AirPods Pro 3 both perform well on Singapore's MRT, significantly reducing engine noise and ambient chatter. Over-ear headphones (WH-1000XM5) generally outperform earbuds on ANC due to the physical seal. + +**How much should I spend on headphones in Singapore?** + +- Budget (under S$100): Sony WH-CH520, Anker Soundcore Q45 +- Mid-range (S$150-S$300): Sony WF-1000XM4 (previous gen, still excellent), Jabra Elite 8 Active +- Premium (S$300-S$500): Sony WF-1000XM5, Bose QuietComfort Ultra +- Flagship (S$500+): Sony WH-1000XM5, Apple AirPods Max + +**What headphones work best for working from home in Singapore?** + +Over-ear headphones with ANC (Sony WH-1000XM5 or Bose QuietComfort Ultra) are ideal for WFH, blocking out home noise while staying comfortable for long calls. For video calls, microphone quality matters — Bose and Apple both perform well on call clarity. + +**Are expensive headphones worth it in Singapore?** + +For noise cancellation, yes — Sony WH-1000XM5 justify their premium over budget models with significantly better ANC, build quality, and sound. For casual listening, budget models like the Sony WH-CH520 offer 80% of the experience at 20% of the price. + +--- + +## Related Guides + +[Best Laptop Deals Singapore 2026](/blog/best-laptop-deals-singapore) · [Best Electronics Deals Singapore](/blog/best-electronics-deals-singapore) · [BuyWhere API Reference](/pages/api-reference) · [MCP Servers for E-Commerce](/compare/mcp-servers-ecommerce-shopping) diff --git a/content/social/product-hunt-launch.md b/content/social/product-hunt-launch.md new file mode 100644 index 000000000..f01a532a0 --- /dev/null +++ b/content/social/product-hunt-launch.md @@ -0,0 +1,157 @@ +--- +title: "BuyWhere — Product Hunt Launch Copy" +slug: "buywhere-product-hunt-launch" +description: "Official Product Hunt launch copy for BuyWhere — the AI agent for real-time product price comparison across US and Singapore retailers." +category: "Social Launch" +tags: + - "product hunt" + - "launch" + - "mcp" + - "shopping agent" + - "price comparison" +published: true +--- + +# BuyWhere — Product Hunt Launch Copy + +## Tagline +**The AI agent that finds you the best prices across every retailer.** + +## Gallery Images +1. **Hero screenshot**: BuyWhere search showing live price comparison across Amazon, Best Buy, Walmart, Target for a MacBook Pro +2. **API demo**: Terminal showing MCP server tools being invoked (search_products, compare_prices, find_best_price) +3. **Price comparison table**: Screenshot of the live comparison view showing retailer x price x availability +4. **Developer setup**: Code snippet showing BuyWhere MCP server integration in under 5 lines of TypeScript + +## Video URL +https://buywhere.ai/demo (placeholder — insert demo video) + +## Promotional Links +- **Live product**: https://buywhere.ai +- **Documentation**: https://buywhere.ai/developers +- **API Reference**: https://buywhere.ai/pages/api-reference + +## 1-Line Description +Compare product prices across Amazon, Best Buy, Walmart, Shopee, Lazada, and 500+ more retailers with one API call or voice command. + +## Short Description +BuyWhere is an AI-native product price comparison API and MCP server. Tell your AI agent "find me the cheapest MacBook Pro" — it queries 500+ retailers and returns live prices in seconds. Built for AI agents, shopping assistants, deal hunters, and developers. + +## Thumbnail Image URL +https://buywhere.ai/og-image.png (placeholder) + +## Hunter +@buywhere (placeholder — add actual hunter username) + +## Vendor +BuyWhere + +## Made With +- TypeScript +- Node.js +- MCP (Model Context Protocol) + +--- + +## Campaign Copy + +### The Problem + +You're building an AI agent. It recommends products. But when a user asks "where should I buy this?" — your agent draws a blank. It can't see prices. + +Existing solutions: +- **Honey** — browser extension for coupons; no API, no AI agent support +- **CamelCamelCamel** — Amazon only; no MCP, no real-time data +- **Keepa** — Amazon only; price charts but no agent integration +- **Google Shopping** —隔 Consumer tool; no structured API for AI agents + +### The Solution + +BuyWhere gives your AI agent **real-time access to product pricing across 500+ retailers** via: +1. **REST API** — `/v1/products/search`, `/v1/compare-prices`, `/v1/price-history` +2. **MCP Server** — `search_products`, `compare_prices`, `find_best_price`, `track_price`, `get_merchant_info` +3. **Multi-country** — US (Amazon, Best Buy, Walmart, Target, Costco, Newegg) + Singapore (Shopee, Lazada, Courteney) + +### How It Works + +```typescript +// Install the MCP server +npm install @buywhere/mcp-server + +// Configure in Claude Desktop, Cursor, or any MCP client +// Then ask naturally: +"Find me the cheapest Sony WH-1000XM5 headphones + across Amazon, Best Buy, and Walmart in Singapore." + +// BuyWhere returns live prices from all three retailers +// Your agent picks the best deal and links directly to the product +``` + +### Features + +- **500+ retailers** — Amazon, Best Buy, Walmart, Target, Costco, Newegg, B&H Photo, Shopee, Lazada, Courteney +- **120,000+ products** — Live pricing data updated continuously +- **Multi-country** — US (USD) and Singapore (SGD) supported +- **MCP native** — Works with Claude Desktop, Cursor, Windsurf, and any MCP-compatible AI +- **REST API** — Clean REST endpoints for custom integrations +- **Price history** — Track price changes over time to find the best buying moment +- **Merchant info** — Ratings, return policies, shipping options for every retailer + +### Developer-First Design + +| Feature | Free | Developer ($29/mo) | Business ($99/mo) | +|---------|------|---------------------|-------------------| +| API calls/month | 1,000 | 50,000 | 500,000 | +| MCP server access | Yes | Yes | Yes | +| Price history | No | Yes | Yes | +| Priority support | No | No | Yes | + +### Live Demo + +Search for any product at [buywhere.ai/search](https://buywhere.ai/search) — see live prices from multiple retailers side-by-side. + +### Technical Setup + +```bash +# Option 1: Install via npm +npm install @buywhere/mcp-server + +# Option 2: Install via Smithery +npx @smithery-ai/cli install @buywhere/mcp-server + +# Configure in your MCP client +# env.BUYWHERE_API_KEY=your-api-key +``` + +### FAQ + +**Q: Which AI agents support BuyWhere MCP?** +A: Any MCP-compatible agent — Claude Desktop, Cursor, Windsurf, Cobrowse, and more. We're MCP-native, not a browser extension. + +**Q: How is this different from Honey?** +A: Honey is a browser extension for coupon codes. BuyWhere is an API + MCP server for real-time price comparison. We're building for AI agents, not browsers. + +**Q: Does this work outside the US?** +A: Yes — we support US (Amazon, Best Buy, Walmart, Target, Costco, Newegg, B&H Photo) and Singapore (Shopee, Lazada, Courteney). More countries coming. + +**Q: How often is pricing data updated?** +A: Live — we query retailer APIs and scrapers in real-time. No cached stale prices. + +**Q: Can I track price changes?** +A: Yes — the Developer and Business plans include price history data for trend analysis. + +--- + +## Comments for Discussion + +> We built BuyWhere because our AI shopping assistant couldn't answer the most basic question: "where should I buy this?" Existing price APIs were either consumer-only, Amazon-only, or had no AI agent support. So we built the API we wished existed. + +> Fun fact: the MCP protocol makes this incredibly natural — your agent doesn't need to know about our API. You just tell it what you want, and BuyWhere handles the rest. + +--- + +## Related Links +- [Documentation](https://buywhere.ai/developers) +- [API Reference](https://buywhere.ai/pages/api-reference) +- [GitHub](https://github.com/buywhere) +- [Twitter/X](https://twitter.com/buywhere) diff --git a/deploy/gcp/api-service.yaml b/deploy/gcp/api-service.yaml index 678a7a1c1..e7caffcf3 100644 --- a/deploy/gcp/api-service.yaml +++ b/deploy/gcp/api-service.yaml @@ -29,7 +29,7 @@ spec: - name: API_BASE_URL value: "https://api.buywhere.ai" - name: PG_POOL_MAX - value: "10" + value: "50" # Cloud SQL via Unix socket (PgBouncer not needed with Cloud SQL Proxy) - name: DATABASE_URL valueFrom: diff --git a/ingest_gamestop.py b/ingest_gamestop.py index 3dd9a635d..07080aeff 100644 --- a/ingest_gamestop.py +++ b/ingest_gamestop.py @@ -39,7 +39,7 @@ MAX_RETRIES = 3 IMPERSONATE = "safari17_0" -OUTPUT_DIR = Path("/tmp/opencode/gamestop_us") +OUTPUT_DIR = Path("/home/paperclip/buywhere-api/data/gamestop_us") SITEMAP_INDEX_URL = "https://www.gamestop.com/sitemap_index.xml" SITEMAP_URLS_FILE = OUTPUT_DIR / "sitemap_urls.json" PRODUCT_URLS_FILE = OUTPUT_DIR / "product_urls.json" @@ -340,6 +340,7 @@ def main(): last_request = 0.0 timestamp = datetime.now(timezone.utc).strftime("%Y%m%d_%H%M%S") output_ndjson = OUTPUT_DIR / f"products_{timestamp}.ndjson" + CHECKPOINT_EVERY = 20 with open(output_ndjson, "a") as ndjson_f: for idx, url in enumerate(product_urls): @@ -366,9 +367,12 @@ def main(): products.append(normalized) scraped += 1 cp["processed_urls"].append(url) + if scraped % CHECKPOINT_EVERY == 0: + save_checkpoint(cp) ndjson_f.write(json.dumps(normalized) + "\n") log(f" OK: {normalized['title'][:80]} | ${normalized['price']} | {normalized.get('brand','')}") if len(products) >= BATCH_SIZE: + save_checkpoint(cp) if not args.scrape_only: log(f" Ingesting batch of {len(products)}...") result = ingest_batch(products) diff --git a/nginx.conf b/nginx.conf index 7c81afd11..e1ee825f1 100644 --- a/nginx.conf +++ b/nginx.conf @@ -30,7 +30,7 @@ http { gzip_types text/plain text/css text/xml application/json application/javascript application/xml+rss; upstream api_backend { - server 127.0.0.1:8000; + server 127.0.0.1:3000; keepalive 32; } diff --git a/public/llms.txt b/public/llms.txt index 5bd567dba..82a9d8997 100644 --- a/public/llms.txt +++ b/public/llms.txt @@ -37,7 +37,6 @@ Authentication: Bearer token (get free key at https://api.buywhere.ai/v1/auth/re 4. **get_deals** — Find discounted products sorted by discount percentage. 5. **list_categories** — List top-level product categories with product counts. 6. **find_best_price** — Find the cheapest current listing for a product across all merchants. -7. **resolve_product_query** — Primary natural-language shopping interface that classifies intent and routes to the right catalog capability. ## Authentication diff --git a/public/robots.txt b/public/robots.txt index c1eeeeded..df31d36ee 100644 --- a/public/robots.txt +++ b/public/robots.txt @@ -1,13 +1,12 @@ User-agent: * Allow: / -<<<<<<< HEAD Disallow: /home/ Disallow: /PAP/ Disallow: /BUY/ Disallow: /v1/ Disallow: /v2/ -======= ->>>>>>> a8194ee77 (fix(BUY-12731): use Cloud Run hostname + X-Forwarded-Host to fix 404 routing) +Disallow: /api/ +Disallow: /api-reference/ User-agent: GPTBot Allow: / diff --git a/scrapers/superior_lighting_us.py b/scrapers/superior_lighting_us.py new file mode 100644 index 000000000..4d4da54c9 --- /dev/null +++ b/scrapers/superior_lighting_us.py @@ -0,0 +1,517 @@ +""" +Superior Lighting US scraper — BigCommerce Catalyst (Next.js), sitemap crawl + JSON-LD extraction. + +Platform: BigCommerce Catalyst (Next.js on BigCommerce backend) +Extraction: JSON-LD Product schema from product pages +Sitemap: /xmlsitemap.php → 5 product sitemap pages, ~40K products + +Usage: + python -m scrapers.superior_lighting_us --api-key --scrape-only --limit 10 + python -m scrapers.superior_lighting_us --api-key --api-base http://localhost:8000 +""" + +import argparse +import asyncio +import json +import re +import sys +import time +import xml.etree.ElementTree as ET +from datetime import datetime, timezone +from pathlib import Path +from typing import Any +from urllib.parse import urljoin + +import httpx + +MERCHANT_ID = "superiorlighting_us" +SOURCE = "superiorlighting_us" +BASE_URL = "https://www.superiorlighting.com" +SITEMAP_INDEX_URL = f"{BASE_URL}/xmlsitemap.php" +OUTPUT_DIR = Path("/home/paperclip/buywhere-api/data/superiorlighting_us") + +NS = {"sm": "http://www.sitemaps.org/schemas/sitemap/0.9"} +NS_ALT = "https://www.sitemaps.org/schemas/sitemap/0.9" + +HEADERS = { + "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", + "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", + "Accept-Language": "en-US,en;q=0.9", +} + + +def parse_price(value: Any) -> float: + if value is None: + return 0.0 + if isinstance(value, (int, float)): + return float(value) + cleaned = str(value).replace("$", "").replace(",", "").strip() + match = re.search(r"[\d]+(?:\.\d+)?", cleaned) + return float(match.group(0)) if match else 0.0 + + +def extract_jsonld_blocks(html: str) -> list[dict]: + results: list[dict] = [] + pattern = r']*type="application/ld\+json"[^>]*>(.*?)' + for match in re.finditer(pattern, html, re.DOTALL | re.IGNORECASE): + try: + data = json.loads(match.group(1).strip()) + if isinstance(data, list): + results.extend(data) + else: + results.append(data) + except json.JSONDecodeError: + continue + return results + + +def extract_breadcrumbs(jsonld_blocks: list[dict]) -> list[dict]: + for block in jsonld_blocks: + if block.get("@type") == "BreadcrumbList": + items = block.get("itemListElement", []) + return items + return [] + + +def extract_product(jsonld_blocks: list[dict]) -> dict | None: + for block in jsonld_blocks: + if block.get("@type") == "Product": + return block + if "@graph" in jsonld_blocks: + for block in jsonld_blocks if isinstance(jsonld_blocks, list) else []: + if isinstance(block, dict) and block.get("@type") == "Product": + return block + for block in jsonld_blocks: + if isinstance(block, dict) and "@graph" in block: + for item in block["@graph"]: + if isinstance(item, dict) and item.get("@type") == "Product": + return item + return None + + +def category_from_breadcrumbs(breadcrumbs: list[dict]) -> tuple[str, list[str]]: + cats = [] + for item in breadcrumbs: + if isinstance(item, dict): + name = item.get("name", "").strip() + if not name: + item_data = item.get("item", {}) + if isinstance(item_data, dict): + name = item_data.get("name", "").strip() + if name and name.lower() != "home": + cats.append(name) + if cats: + return cats[-1], cats + return "Lighting", ["Lighting"] + + +def extract_products_from_html(html: str, url: str) -> list[dict]: + jsonld_blocks = extract_jsonld_blocks(html) + if not jsonld_blocks: + return [] + + product = extract_product(jsonld_blocks) + breadcrumbs = extract_breadcrumbs(jsonld_blocks) + category, category_path = category_from_breadcrumbs(breadcrumbs) + + if not product: + return [] + + name = str(product.get("name", "")).strip() + if not name: + return [] + + sku = str(product.get("sku", "")).strip() + if not sku: + slug = url.rstrip("/").rsplit("/", 1)[-1] + sku = f"sl_{slug}"[:100] + + description = str(product.get("description", "")).strip()[:5000] + + price = 0.0 + currency = "USD" + availability = "InStock" + offers = product.get("offers") + if isinstance(offers, dict): + avail = str(offers.get("availability", "")).strip() + if "OutOfStock" in avail: + availability = "OutOfStock" + + price_spec = offers.get("priceSpecification") + if isinstance(price_spec, dict): + price = parse_price(price_spec.get("price")) + currency = str(price_spec.get("priceCurrency", "USD")).strip() or "USD" + else: + price = parse_price(offers.get("price")) + currency = str(offers.get("priceCurrency", "USD")).strip() or "USD" + elif isinstance(offers, list) and offers: + off = offers[0] + if isinstance(off, dict): + price_spec = off.get("priceSpecification") + if isinstance(price_spec, dict): + price = parse_price(price_spec.get("price")) + currency = str(price_spec.get("priceCurrency", "USD")).strip() or "USD" + else: + price = parse_price(off.get("price")) + currency = str(off.get("priceCurrency", "USD")).strip() or "USD" + + images = product.get("image", []) + if isinstance(images, str): + images = [images] + image_url = images[0] if images else "" + if isinstance(image_url, list): + image_url = image_url[0] if image_url else "" + if isinstance(image_url, dict): + image_url = image_url.get("url", "") + + brand_data = product.get("brand", {}) + brand = "" + if isinstance(brand_data, dict): + brand = str(brand_data.get("name", "")).strip() + elif isinstance(brand_data, str): + brand = brand_data.strip() + + metadata = { + "platform": "bigcommerce_catalyst", + "source_domain": "superiorlighting.com", + "extraction_method": "jsonld_product", + } + mpn = product.get("mpn") + if mpn: + metadata["mpn"] = str(mpn) + gtin = product.get("gtin13") or product.get("gtin12") or product.get("gtin8") + if gtin: + metadata["gtin"] = str(gtin) + + return [{ + "sku": sku[:200], + "merchant_id": MERCHANT_ID, + "title": name[:1000], + "description": description, + "price": price, + "currency": currency, + "url": url, + "image_url": image_url[:2000] if image_url else "", + "category": category, + "category_path": category_path[:10], + "brand": brand[:200], + "is_active": True, + "in_stock": "OutOfStock" not in availability, + "country_code": "US", + "region": "us", + "metadata": metadata, + }] + + +def parse_sitemap_xml(xml_content: str) -> list[str]: + """Parse sitemap XML and return URLs (both direct urls and sub-sitemap urls).""" + urls: list[str] = [] + try: + root = ET.fromstring(xml_content) + except ET.ParseError: + return urls + + for ns_uri in (NS["sm"], NS_ALT): + for el in root.iter(f"{{{ns_uri}}}url"): + loc = el.find(f"{{{ns_uri}}}loc") + if loc is not None and loc.text: + urls.append(loc.text.strip()) + for el in root.iter(f"{{{ns_uri}}}sitemap"): + loc = el.find(f"{{{ns_uri}}}loc") + if loc is not None and loc.text: + urls.append(loc.text.strip()) + + if not urls: + for el in root.iter("url"): + loc = el.find("loc") + if loc is not None and loc.text: + urls.append(loc.text.strip()) + for el in root.iter("sitemap"): + loc = el.find("loc") + if loc is not None and loc.text: + urls.append(loc.text.strip()) + + return list(dict.fromkeys(urls)) + + +class SuperiorLightingScraper: + def __init__( + self, + api_key: str | None = None, + api_base: str = "http://localhost:8000", + batch_size: int = 100, + delay: float = 0.0, + scrape_only: bool = False, + limit: int = 0, + max_concurrency: int = 12, + ): + self.api_key = api_key + self.api_base = api_base.rstrip("/") + self.batch_size = batch_size + self.delay = delay + self.scrape_only = scrape_only + self.limit = limit + self.max_concurrency = max_concurrency + + self.output_dir = OUTPUT_DIR + self.output_dir.mkdir(parents=True, exist_ok=True) + + session_start = datetime.now(timezone.utc).strftime("%Y%m%d_%H%M%S") + self.products_file = self.output_dir / f"products_{session_start}.jsonl" + self.dead_letter_file = self.output_dir / f"dead_letters_{session_start}.jsonl" + self.checkpoint_file = self.output_dir / "checkpoint.json" + + self.semaphore = asyncio.Semaphore(max_concurrency) + self.write_lock = asyncio.Lock() + + self.total_scraped = 0 + self.total_ingested = 0 + self.total_failed = 0 + self.seen_skus: set[str] = set() + self.checkpoint_interval = 500 + self._load_checkpoint() + + def _load_checkpoint(self) -> None: + try: + if self.checkpoint_file.exists(): + data = json.loads(self.checkpoint_file.read_text()) + self.seen_skus = set(data.get("seen_skus", [])) + self.total_scraped = data.get("total_scraped", 0) + self.total_ingested = data.get("total_ingested", 0) + self.total_failed = data.get("total_failed", 0) + print(f"Loaded checkpoint: {len(self.seen_skus)} seen SKUs, {self.total_scraped} scraped") + except Exception as e: + print(f"WARN: Failed to load checkpoint: {e}") + + def _save_checkpoint(self) -> None: + try: + data = { + "seen_skus": list(self.seen_skus), + "total_scraped": self.total_scraped, + "total_ingested": self.total_ingested, + "total_failed": self.total_failed, + } + self.checkpoint_file.write_text(json.dumps(data)) + except Exception as e: + print(f"WARN: Failed to save checkpoint: {e}") + + async def fetch_product_sitemaps(self) -> list[str]: + """Fetch /xmlsitemap.php index and extract product sitemap URLs.""" + sitemaps: list[str] = [] + try: + async with httpx.AsyncClient(timeout=30.0, headers=HEADERS, follow_redirects=True) as client: + resp = await client.get(SITEMAP_INDEX_URL) + resp.raise_for_status() + entries = parse_sitemap_xml(resp.text) + for entry in entries: + if "sitemap" in entry.lower() and "products" in entry.lower(): + sitemaps.append(entry) + except Exception as e: + print(f"ERROR: Failed to fetch sitemap index: {e}", file=sys.stderr) + return sitemaps + + async def extract_urls_from_sitemap(self, sitemap_url: str, client: httpx.AsyncClient) -> list[str]: + """Extract product URLs from a single sitemap page.""" + urls: list[str] = [] + try: + resp = await client.get(sitemap_url, timeout=60.0) + resp.raise_for_status() + entries = parse_sitemap_xml(resp.text) + for entry in entries: + if "sitemap" not in entry.lower() and entry.startswith("https://www.superiorlighting.com/"): + urls.append(entry) + except Exception as e: + print(f"WARN: Failed to parse sitemap {sitemap_url}: {e}", file=sys.stderr) + return urls + + async def scrape_product_page(self, url: str, client: httpx.AsyncClient) -> list[dict]: + async with self.semaphore: + for attempt in range(3): + try: + resp = await client.get(url, timeout=30.0) + if resp.status_code == 200: + return extract_products_from_html(resp.text, url) + elif resp.status_code == 429: + wait = 5 * (2 ** attempt) + print(f" 429 on {url}, waiting {wait}s...", file=sys.stderr) + await asyncio.sleep(wait) + continue + else: + return [] + except Exception as e: + if attempt < 2: + await asyncio.sleep(2 ** attempt) + else: + self._write_dead_letter(url, f"Request failed after 3 attempts: {e}") + return [] + + def _write_dead_letter(self, url: str, reason: str) -> None: + entry = { + "url": url, + "reason": reason, + "merchant": MERCHANT_ID, + "timestamp": datetime.now(timezone.utc).isoformat(), + } + try: + with open(self.dead_letter_file, "a") as f: + f.write(json.dumps(entry) + "\n") + except Exception: + pass + + async def ingest_batch(self, products: list[dict]) -> tuple[int, int, int]: + if not products: + return 0, 0, 0 + + if self.scrape_only: + async with self.write_lock: + with open(self.products_file, "a") as f: + for p in products: + f.write(json.dumps(p, ensure_ascii=False) + "\n") + return len(products), 0, 0 + + url = f"{self.api_base}/v1/ingest/products" + headers = { + "Authorization": f"Bearer {self.api_key}", + "Content-Type": "application/json", + } + payload = {"source": SOURCE, "products": products} + + for attempt in range(3): + try: + async with httpx.AsyncClient(timeout=120.0) as client: + resp = await client.post(url, json=payload, headers=headers) + if resp.status_code == 200: + result = resp.json() + inserted = result.get("rows_inserted", 0) + updated = result.get("rows_updated", 0) + failed = result.get("rows_failed", 0) + return inserted, updated, failed + elif resp.status_code == 429: + await asyncio.sleep(2 ** attempt * 5) + else: + if attempt < 2: + await asyncio.sleep(2) + except Exception as e: + if attempt < 2: + await asyncio.sleep(2) + else: + print(f"ERROR: Ingestion failed after 3 attempts: {e}", file=sys.stderr) + return 0, 0, len(products) + + async def run(self) -> dict[str, Any]: + start = time.time() + + print("=== Superior Lighting US Sitemap Scraper ===") + print(f"Mode: {'scrape only' if self.scrape_only else 'ingest to API'}") + print(f"Batch size: {self.batch_size}, Delay: {self.delay}s, Concurrency: {self.max_concurrency}") + + async with httpx.AsyncClient(timeout=30.0, headers=HEADERS, follow_redirects=True) as client: + print("Phase 1: Fetching sitemap index...") + product_sitemaps = await self.fetch_product_sitemaps() + print(f"Found {len(product_sitemaps)} product sitemaps") + + if not product_sitemaps: + return {"error": "No product sitemaps found"} + + print("Phase 2: Extracting product URLs from sitemaps...") + all_urls: list[str] = [] + for sm_url in sorted(product_sitemaps): + urls = await self.extract_urls_from_sitemap(sm_url, client) + print(f" {sm_url}: {len(urls)} product URLs") + all_urls.extend(urls) + + if self.limit > 0: + all_urls = all_urls[:self.limit] + + print(f"Total product URLs: {len(all_urls)}") + + print(f"Phase 3: Scraping {len(all_urls)} product pages...") + batch: list[dict] = [] + + async def process_url(url: str) -> tuple[list[dict], int]: + idx = all_urls.index(url) + products = await self.scrape_product_page(url, client) + return products, idx + + tasks = [process_url(url) for url in all_urls] + for i, coro in enumerate(asyncio.as_completed(tasks)): + products, idx = await coro + for product in products: + sku = product["sku"] + if sku and sku not in self.seen_skus: + self.seen_skus.add(sku) + batch.append(product) + self.total_scraped += 1 + + if len(batch) >= self.batch_size: + inserted, updated, failed = await self.ingest_batch(batch) + self.total_ingested += inserted + updated + self.total_failed += failed + batch = [] + self._save_checkpoint() + + if (i + 1) % 500 == 0: + elapsed = time.time() - start + rate = (i + 1) / elapsed if elapsed > 0 else 0 + print(f" Progress: {i+1}/{len(all_urls)} ({(i+1)*100/len(all_urls):.1f}%) — " + f"{self.total_scraped} scraped, {self.total_ingested} ingested, {rate:.1f} req/s") + self._save_checkpoint() + + if batch: + inserted, updated, failed = await self.ingest_batch(batch) + self.total_ingested += inserted + updated + self.total_failed += failed + + self._save_checkpoint() + + elapsed = time.time() - start + summary = { + "merchant": "Superior Lighting", + "domain": "superiorlighting.com", + "platform": "bigcommerce_catalyst", + "extraction_method": "jsonld_product", + "sitemaps_found": len(product_sitemaps), + "urls_collected": len(all_urls), + "products_scraped": self.total_scraped, + "products_ingested": self.total_ingested, + "products_failed": self.total_failed, + "unique_skus": len(self.seen_skus), + "elapsed_seconds": round(elapsed, 1), + "products_file": str(self.products_file) if self.scrape_only else None, + "dead_letter_file": str(self.dead_letter_file), + } + + print(f"\n=== Scraper Complete ===") + print(json.dumps(summary, indent=2, ensure_ascii=False)) + return summary + + +def main(): + parser = argparse.ArgumentParser(description="Superior Lighting US sitemap scraper") + parser.add_argument("--api-key", help="BuyWhere API key") + parser.add_argument("--api-base", default="http://localhost:8000") + parser.add_argument("--batch-size", type=int, default=100) + parser.add_argument("--delay", type=float, default=0.0) + parser.add_argument("--scrape-only", action="store_true") + parser.add_argument("--limit", type=int, default=0) + parser.add_argument("--max-concurrency", type=int, default=12) + args = parser.parse_args() + + if not args.scrape_only and not args.api_key: + parser.error("--api-key is required unless --scrape-only is used") + + scraper = SuperiorLightingScraper( + api_key=args.api_key, + api_base=args.api_base, + batch_size=args.batch_size, + delay=args.delay, + scrape_only=args.scrape_only, + limit=args.limit, + max_concurrency=args.max_concurrency, + ) + + asyncio.run(scraper.run()) + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/site.Dockerfile b/site.Dockerfile index ee1b642cd..2e0069a28 100644 --- a/site.Dockerfile +++ b/site.Dockerfile @@ -4,11 +4,7 @@ COPY package*.json ./ RUN npm install --ignore-scripts COPY . . ENV NEXT_TELEMETRY_DISABLED=1 -<<<<<<< HEAD -RUN npm run build -======= RUN npx next build --no-lint ->>>>>>> a8194ee77 (fix(BUY-12731): use Cloud Run hostname + X-Forwarded-Host to fix 404 routing) FROM node:20-alpine AS runner WORKDIR /app @@ -20,10 +16,7 @@ ENV HOSTNAME=0.0.0.0 COPY --from=builder /app/.next-deploy/standalone ./ COPY --from=builder --chown=nextjs:nodejs /app/.next-deploy/static ./.next/static COPY --from=builder /app/public ./public -<<<<<<< HEAD -======= COPY --from=builder /app/content ./content ->>>>>>> a8194ee77 (fix(BUY-12731): use Cloud Run hostname + X-Forwarded-Host to fix 404 routing) EXPOSE 3000 CMD ["node", "server.js"] diff --git a/src/app/air-purifier-us/page.tsx b/src/app/air-purifier-us/page.tsx new file mode 100644 index 000000000..b03096617 --- /dev/null +++ b/src/app/air-purifier-us/page.tsx @@ -0,0 +1,13 @@ +import type { Metadata } from "next"; +import { SeoLandingPage } from "@/components/seo/SeoLandingPage"; +import { buildSeoLandingMetadata, seoLandingPages } from "@/lib/seo-landing-pages"; + +const config = seoLandingPages["air-purifier-us"]; + +export async function generateMetadata(): Promise { + return buildSeoLandingMetadata(config); +} + +export default function Page() { + return ; +} diff --git a/src/app/api-keys/page.tsx b/src/app/api-keys/page.tsx index 1af98bdbe..024e710de 100644 --- a/src/app/api-keys/page.tsx +++ b/src/app/api-keys/page.tsx @@ -1,6 +1,7 @@ "use client"; import { useState } from "react"; +import Script from "next/script"; import Nav from "@/components/Nav"; import Footer from "@/components/Footer"; @@ -67,8 +68,67 @@ export default function ApiKeysPage() { -H "Authorization: Bearer ${apiKey}"` : ""; + const faqSchema = { + "@context": "https://schema.org", + "@type": "FAQPage", + "@id": "https://buywhere.ai/api-keys#faq", + mainEntity: [ + { + "@type": "Question", + name: "How do I get a BuyWhere API key?", + acceptedAnswer: { + "@type": "Answer", + text: "Enter your name and email on the BuyWhere API keys page and receive a working API key instantly. No credit card required during beta. The key is displayed on screen and emailed to you." + } + }, + { + "@type": "Question", + name: "Is the BuyWhere API free?", + acceptedAnswer: { + "@type": "Answer", + text: "Yes — during beta, BuyWhere offers a free tier with 1,000 API calls per month, no credit card required. Paid plans (Developer at $29/month for 50,000 calls, Business at $99/month for 500,000 calls) unlock more capacity and features like price history and webhooks." + } + }, + { + "@type": "Question", + name: "What can I build with the BuyWhere API?", + acceptedAnswer: { + "@type": "Answer", + text: "The BuyWhere API powers AI shopping assistants, price comparison tools, affiliate recommendation engines, e-commerce analytics, and LangChain or CrewAI agents. Any application that needs real-time product search, price comparison, or deal discovery can use the API." + } + }, + { + "@type": "Question", + name: "What endpoints does the BuyWhere API offer?", + acceptedAnswer: { + "@type": "Answer", + text: "The core endpoint is GET /v1/products/search for full-text product search. Additional endpoints include price comparison, product details by ID, deal discovery, and category browsing. The same catalog is available as MCP tools for AI agent integration." + } + }, + { + "@type": "Question", + name: "Does BuyWhere support MCP (Model Context Protocol)?", + acceptedAnswer: { + "@type": "Answer", + text: "Yes. BuyWhere publishes an official MCP server package (@buywhere/mcp-server) that exposes the product catalog as MCP tools. Install it with npx -y @buywhere/mcp-server and configure it with your API key to use BuyWhere inside Claude Desktop, Cursor, or any MCP-compatible agent." + } + }, + { + "@type": "Question", + name: "What countries does BuyWhere cover?", + acceptedAnswer: { + "@type": "Answer", + text: "BuyWhere covers Singapore (SGD) with the full catalog live, and United States (USD) in preview. Additional Southeast Asian markets including Malaysia, Thailand, Vietnam, Philippines, and Indonesia are planned." + } + } + ] + }; + return (
+