A Java client library for the Firecrawl API, providing web crawling, scraping, and search capabilities.
This repository is deprecated. Do not use this copy for new projects or updates.
Use the official Firecrawl Java SDK instead: https://docs.firecrawl.dev/sdks/java
The official docs are the canonical source for installation, usage, and the latest SDK information.
- Java 17 or higher
- Maven 3.8+ (for building from source)
v2 of this SDK is distributed via JitPack. Add the JitPack repository and use the JitPack coordinates for this repo.
Maven (pom.xml):
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependency>
<groupId>com.github.firecrawl</groupId>
<artifactId>firecrawl-java-sdk</artifactId>
<version>2.1.0</version>
</dependency>Gradle (Groovy DSL; Kotlin DSL similar):
repositories {
maven { url = uri('https://jitpack.io') }
}
dependencies {
implementation 'com.github.firecrawl:firecrawl-java-sdk:2.1.0'
}If you still need the legacy v1 package via JitPack, use the coordinates below and include the JitPack repository.
Maven:
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependency>
<groupId>com.github.mendableai</groupId>
<artifactId>firecrawl-java-sdk</artifactId>
<version>0.8</version>
</dependency>Gradle:
repositories {
maven { url = uri('https://jitpack.io') }
}
dependencies {
implementation 'com.github.mendableai:firecrawl-java-sdk:0.8'
}To build and install the SDK locally:
git clone https://github.com/firecrawl/firecrawl-java-sdk.git
cd firecrawl-java-sdk
mvn installimport dev.firecrawl.client.FirecrawlClient;
import dev.firecrawl.model.*;
import java.time.Duration;
// Create a client with default endpoint
FirecrawlClient client = new FirecrawlClient(
"your-api-key",
null, // Uses default endpoint: https://api.firecrawl.dev
Duration.ofSeconds(60) // Request timeout
);
// Or specify a custom endpoint
FirecrawlClient client2 = new FirecrawlClient(
"your-api-key",
"https://custom-api-endpoint.example.com",
Duration.ofSeconds(120)
);
// You can also set the API key via the FIRECRAWL_API_KEY environment variable
// Optionally set FIRECRAWL_API_URL to override the default endpoint
// Pass null timeout to use the default of 120 seconds
FirecrawlClient client3 = new FirecrawlClient(
null, // Will use FIRECRAWL_API_KEY environment variable
null, // Will use FIRECRAWL_API_URL if set, otherwise https://api.firecrawl.dev
null // Default timeout is 120 seconds when null
);// Simple scraping
FirecrawlDocument doc = client.scrapeURL("https://example.com", null);
System.out.println(doc.getHtml());
System.out.println(doc.getText());
// Advanced scraping with options
ScrapeParams params = new ScrapeParams();
params.setOnlyMainContent(true); // Extract only main content
params.setWaitFor(5000); // Wait 5 seconds after page load
FirecrawlDocument doc2 = client.scrapeURL("https://example.com", params);Note: In v2, sources currently only supports "web". The SDK enforces this by normalizing sources to ["web"] when provided.
// Basic search
SearchParams params = new SearchParams("open source java sdk");
params.setLimit(10);
params.setLang("en");
SearchResponse resp = client.search(params);
// Process results
if (resp.isSuccess()) {
for (SearchResult result : resp.getResults()) {
System.out.println(result.getTitle() + " - " + result.getUrl());
}
}
// Check for warnings
if (resp.getWarning() != null) {
System.err.println("Warning: " + resp.getWarning());
}// Asynchronous crawling
String idempotencyKey = java.util.UUID.randomUUID().toString();
CrawlParams params = new CrawlParams();
CrawlResponse resp = client.asyncCrawlURL("https://example.com", params, idempotencyKey);
String jobId = resp.getId();
// Check crawl status
CrawlStatusResponse status = client.checkCrawlStatus(jobId);
System.out.println("Crawl status: " + status.getStatus());
// Synchronous crawling (with polling)
CrawlStatusResponse result = client.crawlURL("https://example.com", params, idempotencyKey, 5);
if ("completed".equals(result.getStatus())) {
FirecrawlDocument[] documents = result.getData();
// Process crawled documents
}
// Cancel a crawl job
CancelCrawlJobResponse cancelResp = client.cancelCrawlJob(jobId);MapParams params = new MapParams();
MapResponse resp = client.mapURL("https://example.com", params);
if (resp.isSuccess()) {
String[] links = resp.getLinks();
// Process links
}For detailed API documentation, visit https://firecrawl.dev/docs.
This SDK is available under the MIT License. See the LICENSE file for more information.