Record your web page as video, via API.
Load a URL in a real browser, capture the screen and audio at 60 FPS, get back an MP4.
Pagecorder drives a real browser render loop at 60 FPS with synchronised time. Every frame of your page is captured exactly as it renders, so real-time animation, WebGL, canvas, autoplaying video, and anything else time-sensitive come through clean. Nothing sampled, nothing approximated.
- 🎥 Real 60 FPS capture of the page's screen + audio
- ⚡ Fast and reliable web recording — upload a ZIP of your site and assets load from local disk during render, so no CDN latency, no flaky network, no failed requests
- 🔁 Reproducible — no dependency on external services during capture
- 📐 Configurable viewport up to 3840 × 2160 (default 1920 × 1080)
- 📦 Works with a plain URL or a ZIP archive
- 🪝 Two-line in-page integration —
window.pagecorder('start')/window.pagecorder('stop') - 📤 Optional auto-upload to your own storage (supply a target URL)
- 🩺 Full diagnostics on every render — dropped-frame report, HTTP error list, and captured console logs
-
Instrument your page with two hooks that tell Pagecorder when to start and stop recording:
<script> await window.pagecorder('start'); await runYourAnimation(); await window.pagecorder('stop'); </script>
-
Submit a render by POSTing the URL (or a ZIP) to the API:
curl -X POST https://pagecorder.p.rapidapi.com/rapid/render/ \ -H "X-RapidAPI-Key: $RAPIDAPI_KEY" \ -H "Content-Type: application/json" \ -d '{ "url": "https://yoursite.com/scene(.zip)", "width": 1920, "height": 1080 }'
Response includes a job
idand astate.stage(scheduled→downloading→loading→rendering→uploading→done). -
Poll for completion and grab the resulting MP4:
curl https://pagecorder.p.rapidapi.com/rapid/render/$JOB_ID \ -H "X-RapidAPI-Key: $RAPIDAPI_KEY"
When
state.stage === "done",result.urlhas the MP4, plus:result.droppedFrames[]—{ dropped, time, reason }result.httpErrors[]—{ status, statusText, method, url }for every failed asset loadresult.logs[]— everything your page printed toconsoleresult.durationSeconds
-
Or skip the poll — supply an
upload: { target, url }in the render request and we'll PUT/POST the finished file straight to your endpoint.
See the full endpoint reference on RapidAPI for every field (timeouts, upload details, job stages).
| 📣 Marketing videos | Turn your live product into an ad without a studio |
| 📱 Social content | Render 1080×1920 portrait for TikTok / Reels / Shorts |
| 📊 Dashboards → reports | Turn live data visualisations into shareable clips |
| 🎞️ Launch animations | This org's own launch video was rendered using Pagecorder. |
- launch-video — source for the Pagecorder launch video itself. A single self-contained HTML page (WebGL shader background, timed scene animations, speech-synced voiceover) rendered end-to-end through the Pagecorder API. Useful as a real-world reference for how to structure a page for recording.
- skills — Claude skills for driving Pagecorder from Claude Code. Install them and Claude can submit renders, poll for completion, and wire Pagecorder into pages you're working on.