> ## Documentation Index
> Fetch the complete documentation index at: https://docs.olostep.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Scrape erstellen

> [Scrape](https://docs.olostep.com/features/scrapes) eine URL mit bereitgestellter Konfiguration und erhalte den Inhalt.

<Tip>
  **Optionales Caching:** Übergebe `max_age` (in Sekunden), um einen kürzlich durchgeführten Scrape mit denselben Parametern wiederzuverwenden, anstatt die Seite erneut abzurufen. Standardmäßig ist `0` (immer frisch). Im Dashboard-Playground beträgt der Standardwert 24 Stunden. Siehe [Caching](/features/scrapes#caching) für Details.
</Tip>


## OpenAPI

````yaml de/openapi/scrapes.json POST /v1/scrapes
openapi: 3.0.3
info:
  title: Scrapes-API
  version: 1.0.0
servers:
  - url: https://api.olostep.com
security: []
paths:
  /v1/scrapes:
    post:
      summary: Eine Webseitenscrape initiieren
      description: >-
        Dieser Endpunkt ermöglicht es Benutzern, eine Webseitenscrape mit
        verschiedenen Konfigurationen zu starten.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                url_to_scrape:
                  type: string
                  format: uri
                  description: Die URL, von der aus das Scraping gestartet werden soll.
                wait_before_scraping:
                  type: integer
                  description: >-
                    Zeit in Millisekunden, die gewartet werden soll, bevor das
                    Scraping beginnt.
                formats:
                  type: array
                  items:
                    type: string
                    enum:
                      - html
                      - markdown
                      - text
                      - json
                      - raw_pdf
                      - screenshot
                  description: Formate, in denen du den Inhalt haben möchtest.
                remove_css_selectors:
                  type: string
                  enum:
                    - default
                    - none
                    - array
                  description: >-
                    Option, bestimmte CSS-Selektoren aus dem Inhalt zu
                    entfernen. Optional kannst du auch ein JSON-stringifiziertes
                    Array von spezifischen Selektoren übergeben, die du
                    entfernen möchtest. Die CSS-Selektoren, die entfernt werden,
                    wenn diese Option auf Standard gesetzt ist, sind
                    ['nav','footer','script','style','noscript','svg',[role=alert],[role=banner],[role=dialog],[role=alertdialog],[role=region][aria-label*=skip
                    i],[aria-modal=true]]
                actions:
                  type: array
                  items:
                    type: object
                    discriminator:
                      propertyName: type
                    oneOf:
                      - type: object
                        title: Warten
                        required:
                          - type
                          - milliseconds
                        properties:
                          type:
                            type: string
                            enum:
                              - wait
                            description: Warte eine bestimmte Anzahl von Millisekunden
                          milliseconds:
                            type: integer
                            minimum: 0
                            description: Zeit in Millisekunden, die gewartet werden soll
                      - type: object
                        title: Klicken
                        required:
                          - type
                          - selector
                        properties:
                          type:
                            type: string
                            enum:
                              - click
                            description: Auf ein Element klicken
                          selector:
                            type: string
                            description: >-
                              CSS-Selektor für das Element, auf das geklickt
                              werden soll
                      - type: object
                        title: Eingabe ausfüllen
                        required:
                          - type
                          - selector
                          - value
                        properties:
                          type:
                            type: string
                            enum:
                              - fill_input
                            description: Ein Eingabeelement mit einem Wert füllen
                          selector:
                            type: string
                            description: CSS-Selektor für das Eingabeelement
                          value:
                            type: string
                            description: Text, der in die Eingabe eingegeben werden soll
                      - type: object
                        title: Scrollen
                        required:
                          - type
                          - direction
                          - amount
                        properties:
                          type:
                            type: string
                            enum:
                              - scroll
                            description: Die Seite scrollen
                          direction:
                            type: string
                            enum:
                              - up
                              - down
                              - left
                              - right
                            description: Richtung zum Scrollen
                          amount:
                            type: number
                            description: Menge zum Scrollen in Pixeln
                  description: >-
                    Aktionen, die auf der Seite ausgeführt werden sollen, bevor
                    der Inhalt abgerufen wird.
                country:
                  type: string
                  description: >-
                    Wohnsitzland, von dem aus die Anfrage geladen werden soll. 
                    Unterstützte Werte sind: - US (Vereinigte Staaten) - CA
                    (Kanada) - IT (Italien) - IN (Indien) - GB (England) - JP
                    (Japan) - MX (Mexiko) - AU (Australien) - ID (Indonesien) -
                    UA (VAE) - RU (Russland) - RANDOM  Einige Operationen, wie
                    das Scraping von Google Search und Google News, unterstützen
                    alle Länder.
                transformer:
                  type: string
                  enum:
                    - postlight
                    - none
                  description: >-
                    Gib den HTML-Transformer an, der verwendet werden soll,
                    falls vorhanden. Die Mercury Parser-Bibliothek von Postlight
                    wird verwendet, um Werbung und andere unerwünschte Inhalte
                    aus dem gescrapten Inhalt zu entfernen.
                remove_images:
                  type: boolean
                  description: >-
                    Option, Bilder aus dem gescrapten Inhalt zu entfernen.
                    Standardmäßig auf false gesetzt.
                  default: false
                remove_class_names:
                  type: array
                  items:
                    type: string
                  description: >-
                    Liste von Klassennamen, die aus dem Inhalt entfernt werden
                    sollen.
                parser:
                  type: object
                  properties:
                    id:
                      type: string
                      description: ID des zu verwendenden Parsers.
                  required:
                    - id
                  description: >-
                    Wenn du json als Format definierst, kannst du diesen
                    Parameter verwenden, um den zu verwendenden Parser
                    anzugeben. Parser sind nützlich, um strukturierten Inhalt
                    aus Webseiten zu extrahieren. Olostep hat einige Parser für
                    die gängigsten Webseiten eingebaut, und du kannst auch deine
                    eigenen Parser erstellen.
                llm_extract:
                  type: object
                  properties:
                    schema:
                      type: object
                      description: Schema für die LLM-Extraktion.
                links_on_page:
                  type: object
                  properties:
                    query_to_order_links_by:
                      type: string
                      description: >-
                        Sortiert die zurückgegebenen Links nach ihrer
                        Ähnlichkeit mit dem bereitgestellten Abfragetext, wobei
                        die relevantesten Übereinstimmungen zuerst priorisiert
                        werden.
                    include_links:
                      type: array
                      items:
                        type: string
                      description: >-
                        Filtere extrahierte Links mit Glob-Mustern mit
                        `include_links`. Muster stimmen mit dem URL-Pfad des
                        Links überein. Verwende Muster wie "*.pdf", um
                        Dateierweiterungen zu matchen, "/blog/*" für spezifische
                        Pfade oder vollständige URLs wie
                        "https://example.com/*". Unterstützt Platzhalter (*),
                        Zeichenklassen ([a-z]) und Alternation
                        ({pattern1,pattern2}). Hinweis: Ein einzelnes `*`
                        überschreitet nicht `/`, daher passt "/blog/*" zu
                        "/blog/post-1", aber NICHT zum Index "/blog" selbst
                        (oder "/blog?tag=x", da Abfragezeichenfolgen nicht Teil
                        des Pfades sind). Um auch den Index einzuschließen,
                        verwende "/blog*" oder "{/blog,/blog/**}".
                    exclude_links:
                      type: array
                      items:
                        type: string
                      description: >-
                        Filtere extrahierte Links mit Glob-Mustern mit
                        `exclude_links`. Muster stimmen mit dem URL-Pfad des
                        Links überein. Verwende Muster wie "*.pdf", um
                        Dateierweiterungen zu matchen, "/blog/*" für spezifische
                        Pfade oder vollständige URLs wie
                        "https://example.com/*". Unterstützt Platzhalter (*),
                        Zeichenklassen ([a-z]) und Alternation
                        ({pattern1,pattern2}). Hinweis: Ein einzelnes `*`
                        überschreitet nicht `/`, daher passt "/blog/*" zu
                        "/blog/post-1", aber NICHT zum Index "/blog" selbst
                        (oder "/blog?tag=x", da Abfragezeichenfolgen nicht Teil
                        des Pfades sind).
                  description: >-
                    Mit dieser Option kannst du alle Links erhalten, die auf der
                    Seite vorhanden sind, die du scrapst. Links werden immer als
                    absolute URLs zurückgegeben.
                screen_size:
                  type: object
                  properties:
                    screen_type:
                      type: string
                      enum:
                        - default
                        - mobile
                        - desktop
                      description: >-
                        Art des Bildschirms. Desktop verwendet 1920x1080 Pixel,
                        Mobilgerät verwendet 414x896 Pixel und Standard
                        verwendet 1024x768 Pixel.
                    screen_width:
                      type: integer
                      description: >-
                        Breite des Bildschirms in Pixel. Desktop: 1920px,
                        Mobilgerät: 414px, Standard: 768px.
                    screen_height:
                      type: integer
                      description: >-
                        Höhe des Bildschirms in Pixel. Desktop: 1080px,
                        Mobilgerät: 896px, Standard: 1024px.
                  description: >-
                    Konfiguration für Bildschirmgröße. Voreingestellte
                    Abmessungen sind über screen_type verfügbar: desktop
                    (1920x1080), mobile (414x896) oder default (768x1024).
                screenshot:
                  type: object
                  properties:
                    full_page:
                      type: boolean
                      description: >-
                        Wenn true übergeben wird, wird der vollständige
                        Seiten-Screenshot nach dem Scrollen zum Ende der Seite
                        aufgenommen.
                metadata:
                  type: object
                  description: Benutzerdefinierte Metadaten. Noch nicht unterstützt.
                max_age:
                  type: integer
                  minimum: 0
                  default: 0
                  description: >-
                    Maximales akzeptables Alter des zwischengespeicherten
                    Inhalts in Sekunden. Wenn ein passender Scrape bereits
                    existiert und neuer als max_age Sekunden ist, gibt Olostep
                    das gespeicherte Ergebnis zurück, anstatt einen neuen
                    Browser-Scrape zu starten. Standardmäßig auf 0 (immer frisch
                    scrapen). Im Dashboard-Playground ist der Standard 86400 (24
                    Stunden). Der maximal erlaubte Wert ist 604800 (7 Tage).
                    Siehe den Abschnitt Caching in den
                    Scrapes-Feature-Dokumenten für Details.
              required:
                - url_to_scrape
      responses:
        '200':
          description: Erfolgreiche Antwort mit den Details zur Scrape-Initiierung.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: Scrape-ID
                  object:
                    type: string
                    description: Die Art des Objekts. "scrape" für diesen Endpunkt.
                  created:
                    type: number
                    description: Erstellte Epoche
                  metadata:
                    type: object
                    description: Benutzerdefinierte Metadaten.
                  url_to_scrape:
                    type: string
                    description: Die URL, die gescrapt wurde.
                  result:
                    type: object
                    properties:
                      html_content:
                        type: string
                      markdown_content:
                        type: string
                      text_content:
                        type: string
                      json_content:
                        type: string
                        description: Inhalt vom Parser
                      screenshot_hosted_url:
                        type: string
                      html_hosted_url:
                        type: string
                      markdown_hosted_url:
                        type: string
                      text_hosted_url:
                        type: string
                      links_on_page:
                        type: array
                        items:
                          type: string
                      page_metadata:
                        type: object
                        properties:
                          status_code:
                            type: integer
                          title:
                            type: string
                  credits_consumed:
                    type: integer
                    nullable: true
                    description: >-
                      Anzahl der durch diese Anfrage verbrauchten Credits. Wird
                      nach Abschluss der Ausführung ausgefüllt. Credits sind die
                      Grundlage für die Abrechnung.
                  cost_usd:
                    type: number
                    nullable: true
                    description: >-
                      Geschätzte Kosten in USD für diese Anfrage. Wird nach
                      Abschluss der Ausführung ausgefüllt. Berechnet aus den
                      verbrauchten Credits und deinem Tarif — 99% genau, aber
                      credits_consumed ist der maßgebliche Wert.
        '400':
          description: >-
            Die Anfrage kann aufgrund eines Problems mit der Ziel-URL nicht
            erfüllt werden. Häufige Codes: `dns_resolution_failed` (Domain
            existiert nicht), `invalid_url` (fehlerhafte URL).
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  object:
                    type: string
                    enum:
                      - error
                  created:
                    type: integer
                  metadata:
                    type: object
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - invalid_request_error
                      code:
                        type: string
                        example: dns_resolution_failed
                      message:
                        type: string
              example:
                id: error_x2nmu5bqn6
                object: error
                created: 1777923912
                metadata: {}
                error:
                  type: invalid_request_error
                  code: dns_resolution_failed
                  message: The URL contains a typo, or the domain does not exist.
        '402':
          description: Zahlung erforderlich — ungültiger oder erschöpfter API-Schlüssel.
        '404':
          description: Die angeforderte Scrape-ID wurde nicht gefunden.
        '500':
          description: Interner Serverfehler.
        '502':
          description: >-
            Die Zielwebsite hat ein TLS/SSL-Konfigurationsproblem. `error.code`
            ist immer `tls_error`; `error.detail` enthält den spezifischen
            Low-Level-SSL-Fehlercode (z.B. `err_ssl_tlsv1_alert_internal_error`,
            `cert_verification_failed`).
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  object:
                    type: string
                    enum:
                      - error
                  created:
                    type: integer
                  url:
                    type: string
                  metadata:
                    type: object
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - invalid_request_error
                      code:
                        type: string
                        enum:
                          - tls_error
                      detail:
                        type: string
                        description: Low-Level-SSL-Fehlercode für Diagnosen.
                      message:
                        type: string
              example:
                id: error_ogeb6rik8c
                object: error
                created: 1777923969
                url: https://example.com
                metadata: {}
                error:
                  type: invalid_request_error
                  code: tls_error
                  detail: err_ssl_tlsv1_alert_internal_error
                  message: >-
                    The website closed or rejected the TLS handshake. The server
                    may be misconfigured or use an unsupported SSL/TLS version.
        '504':
          description: >-
            Der Scrape wurde nicht innerhalb des Wartebudgets (~55 Sekunden)
            abgeschlossen. Die Zielseite könnte langsam, bot-geschützt oder
            vorübergehend nicht verfügbar sein. Sicher zum erneuten Versuch.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  object:
                    type: string
                    enum:
                      - error
                  created:
                    type: integer
                  url:
                    type: string
                  metadata:
                    type: object
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                        enum:
                          - request_timeout
                      code:
                        type: string
                        enum:
                          - scrape_poll_timeout
                      message:
                        type: string
              example:
                id: error_qat3d1amjt
                object: error
                created: 1777923969
                url: https://example.com
                metadata: {}
                error:
                  type: request_timeout
                  code: scrape_poll_timeout
                  message: >-
                    Request timed out while waiting for scrape result. The page
                    may be slow, blocked for our fetchers, or temporarily
                    unavailable.
      security:
        - Authorization: []
components:
  securitySchemes:
    Authorization:
      type: http
      scheme: bearer
      description: >-
        Bearer-Authentifizierungsheader in der Form Bearer <token>, wobei
        <token> dein Authentifizierungstoken ist.

````