Where the bot can actually live

A provider-by-provider breakdown of compute costs, browser-capability limits, and what it realistically takes to run FBM Sniper in the cloud. Every figure is a 2026 reference estimate based on current public pricing.

Two workload classes drive every cost decision

The bot's monitors split into two completely different cost profiles. You cannot evaluate a hosting provider without knowing which monitors you are running there. Every dollar figure on this page refers to one of these two buckets.

Request-based (light)

Plain HTTP pollers

Monitors: Wallapop, Vinted catalog and item, OfferUp

Each poll cycle is a single JSON GET request, returning in under a second. No browser, no cookie session, no Chromium binary. Memory footprint is a few MB per monitor. Runs on any $5/mo VPS, serverless cron (Lambda, Cloud Functions, Workers Cron Triggers), or even a Raspberry Pi. Datacenter IPs are accepted by all three platforms.

Cloud verdict: Trivially portable. Near-zero cost.

Puppeteer/Chromium (heavy)

Full headless browser sessions

Monitors: Facebook Cars, Facebook Electronics, Mercari. Plus: occasional Vinted token refresh (Puppeteer used only to mint an access_token_web cookie, not for the main polling loop).

Each concurrent Chromium instance uses 0.5-1GB RAM. The Facebook monitors require a logged-in Facebook session cookie stored on the host machine. Facebook aggressively rate-limits and checkpoints datacenter IPs, so any cloud deployment requires residential or mobile proxies. These three monitors are the entire cost, fragility, and credential-custody problem for cloud hosting.

Cloud verdict: Expensive, fragile, and ban-prone at scale.

Provider comparison: compute cost and browser feasibility

All compute figures are 2026 reference estimates for a single deployment instance. Proxy cost is listed separately and is an additive line item on top of compute for any cloud-hosted Puppeteer workload.

Provider / configuration Compute /mo Residential proxy /mo Browser-capable Best fit
AWS Lambda + EventBridge (request pollers) ~$0-2 N/A Request pollers only Wallapop, Vinted, OfferUp cron jobs
AWS EC2 t3.small (2 vCPU, 2GB RAM) ~$15/mo $40-150+ Yes, 1-2 concurrent Always-on Puppeteer; tight on RAM
AWS EC2 t3.medium (2 vCPU, 4GB RAM) ~$29/mo $40-150+ Yes, 3-5 concurrent Comfortable Puppeteer headroom
AWS Fargate (per task) ~$20-40/mo $40-150+ Yes, per-task billing Containerized browser tasks
Firebase Cloud Functions (request pollers) ~$0-3 N/A Pollers only; 60-min time limit Wallapop, Vinted, OfferUp polling
GCP Cloud Run (always-on min=1) ~$20-30/mo $40-150+ Possible; cold-start pain Awkward for persistent browser sessions
Hetzner CX22 (2 vCPU, 4GB RAM) ~4.49 EUR (~$5) $40-150+ Yes, 3-5 concurrent Best value all-in-one always-on box
Hetzner CX32 (4 vCPU, 8GB RAM) ~8.99 EUR (~$10) $40-150+ Yes, 7-10 concurrent Multi-user browser workloads
DigitalOcean 4GB Droplet ~$24/mo $40-150+ Yes, 3-5 concurrent Reliable, good DO ecosystem tooling
Vultr High Frequency 4GB ~$24/mo $40-150+ Yes, 3-5 concurrent NVMe SSD, global DCs
Fly.io (1 vCPU, 2GB machine, always-on) ~$11/mo $40-150+ Yes, disable auto-sleep Good for request pollers; browser viable
Railway (usage-based, always-on) ~$10-30/mo $40-150+ Possible; costly 24/7 Great DX; better for pollers than browser
Cloudflare Workers + Cron Triggers ~$0-5/mo N/A No always-on Chromium Request pollers only via Cron Triggers

N/A for proxy = datacenter IPs are accepted by Wallapop, Vinted, and OfferUp. Any cloud deployment of the Facebook or Mercari monitors requires residential proxies regardless of provider. Proxy cost is additive on top of every compute figure in the Puppeteer rows. 2026 estimate.

Compute cost for Puppeteer-capable providers

Monthly compute only. Residential proxy costs ($40-150+/mo) are not shown here but stack on top for any cloud-hosted Facebook or Mercari monitor. Request pollers run for $0-5/mo on Lambda, Firebase, or Workers, regardless of provider choice for the browser side.

Sources: Hetzner public pricing (Apr 2026), Vantage Instances EC2 data (Jun 2026), DigitalOcean/Vultr/Fly.io public pricing pages (Jun 2026). All figures in USD/mo. EUR converted at ~1.08.

AWS

Amazon Web Services

Request pollers: Lambda + EventBridge

Wallapop, Vinted, and OfferUp are textbook Lambda use cases. Sub-second HTTP calls, low memory, scheduled via EventBridge Scheduler. Cost is near-zero:

Lambda invocations (first 1M/mo free)~$0-1/mo
Lambda compute (128MB, ~500ms avg)~$0-1/mo
EventBridge Scheduler rules~$0/mo
NAT Gateway (if using VPC)~$32+/mo

Avoid VPC for public API polling. NAT Gateway adds a ~$32/mo fixed cost plus $0.045/GB egress. Run Lambda outside a VPC for the request pollers and egress to public internet is free within the free tier. 2026 estimate.

Puppeteer monitors: EC2 or Fargate

Lambda can technically run headless Chrome via a Chromium layer, but the 15-minute execution limit and cold-start latency make persistent scrolling sessions impractical. Use EC2 or Fargate:

EC2 t3.small (2 vCPU, 2GB) us-east-1~$15.18/mo
EC2 t3.medium (2 vCPU, 4GB) us-east-1~$29.20/mo
EBS gp3 20GB volume~$1.60/mo
Egress (first 100GB/mo free)~$0-5/mo
Residential proxy (Facebook sessions)$40-150+/mo

t3.small RAM is tight. One Chromium session uses 0.5-1GB. Facebook Cars + Facebook Electronics running simultaneously on t3.small (2GB) will swap. Use t3.medium (4GB) for reliable concurrent monitoring. 2026 estimate.


How to make AWS work

Request pollers: Deploy each monitor as a standalone Lambda function with an EventBridge Scheduled Rule (rate 1-5 minutes). Store snipe results in DynamoDB or push via SNS. Cost under $3/mo for typical polling frequency.

Puppeteer monitors: Run an EC2 t3.medium with PM2 managing the Node process. Assign an Elastic IP so your residential proxy provider can allowlist the outbound address. Set PROXY_* env vars to a Bright Data or Oxylabs residential pool. The Facebook session must be bootstrapped interactively once per checkpoint cycle (days to weeks), which means you need a VNC session or remote-debug endpoint for re-auth. This is the credential-custody liability at scale.

Firebase / GCP

Firebase and Google Cloud

Request pollers: Cloud Functions + Scheduler

Cloud Functions v2 with Cloud Scheduler is clean for JSON polling. Firestore stores watchlists and last-seen IDs. Free tier covers significant volume:

Cloud Functions invocations (2M free/mo)~$0/mo
Cloud Scheduler (3 jobs free, then $0.10/job)~$0-1/mo
Firestore reads (50K reads/day free)~$0-3/mo

60-minute execution limit. Cloud Functions (2nd gen) caps each invocation at 60 minutes. The current server.cjs runs a persistent polling loop with sleep intervals. For Cloud Functions you must restructure each monitor as a short-lived scheduled invocation, not a long-running process. This is a code change, not just a config change. 2026 estimate.

Puppeteer: Cloud Run (min-instances=1)

Cloud Run can run a Docker container with headless Chrome. The problem is Cloud Run scales to zero by default. Cold-starting Chromium takes 10-30 seconds, which breaks the low-latency snipe loop. Keeping one instance alive 24/7:

Cloud Run always-on (1 vCPU, 2GB min instance)~$20-30/mo
Container egress~$0-5/mo
Residential proxy (Facebook sessions)$40-150+/mo

No clean always-on browser story. Cloud Run's per-request billing model was designed for stateless APIs, not persistent Chromium scroll sessions. It technically works but costs more and adds complexity compared to a plain VPS. 2026 estimate.


How to make Firebase / GCP work

Request pollers: Wrap each monitor in a Cloud Function with an HTTP trigger, invoke via Cloud Scheduler. Write hits to Firestore, push to clients via Firebase Realtime Database or Cloud Messaging. Genuinely clean and cost-effective for Wallapop, Vinted, and OfferUp.

Puppeteer monitors: Package in a Docker image, deploy to Cloud Run with min-instances=1 and a Secret Manager secret for the Facebook session cookie. Works in theory. In practice you still own session cookie storage, the residential proxy integration, and the re-auth flow when Facebook checkpoints the session. Not the right first move.

Hetzner DigitalOcean Vultr

Generic VPS Providers

For always-on Puppeteer workloads, a plain VPS is the most honest and cheapest baseline. No execution-time limits, no cold starts, no serverless abstractions to work around. Chromium runs exactly as it does on a developer laptop. The only question is who manages the machine: you (operator) or the user.

Plan RAM vCPU Price /mo (2026 est.) Chromium concurrency Notes
Hetzner CX22 4 GB 2 ~4.49 EUR (~$5) 3-5 sessions Best price-to-RAM in 2026. EU DC. Price updated Apr 2026.
Hetzner CX32 8 GB 4 ~8.99 EUR (~$10) 7-10 sessions Step up for multi-user operator-hosted deployments.
DigitalOcean Basic 2GB 2 GB 1 ~$18/mo 1-2 sessions Reliable. US and EU DCs. Pricier per GB than Hetzner.
DigitalOcean Basic 4GB 4 GB 2 ~$24/mo 3-5 sessions Managed DB add-ons, clean dashboard, good uptime SLA.
Vultr High Frequency 2GB 2 GB 1 ~$12/mo 1-2 sessions NVMe SSD, global DCs, competitive pricing vs DO.
Vultr High Frequency 4GB 4 GB 2 ~$24/mo 3-5 sessions Good alternative to Hetzner for non-EU latency needs.

Hetzner CX22 is the reference benchmark. At 4.49 EUR/mo (~$5, updated April 2026) for 4GB RAM, it fits all workloads: request pollers at near-zero CPU overhead, and 3-5 concurrent Chromium sessions before needing a larger plan. No cold starts. No execution-time limits. No platform abstractions. The strategic question (user-runs-it vs operator-runs-it) is answered on the Strategy page, not here.


How to make VPS work

All monitors: Run server.cjs with PM2 for process management and auto-restart. Set PROXY_* env vars for the Facebook and Mercari monitors. Use Caddy as a reverse proxy if exposing the WebSocket dashboard externally. Provision with a 10-line bash script. No Docker required.

Facebook session bootstrap: For cloud-hosted Facebook monitors, the user must complete an interactive login once to generate the Puppeteer session. Use a VNC session or Puppeteer's remote-debug port for initial setup. The cookie persists until Facebook checkpoints it (typically days to weeks), at which point re-authentication requires another interactive step. This is the operational reality that breaks the "always-on" promise for the Facebook side.

Fly.io Railway

Fly.io and Railway

Fly.io

Fly runs Docker containers on hardware close to your users. Usage-based pricing per CPU-second and GB-second. A dedicated 1 vCPU / 2GB machine runs always-on at approximately $10.70/mo. Critical caveat: Fly machines auto-suspend after inactivity by default. For monitoring you must set auto_stop_machines = "off" in fly.toml.

1 vCPU / 2GB machine, always-on~$10.70/mo
Egress (160GB included on paid)~$0-2/mo
Residential proxy (if running Facebook)$40-150+/mo

Railway

Railway offers polished Git-push deploys and usage-based billing. Good for the request pollers where the process is mostly sleeping between poll cycles. For always-on Chromium, billing per CPU-second makes it expensive compared to flat-rate VPS pricing when Chrome runs continuously.

Hobby tier (request pollers, light use)~$5/mo
Always-on 1 vCPU / 2GB (Puppeteer)~$20-30/mo
Residential proxy (if running Facebook)$40-150+/mo

Good DX, but check always-on costs. Both Fly.io and Railway are excellent for the three request-based pollers where per-second billing is cheap because the process sleeps between requests. For always-on Chromium, Hetzner's flat $5/mo beats both. The right pattern: use Fly.io or Railway for the cloud "lite" tier (Wallapop, Vinted, OfferUp) and leave the Facebook and Mercari monitors self-hosted on the user's machine. 2026 estimates.

Cloudflare

Cloudflare Workers

Cloudflare Workers cannot run always-on Chromium. Workers execute in a V8 isolate: no process spawning, no native binaries, no Puppeteer. Do not plan the Facebook or Mercari monitors here. Full stop.

What works: Cron Triggers for request pollers

Workers Cron Triggers are a strong fit for Wallapop, Vinted, and OfferUp. Each cron invocation makes an HTTP request and writes results to KV or R2. The Workers Paid plan ($5/mo) includes 10 million invocations per month, which covers aggressive polling frequency for all three monitors combined.

Workers Paid plan (10M invocations/mo)$5/mo
Workers KV storage (1GB included)~$0-1/mo

Browser Rendering API: not a Puppeteer replacement

Cloudflare introduced metered pricing for the Browser Rendering API at $0.09/browser-hour (launched Aug 2025, billing live as of 2026). This is designed for one-shot scraping tasks, not persistent logged-in sessions scrolling a live Facebook feed. Running Facebook Cars continuously:

Always-on: 720 hrs/mo x $0.09/hr~$64.80/mo
Workers Paid plan base$5/mo

At ~$65/mo for browser time alone, before any proxy cost, Cloudflare Browser Rendering is more than 10x the cost of a Hetzner CX22 for the Facebook monitors. And Cloudflare's sandbox cannot maintain a persistent logged-in Facebook session across invocations. Not viable for this workload. 2026 estimate.

Residential proxy costs: the number that dominates cloud TCO

Every cloud-hosted deployment running the Facebook or Mercari monitors needs residential or mobile proxies. Facebook blocks datacenter IPs within hours to days. Proxy cost is not optional; it is a structural requirement of running these monitors anywhere outside a real user's home connection.

2026 residential proxy pricing

Bright Data PAYG residential~$4/GB
Bright Data volume (332GB+)~$3/GB
Oxylabs Starter (5GB)~$6/GB ($30 min)
Oxylabs Corporate (1TB)~$2.50/GB
Budget providers (IPRoyal, etc.)~$2-3/GB
Mobile proxy pools (flat-rate)$50-200+/mo

All figures from public pricing pages, June 2026. Enterprise negotiations can reduce rates 20-30%.

Facebook monitor proxy consumption estimate

A Chromium session scrolling Facebook Marketplace generates roughly 20-100MB traffic per hour, depending on image loading and scroll rate. For a 24/7 always-on session:

Light use (20MB/hr): ~14GB/mo at $4/GB~$56/mo
Medium use (50MB/hr): ~36GB/mo at $4/GB~$144/mo
With volume discount ($2.50/GB)$35-90/mo

Per-user multiplier. These costs apply per user needing a cloud-hosted Facebook session. At 100 users, proxy cost alone reaches $3,500-14,000/mo before a single line of compute. This is the economic reality that makes full cloud hosting of the Facebook monitors a margin-destroying proposition at any real user count. 2026 estimate.

What this means for your decision

Request pollers

Cloud is obvious

Wallapop, Vinted, and OfferUp work on any platform for under $5/mo. Lambda, Cloud Functions, Workers Cron Triggers, Fly.io, or a shared Hetzner box all handle them cleanly. Zero proxy costs, no browser required, no session management. This is the right scope for a cloud "lite" hosted tier.

Puppeteer monitors

Cloud is a trap

Facebook and Mercari need Chromium, residential proxies, and interactive session re-auth. Compute runs $10-30/mo per instance; proxies add $40-150+/mo per user. You also own every Facebook session cookie you store, which is a ToS violation and a credential-custody security liability. Self-hosting delegates all of this to the user's own machine and IP.

Hybrid path

One Hetzner box for the lite tier

A single Hetzner CX22 at ~$5/mo can serve multiple users' request pollers as a hosted "always-on sniping even when your laptop is closed" tier. No browser, no Facebook sessions, no credential custody, no proxy cost. The full hybrid architecture with a 12-month cost model is on the Architecture page.

The strategic case for why keeping the Facebook monitors self-hosted is a competitive advantage, not a weakness, is on the Self vs Web page. The 12-month cost model for the recommended hybrid is on the Architecture page.