Skip to main content
This guide walks you through running the Firecrawl API server on your local machine. Follow these steps to set up the development environment, start the services, and send your first request. If you’re contributing, the process follows standard open-source conventions: fork the repo, make changes, run tests, and open a pull request. For questions or help getting started, reach out to help@firecrawl.com or submit an issue.

Prerequisites

Install the following before proceeding:

Set up the database

You need a PostgreSQL database initialized with the schema at apps/nuq-postgres/nuq.sql. The easiest approach is to use the Docker image inside apps/nuq-postgres. With Docker running, build and start the container:

Configure environment variables

Copy the template to create your .env file in the apps/api/ directory:
For a minimal local setup without authentication or optional sub-services (PDF parsing, JS blocking, AI features), use the following configuration:
apps/api/.env

Install dependencies

From the apps/api/ directory, install packages with pnpm:

Start the services

You need three terminal sessions running simultaneously: Redis, the API server, and a terminal for sending requests.

Terminal 1 — Redis

Start the Redis server from anywhere in the project:

Terminal 2 — API server

Navigate to apps/api/ and start the service:
This starts the API server and the workers responsible for processing crawl jobs.
If you plan to use the LLM extract feature, export your OpenAI key first: export OPENAI_API_KEY=sk-...

Terminal 3 — Send a test request

Verify the server is running with a health check:
This should return Hello, world!. To test the crawl endpoint:

Alternative: Docker Compose

For a simpler setup, Docker Compose runs all services (Redis, API server, and workers) in a single command.
  1. Make sure Docker and Docker Compose are installed.
  2. Copy .env.example to .env in the apps/api/ directory and configure as needed.
  3. From the project root, run:
This starts all services automatically in the correct configuration.

Running tests

Run the test suite with: