CrawlForge MCP
Extracción1 credit

scrape_template

20 extractores predefinidos: sitios populares, seis bolsas de empleo ATS leídas a través de la API pública documentada de cada plataforma, y APIs gubernamentales sin clave. Sin esquema, sin selectores, sin LLM: pase un nombre de plantilla con una URL o con params. 1 credit por llamada, sin importar cuántos registros vuelvan.

Casos de uso

Datos rápidos de comercio electrónico

Obtenga el precio, la calificación y el stock de un producto de Amazon sin escribir un solo selector.

Agregación de perfiles de desarrolladores

Combine repositorios de GitHub, paquetes de npm y actividad de Stack Overflow en una sola vista de desarrollador.

Monitoreo de redes sociales

Rastree lanzamientos de Product Hunt y Hacker News con un único endpoint por fuente; para Reddit, lea un post con reddit-thread y su árbol de comentarios con reddit_search.

Bolsas de empleo enteras en una sola llamada

Lea todas las vacantes publicadas de la bolsa de Greenhouse, Lever, Ashby, Workable, Recruitee o Teamtailor de una empresa: valores exactos desde la propia API de la plataforma, no extraídos de una página de empleo.

Endpoint

POST/api/v1/tools/scrape_template
Auth Required
1 req/s en el plan Free
1 credit

Parameters

Envíe una `url` o `params`, no ninguna de las dos. list no necesita ninguna y auto siempre necesita una url. Una plantilla de página necesita una url; un conector de API de plataforma toma params, o una URL de bolsa que él mismo resuelve al endpoint de la API.
NameTypeRequiredDefaultDescription
template
stringRequired-
Nombre de la plantilla: una de las 20 plantillas admitidas. Envíe `"auto"` para que la plantilla se elija a partir de la `url`; la respuesta informa el identificador elegido, nunca el literal `"auto"`. Envíe `"list"` para descubrirlas mediante programación.
Example: github-repo
url
stringOptional-
URL a scrapear. Obligatoria salvo que `template` sea `"list"`, o que esté invocando un conector mediante `params`.
Example: https://github.com/mysleekdesigns/crawlforge-mcp
params
objectOptional-
Entradas para un conector que lee una API de plataforma en lugar de una página: el identificador de la bolsa para una bolsa de empleo (`company`), `store` y `collection` para `shopify-collection`, `vin` para `nhtsa-vin`, los propios campos de búsqueda del registro para `npi-provider`. Los extras específicos de cada conector también van aquí: `content: true` de Greenhouse, `details: true` de Workable, `skip`/`limit` de Lever, `per_page`/`offset` de Teamtailor. Si falta una entrada obligatoria, la solicitud se rechaza nombrando el parámetro.
Example: { "company": "stripe" }
timeout
numberOptional15000
Tiempo de espera de la solicitud en milisegundos (5000–60000).
Example: 15000
respect_robots
booleanOptionaltrue
Respeta el robots.txt del sitio de destino. Con el valor `true`, una ruta que robots.txt no permita a `CrawlForge` se rechaza con un 403 antes de descargar nada y no se cobran credits. Póngalo en `false` solo para destinos con los que tenga su propio acuerdo: la respuesta incluye entonces una entrada `warnings` y la anulación queda registrada en su API key.
Example: true

Plantillas: páginas y productos

20 plantillas en tres grupos. Cada una devuelve una forma JSON normalizada y ajustada a su fuente.

amazon-product
Título del producto, precio, calificación, reseñas, estado del stock
shopify-product
Precio exacto, precio comparativo, stock y opciones por variante — leídos del propio JSON de la tienda, de modo que los precios no pueden malinterpretarse ni inventarse. Funciona en cualquier tienda Shopify, incluidos los dominios personalizados. Cuando una tienda rechaza su endpoint JSON (401, 403, 404 o 410), el registro se lee del JSON-LD schema.org de la propia página del producto, marcado source: json-ld y con un aviso; el stock por variante, los precios de comparación y los nombres de las opciones no están en JSON-LD, así que esos campos son null
shopify-collection
Todos los productos de una colección desde el propio products.json de la tienda, con el mismo precio y stock autorizados que shopify-product devuelve para un artículo. 30 por página de forma predeterminada, 250 como máximo
github-repo
Estrellas, forks, lenguaje, último commit, descripción
youtube-video
Título, canal, visualizaciones, me gusta, duración, fecha de publicación
reddit-thread
El registro del post desde el archivo Arctic Shift — id, título, subreddit, autor, puntuación, proporción de votos positivos, número de comentarios, cuerpo, flair, estado de eliminación (reddit.com bloquea el scraping directo). Pase el id a reddit_search con mode "thread" para obtener el árbol de comentarios
hacker-news-front-page
Historias destacadas, puntos y número de comentarios
producthunt-launch
Nombre del producto, lema, categorías, sitio web, número de seguidores y reseñas
stackoverflow-question
Pregunta, votos, respuestas, etiquetas, aceptación
npm-package
Versión, descargas semanales, licencia, dependencias

Plantillas: bolsas de empleo

Seis sistemas de seguimiento de candidatos, leídos cada uno a través del endpoint que esa plataforma documenta para uso público y sin autenticación. Los seis se normalizan sobre una única forma de empleo, así que dos bolsas se unen sin mapeo por fuente — la guía de APIs de bolsas de empleo cubre la forma y el razonamiento.

greenhouse-jobs
La Job Board API. Todas las vacantes publicadas en una solicitud; descripciones opcionales mediante content: true
lever-postings
La Postings API, con equipo, tipo de dedicación y modalidad de trabajo ya separados. Paginación con skip/limit
ashby-jobs
La Public Job Posting API. Departamento, equipo, tipo de contrato y modalidad de trabajo; descripciones opcionales con descriptions: true
workable-jobs
El endpoint público de cuentas. Componentes de la ubicación e indicador de teletrabajo; descripciones opcionales mediante details: true
recruitee-offers
La Careers Site API. Departamento, ubicación, código de tipo de contrato y banda salarial
teamtailor-jobs
El feed RSS documentado del sitio de empleo, leído conservando su espacio de nombres tt:. 100 vacantes salvo que per_page indique otra cosa

Plantillas: APIs gubernamentales

APIs federales de EE. UU. gratuitas y sin clave, documentadas por las agencias que las publican.

nhtsa-vin
Decodificación de VIN a través de la API vPIC de la NHTSA — marca, modelo, año, acabado, carrocería, motor, planta, con el conjunto completo de campos bajo raw. Se aceptan VIN parciales; los códigos de error de vPIC se exponen en lugar de silenciarse
npi-provider
El registro NPPES de los CMS de proveedores sanitarios de EE. UU., consultable por número, nombre, taxonomía o ubicación. Un registro por NPI, sin nada más añadido

Los conectores de lista devuelven muchos registros en una sola llamada

Un conector que lee un endpoint de listado devuelve items y count dentro de data en lugar de un único registro. shopify-collection y los seis conectores de bolsas de empleo funcionan así.

  • Cada registro de empleo lleva los mismos doce campos — id, title, url, location, department, team, employment_type, remote, published_at, updated_at, description, source — y un campo que la plataforma no publica es null, nunca una suposición.
  • Pase el identificador de la bolsa en params, o pase una URL de bolsa y el conector resolverá por sí mismo el endpoint de la API.
  • Greenhouse, Workable y Ashby hacen opcionales las descripciones porque dominan la carga útil: una bolsa grande de Greenhouse pasa de 349 KB a 4,2 MB con content: true, y la bolsa Ashby de 767 vacantes de OpenAI ocupa 5,9 MB con descriptions: true.
  • El costo es de 1 credit fijo por llamada, sin importar cuántos registros vuelvan.
Envíe { "template": "list" } (sin necesidad de url) para obtener la lista completa con el mode de cada entrada: list para un conector que devuelve muchos registros en una sola llamada, entity para uno que devuelve un único registro. Útil para mantener sincronizados los SDK de cliente.

Deliberadamente no publicado

smartrecruiters-postings no está: SmartRecruiters documenta públicamente su Posting API, pero api.smartrecruiters.com/robots.txt lo prohíbe todo para todos los agentes salvo LinkedInBot (verificado el 2026-08-28), y no anulamos robots.txt para alcanzarlo. El endpoint wday/cxs de Workday es el endpoint interno del propio sitio de empleo y no una API pública documentada, así que tampoco lo lee ningún conector. La guía de APIs de bolsas de empleo expone qué más queda fuera del alcance, y por qué.

Ejemplos de solicitud

cURL — github-repo

terminalBash
curl -X POST https://crawlforge.dev/api/v1/tools/scrape_template \
  -H "X-API-Key: cf_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "template": "github-repo",
    "url": "https://github.com/mysleekdesigns/crawlforge-mcp"
  }'

TypeScript — amazon-product

scrapeTemplate.tsTypescript
const response = await fetch('https://crawlforge.dev/api/v1/tools/scrape_template', {
  method: 'POST',
  headers: {
    'X-API-Key': process.env.CRAWLFORGE_API_KEY!,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    template: 'amazon-product',
    url: 'https://www.amazon.com/dp/B08XYZ1234',
    timeout: 20000,
  }),
});

const data = await response.json();
if (data.success) {
  const product = data.data.extracted;
  console.log(product.title, product.price, product.rating);
}

cURL — descubrir plantillas

terminalBash
curl -X POST https://crawlforge.dev/api/v1/tools/scrape_template \
  -H "X-API-Key: cf_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "template": "list" }'

cURL — greenhouse-jobs mediante params

terminalBash
curl -X POST https://crawlforge.dev/api/v1/tools/scrape_template \
  -H "X-API-Key: cf_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "template": "greenhouse-jobs",
    "params": { "company": "stripe" }
  }'

Ejemplo de respuesta

200 OK0.8s
{
"success": true,
"data": {
"template": "greenhouse-jobs",
"params": {
"company": "stripe"
},
"data": {
"items": [
{
"id": "4012345",
"title": "Staff Software Engineer",
"url": "https://job-boards.greenhouse.io/stripe/jobs/4012345",
"location": "Seattle, Washington, United States",
"department": null,
"team": null,
"employment_type": null,
"remote": null,
"published_at": "2026-08-04T17:12:03.000Z",
"updated_at": "2026-08-21T09:44:51.000Z",
"description": null,
"source": "greenhouse-jobs",
"raw_extra": {
"internal_job_id": "4098765",
"requisition_id": "REQ-1234",
"offices": null
}
}
],
"count": 571,
"company": "Stripe"
},
"template_name": "Greenhouse Job Board",
"extracted_at": "2026-08-28T12:00:00.000Z",
"fetched_url": "https://boards-api.greenhouse.io/v1/boards/stripe/jobs"
},
"credits_used": 1,
"credits_remaining": 999,
"processing_time": 812
}
Field Descriptions
data.data.itemsUn registro por vacante publicada, con la forma de doce campos que comparten todos los conectores de bolsas de empleo
data.data.items[0].departmentGreenhouse solo envía los departamentos con `content: true`, así que un registro resumido informa null en lugar de un departamento deducido del título
data.data.countRegistros en esta respuesta; una fuente que declara un total mayor informa además `total_available`
data.template_nameNombre legible de la plantilla que se ejecutó
data.fetched_urlEl endpoint realmente leído: aparece siempre que difiere de lo que usted pasó, lo que incluye toda llamada hecha solo con `params`
credits_used1 credit fijo por llamada, independientemente de la plantilla o del número de registros

Manejo de errores

El conector no pudo construir una solicitud (400 Bad Request)

Un problema de parámetros, rechazado antes de descargar nada y nunca facturado. INVALID_TEMPLATE_PARAMS transmite el mensaje del propio conector nombrando el parámetro que esperaba: el token de la bolsa en job-boards.greenhouse.io/<token>, el subdominio en <company>.recruitee.com. MISSING_URL significa que envió params a una plantilla que lee una página y no tiene forma con params. NO_TEMPLATE_MATCH significa que template: "auto" no reconoció nada en la URL: nombre usted mismo la plantilla o compruébela con template: "list".

Bloqueado por robots.txt (403 Forbidden)

El robots.txt del sitio de destino no permite esta ruta a CrawlForge. Establezca respect_robots: false para anularlo si tiene su propio acuerdo con el destino: la anulación queda registrada en su API key. La anulación no alcanza a un host incluido en la lista de exclusión permanente de CrawlForge, que se rechaza sea cual sea el valor de respect_robots. La comprobación se realiza sobre la URL que la plantilla descarga realmente, que en shopify-product y npm-package es un endpoint legible por máquina del mismo host, no la URL que usted envió.

Costo en credits

1 credit
1 credit por solicitud
1 credit fijo por llamada. La forma más económica de obtener datos estructurados de un sitio admitido.

Consejo: ¿Necesita un sitio que no es compatible? Use scrape_structured para selectores personalizados (2 credits) o extract_with_llm para extracción con LLM.

Herramientas relacionadas

scrape_structured
Extracción con selectores CSS personalizados (2 credits)
extract_with_llm
Extracción con LLM para cualquier sitio
reddit_search
Posts, comentarios e hilos de Reddit mediante archivos comunitarios (5 credits)
¿Listo para scrapear sitios populares en una sola llamada? Regístrese gratis y obtenga 1,000 credits.

Pie de página

CrawlForge MCP

Web scraping empresarial para agentes de IA. 29 herramientas MCP especializadas diseñadas para desarrolladores modernos que crean sistemas inteligentes.

Producto

  • Funciones
  • Playground
  • Precios
  • Casos de uso
  • Integraciones
  • Alternativas
  • Registro de cambios

Recursos

  • Primeros pasos
  • Referencia de la API
  • Plantillas
  • Guías
  • Blog
  • Glosario
  • Preguntas frecuentes
  • Mapa del sitio

Desarrolladores

  • Protocolo MCP
  • Claude Desktop
  • Cursor IDE
  • LangChain
  • LlamaIndex

Empresa

  • Acerca de
  • Contacto
  • Privacidad
  • Términos
  • Uso aceptable
  • Cookies

Mantente al día

Recibe las últimas novedades sobre nuevas herramientas y funciones.

Creado con Next.js y el protocolo MCP

© 2025-2026 CrawlForge. Todos los derechos reservados.