[ HRVST ]
// referencia

API Reference

La API de Hrvst te permite enviar trabajos de scraping, consultar su estado y descargar resultados de forma programática. Todos los endpoints devuelven JSON. Base URL: https://hrvst.donostia.ai

Quick Start

Extrae datos en 4 pasos:

01 Crea una API key en tu cuenta

Ve a /api-keys y genera una nueva clave. Tendrá el formato hv_ + 64 caracteres hex.

02 Envía un trabajo de scraping
curl -X POST https://hrvst.donostia.ai/api/jobs \
  -H "Authorization: Bearer hv_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "scraperSlug": "google-maps",
    "name": "Cafes Barcelona",
    "params": {
      "query": "cafes in Barcelona",
      "limit": 20,
      "language": "en",
      "country": "ES"
    }
  }'
03 Espera a que termine (polling)

Consulta el estado cada pocos segundos hasta que status sea COMPLETED, FAILED o CANCELLED.

# Repeat until status != PENDING and != PROCESSING
curl https://hrvst.donostia.ai/api/jobs/JOB_ID \
  -H "Authorization: Bearer hv_your_api_key"
04 Descarga los resultados

Los resultados están en el campo results del objeto job. También puedes descargarlos como CSV o JSON:

# CSV
curl "https://hrvst.donostia.ai/jobs/JOB_ID/export?format=csv" \
  -H "Authorization: Bearer hv_your_api_key" -o results.csv

# JSON
curl "https://hrvst.donostia.ai/jobs/JOB_ID/export?format=json" \
  -H "Authorization: Bearer hv_your_api_key" -o results.json

Authentication

Todos los endpoints requieren una API key válida. Genera una desde tu cuenta.

Envía la clave en el header Authorization:

Authorization: Bearer hv_your_api_key_here

Las API keys tienen el formato hv_ + 64 caracteres hex. Requieren verificación de email para funcionar.

⚠ Las API keys dan acceso completo a tu cuenta. No las compartas ni las incluyas en código público.

Créditos

Hrvst es de pago por uso. Compras créditos y los gastas en trabajos. Los créditos no caducan.

ScraperCosteUnidad
google-maps3 créditospor registro
google-maps-reviews2 créditospor reseña
google-search1 créditopor resultado
emails-contacts2 créditospor contacto
amazon-products3 créditospor producto
amazon-reviews2 créditospor reseña
hrvst-agentvariableal desbloquear

Las cuentas nuevas reciben 100 créditos gratis. Los primeros 2 desbloqueos de hrvst-agent son siempre gratuitos.

Los créditos se descuentan cuando el trabajo completa, no al crearlo. Los trabajos fallidos no consumen créditos.

Errores

Todos los errores tienen el mismo formato:

{ "error": "error description" }
StatusSignificado
400Bad request — campo faltante o inválido
401Unauthorized — API key faltante o inválida
402Payment required — créditos insuficientes
404Not found — el trabajo no existe o pertenece a otro usuario
500Server error — inténtalo de nuevo

Rate Limits

Los límites se aplican por usuario autenticado (sesión o API key).

LímiteDescripción
50 trabajos / horaMáximo 50 trabajos creados por usuario en los últimos 60 minutos. Los trabajos cancelados no cuentan.
10 logins / minLímite de intentos de inicio de sesión por IP para prevenir ataques de fuerza bruta.

Cuando se supera el límite de trabajos la API devuelve 429 Too Many Requests con el mensaje "Job limit exceeded. Maximum 50 jobs per hour."

POST/api/jobs

Crea y encola un nuevo trabajo de scraping. Responde inmediatamente — consulta el ID del trabajo para ver el progreso.

Campos del body

CampoTipoDescripción
scraperSlugstringRequerido. Uno de los slugs de scrapers listados abajo.
namestringRequerido. Etiqueta para este trabajo (visible en el dashboard).
paramsobjectRequerido. Parámetros específicos del scraper — ver referencia abajo.

Respuesta — 201 Created

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "userId": "user-id",
  "scraperSlug": "google-maps",
  "status": "PENDING",
  "params": { "query": "cafes in Barcelona", "limit": 20 },
  "results": null,
  "creditsUsed": 0,
  "error": null,
  "createdAt": "2026-03-14T10:30:45Z",
  "updatedAt": "2026-03-14T10:30:45Z",
  "completedAt": null,
  "unlockCost": 0,
  "unlockedAt": null,
  "freeUnlock": false
}

GET/api/jobs

Lista todos los trabajos del usuario autenticado, del más reciente al más antiguo.

Query params

ParamDefaultDescripción
page1Número de página (base 1).
limit20Resultados por página. Máximo 100.
{
  "jobs": [ ...job objects... ],
  "total": 42,
  "page": 1,
  "limit": 20,
  "total_returned": 20
}

GET/api/jobs/:id

Recupera un trabajo concreto. Usa este endpoint para hacer polling hasta que finalice.

curl https://hrvst.donostia.ai/api/jobs/550e8400-... \
  -H "Authorization: Bearer hv_your_api_key"

Transición de estado: PENDING → PROCESSING → COMPLETED | FAILED | CANCELLED

Para hrvst-agent: el campo resultsPreview contiene 5 registros enmascarados. Llama a POST /api/jobs/:id/unlock para obtener resultsFull.

DELETE/api/jobs/:id

Cancela y elimina un trabajo. Los trabajos en curso se marcan como cancelados antes de eliminarse.

{ "status": "deleted" }

GET/jobs/:id/export

Descarga los resultados de un trabajo completado como CSV o JSON. Solo funciona con trabajos en estado COMPLETED.

Query params

ParamValoresDescripción
formatcsv · jsonFormato de descarga. Default: json
# Download as CSV
curl "https://hrvst.donostia.ai/jobs/JOB_ID/export?format=csv" \
  -H "Authorization: Bearer hv_your_api_key" \
  -o results.csv

# Download as JSON
curl "https://hrvst.donostia.ai/jobs/JOB_ID/export?format=json" \
  -H "Authorization: Bearer hv_your_api_key" \
  -o results.json

POST/api/jobs/:id/unlock

Desbloquea los resultados completos de un trabajo hrvst-agent. Los primeros 2 desbloqueos por cuenta son gratuitos. Solo funciona con trabajos COMPLETED.

curl -X POST https://hrvst.donostia.ai/api/jobs/JOB_ID/unlock \
  -H "Authorization: Bearer hv_your_api_key"

# Response
{ "resultsFullURL": "/jobs/JOB_ID/export?format=json" }

Después de desbloquear, el campo resultsFull en GET /api/jobs/:id contiene los datos completos sin enmascarar.

GET/api/scrapers

Devuelve todos los scrapers disponibles con sus slugs, créditos y campos de salida.

curl https://hrvst.donostia.ai/api/scrapers \
  -H "Authorization: Bearer hv_your_api_key"

GET/api/user/me

Devuelve el perfil y saldo de créditos del usuario autenticado.

{
  "id": "user-id",
  "email": "you@email.com",
  "name": "Your Name",
  "credits": 500,
  "freeSearchesUsed": 1
}

Referencia de Scrapers

google-maps 3 créditos / por registro mín. 10 créditos

Extrae negocios de Google Maps con nombre, dirección, teléfono, web, redes sociales, valoración y coordenadas.

Params

CampoRequeridoDescripción
queryTérmino de búsqueda, ej. "restaurantes en Madrid"
limitnoNúmero de resultados. Default: 20
languagenoCódigo de idioma (es, en, fr…). Default: en
countrynoCódigo de país (ES, US, MX…)

Campos de salida

name · address · phone · website · rating · reviewsCount · category · latitude · longitude · placeId · businessStatus · email1 · email2 · facebook · instagram · linkedin · twitter

google-maps-reviews 2 créditos / por reseña mín. 5 créditos

Extrae reseñas de clientes de cualquier negocio en Google Maps. Usa el placeId de un trabajo google-maps.

CampoRequeridoDescripción
placeIdGoogle Maps Place ID
limitnoNúmero de reseñas. Default: 50
languagenoCódigo de idioma. Default: en
sortBynonewest · oldest · most_relevant · highest_rating · lowest_rating

Salida: reviewId · authorName · rating · text · publishedAt · likesCount · ownerResponse

emails-contacts 2 créditos / por contacto mín. 5 créditos

Rastrear un sitio web y extraer todos los emails, teléfonos y perfiles sociales encontrados.

CampoRequeridoDescripción
urlURL del sitio web a rastrear
crawlDepthnoProfundidad de rastreo (1–3). Default: 1

Salida: email · name · title · phone · linkedIn · twitter · facebook · instagram · sourceUrl

amazon-products 3 créditos / por producto mín. 10 créditos

Buscar en Amazon y extraer productos con precios, valoraciones, ASIN e info del vendedor.

CampoRequeridoDescripción
queryConsulta de búsqueda de productos
limitnoNúmero de productos. Default: 20
countrynoMarketplace Amazon (US, UK, DE, ES, MX…). Default: US

Salida: asin · title · url · price · currency · originalPrice · discount · rating · reviewsCount · seller · brand · isPrime · isBestSeller · availability

amazon-reviews 2 créditos / por reseña mín. 5 créditos

Extraer reseñas de productos Amazon. Usa el asin de un trabajo amazon-products.

CampoRequeridoDescripción
asinAmazon ASIN
limitnoNúmero de reseñas. Default: 50
countrynoPaís del marketplace. Default: US
sortBynorecent · helpful · critical · positive
filterByStarnoall · 1star · 2star · 3star · 4star · 5star

Salida: reviewId · title · text · rating · authorName · publishedAt · isVerified · helpfulCount · country

hrvst-agent coste variable al desbloquear

Agente IA que acepta un prompt en lenguaje natural y determina qué extraer y cómo. Los resultados están enmascarados hasta desbloquear. Los primeros 2 desbloqueos son gratuitos.

CampoRequeridoDescripción
promptDescripción en lenguaje natural de lo que quieres extraer
modelnoModelo IA: spark-1-mini (default) · spark-1-pro
maxCreditsnoLímite máximo de créditos a consumir. Default: saldo disponible

Ejemplo completo con hrvst-agent

# 1. Create agent job
curl -X POST https://hrvst.donostia.ai/api/jobs \
  -H "Authorization: Bearer hv_..." \
  -H "Content-Type: application/json" \
  -d '{"scraperSlug":"hrvst-agent","name":"Hotels Berlin","params":{"prompt":"Top 30 hotels in Berlin with price, email and website"}}'

# 2. Wait for completion (polling)
curl https://hrvst.donostia.ai/api/jobs/JOB_ID \
  -H "Authorization: Bearer hv_..."
# → "status": "COMPLETED", "resultsPreview": [5 masked records]

# 3. Unlock full results
curl -X POST https://hrvst.donostia.ai/api/jobs/JOB_ID/unlock \
  -H "Authorization: Bearer hv_..."

# 4. Download results
curl "https://hrvst.donostia.ai/jobs/JOB_ID/export?format=csv" \
  -H "Authorization: Bearer hv_..." -o hotels_berlin.csv
// listo para empezar

100 créditos gratis al registrarte. Sin tarjeta de crédito.

crear cuenta gratis →