---
title: "Deploy Firecrawl | (Just Updated) Web Scraper API for LLMs, Not Open to the Internet"
description: "API-key-gated web scraper API for LLMs. Queue, cache and renderer wired."
category: "AI/ML"
url: https://railway.com/deploy/firecrawl-or-just-updated-web-scraper-ap
---

# 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.

**[Deploy Firecrawl | (Just Updated) Web Scraper API for LLMs, Not Open to the Internet on Railway](https://railway.com/template/firecrawl-or-just-updated-web-scraper-ap)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/firecrawl-or-just-updated-web-scraper-ap/manifest.json

- **Creator:** SuperSlowSloth
- **Category:** AI/ML

## Template content

### firecrawl

- **Image:** ghcr.io/bon5co/firecrawl-railway:2.11.209
- **Health check:** /
- **Public domain:** Yes

### playwright

- **Image:** ghcr.io/bon5co/firecrawl-railway-playwright:2026.08.22

### nuq-postgres

- **Image:** ghcr.io/firecrawl/nuq-postgres@sha256:aed86f62858f29bd971abddcdeb301c12888098d2cf5d33c1ba42b053bc460f6

### rabbitmq

- **Image:** ghcr.io/bon5co/firecrawl-railway-rabbitmq:4.1.4

### redis

- **Image:** redis:8.2.1-alpine
- **Start command:** `/bin/sh -c 'chown -R redis:redis /data && exec docker-entrypoint.sh redis-server --requirepass "$REDIS_PASSWORD" --appendonly yes --dir /data'`

## Documentation

# 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 official `ghcr.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:

```bash
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:

```python
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.


## Similar templates

- [Chat Chat](https://railway.com/deploy/-WWW5r) — Chat Chat, your own unified chat and search to AI platform.
- [stella](https://railway.com/deploy/stella) — Self-host stella with web, API, Postgres, Redis, and object storage.
- [Hermes Agent | OpenClaw Alternative with Dashboard](https://railway.com/deploy/hermes-agent-or-openclaw-alternative-wit) — Self-Hosted Hermes AI Agent for Telegram, Discord & Slack

Open this page in a browser: https://railway.com/deploy/firecrawl-or-just-updated-web-scraper-ap
