Los productos que se vuelven virales en TikTok a menudo experimentan cambios en el precio y el inventario de Amazon en cuestión de horas. Este rastreador observa los hashtags de TikTok en busca de menciones de productos, los relaciona con listados de Amazon y alerta sobre movimientos de precios. Cada cheque de TikTok cuesta $0,005 y cada búsqueda en Amazon cuesta $0,005, lo que hace que un escaneo diario de 20 productos sea $0,20.
Requisitos previos
- Python 3.8+
- solicita biblioteca
- Una clave API de Scavio de scavio.dev
- Apunte a hashtags o creadores para monitorear
Guia paso a paso
Paso 1: Escanee los hashtags de TikTok en busca de menciones de productos
Extraiga vídeos recientes de hashtags de productos de tendencia y extraiga nombres de productos.
import os, requests, re, json
API_KEY = os.environ['SCAVIO_API_KEY']
TT_H = {'Authorization': f'Bearer {API_KEY}', 'Content-Type': 'application/json'}
SH = {'x-api-key': API_KEY, 'Content-Type': 'application/json'}
def scan_hashtag(tag):
data = requests.post('https://api.scavio.dev/api/v1/tiktok/hashtag/videos',
headers=TT_H, json={'name': tag}).json()
videos = data.get('videos', data.get('data', {}).get('videos', []))[:20]
products = []
for v in videos:
desc = v.get('desc', v.get('description', ''))
if any(w in desc.lower() for w in ['link in bio', 'amazon', 'must have', 'under $']):
products.append({'desc': desc[:120], 'views': v.get('stats', {}).get('playCount', 0),
'author': v.get('author', {}).get('uniqueId', 'unknown')})
print(f'#{tag}: {len(videos)} videos, {len(products)} product mentions')
return products
products = scan_hashtag('amazonfinds')
for p in products[:3]: print(f' {p["desc"][:60]}... ({p["views"]:,} views)')Paso 2: Extraiga nombres de productos y busque en Amazon
Analice los nombres de productos de las descripciones de TikTok y encuentre listados de Amazon que coincidan.
def extract_product(desc):
patterns = [r'([A-Z][\w\s]+(?:Pro|Max|Plus|Mini|Ultra)?)', r'the ([\w\s]+?) (?:is|from|on)']
for p in patterns:
m = re.search(p, desc)
if m: return m.group(1).strip()[:50]
words = desc.split()[:6]
return ' '.join(w for w in words if not w.startswith('#'))[:50]
def search_amazon(product_name):
data = requests.post('https://api.scavio.dev/api/v1/search',
headers=SH, json={'query': product_name, 'platform': 'amazon', 'country_code': 'us'}).json()
results = data.get('organic_results', data.get('shopping_results', []))[:3]
return [{'title': r.get('title', '')[:60], 'price': r.get('price', 'N/A'),
'rating': r.get('rating', 'N/A'), 'link': r.get('link', '')}
for r in results]
for p in products[:3]:
name = extract_product(p['desc'])
listings = search_amazon(name)
print(f'\n TikTok: {name}')
for l in listings: print(f' Amazon: {l["title"][:50]} - {l["price"]} ({l["rating"]})')Paso 3: Seguimiento de los cambios de precios a lo largo del tiempo
Almacene precios y detecte movimientos entre escaneos.
import json
from datetime import datetime
DB_FILE = 'tiktok_amazon_prices.json'
def load_db():
try:
with open(DB_FILE) as f: return json.load(f)
except: return {}
def save_db(db):
with open(DB_FILE, 'w') as f: json.dump(db, f, indent=2)
def track_price(product_name, amazon_listing):
db = load_db()
key = product_name.lower().strip()
price_str = str(amazon_listing.get('price', 'N/A')).replace('$', '').replace(',', '')
try: price = float(price_str)
except: return None
now = datetime.now().isoformat()
if key not in db: db[key] = []
prev = db[key][-1]['price'] if db[key] else price
change = ((price - prev) / prev * 100) if prev else 0
db[key].append({'price': price, 'date': now})
save_db(db)
if abs(change) > 5:
print(f' ALERT: {product_name} price moved {change:+.1f}% (${prev:.2f} -> ${price:.2f})')
return change
track_price('Stanley Cup', {'price': '$34.99'})
track_price('Stanley Cup', {'price': '$39.99'})Paso 4: Ejecutar todo el proceso de seguimiento
Combine escaneo de hashtags, coincidencia de Amazon y seguimiento de precios.
def run_tracker(hashtags):
all_alerts = []
total_cost = 0
for tag in hashtags:
products = scan_hashtag(tag)
total_cost += 0.005 # 1 TikTok API call
for p in products[:5]: # Top 5 per hashtag
name = extract_product(p['desc'])
listings = search_amazon(name)
total_cost += 0.005 # 1 Amazon search
for l in listings[:1]:
change = track_price(name, l)
if change and abs(change) > 5:
all_alerts.append({'product': name, 'change': change,
'price': l['price'], 'views': p['views']})
print(f'\nScanned {len(hashtags)} hashtags. Cost: ${total_cost:.3f}')
print(f'Price alerts: {len(all_alerts)}')
for a in all_alerts:
print(f' {a["product"]}: {a["change"]:+.1f}% -> {a["price"]} ({a["views"]:,} TikTok views)')
return all_alerts
run_tracker(['amazonfinds', 'tiktokmademebuyit'])Ejemplo en Python
import os, requests
API_KEY = os.environ['SCAVIO_API_KEY']
TT_H = {'Authorization': f'Bearer {API_KEY}', 'Content-Type': 'application/json'}
SH = {'x-api-key': API_KEY, 'Content-Type': 'application/json'}
def track(hashtag):
vids = requests.post('https://api.scavio.dev/api/v1/tiktok/hashtag/videos',
headers=TT_H, json={'name': hashtag}).json()
videos = vids.get('videos', vids.get('data', {}).get('videos', []))[:10]
for v in videos[:3]:
desc = v.get('desc', '')[:50]
amz = requests.post('https://api.scavio.dev/api/v1/search',
headers=SH, json={'query': desc, 'platform': 'amazon', 'country_code': 'us'}).json()
top = (amz.get('organic_results') or [{}])[0]
print(f'TikTok: {desc}\n Amazon: {top.get("title", "N/A")[:40]} - {top.get("price", "N/A")}')
track('amazonfinds')Ejemplo en JavaScript
const API_KEY = process.env.SCAVIO_API_KEY;
const TH = { 'Authorization': `Bearer ${API_KEY}`, 'Content-Type': 'application/json' };
const SH = { 'x-api-key': API_KEY, 'Content-Type': 'application/json' };
async function track(hashtag) {
const vids = await fetch('https://api.scavio.dev/api/v1/tiktok/hashtag/videos', {
method: 'POST', headers: TH, body: JSON.stringify({ name: hashtag })
}).then(r => r.json());
const videos = (vids.videos || vids.data?.videos || []).slice(0, 3);
for (const v of videos) {
const desc = (v.desc || '').slice(0, 50);
const amz = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: SH,
body: JSON.stringify({ query: desc, platform: 'amazon', country_code: 'us' })
}).then(r => r.json());
const top = (amz.organic_results || [{}])[0];
console.log(`TikTok: ${desc}\n Amazon: ${(top.title||'N/A').slice(0,40)} - ${top.price||'N/A'}`);
}
}
track('amazonfinds').catch(console.error);Salida esperada
#amazonfinds: 20 videos, 8 product mentions
Stanley Quencher H2.0 FlowState Tumbler... (2,400,000 views)
Dyson Airwrap Complete Long... (1,800,000 views)
TikTok: Stanley Quencher
Amazon: Stanley Quencher H2.0 FlowState Tumbler 40oz - $34.99 (4.7)
ALERT: Stanley Quencher price moved +14.3% ($30.62 -> $34.99)
Scanned 2 hashtags. Cost: $0.060
Price alerts: 1
Stanley Quencher: +14.3% -> $34.99 (2,400,000 TikTok views)