Bulk Webpage to PDF Converter – Batch URL to PDF avatar

Bulk Webpage to PDF Converter – Batch URL to PDF

Under maintenance

Pricing

$9.90 / 1,000 pdf generateds

Go to Apify Store
Bulk Webpage to PDF Converter – Batch URL to PDF

Bulk Webpage to PDF Converter – Batch URL to PDF

Under maintenance

Convert one URL, a batch of URLs, or a CSV list to PDFs in a single run. Per-URL success/failure JSON manifest, deterministic filenames, retries, webhooks and optional ZIP bundle. Designed for agents and automation pipelines.

Pricing

$9.90 / 1,000 pdf generateds

Rating

0.0

(0)

Developer

Graham Harris

Graham Harris

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 days ago

Last modified

Categories

Share

Bulk Webpage to PDF Converter — Batch URL to PDF

Convert one URL, hundreds of URLs, or a CSV list into PDFs in a single run — and get back an exact machine-readable answer to "what succeeded and what failed?".

Built for automation pipelines and AI agents, not for clicking through a UI one page at a time. Feed it an array of 300 URLs; every URL comes back with its own status, filename, HTTP code, retry count, timing and charge state.

  • Batch-first: single URL, URL array, pasted CSV/list, or a remote CSV file — merged in one run.
  • Exact per-URL manifest: success / error / skipped, HTTP status, error kind, attempts, duration, deterministic filename.
  • Charges only for successes: each successfully produced PDF costs one pdf-generated event at $0.0099. 404s, timeouts and blocked pages are never charged.
  • Workflow features: webhook callback on completion, optional single ZIP of all PDFs, retries with backoff on 5xx/network/timeout, per-URL timeout, concurrency control, optional image blocking.
  • Deterministic output: fixed viewport (1280×800), en-US locale, UTC timezone, animations/transitions disabled, stable settle time → repeatable renders of the same page.
  • Agent-friendly schema: flat JSON rows, predictable filenames (0001-example-com-page.pdf), summary row, plain-English errors.

Input

Provide URLs via any combination of these fields (merged in order, duplicates converted once):

FieldTypeDescription
urlstringSingle page. Scheme added automatically if missing.
urlsstring arrayBatch array — the core use case.
csv_textstringPasted CSV (url column or first column) or plain URL list, one per line.
csv_urlstringURL of a CSV file to fetch at run start (max 10 MB).
pageSizeselectA0–A5, Letter, Legal, Ledger, Tabloid (default A4).
landscapeboolLandscape orientation.
scalenumber0.1–2 (default 1).
marginstringCSS-style: "0", "10mm", "10mm 15mm".
waitAfterLoadMsintSettle time after load (default 300 ms).
timeoutMsintPer-URL navigation timeout, 5–120 s (default 30 s).
retriesintRetries for timeout/network/5xx (default 1). 4xx is never retried.
blockImagesboolSkip images/media — faster, cheaper, smaller PDFs.
concurrencyintParallel pages, 1–6 (default 3).
bundleZipboolAdditionally store all successful PDFs as batch-output.zip (limit 100 MB).
webhookUrlstringPOST the full result when the batch finishes (3 retries with backoff).

Output

Dataset — one row per URL (type: "result")

{
"type": "result",
"index": 1,
"url": "https://example.com/pricing",
"status": "success",
"http_status": 200,
"filename": "0001-example-com-pricing.pdf",
"size_bytes": 84211,
"attempts": 1,
"duration_ms": 1234,
"charged": true,
"error": null,
"detail": null
}

status is success | error | skipped. error kinds: http_4xx, http_5xx, timeout, network, ssl, aborted, pdf_error, invalid_input, charge_limit_reached, run_aborted. Invalid input entries appear as rows with index: null and are never charged.

Dataset — final summary row (type: "summary")

urls_total, success, failed, skipped_limit, charged_count, charge_event, stop_reason, bundle_record, bundle_bytes, bundle_note, invalid_count, webhook, duration_ms, started_at, finished_at, status.

Downloads (key-value store)

  • One record per successful PDF, key = filename (e.g. 0001-example-com-pricing.pdf), content type application/pdf.
  • Optional batch-output.zip containing all successful PDFs (bundleZip: true).

Webhook payload

{
"event": "batch_completed",
"summary": { "status": "complete", "success": 81, "failed": 19, "...": "..." },
"results": [ { "type": "result", "...": "..." } ]
}

Pricing

$0.0099 per successfully generated PDF (pdf-generated pay-per-event). Failures, skips and invalid entries cost nothing. Example: 300 URLs, 285 rendered → 300 × $0.0099 would be $2.97; you pay 285 × $0.0099 = $2.82.

Apify platform usage (compute, data transfer) for the run is billed by Apify per your plan's usual usage terms.

Run via API (agents, scripts, CI)

# 1. Start a run
curl -X POST "https://api.apify.com/v2/acts/your-user~webpage-to-pdf-batch/runs?token=APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"urls": ["https://example.com", "https://example.org"], "bundleZip": true}'
# 2. Poll until status is SUCCEEDED, then fetch the manifest
curl "https://api.apify.com/v2/datasets/~/items?token=APIFY_TOKEN&format=json"

Or trigger with a CSV:

{ "csv_url": "https://your-app.example/exports/urls.csv", "retries": 1, "timeoutMs": 20000 }

Limits & good citizenship

  • Max 10,000 URLs per run; CSV input max 10 MB; ZIP bundle max 100 MB.
  • Pages behind logins, CAPTCHAs or aggressive bot walls will return http_4xx errors — those runs are not charged for those URLs.
  • Renders a standard headless Chromium visit (robots-respecting sites). It does not bypass CAPTCHAs, logins or paywalls.
  • Output size: PDF text/fonts render fully; use blockImages: true when you don't need images.

Notes

  • Filenames are deterministic: {index:04d}-{host}-{path-slug}.pdf — stable across runs for the same input order.
  • Default memory 2048 MB; browser restarts every 8 URLs to keep long batches stable.
  • Retries apply to timeout, network, pdf_error and HTTP 5xx only.

Not affiliated with or endorsed by the websites you convert.