Walmart est la deuxième plus grande plateforme de commerce électronique aux États-Unis, ce qui la rend essentielle pour les outils de comparaison de prix, l'analyse du commerce de détail et la veille concurrentielle. Le scraping direct de Walmart est activement bloqué. L'API Scavio fournit un endpoint de recherche Walmart stable qui renvoie des listes de produits comprenant le titre, le prix, la note, le nombre d'avis, les informations sur le vendeur et la disponibilité. Ce tutoriel montre comment rechercher des produits, extraire les données de prix et construire une simple liste de produits.
Prérequis
- Python 3.8 ou supérieur
- bibliothèque requests installée
- Une clé API Scavio
- Familiarité avec les appels API REST et JSON
Parcours
Étape 1: Envoyer une recherche de produit Walmart
POST sur l'endpoint Scavio avec la plateforme walmart et votre requête de recherche. La réponse contient une liste de résultats de produits.
def search_walmart(query: str) -> dict:
response = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "walmart", "query": query}
)
response.raise_for_status()
return response.json()Étape 2: Extraire les listes de produits
La clé products contient une liste d'objets produit. Chacun possède un titre, un prix, une note, des avis et une disponibilité.
data = search_walmart("wireless headphones")
products = data.get("products", [])
print(f"Found {len(products)} products")Étape 3: Trier par prix
Analyser le champ prix et trier les produits pour trouver les options les moins chères. Les prix peuvent inclure des symboles monétaires, donc supprimez-les avant la conversion.
def parse_price(p: str) -> float:
return float(p.replace("$", "").replace(",", "")) if p else float("inf")
sorted_products = sorted(products, key=lambda x: parse_price(x.get("price", "")))
for p in sorted_products[:5]:
print(f"{p['title'][:50]} — {p['price']}")Étape 4: Enregistrer les résultats au format JSON
Persister les données produit dans un fichier JSON pour un traitement ou une comparaison ultérieurs.
import json
with open("walmart_results.json", "w") as f:
json.dump(products, f, indent=2)
print("Saved to walmart_results.json")Exemple Python
import os
import json
import requests
API_KEY = os.environ.get("SCAVIO_API_KEY", "your_scavio_api_key")
ENDPOINT = "https://api.scavio.dev/api/v1/search"
def search_walmart(query: str) -> list[dict]:
r = requests.post(ENDPOINT, headers={"x-api-key": API_KEY},
json={"platform": "walmart", "query": query})
r.raise_for_status()
return r.json().get("products", [])
def cheapest(products: list[dict], n: int = 5) -> list[dict]:
def price(p):
s = p.get("price", "")
return float(s.replace("$", "").replace(",", "")) if s else float("inf")
return sorted(products, key=price)[:n]
if __name__ == "__main__":
products = search_walmart("wireless headphones")
for p in cheapest(products):
print(f"{p['title'][:50]} — {p.get('price', 'N/A')} ({p.get('rating', 'N/A')} stars)")Exemple JavaScript
const API_KEY = process.env.SCAVIO_API_KEY || "your_scavio_api_key";
const ENDPOINT = "https://api.scavio.dev/api/v1/search";
async function searchWalmart(query) {
const res = await fetch(ENDPOINT, {
method: "POST",
headers: { "x-api-key": API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ platform: "walmart", query })
});
const data = await res.json();
return data.products || [];
}
function parsePrice(str) {
return str ? parseFloat(str.replace(/[$,]/g, "")) : Infinity;
}
async function main() {
const products = await searchWalmart("wireless headphones");
const sorted = products.sort((a, b) => parsePrice(a.price) - parsePrice(b.price));
sorted.slice(0, 5).forEach(p => console.log(`${p.title.slice(0, 50)} — ${p.price}`));
}
main().catch(console.error);Sortie attendue
{
"products": [
{
"title": "Sony WH-1000XM5 Wireless Headphones",
"price": "$279.00",
"rating": "4.8",
"reviews_count": 12847,
"availability": "In Stock",
"seller": "Walmart.com",
"url": "https://walmart.com/ip/sony-wh1000xm5/..."
}
]
}