How to Capture Power BI Dashboards as Screenshots via API
How to Capture Power BI Dashboards as Screenshots via API
Business analysts and developers often need to capture dashboard screenshots for reports, emails, and documentation. But dashboards are JavaScript-heavy — they need time to render charts, load data, and animate visualizations. A simple screenshot tool won't cut it.
Here's how to capture perfect dashboard screenshots with a single API call.
The Problem with Dashboard Screenshots
Dashboards built with Power BI, Tableau, Grafana, or Google Data Studio share a common challenge: they render asynchronously. When you load the page, the HTML arrives first, then JavaScript fetches data and draws charts. A screenshot taken too early captures a blank page or half-loaded charts.
The solution is a configurable delay — wait for the dashboard to fully render before capturing.
Quick Start
Capture a dashboard screenshot with a 5-second render delay:
curl "https://51-68-119-197.sslip.io/api/screenshot?url=YOUR_DASHBOARD_URL&width=1920&height=1080&delay=5000&full_page=true"
Key parameters:
- delay=5000 — Wait 5 seconds for charts to render (up to 10s anonymous, 30s with API key)
- width=1920&height=1080 — Full HD dashboard viewport
- full_page=true — Capture the entire scrollable page
- format=png — PNG for crisp text and charts (also supports JPEG, WebP, PDF)
Platform-Specific Tips
Power BI Embedded Reports
Power BI reports typically need 3-5 seconds to render. For complex reports with many visuals:
curl "https://51-68-119-197.sslip.io/api/screenshot?url=https://app.powerbi.com/view?r=YOUR_REPORT_ID&width=1920&height=1080&delay=5000&block_ads=true"
The block_ads=true parameter removes tracking scripts that slow down rendering.
Tableau Public
Tableau visualizations are interactive and render progressively:
curl "https://51-68-119-197.sslip.io/api/screenshot?url=https://public.tableau.com/views/YOUR_VIZ&width=1920&height=1080&delay=5000"
Grafana Panels
For Grafana, you can capture individual panels or full dashboards:
curl "https://51-68-119-197.sslip.io/api/screenshot?url=https://your-grafana.com/d/DASHBOARD_ID?orgId=1&width=1920&height=1080&delay=3000"
Tip: Use dark_mode=true for Grafana's dark theme.
Advanced Features
Custom JavaScript Injection
Need to dismiss cookie banners, click "Accept" buttons, or expand collapsed sections before capturing? Use the custom_js parameter:
curl "https://51-68-119-197.sslip.io/api/screenshot?url=YOUR_URL&delay=3000&custom_js=document.querySelector('.cookie-banner')?.remove()"
Ad and Tracker Blocking
Dashboard embeds often include analytics trackers that slow rendering. Block them:
curl "https://51-68-119-197.sslip.io/api/screenshot?url=YOUR_URL&block_ads=true&delay=3000"
Retina/4K Capture
For high-DPI displays or print-quality screenshots:
curl "https://51-68-119-197.sslip.io/api/screenshot?url=YOUR_URL&width=3840&height=2160&scale=2"
PDF Output
Export dashboards as PDF for email attachments or archival:
curl "https://51-68-119-197.sslip.io/api/screenshot?url=YOUR_URL&format=pdf&delay=5000" -o dashboard.pdf
Rate Limits and API Keys
| Feature | Anonymous | Free API Key |
|---|---|---|
| Daily requests | 10 | 50 |
| Max delay | 10 seconds | 30 seconds |
| Rate limit | 1 req/10s | 1 req/30s window |
Get a free API key instantly at our API docs page — no signup required.
Why Use an API Instead of Self-Hosting?
You could install Playwright, Chromium, and build your own screenshot service. But:
- Chromium is 200MB+ — it's a heavy dependency for a reporting pipeline
- Browser automation is fragile — version updates, headless rendering bugs, memory leaks
- Infrastructure overhead — you need a server with enough RAM to run headless Chrome
- Our API handles edge cases — ad blocking, custom JS, dark mode, retina scaling, PDF output
For a business analyst who needs dashboard screenshots in their weekly report, a simple curl command is far more practical than managing browser infrastructure.
Try It Now
Use our interactive screenshot tool to test with your own dashboard URL. The "Dashboard" preset automatically configures 1920x1080 + 5s delay.
Or call the API directly:
curl "https://51-68-119-197.sslip.io/api/screenshot?url=https://example.com&width=1920&height=1080&delay=5000" -o screenshot.png