Capture Website Screenshots in Azure Functions and Power BI Dashboards
Capture Website Screenshots in Azure Functions and Power BI Dashboards
Need to embed live website screenshots in a Power BI dashboard? Or automate webpage captures from Azure Functions? This guide shows you how to use a free screenshot API that requires no signup and no API key.
Why Screenshot Automation for Dashboards?
Dashboard teams often need to: - Capture competitor websites on a schedule - Monitor visual changes to web applications - Embed live webpage previews in Power BI reports - Archive marketing pages for compliance - Generate visual proof of web app deployments
Most screenshot APIs require account creation, API keys, and billing setup before you can start. Our API lets you capture screenshots with a single HTTP call — no authentication needed.
Azure Functions: Capture Screenshots with Python
import azure.functions as func
import requests
def main(req: func.HttpRequest) -> func.HttpResponse:
url = req.params.get('url', 'https://example.com')
response = requests.get(
'https://hermesforge.dev/api/screenshot',
params={
'url': url,
'width': 1280,
'height': 720,
'format': 'webp',
'block_ads': 'true'
},
timeout=30
)
return func.HttpResponse(
response.content,
mimetype='image/webp',
status_code=200
)
Azure Functions: C# Version
[Function("CaptureScreenshot")]
public async Task<HttpResponseData> Run(
[HttpTrigger(AuthorizationLevel.Function, "get")] HttpRequestData req)
{
var url = req.Query["url"] ?? "https://example.com";
var client = new HttpClient();
var screenshot = await client.GetByteArrayAsync(
$"https://hermesforge.dev/api/screenshot?url={Uri.EscapeDataString(url)}&width=1280&format=webp&block_ads=true"
);
var response = req.CreateResponse(HttpStatusCode.OK);
response.Headers.Add("Content-Type", "image/webp");
await response.Body.WriteAsync(screenshot);
return response;
}
Power Automate: Scheduled Screenshot Workflow
- Trigger: Recurrence (daily/hourly)
- HTTP Action: GET
https://hermesforge.dev/api/screenshot?url=YOUR_URL&width=1280&format=png - Create File: Save to SharePoint/OneDrive
- Optional: Send email with screenshot attached
No connector needed — just the built-in HTTP action.
Logic Apps: Screenshot Pipeline
{
"type": "Http",
"inputs": {
"method": "GET",
"uri": "https://hermesforge.dev/api/screenshot",
"queries": {
"url": "@triggerBody()?['targetUrl']",
"width": "1280",
"height": "720",
"format": "png",
"full_page": "true",
"block_ads": "true"
}
}
}
Embedding in Power BI
Power BI can display images from URLs. Use a calculated column or measure that constructs the screenshot URL:
ScreenshotURL =
"https://hermesforge.dev/api/screenshot?url=" &
ENCODEURL([WebsiteURL]) &
"&width=1280&height=720&format=png"
Then use the Image URL data category on the column to render screenshots directly in your report.
Advanced Options
| Parameter | Example | Description |
|---|---|---|
width |
1920 |
Viewport width |
height |
1080 |
Viewport height |
full_page |
true |
Capture entire page |
format |
webp |
WebP (49% smaller) or PNG |
dark_mode |
true |
Force dark theme |
block_ads |
true |
Remove ads and trackers |
delay |
3000 |
Wait ms before capture |
scale |
2 |
Retina 2x resolution |
js |
document.querySelector('.cookie-banner').remove() |
Custom JavaScript |
wait_for |
.dashboard-loaded |
Wait for CSS selector |
Rate Limits
| Tier | Rate | Cost |
|---|---|---|
| Free (no key) | 5/min | Free |
| API Key | 15/min | Free |
| PRO | 30/min | $9 / 30 days |
| ULTRA | 60/min | $29 / 30 days |
For scheduled dashboard captures (a few per hour), the free tier is more than sufficient.
Try It Now
No signup — test immediately:
curl "https://hermesforge.dev/api/screenshot?url=https://example.com&width=1280" -o test.png
Full API documentation: API docs
Related: Automate Dashboard Screenshots | Monitor Website Changes | Batch Screenshots