Transformez n’importe quelle URL en Markdown, HTML, captures d’écran, PDF ou JSON structuré prêt pour LLM.
Grâce au point de terminaison /v1/scrapes d’Olostep, vous pouvez extraire en temps réel du Markdown, HTML, texte, captures d’écran ou JSON structuré compatible LLM à partir de n’importe quelle URL.
Produit du markdown propre, des données structurées, des captures d’écran ou du html
Vous pouvez utiliser le point de terminaison pour scraper une seule URL et choisir les formats de sortie. Les paramètres obligatoires sont url_to_scrape et formats.Parmi les autres paramètres courants, on trouve wait_before_scraping (en millisecondes), remove_css_selectors (par défaut, aucun, ou un tableau de sélecteurs), et country.
L’API retourne un objet scrape en réponse.Le scrape possède quelques propriétés comme id et result.L’objet result a les champs suivants (selon le paramètre formats, certains peuvent être nuls) :
html_content : le contenu HTML de la page. Passez formats: ["html"] pour obtenir ceci.
markdown_content : le contenu MD de la page. Passez formats: ["markdown"] pour obtenir ceci.
text_content : le contenu texte de la page. Passez formats: ["text"] pour obtenir ceci.
json_content : le contenu JSON de la page. Passez formats: ["json"] pour obtenir ceci et fournissez également un paramètre parser ou llm_extract.
screenshot_hosted_url : l’URL hébergée de la capture d’écran.
html_hosted_url : l’URL hébergée du contenu HTML
markdown_hosted_url : l’URL hébergée du contenu Markdown
Lorsqu’un scrape est demandé, Olostep vérifie si un scrape correspondant existe déjà avec les mêmes paramètres. Si un match assez récent est trouvé, le contenu est servi instantanément depuis le stockage d’Olostep sans lancer un nouveau scrape de navigateur.
Cache partagé : Le cache est partagé globalement. Si une autre requête a scrappé exactement la même URL avec exactement la même configuration dans votre fenêtre de fraîcheur, vous bénéficiez de l’accélération.
Le post-traitement est toujours en direct : Les opérations comme llm_extract et les filtres links_on_page sont exécutées à la volée sur le document mis en cache. Vous ne mettez en cache que la récupération de la page principale, gardant vos extractions structurées dynamiques.
Par défaut, l’API de production effectue toujours un scrape en direct pour garantir une précision en temps réel. Vous pouvez opter pour la mise en cache en utilisant le paramètre max_age.
Paramètre
Type
Par défaut
Description
max_age
integer
0
Âge acceptable du contenu en secondes. Si une copie mise en cache existe et est plus récente que max_age secondes, elle est servie depuis le cache.
Comportement par défaut de l’API (max_age: 0) : Chaque requête API déclenche un nouveau scrape.
Comportement par défaut du Playground : Dans le playground du tableau de bord, max_age est par défaut de 24 heures (86400 secondes) pour éviter les scrapes redondants et économiser des crédits pendant que vous construisez et testez.
Âge maximum : Le cache a une limite stricte de 7 jours (604800 secondes). Tout max_age demandé au-dessus de cette limite reviendra à un maximum de 7 jours.
from olostep import Olostepclient = Olostep(api_key="YOUR_REAL_KEY")# Opter pour la mise en cache : Accepter des résultats jusqu'à 1 jour (86400 secondes) d'anciennetéresult = client.scrapes.create( url_to_scrape="https://example.com", formats=["markdown"], max_age=86400)
Le cache est automatiquement contourné (forçant un scrape en direct) pour les fonctionnalités nécessitant des sessions uniques, des sorties visuelles en temps réel ou une gestion de fichiers personnalisée :
Sessions interactives : Requêtes utilisant session_id ou chargeant un context de navigateur personnalisé.
Visuels : Outils de visualisation et captures d’écran (htmlVisualizer).
Types de fichiers spéciaux : Téléchargements de fichiers binaires ou rendu brut de PDF.
Débogage & Réseau : Capture des network_calls ou utilisation de tâches d’analyse asynchrones.
include_links / exclude_links : motifs globaux correspondants à chaque chemin d’URL de lien.
query_to_order_links_by : réorganise les liens retournés par pertinence par rapport à ce texte.
Les motifs globaux correspondent aux segments de chemin. Un seul * ne traverse pas/, donc "/blog/*" correspond à "/blog/post-1" mais pas à l’index "/blog" lui-même — et ne correspond jamais à "/blog?tag=x" car les chaînes de requête ne font pas partie du chemin. Pour inclure également l’index, utilisez "/blog*" ou "{/blog,/blog/**}".
Olostep propose quelques parsers pré-construits pour les sites populaires mais vous pouvez également créer vos propres parsers via le tableau de bord ou demander à notre équipe de le faire pour vous.Les parsers sont auto-réparateurs et se mettront à jour vers la dernière version du site web.
Fournissez llm_extract avec un schéma JSON (schema) et/ou une instruction en langage naturel (prompt). Vous pouvez passer les deux paramètres, mais si les deux sont fournis, schema prend la priorité.Sinon, si vous passez simplement un prompt, le LLM extraira les données en fonction du prompt et décidera de la structure des données par lui-même.
Note : result.json_content retourne un JSON sous forme de chaîne. Analysez-le dans votre code si vous avez besoin d’un objet.Tarification :llm_extract coûte 10 crédits par scrape. Pour réduire le coût, vous pouvez apporter vos propres clés API ou activer la tarification basée sur l’utilisation. Contactez info@olostep.com pour obtenir l’accès.
Avec l’option links_on_page, vous pouvez extraire tous les liens présents sur la page que vous scrapez. Elle accepte les paramètres suivants pour aider à filtrer et ordonner les liens extraits :
absolute_links (booléen, par défaut : true) : Lorsqu’il est vrai, il retourne des URL complètes (par exemple, https://example.com/page) au lieu de chemins relatifs (par exemple, /page).
query_to_order_links_by (chaîne) : Ordonne les liens retournés par leur similarité avec le texte de requête fourni, en priorisant les correspondances les plus pertinentes en premier.
include_links (tableau de chaînes) : Filtrer les liens extraits en utilisant des motifs globaux. Utilisez des motifs comme *.pdf pour correspondre aux extensions de fichiers, /blog/* pour des chemins spécifiques, ou des URL complètes comme https://example.com/*. Prend en charge les jokers (*), les classes de caractères ([a-z]), et l’alternance ({motif1,motif2}).
exclude_links (tableau de chaînes) : Exclure des liens spécifiques en utilisant des motifs globaux, suivant la même syntaxe que include_links.
Curation de contenu : Extraire des articles et des billets de blog pertinents pour des newsletters
Analyse SEO : Examiner l’utilisation des mots-clés des concurrents, les méta-descriptions et la structure des pages
Génération de leads : Extraire des informations de contact à partir d’annuaires d’entreprises ou de pages d’entreprises
Recherche d’influenceurs : Recueillir des métriques d’engagement et des styles de contenu à partir de profils d’influenceurs
Génération personnalisée de médias sociaux : Créer des campagnes de marketing sur les réseaux sociaux alimentées par l’IA en analysant les sites web des clients
Le domaine ne résout pas. Vérifiez l’URL pour des fautes de frappe.
{ "error": { "type": "invalid_request_error", "code": "dns_resolution_failed", "message": "L'URL contient une faute de frappe, ou le domaine n'existe pas." }}
Le site cible a une configuration HTTPS cassée ou incompatible. error.detail fournit le code d’erreur SSL spécifique pour le diagnostic ; error.code est toujours tls_error.
{ "error": { "type": "invalid_request_error", "code": "tls_error", "detail": "err_ssl_tlsv1_alert_internal_error", "message": "Le site web a fermé ou rejeté la poignée de main TLS. Le serveur peut être mal configuré ou utiliser une version SSL/TLS non prise en charge." }}
Le scrape n’a pas été complété dans le budget d’attente. La page peut être lente, protégée contre les robots, ou temporairement indisponible. Cette réponse est sûre à réessayer.
{ "error": { "type": "request_timeout", "code": "scrape_poll_timeout", "message": "La requête a expiré en attendant le résultat du scrape. La page peut être lente, bloquée pour nos fetchers, ou temporairement indisponible." }}
Scrape coûte 1 crédit par défaut. Si vous passez également des parsers, les coûts varient selon le parser (1-5 crédits). Si vous utilisez LLM extract, cela coûte 10 crédits.