Extraer un precio
Los precios en internet cambian sin avisar y cada tienda los esconde en un rincón distinto del HTML. Esta API de extracción de precios abre la página de un producto, identifica el precio que realmente vería un comprador y lo devuelve como JSON estructurado, listo para una hoja de cálculo, un sistema de reprecio o una base de datos.
Ejecútela online
Ejecute esto en nuestros servidores con su cuenta. Las herramientas gratuitas corren en su navegador; esta cobra de su saldo del KIT según el precio de arriba.
Por qué un precio no es solo un número
Rara vez el precio es un dato simple. Las páginas combinan un precio tachado con uno rebajado, esconden el total real detrás de un selector de moneda o pintan la cifra con JavaScript después de que la página terminó de cargar. Quien haya intentado sacar un precio con una expresión regular sobre el HTML crudo sabe lo rápido que eso se rompe apenas la tienda cambia su plantilla. El endpoint price-extract se diseñó justo para ese desorden: renderiza la página como lo haría un navegador y aísla el precio sobre el que un comprador real actuaría.
Qué se envía y qué se recibe
Se envían una o varias URL de producto a POST /web/price-extract. Cada tarea corre de forma asíncrona y devuelve un task_id de inmediato, así que la integración nunca queda esperando a que cargue una página lenta. Al terminar, se obtiene el precio vigente, la moneda y, cuando la página lo expone, el precio original y el descuento aplicado, entregados por webhook firmado o mediante un enlace firmado válido por 24 horas.
Quién necesita esto en la práctica
Tiendas que vigilan los precios de la competencia, marketplaces que validan los precios que ingresan sus vendedores, sitios de afiliados que mantienen sus listados honestos y equipos de finanzas que siguen los costos de proveedores chocan con el mismo muro: los precios cambian todo el tiempo y revisarlos a mano no escala. Este endpoint reemplaza a la persona que abría cuarenta pestañas cada mañana por una sola llamada a la API que se puede programar con la frecuencia que el negocio necesite.
Una nota breve sobre el desorden de los precios
El marcado estructurado de precios existe desde hace años gracias a schema.org y las etiquetas Open Graph, y cuando una página lo publica correctamente la extracción es rápida y precisa. En la práctica, buena parte de las tiendas omite ese marcado, lo publica mal o lo sobrescribe visualmente con precios de promoción que los metadatos nunca reflejan, por lo que confiar solo en el marcado deja huecos que un renderizado completo de la página cierra.
Cómo encaja en un flujo automatizado
Como cada solicitud se cobra únicamente cuando tiene éxito —tres reintentos automáticos y luego un error claro sin cargo— se puede integrar este endpoint en un monitoreo nocturno o en una consulta de precio bajo demanda sin preocuparse por pagar páginas que no cargan. Combinado con un receptor de webhooks, todo el ciclo de seguimiento de precios corre sin intervención humana.
Qué puede hacer con ella
Monitoreo de precios de la competencia
Un equipo de e-commerce carga cada mañana una lista de URL de productos rivales y ajusta sus propias reglas de precio según los resultados.
Auditoría de listados en marketplaces
Un marketplace verifica que el precio que un vendedor externo cargó coincida con el que realmente se muestra en su propia tienda.
Exactitud de contenido de afiliados
Un blog de ofertas actualiza automáticamente los precios mostrados en artículos publicados en lugar de dejar cifras vencidas durante semanas.
Seguimiento de costos de compra
Un equipo de compras vigila las páginas de catálogo de sus proveedores para detectar aumentos de precio antes de que llegue la próxima factura.
Preguntas frecuentes
¿Cómo distingue esta api de extraer precios de una web entre el precio de lista y el de oferta?
Devuelve el precio vigente que pagaría un comprador y, por separado, informa el precio original y el descuento cuando la página expone esa información.
¿Existe un plan gratuito para la API de extracción de precios?
No hay capa gratuita: las capas gratis se abusan y ralentizan a todos. El acceso funciona con un saldo prepago de ForHosting KIT: se recarga desde $10.00 (no caduca) y cada solicitud se cobra a su precio publicado, así que una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens ni créditos inventados, y una tarea fallida no se cobra.
¿Cuánto cuesta la API de extracción de precios?
Cuesta 0.046 dólares por solicitud más 0.015 dólares por URL procesada, y solo se cobra cuando la tarea se completa con éxito.
¿Puedo enviar varias URL de producto en una sola solicitud?
Sí, se pueden agrupar varias URL en una misma tarea y cada una se factura por separado según la tarifa por URL.
¿Qué pasa si una página de producto no carga?
La tarea reintenta automáticamente hasta tres veces; si sigue fallando, se recibe un error claro y no se cobra nada.
¿Cómo recibo el resultado, por webhook o consultando?
El resultado llega por webhook firmado, que es lo recomendado, o mediante un enlace firmado válido durante 24 horas.
¿Funciona en páginas que cargan el precio con JavaScript?
Sí, la página se renderiza antes de extraer los datos, así que los precios que se inyectan dinámicamente después de la carga se capturan correctamente.
¿Los datos de precios que extraigo se usan para entrenar algún modelo?
No. Los datos se eliminan al terminar el período de retención y nunca se usan para entrenamiento.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/web/price-extract \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://ejemplo.com"}'const res = await fetch("https://api.kit.forhosting.com/web/price-extract", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"url": "https://ejemplo.com"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/price-extract",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"url": "https://ejemplo.com"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/price-extract", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"url":"https://ejemplo.com"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"url":"https://ejemplo.com"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/price-extract", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"url": "https://ejemplo.com"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.price_extract",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
timeout_sec | 30 |
max_crawl_pages | 25 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
422 | task_failed | La tarea falló tras 3 reintentos. No se cobra. |