AnyCrawl

Templates

Wiederverwendbare Scraping-, Crawl- und Such-Rezepte mit Variablen und eigener Logik.

Einführung

Templates sind wiederverwendbare Konfigurationen für Scraping, Crawling oder Suche. Statt Optionen in jedem Aufruf zu wiederholen, definieren Sie sie einmal (oder nutzen ein Template aus dem Store) und referenzieren template_id.

Vorteile:

  • Einfachheit: API mit template_id + wenigen Eingaben
  • Konsistenz: Einheitliches Verhalten im Team
  • Sicherheit: Domains einschränken, nur nötige Variablen
  • Leistung: optionale Custom-Handler

Typen:

  • scrape: einzelne Seite über /v1/scrape
  • crawl: mehrere Seiten über /v1/crawl
  • search: Suche über /v1/search

Template-Marktplatz

Vorgefertigte Templates: anycrawl.dev/template.

Vorgehen:

  1. Passendes Template finden
  2. template_id von der Detailseite kopieren
  3. API mit template_id und Eingaben aufrufen

Beispiel:

curl -X POST "https://api.anycrawl.dev/v1/scrape" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "template_id": "content-extractor",
    "url": "https://example.com"
  }'

Templates in API-Aufrufen

Parameter

Mit template_id sind nur minimale Felder erlaubt:

EndpointPflichtOptional
/v1/scrapetemplate_idurl, variables
/v1/crawltemplate_idurl, variables
/v1/searchtemplate_idquery, variables

Hinweise:

  • url/query können im Template vordefiniert sein – Beschreibung lesen.
  • variables: dynamische Eingaben (siehe unten).
  • engine, formats, timeout usw. kommen aus dem Template und sind nicht überschreibbar.
  • Unzulässige Felder → 400.

Scrape mit Template

curl -X POST "https://api.anycrawl.dev/v1/scrape" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "template_id": "my-scrape-template",
    "url": "https://example.com",
    "variables": { "category": "tech" }
  }'

Crawl mit Template

curl -X POST "https://api.anycrawl.dev/v1/crawl" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "template_id": "my-crawl-template",
    "url": "https://docs.example.com",
    "variables": { "maxPages": 50 }
  }'

Search mit Template

curl -X POST "https://api.anycrawl.dev/v1/search" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "template_id": "my-search-template",
    "query": "machine learning tutorials",
    "variables": { "lang": "en" }
  }'

Variablen

Templates können Variablen für dynamische Eingaben deklarieren.

  • type: string, number, boolean, url
  • required oder optional mit defaultValue
  • Beschreibung des Templates prüfen

Beispiel:

{
    "template_id": "blog-scraper",
    "url": "https://example.com/blog/post-123",
    "variables": {
        "author": "john-doe",
        "includeComments": true,
        "maxComments": 50
    }
}

Fehlende Pflichtvariable oder falscher Typ → 400.

Antwortformat

Wie bei normalen API-Aufrufen:

{
    "success": true,
    "data": {
        "url": "https://example.com",
        "markdown": "# Page Title\n\nContent...",
        "metadata": { ... },
        // Additional fields from custom handlers (if any)
        "extractedData": { ... }
    }
}

Custom-Handler können Zusatzfelder liefern.

Fehler

FehlerHTTPBeschreibung
Template not found404template_id unbekannt/kein Zugriff
Validation error400Variablen fehlen/falscher Typ
Domain restriction violation403URL gegen Domain-Policy
Invalid fields400Unerlaubte Top-Level-Felder

Beispiel:

{
    "success": false,
    "error": "Validation error",
    "message": "When using template_id, only template_id, url, variables are allowed. Invalid fields: engine, formats",
    "data": {
        "type": "validation_error",
        "issues": [
            {
                "field": "engine",
                "message": "Field 'engine' is not allowed when using template_id",
                "code": "invalid_field"
            }
        ],
        "status": "failed"
    }
}

Best Practices

Für Aufrufer

  • Beschreibung: Pflichtvariablen, Domains/Keywords
  • Marktplatz-Templates nutzen wenn möglich
  • 404: Template gelöscht/archiviert
  • Keine Overrides von engine/formats – schlägt fehl

Für Autoren

  • Ein klarer Anwendungsfall pro Template
  • Variablen dokumentieren
  • Domain-Beschränkungen
  • angemessene Preise
  • vor Veröffentlichung testen

Eigene Templates (fortgeschritten)

Domain-Beschränkungen

{
    "allowedDomains": {
        "type": "glob",
        "patterns": ["*.example.com", "docs.mysite.com"]
    }
}
  • type: "exact" oder "glob"
  • patterns: erlaubte Domains/Muster
{
    "allowedKeywords": {
        "type": "glob",
        "patterns": ["*tutorial*", "*documentation*"]
    }
}
  • Validierung vor Ausführung; vor queryTransform
  • type: "exact" oder "glob"
  • patterns: erlaubte Muster

Preis

Credits pro Aufruf:

{
    "pricing": {
        "perCall": 10,
        "currency": "credits"
    }
}

Benutzerdefinierte Handler

JavaScript/TypeScript:

  • requestHandler: Ergebnis nachbearbeiten
  • failedRequestHandler: Fehler/Retry
  • queryTransform (nur Search): Query vor Suche
  • urlTransform (Scrape/Crawl): URL vor Verarbeitung

Transforms:

  • Platzhalter {{query}}, {{url}}
  • prefix/suffix
  • regexExtract

Beispiel Regex (TikTok):

{
    "customHandlers": {
        "urlTransform": {
            "enabled": true,
            "mode": "append",
            "prefix": "",
            "suffix": "",
            "regexExtract": {
                "pattern": "^(https?:\\/\\/www\\.tiktok\\.com\\/@[^\\/?#]+)",
                "flags": "i",
                "group": 1
            }
        }
    }
}

Extrahiert z. B. die Profil-URL aus längeren URLs.

Beispiel requestHandler:

// Extract structured data from page context
const title = context.data.title;
const content = context.data.markdown;

return {
    extractedTitle: title,
    wordCount: content.split(/\s+/).length,
    customMetric: calculateMetric(content),
};

Sicherheit

  • Nicht vertrauenswürdig: gehärtete Sandbox
  • Trusted: async + kontrollierter Browser-Zugriff (nur nach Prüfung durch AnyCrawl)

FAQ

Engine/Formats überschreiben?

Nein. Nur url/query und variables.

Marktplatz-Template?

Öffentlich; Credits laut Autor.

Sehen Templates meinen API-Key?

Nein – isolierte Sandbox.

Eigene Templates?

Im AnyCrawl-Playground erstellen/testen, nach Veröffentlichung per API nutzbar.

Siehe auch