ScavioScavio
产品定价文档
登录开始使用
  1. 首页
  2. 教程
  3. 如何为亚马逊和沃尔玛构建价格比较工具
教程

如何为亚马逊和沃尔玛构建价格比较工具

使用 Python 构建一个跨平台价格比较工具,通过 Scavio API 查询亚马逊和沃尔玛,并返回任何产品的最佳价格。

获取免费API密钥API文档

价格比较工具可帮助购物者和经销商在多家零售商中找到最优惠的价格。构建一个平台需要查询多个平台、规范价格格式并按价值对结果进行排名。 Scavio API 通过统一端点覆盖亚马逊和沃尔玛,从而可以轻松查询两个平台并并排比较结果。本教程构建了一个比较函数,该函数接受产品名称、并行查询两个平台并返回排序的报价列表。

前置条件

  • Python 3.10 或更高版本
  • requests 和并发.futures (stdlib) 可用
  • Scavio API 密钥
  • 对异步或并发编程的基本了解

操作指南

步骤 1: 同时查询两个平台

使用concurrent.futures.ThreadPoolExecutor同时查询Amazon和Walmart,减少总延迟。

Python
from concurrent.futures import ThreadPoolExecutor, as_completed

def search_platform(platform: str, query: str) -> list[dict]:
    r = requests.post(
        "https://api.scavio.dev/api/v1/search",
        headers={"x-api-key": API_KEY},
        json={"platform": platform, "query": query, "marketplace": "US"}
    )
    r.raise_for_status()
    return r.json().get("products", [])

def fetch_both(query: str) -> dict:
    with ThreadPoolExecutor(max_workers=2) as ex:
        futures = {ex.submit(search_platform, p, query): p for p in ["amazon", "walmart"]}
        return {futures[f]: f.result() for f in as_completed(futures)}

步骤 2: 跨平台价格标准化

两个平台都以字符串形式返回价格,例如“$29.99”。将它们解析为浮点数以进行比较。

Python
def normalize(product: dict, source: str) -> dict:
    price_str = product.get("price", "")
    price = float(price_str.replace("$", "").replace(",", "")) if price_str else None
    return {"source": source, "title": product.get("title"), "price": price, "raw": price_str}

步骤 3: 合并和排序结果

将两个平台的结果合并到一个列表中,并按价格升序排序。

Python
def compare(query: str) -> list[dict]:
    results = fetch_both(query)
    items = []
    for source, products in results.items():
        items.extend(normalize(p, source) for p in products[:5])
    return sorted(items, key=lambda x: x["price"] or float("inf"))

步骤 4: 显示比较表

打印格式化表格,显示两个平台上产品的最佳价格。

Python
offers = compare("Sony WH-1000XM5")
print(f"{'Source':<10} {'Price':<10} {'Title'}")
for o in offers[:6]:
    print(f"{o['source']:<10} {o['raw']:<10} {o['title'][:50]}")

Python 示例

Python
import os
import requests
from concurrent.futures import ThreadPoolExecutor, as_completed

API_KEY = os.environ.get("SCAVIO_API_KEY", "your_scavio_api_key")
ENDPOINT = "https://api.scavio.dev/api/v1/search"

def search(platform: str, query: str) -> list[dict]:
    r = requests.post(ENDPOINT, headers={"x-api-key": API_KEY},
                      json={"platform": platform, "query": query, "marketplace": "US"})
    r.raise_for_status()
    return r.json().get("products", [])

def compare(query: str) -> list[dict]:
    with ThreadPoolExecutor(max_workers=2) as ex:
        futs = {ex.submit(search, p, query): p for p in ["amazon", "walmart"]}
        all_items = []
        for f in as_completed(futs):
            src = futs[f]
            for p in f.result()[:5]:
                price_str = p.get("price", "")
                price = float(price_str.replace("$", "").replace(",", "")) if price_str else None
                all_items.append({"source": src, "price": price, "raw": price_str, "title": p.get("title", "")})
    return sorted(all_items, key=lambda x: x["price"] or float("inf"))

if __name__ == "__main__":
    for o in compare("Sony WH-1000XM5")[:6]:
        print(f"{o['source']:<10} {o['raw']:<10} {o['title'][:50]}")

JavaScript 示例

JavaScript
const API_KEY = process.env.SCAVIO_API_KEY || "your_scavio_api_key";
const ENDPOINT = "https://api.scavio.dev/api/v1/search";

async function searchPlatform(platform, query) {
  const res = await fetch(ENDPOINT, {
    method: "POST",
    headers: { "x-api-key": API_KEY, "Content-Type": "application/json" },
    body: JSON.stringify({ platform, query, marketplace: "US" })
  });
  const data = await res.json();
  return (data.products || []).slice(0, 5).map(p => ({ source: platform, ...p }));
}

async function compare(query) {
  const [amazon, walmart] = await Promise.all([
    searchPlatform("amazon", query),
    searchPlatform("walmart", query)
  ]);
  const all = [...amazon, ...walmart];
  return all.sort((a, b) => {
    const pa = parseFloat((a.price || "").replace(/[$,]/g, "")) || Infinity;
    const pb = parseFloat((b.price || "").replace(/[$,]/g, "")) || Infinity;
    return pa - pb;
  });
}

compare("Sony WH-1000XM5").then(results => {
  results.slice(0, 6).forEach(r => console.log(`${r.source}: ${r.price} — ${r.title?.slice(0, 50)}`));
}).catch(console.error);

预期输出

JSON
amazon     $279.00    Sony WH-1000XM5 Wireless Noise Canceling Headphones
amazon     $289.99    Sony WH-1000XM5 Wireless Headphones (Midnight Black)
walmart    $279.00    Sony WH1000XM5 Bluetooth Headphones
walmart    $299.00    Sony WH-1000XM5 Premium Wireless Headphones

相关教程

  • 如何监控多个 ASIN 的亚马逊价格
  • 如何通过 API 获取沃尔玛产品搜索数据

常见问题

大多数开发者在15到30分钟内完成本教程。您需要一个Scavio API密钥(免费套餐即可)和可用的Python或JavaScript环境。

Python 3.10 或更高版本. requests 和并发.futures (stdlib) 可用. Scavio API 密钥. 对异步或并发编程的基本了解. Scavio API密钥注册即送50个免费积分。

可以。免费套餐注册即送50个积分,完全足够完成本教程并构建一个可运行的原型解决方案。

Scavio提供原生LangChain包(langchain-scavio)、MCP服务器以及适用于任何HTTP客户端的REST API。本教程使用 the raw REST API, 但您可以根据需要适配您选择的框架。

相关资源

Best Of

Google I/O 2026 AI模式变化后最佳搜索API

Read more
Glossary

搜索 API 供应商格局(2026)

Read more
Best Of

2026 年最佳 SERP API 提供商按价格排名

Read more
Comparison

Brave Search API vs Scavio

Read more
Solution

从 Brave Search API 迁移到 Scavio 获得更好覆盖

Read more
Use Case

n8n 搜索数据增强工作流

Read more

开始构建

使用 Python 构建一个跨平台价格比较工具,通过 Scavio API 查询亚马逊和沃尔玛,并返回任何产品的最佳价格。

获取免费API密钥阅读文档
ScavioScavio

面向AI智能体的实时搜索API。搜索所有平台,不仅仅是Google。

产品

  • 功能
  • 定价
  • 控制台
  • 联盟计划

开发者

  • 文档
  • API参考
  • 快速开始
  • MCP集成
  • Python SDK

替代方案

  • Tavily替代方案
  • SerpAPI替代方案
  • Firecrawl替代方案
  • Exa替代方案

工具

  • JSON格式化
  • cURL转代码
  • Token计数器
  • 全部工具

© 2026 Scavio. 保留所有权利。

Featured on TAAFT
服务条款隐私政策