
Deploy Firecrawl API [Updated Aug '26]
Firecrawl [Aug '26] (Web Scraping & Crawling API for LLMs) Self Host
Redis
Just deployed
/data
observant-dream
Just deployed
poetic-wonder
Just deployed
independent-cat
Just deployed
/var/lib/postgresql/data
firecrawl-railway
Just deployed
Deploy and Host Firecrawl Self-Hosted on Railway
Firecrawl is the open-source API that turns any website into clean markdown, HTML, or structured data, built specifically to feed LLMs real web content instead of stale training data. Scrape a single page, crawl an entire site, or extract structured data, JavaScript rendering included.
About Hosting Firecrawl-Self-Hosted
Firecrawl Cloud's Standard plan runs about $83/month for 100,000 credits, and those credits don't roll over between billing cycles, unused ones just expire. Structured extraction is billed separately on top of that, often pushing a real Standard-plus-extraction setup to $172-188/month minimum. Self-hosted Firecrawl on Railway costs a flat infrastructure fee no matter how many pages you scrape or how much you extract.
The bigger reason to self-host a scraping tool specifically isn't only the pricing curve. Every URL you scrape, every page of content you pull, passes through whoever's running the API. For competitive research, internal tooling, or anything touching data you'd rather not hand to a third party, self-hosting keeps that traffic entirely on infrastructure you control.
It's worth being direct about something most Firecrawl templates on Railway get wrong: the most popular existing one uses unofficial, third-party rebuilt images instead of Firecrawl's own, and skips RabbitMQ entirely, despite the current API container hard-depending on it to even start. That combination is the most likely explanation for that template's real-world 75% deploy success rate, not a coin-flip, a specific, fixable gap. This template uses Firecrawl's own official images from ghcr.io/firecrawl/* and every service its current docker-compose actually specifies.
This isn't a small or unproven project either. Firecrawl has real traction in the AI development community, one of the default answers to "how do I get clean web content into my LLM pipeline," with official SDKs and framework integrations across the LangChain/LlamaIndex ecosystem. A scraping tool with real momentum keeps working as target sites change their anti-bot patterns, a smaller project can fall behind.
Common Use Cases
- RAG pipelines needing real web content: Feed an LLM's context window clean, current markdown from any site instead of relying on stale training data.
- AI agents that browse the web: Give an agent a genuinely reliable way to read a webpage's real content, including pages that need JavaScript to render.
- Competitive monitoring: Crawl competitor sites on a schedule and extract structured pricing, product, or feature data automatically.
- Content aggregation: Pull articles, listings, or documentation from multiple sources into one consistent markdown format.
- Research and large-scale data collection: Extract structured data from hundreds or thousands of pages without hand-writing a custom scraper for each site.
- Internal tooling and automation: Feed scraped, cleaned content directly into internal workflows, search indexes, or knowledge bases.
Dependencies for Firecrawl-Self-Hosted Hosting
- Redis for the job queue and rate limiting.
- RabbitMQ as the message broker, a hard dependency the API container won't start without.
- A dedicated Postgres database for the job queue backend.
- A separate Playwright service for rendering JavaScript-heavy pages.
Deployment Dependencies
This template provisions all five real services automatically, wired together over Railway's private network: the API, Playwright rendering service, Redis, RabbitMQ, and a dedicated Postgres queue backend. Reference: Firecrawl GitHub Repository, Firecrawl Self-Host Guide, Firecrawl API Documentation.
Implementation Details
This template runs ghcr.io/firecrawl/firecrawl:2.11.164 for the API, Firecrawl's own official image, confirmed via the real registry, not a third-party rebuild. The Playwright image is pinned by digest instead of a version tag, since it publishes no numbered releases upstream. The Postgres queue backend is built from source rather than pulling the published nuq-postgres image, a real deploy crash during development confirmed that image was stale relative to Firecrawl's current schema; building from source keeps it in sync with the pinned API version, the same guarantee Firecrawl's own docker-compose gets by building both from one checkout. The API's current architecture runs a single "harness" process handling both the server and internal job workers together, simpler than older Firecrawl versions that used separate worker and extract-worker containers, one the widely-used alternative template on Railway doesn't fully account for.
How Firecrawl Compares to the Alternatives
Vs. Apify: Apify is a broader scraping and automation platform with a large actor marketplace, but its usage-metered pricing follows a similar curve to Firecrawl Cloud's own. Firecrawl is purpose-built specifically for clean, LLM-ready markdown output, a narrower but more directly useful format if that's actually what you need.
Vs. a custom Playwright/Puppeteer stack: Building your own scraper gives full control, but means handling JS rendering, rate limiting, retry logic, and job queueing yourself, plus ongoing maintenance as target sites change their anti-bot patterns. Firecrawl ships all of that already built and maintained.
Vs. ScrapingBee and similar scraping APIs: These are API-only with no self-hosted option at all, your scraped content always passes through their infrastructure. Firecrawl can run entirely on infrastructure you control, keeping every target URL and every byte of extracted content private.
Getting Started
After deploying, give the stack real time before assuming something's wrong. This is a five-service architecture with genuine startup dependencies, the API needs both RabbitMQ and Postgres healthy before it can fully come up, so the full chain takes noticeably longer than a single-service template.
Once it's healthy, copy your BULL_AUTH_KEY value from the API service's Variables tab, this secures the queue admin dashboard at /admin//queues, worth bookmarking if you ever need to inspect stuck jobs.
Send your first real scrape request to /v1/scrape with a target URL and confirm you get clean markdown back, not just a 200 status. Then try a page you know requires JavaScript to render fully, this is the real test of whether the Playwright service is actually wired up correctly, not just that basic static-page scraping works.
If you're planning to crawl entire sites rather than scrape single pages, start with a small crawl (limit it to a handful of pages) before running anything large. Confirm the job actually completes and the results look right, crawl behavior and link-following rules are easy to get wrong on the first attempt, and it's a much smaller problem to catch on 5 pages than on 5,000.
One thing worth testing directly given this template's whole reason for existing: redeploy the stack once after your first successful scrape and confirm everything comes back up healthy and a scrape still works afterward. That's the real proof this architecture is genuinely more reliable than a partial one, not just that it worked once.
It's also worth checking the Bull queue dashboard at least once early on, even if you don't need it day to day. Seeing a job actually move through the queue, from pending to active to completed, is a more concrete confirmation that the whole RabbitMQ-to-worker pipeline is wired correctly than a single successful scrape request alone.
Why Deploy Firecrawl-Self-Hosted 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-self-hosted 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.
Frequently Asked Questions
Is there any way to require an API key for requests?
Not right now, and that's confirmed directly in Firecrawl's own official documentation, not a limitation of this template specifically. Self-hosted instances can't currently configure the Supabase-based DB authentication mode. If that matters for your deployment, put it behind your own auth layer or firewall.
Why does this template deploy 5 services when some other templates only use 3?
Because Firecrawl's current architecture genuinely needs them. The API container hard-depends on RabbitMQ specifically, and a widely-used alternative template on Railway skips it entirely, the most likely explanation for that template's real-world 75% deploy success rate rather than a clean pass or fail.
Will my scraped data and job history survive a redeploy?
Postgres, the queue backend, has a persistent Railway volume, so job history survives. Redis and RabbitMQ don't have volumes, matching Firecrawl's own official configuration, losing in-flight queue state on a restart is an accepted upstream tradeoff, not a bug here.
Does this handle JavaScript-heavy sites automatically?
Yes, the dedicated Playwright service renders JS-heavy pages without any extra configuration on your part, Firecrawl detects when it's needed.
Can I extract structured data, not just markdown?
Yes, Firecrawl's /extract endpoint returns structured JSON based on a schema you define, on top of the standard markdown/HTML scraping output.
Where can I download Firecrawl?
Source code is at github.com/firecrawl/firecrawl, with Docker images published to ghcr.io/firecrawl/*. This template pulls specific verified versions automatically.
Template Content
Redis
redis:8.2.1observant-dream
shruti060701/firecrawl-railwaypoetic-wonder
shruti060701/firecrawl-railwayindependent-cat
shruti060701/firecrawl-railwayfirecrawl-railway
shruti060701/firecrawl-railway