
Deploy Firecrawl | (Just Updated) Web Scraper API for LLMs, Not Open to the Internet
API-key-gated web scraper API for LLMs. Queue, cache and renderer wired.
firecrawl
Just deployed
Just deployed
nuq-postgres
Just deployed
/var/lib/postgresql
Just deployed
/var/lib/rabbitmq
redis
Just deployed
/data
Deploy and Host Firecrawl on Railway
Firecrawl turns any website into clean, LLM-ready Markdown or structured JSON. It scrapes single pages, crawls whole sites, maps URLs, and renders JavaScript through a headless browser, all behind one HTTP API with official Python and Node SDKs.
This template runs the self-hosted edition with an API key required on every route, its job queue and cache on persistent volumes, and every image pinned.
About Hosting Firecrawl
Self-hosted Firecrawl is not a single container. The API process supervises a worker pool, an
extract worker and several queue workers, and it needs three backing services: a Postgres built
with the nuq job schema, RabbitMQ for the job exchange, and Redis for caching and rate limits.
When those are not supplied, Firecrawl's harness tries to start them itself with Docker and exits
with Neither Docker nor Podman found — which is what happens inside any container platform.
This template wires all five services together over Railway's private network, keeps the queue
database, the RabbitMQ store and the Redis append-only file on volumes, and puts an nginx gateway
in front of the API so the public URL requires this deployment's own FIRECRAWL_API_KEY. The
renderer, the queue and the databases have no public address at all.
Why Deploy Firecrawl on Railway?
Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.
By deploying Firecrawl on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.
Specifically for this template: self-hosted Firecrawl authenticates nobody. USE_DB_AUTHENTICATION
is false in every supported self-hosted configuration, and the code path that reads it returns a
mock success before the Authorization header is ever examined. A stock deploy therefore lets
anyone who learns the URL scrape and crawl the whole internet on your bill. This template closes
that, generates every credential per deploy, and boots refusing to run without a key.
Common Use Cases
- Feeding a RAG pipeline or vector store with clean Markdown from documentation and marketing sites
- Giving an AI agent a scraping tool it can call over HTTP, with a key you control
- Bulk site crawls for competitive research, price monitoring or content migration
- Extracting structured JSON from pages against a schema you define
Dependencies for Firecrawl Hosting
- Firecrawl API (
ghcr.io/bon5co/firecrawl-railway, on the officialghcr.io/firecrawl/firecrawl) - Playwright renderer (
ghcr.io/firecrawl/playwright-service) nuq-postgres— Firecrawl's own Postgres build, carrying the queue schema- RabbitMQ 4.1
- Redis 8.2
Deployment Dependencies
- Firecrawl source and self-hosting guide: https://github.com/firecrawl/firecrawl
- API reference: https://docs.firecrawl.dev
Implementation Details
Call the API with the generated key:
curl -X POST https:///v1/scrape \
-H "Authorization: Bearer $FIRECRAWL_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com", "formats": ["markdown"]}'
The same key works with the official SDKs by pointing them at your deployment:
from firecrawl import FirecrawlApp
app = FirecrawlApp(api_key="", api_url="https://")
FIRECRAWL_API_KEY is generated per deploy and lives in the firecrawl service's variables. Only
/ is reachable without it. LLM-backed endpoints (JSON extraction, llmstxt) additionally need an
OPENAI_API_KEY or an OLLAMA_BASE_URL added to the firecrawl service; plain scrape, crawl,
map and search do not.
Template Content
