Aperçu
Ce workflow recherche Amazon quotidiennement pour des catégories ou mots-clés spécifiques et vous alerte lorsque de nouveaux produits apparaissent qui n'étaient pas dans les résultats précédents. Il est conçu pour les équipes e-commerce surveillant les lancements concurrents, les équipes d'approvisionnement suivant les nouveaux fournisseurs et les chercheurs de produits suivant les entrées sur le marché.
Déclencheur
Planification cron (quotidien à 7h UTC)
Planification
S'exécute quotidiennement à 7h UTC
Étapes du workflow
Définir les critères de recherche
Charger la liste des requêtes de recherche Amazon et tous les filtres tels que la fourchette de prix ou la catégorie.
Rechercher sur Amazon
Appeler l'API Scavio avec la plateforme amazon pour chaque requête afin de récupérer les listes de produits actuelles.
Comparer avec les produits connus
Vérifier chaque ASIN ou titre de produit par rapport à la base de données des produits déjà vus.
Marquer les nouvelles entrées
Marquer comme nouveaux les produits jamais vus auparavant et enregistrer leurs détails.
Envoyer une alerte
Pousser une notification avec les détails du nouveau produit, y compris le titre, le prix, la note et le lien.
Implémentation Python
import requests
import json
from pathlib import Path
API_KEY = "your_scavio_api_key"
def search_amazon(query: str) -> list[dict]:
res = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "amazon", "query": query},
timeout=15,
)
res.raise_for_status()
return res.json().get("organic", [])
def run():
queries = [
"wireless earbuds 2026",
"portable power station camping",
]
seen_path = Path("seen_amazon.json")
seen = set(json.loads(seen_path.read_text())) if seen_path.exists() else set()
new_products = []
for query in queries:
results = search_amazon(query)
for p in results:
asin = p.get("asin") or p.get("link", "")
if asin and asin not in seen:
new_products.append({
"query": query,
"title": p.get("title", ""),
"price": p.get("price"),
"rating": p.get("rating"),
"link": p.get("link", ""),
})
seen.add(asin)
seen_path.write_text(json.dumps(list(seen)))
if new_products:
print(f"New products found: {len(new_products)}")
for np in new_products:
print(f" {np['title']} - {np.get('price', 'N/A')}")
else:
print("No new products detected")
if __name__ == "__main__":
run()Implémentation JavaScript
const API_KEY = "your_scavio_api_key";
async function searchAmazon(query) {
const res = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST",
headers: {
"x-api-key": API_KEY,
"content-type": "application/json",
},
body: JSON.stringify({ platform: "amazon", query }),
});
if (!res.ok) throw new Error(`scavio ${res.status}`);
const data = await res.json();
return data.organic ?? [];
}
async function run() {
const fs = await import("fs/promises");
const queries = [
"wireless earbuds 2026",
"portable power station camping",
];
let seen = new Set();
try {
seen = new Set(JSON.parse(await fs.readFile("seen_amazon.json", "utf8")));
} catch {}
const newProducts = [];
for (const query of queries) {
const results = await searchAmazon(query);
for (const p of results) {
const asin = p.asin ?? p.link ?? "";
if (asin && !seen.has(asin)) {
newProducts.push({
query,
title: p.title ?? "",
price: p.price,
rating: p.rating,
link: p.link ?? "",
});
seen.add(asin);
}
}
}
await fs.writeFile("seen_amazon.json", JSON.stringify([...seen]));
if (newProducts.length) {
console.log(`New products found: ${newProducts.length}`);
for (const np of newProducts) {
console.log(` ${np.title} - ${np.price ?? "N/A"}`);
}
} else {
console.log("No new products detected");
}
}
run();Plateformes utilisées
Amazon
Recherche de produits avec prix, notes et avis