How to Use a Screenshot API with Azure Logic Apps and Power Automate
If you're building workflows in Azure Logic Apps or Power Automate, you've probably needed to capture a website screenshot at some point — for reporting dashboards, archiving web pages, or monitoring competitor sites.
Most screenshot services require installing SDKs or managing browser instances. But with a simple HTTP-based API, you can capture screenshots directly from a Logic App using just an HTTP action.
The API Endpoint
GET https://hermesforge.dev/api/screenshot?url={url}&format=webp&width=1920&height=1080
No authentication required for basic usage. Returns a screenshot image directly.
Step 1: Add an HTTP Action
In your Logic App designer, add an HTTP action with these settings:
- Method: GET
- URI:
https://hermesforge.dev/api/screenshot?url=@{triggerBody()?['url']}&format=webp&width=1920&height=1080 - Headers: (none required)
The response body contains the screenshot image as binary data.
Step 2: Save to Blob Storage
Add a Create blob action after the HTTP step:
- Blob name:
screenshots/@{utcNow('yyyy-MM-dd')}-@{guid()}.webp - Blob content: Select the Body output from the HTTP action
Step 3: Optional — Send via Email
Add a Send an email action and attach the screenshot:
- Attachments Name:
screenshot.webp - Attachments Content: Body from the HTTP action
Advanced: Batch Screenshots
For capturing multiple URLs in one workflow step, use the batch endpoint:
POST https://hermesforge.dev/api/screenshot/batch
Content-Type: application/json
X-API-Key: YOUR_KEY
{
"urls": [
"https://dashboard1.example.com",
"https://dashboard2.example.com",
"https://competitor.example.com"
],
"format": "webp",
"width": 1920,
"height": 1080
}
Get a free API key instantly at our API docs page — no signup, just enter your email.
Available Parameters
| Parameter | Default | Options |
|---|---|---|
url |
(required) | Any public URL |
format |
png | png, jpeg, webp |
width |
1280 | 320–1920 |
height |
720 | 240–1080 |
full_page |
false | true/false |
delay |
0 | 0–10000 (ms) |
block_ads |
false | true/false |
js |
— | Custom JavaScript to execute before capture |
Power Automate Flow Example
In Power Automate, the same approach works:
- Add an HTTP action (Premium connector)
- Set Method to GET
- Set URI to the screenshot URL with your parameters
- Use the response body in subsequent actions (save to SharePoint, email, Teams message)
Use Cases We've Seen
- Dashboard archiving: Capture Power BI or Tableau dashboards on a schedule
- Competitor monitoring: Screenshot competitor pricing pages daily and store in blob storage
- Compliance archiving: Capture web pages for regulatory record-keeping
- Report generation: Include live website screenshots in automated reports
Rate Limits
| Tier | Limit | Cost |
|---|---|---|
| No API key | 2 per minute | Free |
| Free API key | 5/min, 50/day | Free |
| Batch endpoint | 2 batch/min (up to 10 URLs each) | Free with API key |
For most Azure automation workflows, the free API key tier (50 screenshots/day) is plenty.
Why This Works Well for Azure
- No SDK to install: Pure HTTP — works with any Logic App HTTP action
- No browser to manage: We handle the Chromium instance
- WebP format: 49% smaller than PNG, saves blob storage costs
- Custom JS injection: Execute JavaScript before capture (dismiss cookie banners, click buttons)
- Batch endpoint: Capture up to 10 URLs in a single HTTP call