firecrawl/apps/js-sdk/example.ts

61 lines
1.7 KiB
TypeScript
Raw Permalink Normal View History

2024-09-10 12:09:39 +00:00
import FirecrawlApp, { CrawlStatusResponse, ErrorResponse } from 'firecrawl';
2024-05-09 13:36:56 +00:00
const app = new FirecrawlApp({apiKey: "fc-YOUR_API_KEY"});
2024-08-28 19:27:29 +00:00
const main = async () => {
2024-08-28 19:27:29 +00:00
// Scrape a website:
const scrapeResult = await app.scrapeUrl('firecrawl.dev');
2024-05-09 13:36:56 +00:00
if (scrapeResult.success) {
2024-08-28 19:27:29 +00:00
console.log(scrapeResult.markdown)
}
2024-05-09 13:36:56 +00:00
2024-08-28 19:27:29 +00:00
// Crawl a website:
const crawlResult = await app.crawlUrl('mendable.ai', { excludePaths: ['blog/*'], limit: 5});
console.log(crawlResult);
// Asynchronously crawl a website:
const asyncCrawlResult = await app.asyncCrawlUrl('mendable.ai', { excludePaths: ['blog/*'], limit: 5});
if (asyncCrawlResult.success) {
const id = asyncCrawlResult.id;
console.log(id);
let checkStatus: CrawlStatusResponse | ErrorResponse;
if (asyncCrawlResult.success) {
while (true) {
checkStatus = await app.checkCrawlStatus(id);
if (checkStatus.success && checkStatus.status === 'completed') {
break;
}
await new Promise(resolve => setTimeout(resolve, 1000)); // wait 1 second
}
if (checkStatus.success && checkStatus.data) {
console.log(checkStatus.data[0].markdown);
}
2024-08-28 19:27:29 +00:00
}
2024-05-09 13:36:56 +00:00
}
2024-08-29 18:01:16 +00:00
// Map a website:
2024-08-28 19:27:29 +00:00
const mapResult = await app.mapUrl('https://firecrawl.dev');
console.log(mapResult)
2024-08-29 18:01:16 +00:00
// Crawl a website with WebSockets:
const watch = await app.crawlUrlAndWatch('mendable.ai', { excludePaths: ['blog/*'], limit: 5});
watch.addEventListener("document", doc => {
console.log("DOC", doc.detail);
});
watch.addEventListener("error", err => {
console.error("ERR", err.detail.error);
});
watch.addEventListener("done", state => {
console.log("DONE", state.detail.status);
});
}
2024-08-28 19:27:29 +00:00
main()