Overview
This workflow searches Amazon for specific product categories or keywords on a daily basis and alerts you when new products appear that were not in previous results. It is designed for e-commerce teams monitoring competitor launches, procurement teams watching for new suppliers, and product researchers tracking market entries.
Trigger
Cron schedule (daily at 7 AM UTC)
Schedule
Runs daily at 7 AM UTC
Workflow Steps
Define search criteria
Load the list of Amazon search queries and any filters such as price range or category.
Search Amazon
Call the Scavio API with platform amazon for each query to fetch current product listings.
Compare with known products
Check each product ASIN or title against the database of previously seen products.
Flag new entries
Mark products that have not been seen before as new and record their details.
Send alert
Push a notification with the new product details including title, price, rating, and link.
Python Implementation
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()JavaScript Implementation
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();Platforms Used
Amazon
Product search with prices, ratings, and reviews