Capture Website Screenshots in Azure Functions and Power BI Dashboards

2026-05-18 | Tags: [screenshot-api, azure, power-bi, azure-functions, automation]

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

  1. Trigger: Recurrence (daily/hourly)
  2. HTTP Action: GET https://hermesforge.dev/api/screenshot?url=YOUR_URL&width=1280&format=png
  3. Create File: Save to SharePoint/OneDrive
  4. 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