PDF生成APIを選ぶ際、機能だけでなく料金体系の違いも重要な判断材料です。サービスによって課金モデルが大きく異なり、選び方を間違えると10倍以上のコスト差が生まれることもあります。
この記事では、2026年4月時点の主要PDF生成APIの料金を実際のユースケース別にシミュレーションします。機能面の比較はHTML to PDF API比較をご覧ください。
2026年4月更新: 競合サービスの最新料金を反映しました。Api2PDF・PDFShiftの価格変更、CraftMyPDF・APITemplateの新プランを追加しています。
料金モデルの種類
PDF APIの料金体系は主に3つのパターンに分かれます。
1. 従量課金型
生成したPDF1件ごとに課金。わかりやすい反面、コストが線形に増加します。少量〜中量の利用に最適。
2. 月額サブスクリプション型
月額固定料金に一定数のPDF生成が含まれ、超過分は追加課金。安定した利用量が見込める場合に最適。
3. OSS(セルフホスト)
ソフトウェアは無料ですが、サーバー・Docker・監視などのインフラコストがかかります。DevOpsリソースがあるチームに最適。
サービス別料金比較
FUNBREW PDF
2つのレンダリングエンジンとテンプレート機能、Webhook、メール送信を内蔵したマネージドAPI。
| プラン | 月額 | 含まれるPDF数 | 超過料金/件 | エンジン |
|---|---|---|---|---|
| Free | ¥0 | 30 | — | Fast |
| Starter | ¥1,300 | 200 | ¥7 | Fast |
| Basic | ¥4,200 | 1,000 | ¥4 | Fast + Quality |
| Pro | ¥11,500 | 5,000 | ¥3 | Fast + Quality |
API呼び出し例:
const response = await fetch('https://api.pdf.funbrew.cloud/v1/pdf/from-html', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.FUNBREW_PDF_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
html: '<h1>請求書</h1><p>合計: ¥10,000</p>',
engine: 'quality',
format: 'A4',
}),
});
注目ポイント:
- 月30件の無料プラン — クレジットカード登録不要
- デュアルエンジン(Fast: 高速、Quality: Chromium品質)
- テンプレートエンジン、Webhook、メール送信が全プランに含まれる
- 日本語フォント対応が追加コストなし
DocRaptor
Prince XMLエンジンを搭載した老舗PDF API。印刷品質の高さが特長。
| プラン | 月額 | 含まれるPDF数 | 超過料金/件 |
|---|---|---|---|
| Free | $0 | 5(テスト専用) | — |
| Basic | $15 | 125 | $0.12 |
| Professional | $29 | 325 | $0.09 |
| Premium | $75 | 1,000 | $0.075 |
特徴:
- 印刷品質に優れたPrince XMLエンジン
- 無料プランはテスト専用(透かし付き)
- 1件あたりのコストは高めだが、印刷CSS対応が強力
- テンプレートエンジンやメール送信機能はなし
PDFShift
Chromiumを使った軽量なHTML→PDF変換API。
| プラン | 月額 | 含まれるPDF数 | 超過料金/件 |
|---|---|---|---|
| Free | $0 | 50 | — |
| Starter | $9 | 500 | $0.02 |
| Boost | $24 | 2,500 | $0.01 |
| Growth | $39 | 5,000 | $0.008 |
特徴:
- 競争力のある無料プラン(月50件)
- 大量生成時の単価が安い
- Chromiumのみ
- テンプレート機能やメール送信なし
CraftMyPDF(2026年追加)
テンプレートビルダー付きのPDF生成API。ノーコードでテンプレートを作れるのが特長。
| プラン | 月額 | 含まれるPDF数 | テンプレート数 |
|---|---|---|---|
| Free | $0 | 100 | 3 |
| Starter | $9 | 500 | 無制限 |
| Professional | $29 | 5,000 | 無制限 |
| Business | $99 | 50,000 | 無制限 |
特徴:
- ドラッグ&ドロップのテンプレートビルダー(コーディング不要)
- 日本語フォントは手動設定が必要
- 大量生成時のコスト効率が良い
APITemplate.io(2026年追加)
Zapier・Make(Integromat)との連携に強いPDF API。
| プラン | 月額 | 含まれるPDF数 |
|---|---|---|
| Free | $0 | 50 |
| Lite | $10 | 1,000 |
| Pro | $30 | 5,000 |
| Plus | $80 | 20,000 |
特徴:
- Zapier・Make・n8nとのノーコード連携が強み
- HTMLとJSONテンプレート両方に対応
- 日本語フォントは別途設定が必要
セルフホスト(Gotenberg / Puppeteer)
OSSなのでソフトウェア自体は無料ですが、インフラコストがかかります。
| 項目 | 月額概算 |
|---|---|
| サーバー(2 vCPU、4GB RAM) | ¥3,000〜6,000 |
| Docker / Kubernetes | 含む、またはマネージドで¥7,000+ |
| 監視ツール(Datadog等) | ¥1,500〜4,500 |
| DevOps工数 | 月2〜8時間 |
| 合計 | ¥4,500〜18,000+(人件費除く) |
セルフホストの運用負荷についてはPuppeteerからAPIへの移行ガイドで詳しく解説しています。
ボリューム別コストシミュレーション
実際の利用量でどのくらいのコストになるかシミュレーションしました。
月100件(スタートアップ)
| サービス | プラン | 月額 |
|---|---|---|
| FUNBREW PDF | Starter | ¥1,300 |
| CraftMyPDF | Starter | $9(約¥1,300) |
| PDFShift | Starter | $9(約¥1,300) |
| APITemplate.io | Lite | $10(約¥1,500) |
| DocRaptor | Basic | $15(約¥2,200) |
| セルフホスト | 最小構成 | ¥3,000+ |
月1,000件(成長企業)
| サービス | プラン | 月額 |
|---|---|---|
| FUNBREW PDF | Basic | ¥4,200 |
| CraftMyPDF | Professional | $29(約¥4,200) |
| APITemplate.io | Lite | $10(約¥1,500) |
| PDFShift | Boost + 超過 | 約$28(約¥4,100) |
| DocRaptor | Premium | $75(約¥11,000) |
| セルフホスト | 中規模構成 | ¥6,000+ |
月5,000件(大規模)
| サービス | プラン | 月額 |
|---|---|---|
| FUNBREW PDF | Pro | ¥11,500 |
| CraftMyPDF | Professional | $29(約¥4,200) |
| APITemplate.io | Pro | $30(約¥4,400) |
| PDFShift | Growth | $39(約¥5,700) |
| DocRaptor | カスタム | $200+(約¥30,000+) |
| セルフホスト | スケール構成 | ¥12,000+ |
フリープランを試す
まず無料で動作確認したい場合はcurlで数秒以内にPDFを生成できます。クレジットカード登録不要です。
# 無料プランのAPIキーを取得後(/signup)、すぐに試せる
curl -X POST https://pdf.funbrew.cloud/api/v1/pdf/generate \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"html": "<h1>テスト請求書</h1><p>FUNBREW PDF 無料プランのテストです。</p>",
"options": { "format": "A4" }
}' \
--output test.pdf
echo "生成完了: test.pdf"
無料プランで生成した件数は月次でリセットされます。APIのレスポンスヘッダー X-RateLimit-Remaining で残り件数を確認できます。
# レスポンスヘッダーで残り件数を確認
curl -X POST https://pdf.funbrew.cloud/api/v1/pdf/generate \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"html": "<p>Hello</p>", "options": {}}' \
-D - \
--output /dev/null 2>&1 | grep -i "x-ratelimit"
# X-RateLimit-Limit: 30
# X-RateLimit-Remaining: 27
# X-RateLimit-Reset: 1748736000
月間使用量のトラッキング
APIのレスポンスをログに残しておくと、月末に請求が増えるのを事前に把握できます。以下はHTTPレスポンスのステータスコードと使用量を記録する実装例です。
// usage-tracker.js: API呼び出しをラップして使用量を記録する例
const fs = require('fs');
const path = require('path');
const USAGE_LOG = path.join(__dirname, 'pdf-usage.jsonl');
async function generatePdfWithTracking(html, options = {}) {
const startTime = Date.now();
const response = await fetch('https://pdf.funbrew.cloud/api/v1/pdf/generate', {
method: 'POST',
headers: {
'X-API-Key': process.env.FUNBREW_PDF_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify({ html, options }),
});
const elapsed = Date.now() - startTime;
// レスポンスヘッダーから使用量を取得
const remaining = parseInt(response.headers.get('x-ratelimit-remaining') ?? '-1', 10);
const limit = parseInt(response.headers.get('x-ratelimit-limit') ?? '-1', 10);
// JSONL形式でログに追記(月末の集計や監視に使える)
const entry = {
ts: new Date().toISOString(),
ok: response.ok,
status: response.status,
ms: elapsed,
remaining,
limit,
used: limit - remaining,
};
fs.appendFileSync(USAGE_LOG, JSON.stringify(entry) + '\n');
if (!response.ok) {
const body = await response.text();
throw new Error(`PDF API error ${response.status}: ${body}`);
}
return Buffer.from(await response.arrayBuffer());
}
module.exports = { generatePdfWithTracking };
# usage_tracker.py: Python版の使用量トラッキング実装例
import json
import os
import time
from datetime import datetime
from pathlib import Path
import requests
USAGE_LOG = Path(__file__).parent / "pdf_usage.jsonl"
API_KEY = os.environ["FUNBREW_PDF_API_KEY"]
API_URL = "https://pdf.funbrew.cloud/api/v1/pdf/generate"
def generate_pdf_with_tracking(html: str, options: dict | None = None) -> bytes:
start = time.monotonic()
resp = requests.post(
API_URL,
headers={"X-API-Key": API_KEY, "Content-Type": "application/json"},
json={"html": html, "options": options or {}},
)
elapsed_ms = int((time.monotonic() - start) * 1000)
limit = int(resp.headers.get("x-ratelimit-limit", -1))
remaining = int(resp.headers.get("x-ratelimit-remaining", -1))
entry = {
"ts": datetime.utcnow().isoformat(),
"ok": resp.ok,
"status": resp.status_code,
"ms": elapsed_ms,
"limit": limit,
"remaining": remaining,
"used": limit - remaining if limit >= 0 else -1,
}
with USAGE_LOG.open("a") as f:
f.write(json.dumps(entry, ensure_ascii=False) + "\n")
resp.raise_for_status()
return resp.content
使用量ログを集計することで、翌月のプランアップグレードが必要かどうかを早期に判断できます。
コスト計算スクリプト
月間生成数を入力するだけで各サービスのコストを試算できるスクリプトです。
Node.js版
/**
* PDF API コスト計算機
* 使い方: node pdf-cost-calculator.js <月間生成数>
* 例: node pdf-cost-calculator.js 1500
*/
const PLANS = {
funbrew: [
{ name: 'Free', monthly: 0, included: 30, overage: 0 },
{ name: 'Starter', monthly: 1300, included: 200, overage: 7 },
{ name: 'Basic', monthly: 4200, included: 1000, overage: 4 },
{ name: 'Pro', monthly: 11500, included: 5000, overage: 3 },
],
docraptor: [
{ name: 'Basic', monthly: 2200, included: 125, overage: 18 },
{ name: 'Professional', monthly: 4300, included: 325, overage: 13 },
{ name: 'Premium', monthly: 11000, included: 1000, overage: 11 },
],
pdfshift: [
{ name: 'Free', monthly: 0, included: 50, overage: 0 },
{ name: 'Starter', monthly: 1300, included: 500, overage: 2.9 },
{ name: 'Boost', monthly: 3500, included: 2500, overage: 1.5 },
{ name: 'Growth', monthly: 5700, included: 5000, overage: 1.2 },
],
};
function calcCost(plan, volume) {
if (volume <= plan.included) return plan.monthly;
return plan.monthly + (volume - plan.included) * plan.overage;
}
function bestPlan(plans, volume) {
return plans
.map(p => ({ ...p, total: calcCost(p, volume) }))
.filter(p => p.included >= volume || p.overage > 0)
.sort((a, b) => a.total - b.total)[0];
}
function formatCost(yen) {
return `¥${Math.round(yen).toLocaleString()}`;
}
const volume = parseInt(process.argv[2] ?? '500', 10);
console.log(`\n月間 ${volume.toLocaleString()} 件のPDF生成コスト比較\n`);
console.log('サービス | 最適プラン | 月額コスト');
console.log('------------------|-------------------|----------');
for (const [service, plans] of Object.entries(PLANS)) {
const best = bestPlan(plans, volume);
if (best) {
const label = service.padEnd(17);
const planName = best.name.padEnd(18);
console.log(`${label} | ${planName}| ${formatCost(best.total)}`);
}
}
console.log('\n※ 為替レート: $1 = ¥146 で計算(目安)');
console.log('※ FUNBREW PDFはテンプレート・メール送信・Webhookを含むオールインワン価格');
Python版
#!/usr/bin/env python3
"""
PDF API コスト計算機
使い方: python pdf_cost_calculator.py <月間生成数>
例: python pdf_cost_calculator.py 1500
"""
import sys
from dataclasses import dataclass
@dataclass
class Plan:
name: str
monthly_yen: float
included: int
overage_yen: float # 超過1件あたりの料金(円)
PLANS: dict[str, list[Plan]] = {
"FUNBREW PDF": [
Plan("Free", 0, 30, 0),
Plan("Starter", 1300, 200, 7),
Plan("Basic", 4200, 1000, 4),
Plan("Pro", 11500, 5000, 3),
],
"DocRaptor": [
Plan("Basic", 2200, 125, 18),
Plan("Professional", 4300, 325, 13),
Plan("Premium", 11000, 1000, 11),
],
"PDFShift": [
Plan("Free", 0, 50, 0),
Plan("Starter", 1300, 500, 2.9),
Plan("Boost", 3500, 2500, 1.5),
Plan("Growth", 5700, 5000, 1.2),
],
"Self-hosted": [
Plan("Minimum", 4500, 999999, 0),
Plan("Standard", 10000, 999999, 0),
],
}
def calc_cost(plan: Plan, volume: int) -> float:
if volume <= plan.included:
return plan.monthly_yen
return plan.monthly_yen + (volume - plan.included) * plan.overage_yen
def best_plan(plans: list[Plan], volume: int) -> Plan | None:
eligible = [p for p in plans if p.included >= volume or p.overage_yen > 0]
if not eligible:
return None
return min(eligible, key=lambda p: calc_cost(p, volume))
def main():
volume = int(sys.argv[1]) if len(sys.argv) > 1 else 500
print(f"\n月間 {volume:,} 件のPDF生成コスト比較\n")
print(f"{'サービス':<18} {'最適プラン':<14} {'月額コスト':>12}")
print("-" * 48)
for service, plans in PLANS.items():
plan = best_plan(plans, volume)
if plan:
cost = calc_cost(plan, volume)
print(f"{service:<18} {plan.name:<14} ¥{cost:>10,.0f}")
print("\n※ DocRaptor/PDFShift は $1=¥146 で換算(目安)")
print("※ FUNBREW PDFはテンプレート・メール送信・Webhookを含むオールインワン価格")
if __name__ == "__main__":
main()
実行例(月500件の場合):
月間 500 件のPDF生成コスト比較
サービス 最適プラン 月額コスト
------------------------------------------------
FUNBREW PDF Basic ¥ 4,200
DocRaptor Professional ¥ 7,575
PDFShift Starter ¥ 2,670
Self-hosted Minimum ¥ 4,500
料金以外の付加価値
1件あたりの料金だけでなく、含まれる機能も比較しましょう。
| 機能 | FUNBREW PDF | DocRaptor | PDFShift | Api2Pdf |
|---|---|---|---|---|
| テンプレートエンジン | 含む | なし | なし | なし |
| メール送信 | 含む | なし | なし | なし |
| Webhook | 含む | なし | あり | なし |
| デュアルエンジン | あり | 単一 | 単一 | 複数 |
| 日本語フォント | プリインストール | 手動設定 | 手動設定 | 手動設定 |
| セキュリティ機能 | IP制限、自動削除 | 基本 | 基本 | 基本 |
テンプレートエンジンやメール送信を自前で構築すると、1件あたりの単価差はすぐに相殺されます。
選び方のガイド
FUNBREW PDFがおすすめ: テンプレート、メール送信、日本語対応までオールインワンで揃えたい場合。無料プラン(月30件)で事前評価できます。
PDFShiftがおすすめ: 大量生成で1件あたりのコストを最小化したい場合。テンプレートやメール機能が不要な場合。
DocRaptorがおすすめ: 印刷品質が最優先で予算に余裕がある場合。
セルフホストがおすすめ: DevOpsリソースがあり、完全なコントロールが必要な場合。
まずは無料で試す
FUNBREW PDFの無料プランはクレジットカード不要で、月30件までPDF生成が可能です。
# 数秒でPDF生成
curl -X POST https://api.pdf.funbrew.cloud/v1/pdf/from-html \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"html": "<h1>Hello PDF</h1>", "engine": "fast"}' \
-o output.pdf
Playgroundでブラウザから試すか、APIドキュメントで仕様を確認し、クイックスタートガイドのコード例から始めてみてください。
関連リンク
- HTML to PDF API比較 2026年版 — コード例付きの機能比較
- PuppeteerからAPIへの移行ガイド — セルフホストとマネージドAPIのコスト分析
- PDF APIセキュリティガイド — 企業導入のセキュリティ評価
- PDFテンプレートエンジン入門 — 含まれるテンプレート機能の詳細
- 請求書自動化のユースケース — 請求書生成の活用パターン