DEV Community

Custodia-Admin
Custodia-Admin

Posted on • Originally published at pagebolt.dev

PageBolt Hobby: Screenshot and PDF APIs for Side Projects Under $10/Month

PageBolt Hobby: Screenshot and PDF APIs for Side Projects Under $10/Month

You're building a side project. Maybe it's a tool for yourself, maybe a small SaaS, maybe a utility you plan to monetize later. Right now, it doesn't need a $29/month plan. You need something cheap that just works.

If you've ever thought "I need to take screenshots or generate PDFs, but I can't justify the cost," PageBolt Hobby is for you.

The Problem: APIs Aren't "Free" for Builders

Most screenshot/PDF tools have two pricing tiers:

Free tier: Heavily rate-limited. Good for trying things out. Unusable for production.

Paid tier: Starts at $29/month. For a side project making $0, that's a hard sell.

Hobby tier: $9/month, 500 requests. Enough for most side projects, low enough to actually use.

Indie developers shouldn't have to pay $29 to build. We need an in-between.

What You Get at $9/Month

  • 500 API requests/month (screenshot + PDF combined)
  • Same API as the paid tiers (no feature limitations)
  • 10-second response times (reliable)
  • 1 year data retention (download your results)
  • Email support (human help when things break)

No credit card required to start. Sign up, get your API key, start building.

Real Example: Building a Link Previewer

Let's say you're building a simple tool: users paste a URL, you show them what the page looks like (screenshot) + generate a PDF of it.

With PageBolt Hobby, here's the full implementation:

const fetch = require('node-fetch');
const fs = require('fs');
const express = require('express');

const app = express();
app.use(express.json());

const PAGEBOLT_API_KEY = process.env.PAGEBOLT_API_KEY;

// Endpoint: Take screenshot of URL
app.post('/api/screenshot', async (req, res) => {
  const { url } = req.body;

  if (!url) {
    return res.status(400).json({ error: 'URL required' });
  }

  try {
    const response = await fetch('https://api.pagebolt.com/v1/screenshot', {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${PAGEBOLT_API_KEY}`,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        url: url,
        viewport: { width: 1280, height: 720 },
        format: 'png'
      })
    });

    if (!response.ok) {
      return res.status(response.status).json({ error: 'Screenshot failed' });
    }

    const buffer = await response.buffer();

    // Save locally or stream to user
    res.setHeader('Content-Type', 'image/png');
    res.send(buffer);

  } catch (error) {
    res.status(500).json({ error: error.message });
  }
});

// Endpoint: Generate PDF of URL
app.post('/api/pdf', async (req, res) => {
  const { url } = req.body;

  try {
    const response = await fetch('https://api.pagebolt.com/v1/pdf', {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${PAGEBOLT_API_KEY}`,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        html: `<iframe src="${url}" style="width:100%;height:100%"></iframe>`,
        format: 'A4'
      })
    });

    const buffer = await response.buffer();

    res.setHeader('Content-Type', 'application/pdf');
    res.send(buffer);

  } catch (error) {
    res.status(500).json({ error: error.message });
  }
});

app.listen(3000, () => console.log('Server running on port 3000'));
Enter fullscreen mode Exit fullscreen mode

Cost for this tool:

  • Pagebolt Hobby: $9/month
  • Vercel hosting: $0 (free tier)
  • Domain: ~$12/year
  • Total: $9/month

If you get 10 paying customers at $5/month each, you're profitable in month two.

Real Use Cases for Hobby

Link previewer: Show users what a URL looks like before they visit

Invoice generator: Small business creating invoices from HTML templates

Report automation: Scheduled screenshots of dashboards, emailed to you weekly

Website monitoring: Hourly screenshots to detect visual changes (catch bugs early)

Marketing assets: Auto-generate product screenshots for your landing page

Content tool: Extract blog posts as PDFs for readers

Why Hobby Makes Sense

Indie developers have constraints:

  • $0 budget (pre-revenue)
  • <1,000 users (low volume)
  • Personal projects (low traffic)
  • Can't justify infrastructure

Hobby solves all four. 500 requests/month is enough for:

  • 16 requests/day (feasible for small tools)
  • 100 requests/week (documentation generator)
  • 1-2 requests per user for 250 active users

If you're bigger than that, upgrade to Starter ($29, 5K requests). But if you're building on nights and weekends, Hobby is the right tier.

Getting Started

  1. Go to pagebolt.dev/signup?plan=hobby
  2. Sign up (no credit card)
  3. Copy your API key
  4. Start making requests

Start with the free tier (100 requests/month, no card required) to try it out. Hobby is $9/month when you're ready to scale up.

The Math

Self-hosted alternative:

  • AWS t3.micro: $5/month
  • Puppeteer license (headless Chrome): $0
  • DevOps (maintaining servers): 2 hours/month
  • Your time at $25/hr: $50

Total: $55/month + your time

PageBolt Hobby: $9/month, zero ops.

If you're willing to run your own infrastructure, great. But most indie developers would rather pay $9 and not think about it.

The Goal

We built Hobby because we were indie developers too. We know what it feels like to want nice APIs but not have the budget. $9 should be within reach for anyone serious about building.

This tier exists to say: Start small. Pay small. Grow when you're ready.

Next Steps

Your side project deserves real APIs. Hobby makes it possible.

Top comments (0)