Ga naar hoofdinhoud

Firecrawl: AI-webcrawler gebouwd voor LLM-toepassingen

Ontdek hoe Firecrawl webdata-extractie vereenvoudigt met AI-gedreven crawling-, scraping- en mappingtools. Leer hoe je het gebruikt met Python en AI-agents om moderne workflows aan te sturen.
· 8 min lezen

Verken met AI

Firecrawl is een nieuw soort webcrawler die is geoptimaliseerd voor AI-workflows. Ontwikkelaars kunnen er pagina’s, websites of zelfs het hele web mee scrapen. Het is bij uitstek geschikt om de complexiteit van traditioneel webscrapen weg te nemen, met functies zoals JavaScript-ondersteuning, automatische markdown-conversie en integratie met populaire LLM-frameworks.

In dit artikel beschrijf ik niet alleen de kernfunctionaliteit van Firecrawl, maar geef ik ook praktische geavanceerde tips, ecosysteme-integraties en enkele toepassingen in de praktijk, zodat je er zelf meteen mee aan de slag kunt.

Wat is Firecrawl?

Firecrawl is een AI-aangedreven webcrawler, ontwikkeld door Mendable.ai. Het is een API-service die websites crawlt en ze omzet in schone, LLM-klare data zoals markdown, JSON, enz.

Het is een AI-gestuurde aanpak die de context van een pagina begrijpt en de hoofdinhoud begrijpelijk extraheert, in tegenstelling tot traditionele scrapers zoals BeautifulSoup of Puppeteer, die het web blind crawlen en vaak onopgeschoonde data teruggeven. Het kan volledige websites omzetten naar schone markdown of gestructureerde data, en is ideaal voor LLM-taken.

Firecrawl heeft 3 kernmodi, die ik zo meteen uitgebreid bespreek. Meestal gebruik je scrape-modus om één URL te scrapen, crawl-modus om een hele website te scrapen en map-modus voor URL-ontdekking.

Belangrijkste functies van Firecrawl

Wat Firecrawl onderscheidt, is dat er geen sitemap nodig is dankzij een intelligent navigatiemechanisme; het kan zware JavaScript en dynamische webcontent aan; de output is schone markdown, HTML, JSON, screenshots en meer, wat het erg flexibel maakt; het heeft ingebouwde proxy-, anti-bot- en cachingmechanismen; het ondersteunt batchverwerking en concurrentie voor grootschalige jobs; het is extreem aanpasbaar aangezien je tags kunt uitsluiten, met custom headers kunt crawlen, crawl-diepte kunt instellen, en meer; het integreert goed met LLM-frameworks zoals LangChain, LlamaIndex en CrewAI; en het is uiteraard geschikt voor enterprise-gebruik omdat je je rate-limit, concurrency-controls en betrouwbaarheid kunt instellen.

Firecrawl instellen

Het leuke aan Firecrawl is dat je het heel snel werkend hebt. Dit zijn de hoofdstappen om het op je systeem te installeren:

API-sleutel configureren

  1. Meld je aan op firecrawl.dev om een API-sleutel te verkrijgen.
  2. Installeer de Python-clientbibliotheek:
pip install firecrawl

En als je langchain gebruikt, gebruik dan

pip install firecrawl-py
  1. Sla de API-sleutel veilig op met omgevingsvariabelen:
import os
from firecrawl import FirecrawlApp

# Set your Firecrawl API key as an environment variable for security
api_key = os.getenv('FIRECRAWL_API_KEY')
# Create an instance of the FirecrawlApp class with your API key 
app = FirecrawlApp(api_key=api_key)

Eenvoudig scraping-voorbeeld

Je kunt je eerste scraping eenvoudig doen met de methode .scrape_url():

response = app.scrape_url(url=example.com', formats=['markdown'])
print(response)

Deze code haalt de hoofdinhoud van de firecrawl.dev-webpagina op als markdown.

Firecrawl-modi en endpoints begrijpen

Firecrawl heeft drie kernmodi die bepalen hoe breed je wilt scrapen. In dit deel neem ik je mee door elk daarvan.

Scrape-modus

Scrape-modus richt zich op individuele URL’s. Ideaal voor het extraheren van productdetails of nieuwsartikelen. Met de parameter llm_extract kun je schema-based extractie inschakelen. Wat je doet, is het schema definiëren waarin je uiteindelijke JSON eruit moet zien, je configuratie starten en beginnen met scrapen:

from firecrawl import JsonConfig
from pydantic import BaseModel

# Define the expected data structure for the JSON extraction schema
class ExtractSchema(BaseModel):
    company_mission: str
    supports_sso: bool
    is_open_source: bool
    is_in_yc: bool

# Define the JSON configuration and set it to llm extraction mode
json_config = JsonConfig(
    extractionSchema=ExtractSchema.model_json_schema(),
    mode="llm-extraction",
    pageOptions={"onlyMainContent": True}
)

# Scrape the URL, extract data, and format it into JSON
llm_extraction_result = app.scrape_url(
    'https://firecrawl.dev',
    formats=["json"],
    json_options=json_config
)
print(llm_extraction_result)

Hier is een ander type single-URL-scraping, maar dit keer met selector-based extractie:

# Get a screenshot of the top of the overview page
scrape_result = app.scrape_url('firecrawl.dev', 
    formats=['markdown', 'html', "screenshot"], 
    actions=[
        {"type": "wait", "milliseconds": 3000},
        {"type": "click", "selector": "h1"},
        {"type": "wait", "milliseconds": 3000},
        {"type": "scrape"},
        {"type": "screenshot"}
    ],
)
print(scrape_result)

Dit script opent eerst de website, wacht vervolgens 3000 milliseconden, klikt op de eerste h1-selector, wacht nogmaals en scrapt en slaat dan een screenshot op van de huidige pagina. Krijg je timeout-fouten, verhoog dan de wachttijden en de timeout-parameter.

Crawl-modus

Met de crawl-modus kun je een volledige website crawlen, inclusief alle toegankelijke subpagina’s, zonder sitemap. Je krijgt een job-ID om de voortgang te volgen en je kunt metadata ophalen wanneer je extra info zoals headers en tijdstempels wilt vastleggen, snelheidsregeling toepassen om te beperken hoe snel je de site benadert, en recursieve diepte instellen om te bepalen hoeveel linkniveaus je volgt. De stappen van een crawler zijn als volgt:

  1. Eerst opent de crawler de opgegeven URL
  2. Vervolgens scrapt hij die
  3. Alle hyperlinks naar subpagina’s worden gescand en krijgen afzonderlijke crawlers
  4. De stappen worden herhaald tot een gedefinieerd maximum is bereikt.

Hier is een voorbeeld van een crawler met Python requests:

import requests

url = "https://api.firecrawl.dev/v1/crawl" 
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer YOUR_API_KEY"
}
data = {
    "url": "https://docs.firecrawl.dev", 	# site to crawl
    "limit": 100, 		# max items
    "scrapeOptions": {
        "formats": ["markdown", "html"]  	# output formats
    }
}

response = requests.post(url, headers=headers, json=data)

print(response.status_code)
print(response.json())

Deze code vertelt Firecrawl om tot 100 pagina’s op te halen van https://docs.firecrawl.dev, elke pagina terug te geven in zowel Markdown als HTML en vervolgens het resultaat af te drukken.

Wil je meer leren over API’s, bekijk dan onze cursus Introduction to APIs in Python, de code-along Working with APIs in Python, en onze tutorial Mastering Python APIs: A Comprehensive Guide to Building and Using APIs in Python.

Map-modus

Met Map kun je een website invoeren en razendsnel elke URL op de site ophalen. Daarom hebben we /map gemaakt: het zet één URL om in een uitgebreide sitemap, ideaal wanneer je eindgebruikers links wilt laten kiezen om te scrapen, snel alle site-URL’s wilt vinden, je wilt richten op pagina’s rond een specifiek onderwerp met de zoekparameter, of je crawl wilt beperken tot bepaalde pagina’s.

Let op: omdat deze endpoint snelheid prioriteert, wordt mogelijk niet elke link vastgelegd.

# Map a website:
map_result = app.map_url('https://firecrawl.dev')
print(map_result)

Deze code vertelt Firecrawl om alle links op de pagina https://firecrawl.dev te ontdekken en ze voor je op te sommen.

Toepassingen van Firecrawl in de praktijk

Firecrawl is, zoals we eerder zagen, een veelzijdig hulpmiddel voor uiteenlopende taken, wat het extreem handig maakt in praktijksituaties. Het is heel toepasbaar bij het scrapen van vacaturesites of nieuwssites om actueel aanbod of artikelen te verzamelen voor analyse, of om je voorspellende machinelearningmodel te trainen. Je kunt ook sentimentanalyse uitvoeren op gescrapete reviews, bijvoorbeeld door klantbeoordelingen van e-commerce- of reviewsites zoals Amazon te verzamelen, om sentiment te analyseren en zakelijke beslissingen te ondersteunen.

Dit kun je verder uitbreiden met prijsmonitoring, zoals het volgen van productprijzen op meerdere platforms om trends te identificeren of meldingen te activeren bij prijsdalingen. Daarnaast kun je Firecrawl gebruiken om technische documentatie te extraheren om AI-agents te trainen of te voeden, waardoor hun kennisbasis verbetert, of voor data-ingestie in multi-agent AI-pijplijnen, zoals CAMEL-AI dat doet.

Het kan ook gestructureerde webdata leveren aan retrieval-augmented generation (RAG)-systemen om de modelprestaties te verbeteren en hallucinaties te verminderen.

Geavanceerde technieken en best practices

Om het potentieel van Firecrawl te maximaliseren, noem ik enkele geavanceerde technieken en best practices:

  • Extraheer gestructureerde data voor je LLM met de /extract-endpoint om gestructureerde data te retourneren op basis van een prompt of schema, aangezien LLM’s dit type data beter verwerken dan ruwe HTML.

  • Ga foutafhandeling te lijf met retries door retry-logica met exponentiële backoff te implementeren voor tijdelijke API-fouten.

  • Optimaliseer de prestaties met Firecrawl’s asynchrone crawling om grote crawls te starten zonder je applicatie te blokkeren. Ideaal voor webapps of services.

  • Filter crawls met parameters zoals max_depth of exclude om crawls te beperken tot specifieke subdomeinen of paginatypes. Zo verminder je onnodige data.

  • Gebruik Python-tools om de gecrawlde data te valideren en op te schonen, zoals balanceren, het verwijderen van null-waarden en veel meer. pandas, numpy, seaborn en andere libraries zijn hierbij erg behulpzaam. Wil je meer leren over dataopschoning, bekijk dan onze cursus Cleaning Data in Python.

Firecrawl vs. traditionele scraping-tools

Firecrawl heeft tal van voordelen die het in de meeste gevallen tot een van de beste keuzes maken en laten opvallen ten opzichte van traditionele scraping-tools zoals Scrapy, BeautifulSoup en Puppeteer. Het verwerkt moeiteloos door JavaScript gerenderde content, terwijl tools zoals BeautifulSoup aanvullende tools zoals Selenium en soms handmatige inspectie vereisen. Het heeft ingebouwde proxy-rotatie en behandelt rate-limits om de set-uptijd te verkorten vergeleken met Scrapy’s handmatige configuraties, die op zichzelf veel tijd kosten. Bovendien leveren Firecrawl’s LLM-extractiemogelijkheden gestructureerde data, een functie die in de meeste traditionele tools ontbreekt.

Toch kunnen traditionele tools in specifieke gevallen de voorkeur hebben, bijvoorbeeld wanneer je lokaal wilt draaien; tools zoals BeautifulSoup werken lokaal zonder API-afhankelijkheden, wat aantrekkelijk is voor gebruikers die clouddiensten willen vermijden. Eenvoud en efficiëntie van implementatie gaan soms ten koste van extreme maatwerkopties, zoals Scrapy dat zeer fijnmazige controle biedt voor sterk aanpasbare scraping-pijplijnen.

Integraties en ecosysteemondersteuning

Firecrawl integreert goed met veel gangbare LLM-frameworks, met robuuste ecosysteemondersteuning, wat de bruikbaarheid in AI-workflows vergroot. Je kunt integreren met LangChain via de module FirecrawlLoader, die eenvoudige integratie van webdata in LangChain-pijplijnen mogelijk maakt. Of gebruik het met LlamaIndex, aangezien de FirecrawlReader het laden van webdata voor indexing en querying ondersteunt. Firecrawl is ook een ingebouwde tool voor het crawlen van websites binnen CrewAI’s framework en ondersteunt veel andere frameworks zoals Flowise, Dify en CAMEL-AI, met brede compatibiliteit.

Prijzen en gebruikslimieten

Firecrawl biedt verschillende prijsplannen afhankelijk van de use-case om aan uiteenlopende behoeften te voldoen. Zorg ervoor dat je de officiële Firecrawl-prijzenpagina raadpleegt, voor het geval er iets verandert.

  • Gratis tier: Bevat een beperkt aantal credits en is geschikt voor testen en kleine projecten.
  • Hobby-tier: Biedt meer credits voor individuen of kleine teams tegen lage kosten.
  • Standard-, Growth-, Enterprise-tiers: Bieden oplopende credits, hogere rate-limits en geavanceerde functies zoals aangepaste requests per minuut (RPM).

Het creditsysteem werkt als volgt:

Plan

Credits

Functies

Beste voor

Free

Beperkt

Basis-scraping, testen

Beginners, kleine projecten

Hobby

Gemiddeld

Meer credits, standaardfuncties

Individuele ontwikkelaars

Standards

Hoog

Hogere rate-limits, geavanceerde functies

Groeiende teams

Growth

Zeer hoog

Schaalbaar, aangepaste opties

Grote projecten

Enterprise

Onbeperkt

Aangepaste RPM, dedicated support

Groot volume, enterprise-gebruik

Conclusie

Firecrawl verandert het spel voor webdata-extractie, vooral voor AI-toepassingen. Door websites om te zetten in schone, gestructureerde, LLM-klare data helpt het ontwikkelaars slimmer te bouwen. De gebruiksvriendelijkheid, rijke set aan functies en uitgebreide integraties maken het een topkeuze voor taken variërend van prijsmonitoring tot RAG-workflows.

Ik moedig je aan om de gratis tier van Firecrawl te verkennen om de mogelijkheden te testen. Blijf betrokken bij de community op Firecrawl GitHub en Discord voor updates, tips en support.

Met Firecrawl is webdata geen uitdaging meer. Het is een krachtige troef voor je AI-innovaties.

Als volgende stap raad ik de volgende cursus en code-along aan:

Iheb Gafsi

Auteur

Iheb Gafsi

Ik werk aan versnelde AI-systemen die edge-intelligentie mogelijk maken met gefedereerde ML-pijplijnen op gedecentraliseerde data en gedistribueerde workloads.  Mijn werk richt zich op Large Models, spraakverwerking, computervisie, reinforcement learning en geavanceerde ML-topologieën.

FAQs

Waarom krijg ik een timeout-fout?

Controleer eerst of je je API-sleutel correct gebruikt en debug vervolgens of de website de onderdelen die je scrapt goed vindt.

Gebruikt Firecrawl alleen AI-aangedreven zoekopdrachten?

Nee, je kunt verschillende soorten zoekmethoden gebruiken, zoals selector-based en LLM-based search.

Kan Firecrawl websites met zware JavaScript-content aan?

Ja, Firecrawl is zelfs geoptimaliseerd voor dynamische websites.

Wanneer zou ik een traditionele tool zoals BeautifulSoup boven FireCrawl verkiezen?

BeautifulSoup is lokaal, gratis en geschikt voor eenvoudige HTML-scraping.

Kan ik Firecrawl gratis testen?

Ja, je hebt als tester een beperkt aantal requests per minuut.

Onderwerpen

Gerelateerd