CrawlForge
Herramienta de IA3 credits

extract_structured

Dele al extractor un JSON Schema y un prompt en lenguaje natural. El LLM lee la página y devuelve datos que coinciden con su esquema. Cuando no hay un proveedor de LLM configurado, recurre a la extracción con selectores CSS usando sus indicaciones.

Casos de uso

Extracción de productos basada en esquema

Defina los campos que desea una sola vez; el LLM asigna cualquier sitio de comercio electrónico a su esquema.

Análisis de currículos y documentos

Extraiga nombres de candidatos, habilidades e historial laboral directamente en un objeto tipado.

Carga inicial de grafos de conocimiento

Extraiga entidades y relaciones de los artículos en JSON estructurado para cargadores de grafos.

Endpoint

POST/api/v1/tools/extract_structured
Auth Required
2 req/s en el plan Free
3 credits

Parameters

LLM vs. respaldo de selectores: Proporcione llmConfig para usar la extracción impulsada por LLM. Sin ella, la herramienta usa selectorHints para una extracción CSS determinista — más económica y sin necesidad de API key de LLM.
NameTypeRequiredDefaultDescription
url
stringRequired-
URL de la que extraer datos
Example: https://example.com/product/123
schema
objectRequired-
JSON Schema que describe los datos a extraer
Example: {"type":"object","properties":{"title":{"type":"string"},"price":{"type":"number"}},"required":["title"]}
prompt
stringOptional-
Instrucciones en lenguaje natural que guían la extracción con LLM
Example: Extract the product name, current price, and whether it is in stock
llmConfig
objectOptional-
Configuración opcional del proveedor de LLM (provider, apiKey). Omítala para usar el respaldo de selectores CSS.
Example: {"provider": "openai", "apiKey": "sk-..."}
selectorHints
objectOptional-
Indicaciones de selectores CSS para guiar la extracción (también usadas por el respaldo de selectores)
Example: {"title": "h1.product-title", "price": ".price"}
fallbackToSelectors
booleanOptionaltrue
Recurrir a la extracción con selectores CSS cuando el LLM no esté disponible
Example: true

Ejemplos de solicitud

cURL — extracción con LLM

terminalBash
curl -X POST https://crawlforge.dev/api/v1/tools/extract_structured \
  -H "X-API-Key: cf_test_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/product/123",
    "schema": {
      "type": "object",
      "properties": {
        "title": { "type": "string" },
        "price": { "type": "number" },
        "in_stock": { "type": "boolean" }
      },
      "required": ["title", "price"]
    },
    "prompt": "Extract the product name, price in USD, and availability",
    "llmConfig": { "provider": "openai", "apiKey": "sk-..." }
  }'

TypeScript — respaldo de selectores

extractStructured.tsTypescript
const response = await fetch('https://crawlforge.dev/api/v1/tools/extract_structured', {
  method: 'POST',
  headers: {
    'X-API-Key': process.env.CRAWLFORGE_API_KEY!,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    url: 'https://example.com/product/123',
    schema: {
      type: 'object',
      properties: {
        title: { type: 'string' },
        price: { type: 'number' },
      },
      required: ['title'],
    },
    selectorHints: {
      title: 'h1.product-title',
      price: '.price-value',
    },
    fallbackToSelectors: true,
  }),
});

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

Python

extract_structured.pyPython
import requests, os

response = requests.post(
    'https://crawlforge.dev/api/v1/tools/extract_structured',
    headers={
        'X-API-Key': os.environ['CRAWLFORGE_API_KEY'],
        'Content-Type': 'application/json',
    },
    json={
        'url': 'https://example.com/article/42',
        'schema': {
            'type': 'object',
            'properties': {
                'headline': {'type': 'string'},
                'author': {'type': 'string'},
                'published_at': {'type': 'string'},
                'tags': {'type': 'array'},
            },
            'required': ['headline'],
        },
        'prompt': 'Extract headline, author, publish date (ISO 8601), and tags',
    },
)

data = response.json()
if data['success']:
    print(data['data']['extracted'])

Ejemplo de respuesta

200 OK1.2s
{
"success": true,
"data": {
"url": "https://example.com/product/123",
"extracted": {
"title": "Premium Wireless Headphones",
"price": 299.99,
"in_stock": true
},
"extraction_method": "llm",
"schema_fields": 3,
"required_fields": 2,
"llm_provider": "openai",
"confidence": 0.92
},
"credits_used": 3,
"credits_remaining": 997,
"processing_time": 1240
}
Field Descriptions
data.extractedCoincide con el JSON Schema que proporcionó
data.extraction_method"llm" cuando hay un proveedor configurado, "selector_fallback" en caso contrario
data.confidenceConfianza del extractor (confianza del LLM o tasa de coincidencia de selectores)
credits_used3 credits fijos por llamada

Costo en credits

3 credits
3 credits por solicitud
3 credits fijos tanto si la llamada usa el LLM como el respaldo de selectores.

Consejo: Combínela con scrape_structured (2 credits, solo CSS) cuando ya tenga selectores estables y no necesite la flexibilidad de un LLM.

Herramientas relacionadas

scrape_structured
Extracción con selectores CSS (2 credits)
analyze_content
Análisis de sentimiento, entidades y temas (3 credits)
¿Listo para extraer datos estructurados tipados? Regístrese gratis y obtenga 1,000 credits.