La API de administración de Shopify es por tienda y requiere OAuth, lo cual es inútil para el descubrimiento de productos entre tiendas. Google indexa agresivamente las páginas de productos de Shopify con marcado de esquema de producto, lo que significa que puedes descubrir productos de Shopify a escala a través de Google SERP. Este tutorial muestra cómo usar Scavio para encontrar productos Shopify en todas las tiendas.
Requisitos previos
- Python 3.8+
- Una clave API de Scavio
- Una categoría de producto objetivo o un término de búsqueda
Guia paso a paso
Paso 1: Cree una consulta de Google dirigida a Shopify
Utilice operadores de sitio y patrones de URL específicos de Shopify.
query = 'site:myshopify.com OR "powered by shopify" wireless earbuds under $50'Paso 2: Llame a Scavio para obtener resultados estructurados
Scavio devuelve datos del esquema del producto cuando están disponibles.
import requests, os
def shopify_search(query):
r = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': os.environ['SCAVIO_API_KEY']},
json={'query': query, 'num_results': 30})
return r.json().get('organic_results', [])Paso 3: Filtrar a tiendas Shopify
Mantén los resultados que provienen de las tiendas Shopify reales.
def is_shopify(url):
return 'myshopify.com' in url or any(m in url for m in ['/products/', '/collections/'])
shopify_results = [r for r in shopify_search(query) if is_shopify(r['link'])]Paso 4: Extraer datos del producto
Para cada URL de Shopify, busca la página y analiza los datos estructurados.
def extract_product(url):
r = requests.post('https://api.scavio.dev/api/v1/extract',
headers={'x-api-key': os.environ['SCAVIO_API_KEY']},
json={'url': url, 'render_js': True, 'extract_schema': 'Product'})
return r.json().get('schema', {})Paso 5: Armar catálogo
Cree un catálogo de productos normalizado a partir de los datos extraídos.
catalog = []
for r in shopify_results[:10]:
product = extract_product(r['link'])
if product:
catalog.append({
'title': product.get('name'),
'price': product.get('offers', {}).get('price'),
'store': r['link'].split('/')[2],
'url': r['link']
})
print(catalog)Ejemplo en Python
import os, requests
API_KEY = os.environ['SCAVIO_API_KEY']
def shopify_products(query, limit=10):
r = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY},
json={'query': f'{query} site:myshopify.com OR "powered by shopify"', 'num_results': 30})
results = [o for o in r.json().get('organic_results', []) if '/products/' in o['link']]
catalog = []
for res in results[:limit]:
product = requests.post('https://api.scavio.dev/api/v1/extract',
headers={'x-api-key': API_KEY},
json={'url': res['link'], 'render_js': True, 'extract_schema': 'Product'}).json().get('schema', {})
if product:
catalog.append({'title': product.get('name'), 'price': product.get('offers', {}).get('price'), 'url': res['link']})
return catalog
print(shopify_products('wireless earbuds under 50'))Ejemplo en JavaScript
const API_KEY = process.env.SCAVIO_API_KEY;
async function shopifyProducts(query) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST',
headers: { 'x-api-key': API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ query: `${query} "powered by shopify"`, num_results: 30 })
});
const results = (await r.json()).organic_results.filter(o => o.link.includes('/products/'));
const catalog = [];
for (const res of results.slice(0, 10)) {
const p = await fetch('https://api.scavio.dev/api/v1/extract', {
method: 'POST',
headers: { 'x-api-key': API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ url: res.link, render_js: true, extract_schema: 'Product' })
});
const { schema } = await p.json();
if (schema?.name) catalog.push({ title: schema.name, price: schema.offers?.price, url: res.link });
}
return catalog;
}
console.log(await shopifyProducts('wireless earbuds under 50'));Salida esperada
A list of Shopify products across many stores, normalized with title, price, and URL. Dropshippers and competitive researchers can use this to find winning products without per-store Shopify API keys.