/v1/scrapes Endpoint kannst du LLM-freundliches Markdown, HTML, Text, Screenshots oder strukturiertes JSON in Echtzeit aus jeder URL extrahieren.
- Gibt sauberes Markdown, strukturierte Daten, Screenshots oder HTML aus
- Extrahiere JSON durch Parsers oder LLM extraction
- Handhabt dynamische Inhalte: JS-gerenderte Seiten, Login-Flows über Aktionen, PDFs
- Kontrolliere, wie lange Ergebnisse mit dem
storageParameter gespeichert werden
Eine URL scrapen
Verwende den/v1/scrapes Endpoint, um eine einzelne URL zu scrapen und Ausgabeformate auszuwählen.
Installation
Verwendung
Du kannst den Endpoint verwenden, um eine einzelne URL zu scrapen und Ausgabeformate auszuwählen. Die obligatorischen Parameter sindurl_to_scrape und formats.
Einige andere häufige Parameter sind wait_before_scraping (in Millisekunden), remove_css_selectors (Standard, keine oder ein Array von Selektoren) und country.
Antwort
Die API gibt einscrape Objekt als Antwort zurück.
Das scrape hat einige Eigenschaften wie id und result.
Das result Objekt hat die folgenden Felder (je nach formats Parameter können einige null sein):
html_content: der HTML-Inhalt der Seite. Gibformats: ["html"]an, um dies zu erhalten.markdown_content: der MD-Inhalt der Seite. Gibformats: ["markdown"]an, um dies zu erhalten.text_content: der Textinhalt der Seite. Gibformats: ["text"]an, um dies zu erhalten.json_content: der JSON-Inhalt der Seite. Gibformats: ["json"]an, um dies zu erhalten und auch einenparseroderllm_extractParameter bereitzustellen.screenshot_hosted_url: die gehostete URL des Screenshots.html_hosted_url: die gehostete URL des HTML-Inhaltsmarkdown_hosted_url: die gehostete URL des Markdown-Inhaltsjson_hosted_url: die gehostete URL des JSON-Inhaltstext_hosted_url: die gehostete URL des Textinhaltslinks_on_page: die Links auf der Seitepage_metadata: die Metadaten der Seite
Caching
Um die Geschwindigkeit zu optimieren, bietet Olostep eine optionale gemeinsame Caching-Schicht für HTML-, Markdown-, Text- und geparste JSON-Ergebnisse.Wie es funktioniert
Wenn ein Scrape angefordert wird, prüft Olostep, ob bereits ein passendes Scrape mit denselben Parametern existiert. Wenn ein ausreichend frisches Match gefunden wird, wird der Inhalt sofort aus dem Olostep-Speicher bereitgestellt, ohne einen neuen Browser-Scrape zu starten.- Gemeinsamer Cache: Der Cache wird global geteilt. Wenn eine andere Anfrage genau dieselbe URL mit genau derselben Konfiguration innerhalb deines Frischefensters gescrapt hat, profitierst du von der Geschwindigkeitssteigerung.
- Nachbearbeitung ist weiterhin live: Operationen wie
llm_extractundlinks_on_pageFilter werden on-the-fly auf dem zwischengespeicherten Dokument ausgeführt. Du cachest nur die Kernseitenabruf, sodass deine strukturierten Extraktionen dynamisch bleiben.
Frische und max_age
Standardmäßig führt die Produktions-API immer einen Live-Scrape durch, um Echtzeitgenauigkeit zu gewährleisten. Du kannst das Caching mit dem max_age Parameter aktivieren.
- Standard-API-Verhalten (
max_age: 0): Jede API-Anfrage löst einen frischen Scrape aus. - Standardverhalten im Playground: Im Dashboard-Playground ist
max_agestandardmäßig auf 24 Stunden (86400Sekunden) gesetzt. - Maximales Alter: Der Cache hat ein hartes Limit von 7 Tagen (
604800Sekunden). Jede über diesem Limit angefordertemax_agewird auf maximal 7 Tage zurückgesetzt.
Anwendungsbeispiele
Wann wird der Cache übersprungen?
Der Cache wird automatisch umgangen (und ein Live-Scrape erzwungen), wenn deine Anfrage Folgendes benötigt:- Interaktive Sitzungen: Anfragen, die
session_idverwenden oder einen benutzerdefinierten Browsercontextladen. - Screenshots: Jede Anfrage, die
screenshotin Formaten enthält oder die Screenshot-Option setzt, umgeht den Cache. - Spezielle Dateitypen: Binäre Dateidownloads oder rohe PDF-Darstellung.
- Debugging & Netzwerk: Erfassung von
network_callsoder Verwendung von asynchronen Parser-Jobs.
Speicherung
Scrape-Ergebnisse werden standardmäßig etwa 7 Tage lang aufbewahrt. Übergebe einstorage Objekt, um ein Ergebnis länger — oder unbegrenzt — zu speichern, damit du es später erneut abrufen kannst. Das Ergebnis, seine gehosteten URLs und GET /v1/scrapes/{scrape_id} bleiben für dieses Fenster verfügbar.
max_age steuert, ob eine neue Anfrage eine zwischengespeicherte Seite wiederverwenden kann. storage.expires_in steuert, wie lange das Ergebnis dieses Scrapes verfügbar bleibt. Siehe Caching für max_age.
storage ist in allen Plänen für POST /v1/scrapes verfügbar.
Verwendung
Links extrahieren
Übergebe einlinks_on_page Objekt in der Anfrage, um die auf der Seite gefundenen Links zu sammeln. Alle Links werden als absolute URLs zurückgegeben.
include_links/exclude_links: Glob-Muster, die mit dem URL Pfad jedes Links abgeglichen werden.query_to_order_links_by: sortiert die zurückgegebenen Links nach Relevanz zu diesem Text.
Glob-Muster stimmen mit Pfadsegmenten überein. Ein einzelnes
* überschreitet nicht /, sodass "/blog/*" "/blog/post-1" entspricht, aber nicht dem Index "/blog" selbst — und es entspricht niemals "/blog?tag=x", da Abfragezeichenfolgen nicht Teil des Pfads sind. Um den Index ebenfalls einzuschließen, verwende "/blog*" oder "{/blog,/blog/**}".Scrape-Formate
Wähle ein oder mehrere Ausgabeformate überformats:
markdown: LLM-freundliches Markdownhtml: bereinigtes HTMLtext: Klartextjson: strukturiertes Ergebnis (über Parser oder llm_extract)raw_pdf: rohe PDF-Bytes, die zur gehosteten URL extrahiert werdenscreenshot: über Aktionen festgelegt, um einen Screenshot zu erfassen und eine gehostete URL zurückzugeben
result als *_content Felder und eine *_hosted_url zurückgegeben.
Strukturierte Daten extrahieren
Du kannst strukturiertes JSON auf zwei Arten extrahieren: mit Parsers oder LLM-Extraktion.Verwendung eines Parsers (empfohlen für Skalierung)
Definiereformats: ["json"] und gib eine Parser id an.
Verwendung von LLM-Extraktion (Schema und/oder Prompt)
Stellellm_extract mit einem JSON-Schema (schema) und/oder einer natürlichen Sprachinstruktion (prompt) bereit. Du kannst beide Parameter übergeben, aber wenn beide bereitgestellt werden, hat schema Vorrang.
Wenn du stattdessen nur einen prompt übergibst, extrahiert das LLM die Daten basierend auf dem Prompt und entscheidet selbst über die Datenstruktur.
result.json_content bereits ein dict. Im Node SDK und der rohen API ist es ein JSON-String, also parse es (JSON.parse / json.loads), wenn du ein Objekt benötigst.
Preise: llm_extract kostet 10 Credits pro Scrape. Um die Kosten zu senken, kannst du deine eigenen API-Schlüssel verwenden oder nutzungsbasierte Preise aktivieren. Kontaktiere info@olostep.com, um Zugang zu erhalten.
Links auf der Seite extrahieren
Mit der Optionlinks_on_page kannst du alle auf der gescrapten Seite vorhandenen Links extrahieren. Es akzeptiert die folgenden Parameter, um die extrahierten Links zu filtern und zu ordnen:
absolute_links(boolean, Standard:true): Wenn true, werden vollständige URLs (z. B.https://example.com/page) anstelle relativer Pfade (z. B./page) zurückgegeben.query_to_order_links_by(string): Sortiert die zurückgegebenen Links nach ihrer Ähnlichkeit mit dem bereitgestellten Abfragetext und priorisiert die relevantesten Übereinstimmungen zuerst.include_links(Array von Strings): Filtere extrahierte Links mit Glob-Mustern. Verwende Muster wie*.pdf, um Dateierweiterungen abzugleichen,/blog/*für bestimmte Pfade oder vollständige URLs wiehttps://example.com/*. Unterstützt Platzhalter (*), Zeichenklassen ([a-z]) und Alternation ({pattern1,pattern2}).exclude_links(Array von Strings): Schließe bestimmte Links mit Glob-Mustern aus, die derselben Syntax wieinclude_linksfolgen.
Mit der Seite mit Aktionen interagieren
Führe Aktionen vor dem Scraping aus, um mit dynamischen Seiten zu interagieren. Unterstützte Aktionen:waitmitmillisecondsclickmitselectorfill_inputmitselectorundvaluescrollmitdirectionundamount
wait vor/nach anderen Aktionen zu verwenden, um der Seite Zeit zum Laden zu geben.
Beispiel
markdown_content) enthalten.
Anwendungsfälle
Im Folgenden sind einige praktische Anwendungen von Kunden aufgeführt, die den/scrapes Endpoint verwenden.
Inhaltsanalyse & Forschung
- Wettbewerbsanalyse: Extrahiere Produktdetails, Preise und Funktionen von Wettbewerber-Websites
- Marktforschung: Analysiere Landingpages, Produktbeschreibungen und Kundenbewertungen
- Akademische Forschung: Sammle spezifische Daten aus wissenschaftlichen Publikationen oder Forschungsportalen
- Rechtsdokumentation: Extrahiere Fallstudien, Vorschriften oder rechtliche Präzedenzfälle von offiziellen Websites
E-Commerce & Einzelhandel
- Dynamische Preisstrategien: Erhalte Echtzeit-Produktpreise von konkurrierenden Geschäften
- Produktinformationsmanagement: Extrahiere detaillierte Spezifikationen und Beschreibungen
- Bestandsüberwachung: Überprüfe die Produktverfügbarkeit bei anderen Einzelhändlern
- Rezensionsanalyse: Sammle Verbraucherfeedback und Stimmungen für bestimmte Produkte
Marketing & Inhaltserstellung
- Inhaltskuratierung: Extrahiere relevante Artikel und Blogposts für Newsletter
- SEO-Analyse: Untersuche die Keyword-Nutzung, Meta-Beschreibungen und Seitenstruktur von Wettbewerbern
- Lead-Generierung: Extrahiere Kontaktinformationen aus Unternehmensverzeichnissen oder Firmenwebsites
- Influencer-Forschung: Sammle Engagement-Metriken und Inhaltsstile von Influencer-Profilen
- Personalisierte Social-Media-Generierung: Erstelle KI-gestützte Social-Media-Marketing durch Analyse von Kundenwebsites
Datenanwendungen
- AI-Trainingsdatensammlung: Sammle spezifische Beispiele für maschinelle Lernmodelle
- Erstellung einer benutzerdefinierten Wissensdatenbank: Extrahiere Dokumentationen oder Anleitungen von Software-Websites
- Historische Datenarchive: Bewahre Website-Inhalte zu bestimmten Zeitpunkten auf
- Strukturierte Datenextraktion: Transformiere Webinhalte in formatierte Datensätze zur Analyse
Überwachung & Benachrichtigungen
- Überwachung der Einhaltung von Vorschriften: Verfolge Änderungen auf rechtlichen oder regulatorischen Websites
- Krisenmanagement: Überwache Nachrichtenseiten auf Erwähnungen bestimmter Ereignisse oder Organisationen
- Verfolgung von Veranstaltungen: Extrahiere Details zu bevorstehenden Veranstaltungen von Veranstaltungsorten oder Organisator-Websites
- Überwachung des Dienststatus: Überprüfe Statusseiten von Diensten für bestimmte Plattformen oder Tools
Verlagswesen & Medien
- Nachrichtenaggregation: Extrahiere aktuelle Nachrichten aus offiziellen Quellen
- Medienüberwachung: Verfolge bestimmte Themen auf Nachrichtenseiten
- Inhaltsverifizierung: Extrahiere Informationen zur Überprüfung von Behauptungen oder Aussagen
- Multimedia-Extraktion: Sammle eingebettete Videos, Bilder oder Audiodateien für Medienbibliotheken
Finanzanwendungen
- Investmentforschung: Extrahiere Finanzberichte oder Jahresberichte von Unternehmenswebsites
- Wirtschaftsindikatoren: Sammle Wirtschaftsdaten von Regierungs- oder Finanzinstitutionswebsites
- Kryptowährungsdaten: Extrahiere Echtzeitpreise und Marktkapitalisierungsinformationen
- Analyse von Finanznachrichten: Überwache Finanznachrichtenseiten auf spezifische Marktsignale
Technische Anwendungen
- API-Dokumentationsextraktion: Sammle technische Dokumentationen zur Referenz
- Integrationstests: Extrahiere Website-Elemente zur Überprüfung von Drittanbieter-Integrationen
- Barrierefreiheitstests: Analysiere die Website-Struktur auf Einhaltung von Barrierefreiheitsstandards
- Erstellung von Webarchiven: Erfasse vollständige Website-Inhalte zur historischen Bewahrung
Integrationsszenarien
- CRM-Systeme: Ergänze Kundenprofile mit Daten von Unternehmenswebsites oder Linkedin
- Content-Management-Systeme: Importiere relevante externe Inhalte
- Business-Intelligence-Tools: Ergänze interne Daten mit externen Marktinformationen
- Projektmanagement-Software: Extrahiere Spezifikationen oder Anforderungen von Kundenwebsites
- Benutzerdefinierte Dashboards: Zeige extrahierte Daten neben internen Metriken an
Fehlerbehandlung
Alle Fehler folgen einer gemeinsamen Umschlagform. Überprüfeerror.type und error.code, um programmatisch zu verzweigen:
DNS-Fehler (400)
Die Domain wird nicht aufgelöst. Überprüfe die URL auf Tippfehler.TLS/SSL-Fehler (502)
Die Zielwebsite hat eine fehlerhafte oder inkompatible HTTPS-Konfiguration.error.detail liefert den spezifischen SSL-Fehlercode für Diagnosen; error.code ist immer tls_error.