Firecrawl: Web Scraping API untuk Aplikasi AI dan LLM
Firecrawl adalah managed web scraping API yang dirancang khusus untuk kebutuhan AI dan LLM. Berbeda dengan web scraper tradisional, Firecrawl menghasilkan output dalam format markdown yang bersih dan terstruktur, siap digunakan untuk pipeline RAG (Retrieval-Augmented Generation), fine-tuning dataset, atau knowledge base construction.
Artikel ini membahas cara menggunakan Firecrawl untuk berbagai skenario web scraping dalam konteks aplikasi AI, mulai dari scraping halaman tunggal hingga membangun pipeline ingestion knowledge base secara lengkap.
Mengapa Firecrawl?
Web scraping untuk keperluan AI memiliki tantangan unik. Tools scraping tradisional seperti BeautifulSoup atau Scrapy menghasilkan HTML mentah yang perlu dibersihkan secara manual. Halaman modern sering menggunakan JavaScript rendering yang memerlukan browser automation. Firecrawl menyelesaikan masalah ini:
- Output markdown bersih: Konten langsung dalam format yang dimengerti LLM
- JavaScript rendering: Menangani halaman SPA dan dynamic content secara otomatis
- Structured data extraction: Ekstraksi data terstruktur menggunakan LLM built-in
- Crawling website: Jelajahi seluruh website secara otomatis mengikuti link
- Managed infrastructure: Tidak perlu mengelola proxy, browser, atau server sendiri
- Rate limiting otomatis: Menghormati robots.txt dan rate limits
Instalasi dan Setup
Instalasi SDK
pip install firecrawl-py
API Key Setup
Daftar di firecrawl.dev untuk mendapatkan API key:
from firecrawl import FirecrawlApp
app = FirecrawlApp(apikey="fc-YOURAPIKEYHERE")
Atau set sebagai environment variable:
export FIRECRAWLAPIKEY="fc-YOURAPIKEYHERE"
import os
from firecrawl import FirecrawlApp
app = FirecrawlApp(apikey=os.getenv("FIRECRAWLAPIKEY"))
Scrape Halaman Tunggal
Output Markdown
Firecrawl mengubah halaman web menjadi markdown yang bersih:
from firecrawl import FirecrawlApp
app = FirecrawlApp(apikey="fc-YOURAPIKEY")
Scrape halaman tunggal
result = app.scrapeurl(
"https://docs.python.org/3/tutorial/classes.html",
params={"formats": ["markdown"]}
)
Akses konten markdown
markdowncontent = result.get("markdown", "")
print(f"Panjang konten: {len(markdowncontent)} karakter")
print(markdowncontent[:500])
Metadata halaman
metadata = result.get("metadata", {})
print(f"Title: {metadata.get('title')}")
print(f"Description: {metadata.get('description')}")
print(f"Language: {metadata.get('language')}")
Output HTML
Jika Anda membutuhkan HTML mentah:
result = app.scrapeurl(
"https://example.com/article",
params={"formats": ["html", "markdown"]}
)
htmlcontent = result.get("html", "")
markdowncontent = result.get("markdown", "")
print(f"HTML length: {len(htmlcontent)}")
print(f"Markdown length: {len(markdowncontent)}")
Screenshot
Firecrawl juga bisa mengambil screenshot halaman:
result = app.scrapeurl(
"https://example.com",
params={"formats": ["screenshot"]}
)
screenshot
url = result.get("screenshot")
print(f"Screenshot URL: {screenshoturl}")
Download screenshot
import requests
if screenshoturl:
response = requests.get(screenshoturl)
with open("screenshot.png", "wb") as f:
f.write(response.content)
print("Screenshot saved!")
Crawl Seluruh Website
Firecrawl bisa menjelajahi seluruh website dengan mengikuti link secara otomatis:
from firecrawl import FirecrawlApp
app = FirecrawlApp(apikey="fc-YOURAPIKEY")
Crawl website dengan konfigurasi
crawlresult = app.crawlurl(
"https://docs.python.org/3/tutorial/",
params={
"limit": 50, # Maksimal 50 halaman
"maxDepth": 3, # Kedalaman link maksimal
"includePaths": ["/3/tutorial/"], # Hanya path tertentu