Free tools Windows power users keep installed
One-click scans. No signup required.
iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
You can automate Power BI report screenshots in two main ways: use a scheduled Power Automate flow for recurring exports and delivery, or call the Power BI ExportTo REST API when you need code-level control over report pages, filters, bookmarks, identity, and file handling. Power BI documentation calls this an export: PNG produces page images, while PDF and PowerPoint (PPTX) produce documents.
Choose the right automation route
| Route | Best fit | What to expect |
|---|---|---|
| Power Automate | Scheduled exports sent or handed off through a cloud flow, without building REST job orchestration. | Microsoft’s tutorial creates a scheduled flow with the “Export to File for Power BI Reports” action. It can select a workspace, report, format, and optionally pages; its example sends a weekly report. Multi-page PNG output is a ZIP of page images. Microsoft’s tutorial |
| ExportTo REST API | Developer workflows that need to select report configuration, poll for completion, or process files programmatically. | Submit an export job, poll its status, then download the completed file. The API is asynchronous, not a request that immediately returns the finished image. ExportTo API reference |
Both routes use Power BI’s export capability and are subject to workspace capacity, tenant configuration, report content, and export limits. Choose by operational need: a scheduled delivery flow favors Power Automate; custom state, integration, and downstream processing favor the REST API.
Check requirements before building the workflow
Capacity and licensing
The report workspace must be backed by Premium, Embedded, or Fabric capacity. The ExportTo API is not supported for Premium Per User (PPU). Microsoft’s Power Automate walkthrough likewise requires a workspace backed by reserved capacity. The tutorial says standard Power Automate connectors come with a Microsoft 365 subscription, but licensing varies and can change; verify the current entitlement for your tenant and flow before deployment.
Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallTenant export settings
For PNG, the tenant’s export-to-image setting must be enabled; Microsoft’s API overview says it is disabled by default. The PDF and PowerPoint export setting is enabled by default, according to that overview. An administrator may need to enable the relevant setting before an image flow can work. Review Microsoft’s export overview and prerequisites.
#1 Best Overall
Report contents and supported state
Some visuals and report state are not supported in exports. Microsoft lists uncertified custom visuals, R, PowerApps, Python, Power Automate, paginated report, Visio, and ArcGIS visuals among unsupported visuals; affected areas may show an error symbol. Personal bookmarks and persistent filters are unsupported. Consult the current limitations documentation against the actual report, visuals, and data connections before relying on an automated capture.
Set up a scheduled export with Power Automate
- Confirm prerequisites. Check that the report is in a workspace backed by reserved capacity, you can access the report, the applicable export setting is enabled, and your account has the required Power Automate licensing and connectors.
- Create a scheduled cloud flow. In Power Automate, choose a scheduled cloud flow and set the recurrence—for example, weekly if that matches the delivery need.
- Add the export action. Add “Export to File for Power BI Reports.” Select the workspace and report, choose PNG, PDF, or PPTX, and select report pages if the action exposes the page selection you need.
- Configure identity if using row-level security. The tutorial calls for an effective username, semantic model ID, and role for RLS. Set these deliberately and validate that the exported data is for the intended audience before sending it onward.
- Use the action’s file content. Pass the returned file content to the next flow action, such as an email attachment or an approved storage/delivery step. Follow Microsoft’s tutorial for the action’s current field labels and connector behavior.
- Test the saved report state. The tutorial warns that exports reflect saved default slicer values even when a user later changes a slicer. Do not assume an interactive user’s current slicer state is captured; arrange the saved defaults or use the API route for supported explicit report configuration.
The low-code flow is convenient for routine export and delivery, but it does not remove the need to validate capacity, identity, selected format, and the report state represented in the output.
Build an export with the Power BI REST API
The API workflow has three stages: submit an export job, poll its status until it succeeds, then download the file. The endpoint returns HTTP 202 Accepted when the job is queued. Its response includes an export identifier to use with the status and file endpoints. The example below uses PNG and one report page; replace the IDs and credentials with values for your environment. Review the current API reference for the request schema and response fields.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Rank #2
Prerequisites and permissions
- The report must belong to a workspace on Premium, Embedded, or Fabric capacity; PPU is not supported by this API.
- Authorize with one of the documented scope combinations:
Report.Read.AllorReport.ReadWrite.All, andDataset.Read.AllorDataset.ReadWrite.All. - Enable image export in tenant settings when requesting PNG.
- Have the workspace ID, report ID, an access token, and the intended output format and report state.
Runnable Python example
Install the dependency with python -m pip install requests. Set POWER_BI_ACCESS_TOKEN, POWER_BI_GROUP_ID, and POWER_BI_REPORT_ID in the environment. This example polls with a bounded timeout, checks HTTP errors, and saves the downloaded file. For multiple PNG pages, the downloaded result is a ZIP, so the example uses a .zip filename; for a single page it saves a PNG.
import os
import time
import requests
TOKEN = os.environ["POWER_BI_ACCESS_TOKEN"]
GROUP_ID = os.environ["POWER_BI_GROUP_ID"]
REPORT_ID = os.environ["POWER_BI_REPORT_ID"]
BASE = f"https://api.powerbi.com/v1.0/myorg/groups/{GROUP_ID}/reports/{REPORT_ID}"
HEADERS = {"Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json"}
payload = {
"format": "PNG",
"powerBIReportConfiguration": {
"pages": [{"pageName": "ReportSection"}]
}
}
start = requests.post(f"{BASE}/ExportTo", headers=HEADERS, json=payload, timeout=30)
start.raise_for_status() # The accepted job response is HTTP 202.
export_id = start.json()["id"]
# Poll until success or failure. Set the deadline to suit your job's operational policy.
deadline = time.monotonic() + 600
while True:
if time.monotonic() >= deadline:
raise TimeoutError(f"Export {export_id} did not finish before the deadline")
status_response = requests.get(
f"{BASE}/exports/{export_id}", headers=HEADERS, timeout=30
)
status_response.raise_for_status()
status = status_response.json()["status"]
if status == "Succeeded":
break
if status in ("Failed", "Cancelled"):
raise RuntimeError(f"Export {export_id} ended with status {status}")
time.sleep(5)
file_response = requests.get(
f"{BASE}/exports/{export_id}/file", headers=HEADERS, timeout=90
)
file_response.raise_for_status()
with open("report-page.png", "wb") as output:
output.write(file_response.content)
print("Saved report-page.png")
The sample’s page name is illustrative: use the page name expected by the API for your report, and check the request schema for supported configuration fields. For a multi-page PNG request, save the file with a ZIP extension and extract its per-page images. Keep the access token secret; do not place it in source control or a publicly reachable client.
cURL and Node.js implementation notes
Because REST export is asynchronous, cURL alone is only one stage of the workflow. Submit the job, read its returned export ID, then make authenticated status requests to /exports/{exportId} until the status is Succeeded; finally retrieve /exports/{exportId}/file. The endpoints and body shape are documented in Microsoft’s ExportTo reference. In Node.js, use fetch for the same sequence, checking each response’s ok status and writing the final response bytes to a file; add a poll interval and deadline rather than assuming the first status check will succeed. Python above shows the complete polling pattern.
Control which report state appears in the capture
An export is not necessarily a screenshot of whatever a user currently sees in an open browser. Without explicit supported configuration, the API exports default values. Power Automate’s tutorial specifically warns that saved default slicer values are used even if a user changes a slicer afterward.
- Pages: Select the desired report pages in the flow or API configuration. For PNG with multiple pages, expect a ZIP containing one image for each page.
- Filters and bookmarks: The API supports report configuration for filters and bookmarks. Use only supported settings and confirm that the intended state appears in a test export. Personal bookmarks and persistent filters are unsupported.
- Row-level security: For RLS exports, configure the effective identity information required by the workflow, including username, semantic model ID, and role where applicable. Verify access boundaries before distribution; identity configuration affects both correctness and confidentiality.
- Embedded rendering: If an embedded application triggers export, wait for the report’s Rendering event to finish before starting the export. Otherwise the export can begin before visuals finish rendering.
Formats, packaging, and operational limits
For ordinary Power BI reports, the documented ExportTo formats are PNG, PDF, and PPTX. A multi-page PNG export is packaged as a ZIP with an image for each page. Do not treat every format listed in the broader REST schema as available for ordinary reports: TIFF or JPEG appears under IMAGE for paginated reports, not as a general ordinary-report PNG alternative.
| Documented service limit | Value | Operational implication |
|---|---|---|
| Concurrent export requests | 500 per capacity | Coordinate simultaneous jobs that share a capacity; this is a documented ceiling, not a throughput guarantee. |
| Pages processed concurrently | 5 | Large multi-page jobs may be processed in groups rather than all pages at once. |
| Pages or visuals in one export job | 50 maximum | Split a larger capture set into multiple export jobs. |
| Maximum output file size | 250 MB | Reduce scope or split exports if the output approaches the documented maximum. |
These limits are published in Microsoft’s export documentation; Microsoft page publication dates were not exposed in the consulted pages. Treat the figures as service limits rather than promised performance and verify the live limitations page before designing a time-sensitive or high-volume system.
Rank #4
Reliability, polling, and cost considerations
Poll and download promptly
Microsoft describes the API as asynchronous. A reliable client should respect the accepted response, poll status with a delay, handle failure states, and apply a deadline rather than loop forever. Once the export succeeds, download the file promptly: Microsoft says the returned retrieval URL is available for 24 hours. Do not treat that URL as permanent storage.
Handle capacity and volume deliberately
Concurrent requests are limited per capacity, and each job is constrained by page/visual count and output size. Schedule recurring jobs to avoid unnecessary bursts, and design a queue or retry policy that distinguishes transient HTTP failures from an export job that has actually failed. The Microsoft documentation supplies service limits, not a capture-time or reliability benchmark.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Clear out junk files and repair common Windows errors3Fix the driver behind crashes, sound loss and screen glitchesBudget and licensing
The relevant Microsoft sources establish capacity prerequisites and Power Automate connector guidance, but do not provide a universal per-screenshot price. Your cost depends on the capacity and licensing arrangements in your Microsoft tenant. Confirm those terms with your administrator and current Microsoft licensing information rather than estimating from the number of PNGs alone.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Troubleshoot common failures
| Symptom | Likely cause | What to check |
|---|---|---|
| PNG export is unavailable or rejected | Image export is disabled in tenant settings, or the workspace is not on eligible capacity. | Ask a tenant administrator to check the export-to-image setting; confirm Premium, Embedded, or Fabric capacity for the API, and reserved capacity for the Power Automate walkthrough. |
| API request returns an authorization error | Token is missing/expired or lacks a required report or dataset scope. | Acquire a valid token and check for Report.Read.All or Report.ReadWrite.All plus Dataset.Read.All or Dataset.ReadWrite.All. |
| Export starts, but status does not succeed | The job is still processing or has failed due to report content, capacity, or configuration. | Poll the status endpoint with a delay, inspect the returned status and error details, and test a smaller page selection. Do not repeatedly submit new jobs without checking the existing job. |
| Images contain an error symbol or missing visual | The report contains an unsupported visual or connection. | Compare report content with Microsoft’s current unsupported-visual list; replace or remove unsupported components if an export-ready representation is required. |
| Screenshot shows unexpected slicer/filter values | The export used saved defaults rather than an interactive user’s current selections. | Set the intended defaults or supply supported API filters/bookmarks, then verify the resulting export before distribution. |
| RLS export shows the wrong audience’s data | Effective identity, semantic model ID, or role is missing or incorrect. | Validate all identity fields against the target role and test with controlled data before enabling delivery. |
| Embedded export captures incomplete visuals | Export was triggered before rendering finished. | Wait for the report’s Rendering event to complete, then initiate the export. |
| File download fails after a successful job | The retrieval URL has expired or the wrong export ID/endpoint was used. | Use the correct job ID and download promptly; the Microsoft retrieval URL is available for 24 hours. |
| Multi-page PNG is not a readable image file | The result is a ZIP archive by design. | Save it as a ZIP and extract the separate page images for downstream use. |
Or skip the browser setup
For a general website screenshot rather than a Power BI ExportTo job, ScreenshotNeo is a screenshot API and MCP server. It does not replace Power BI’s export permissions, report-state configuration, or capacity requirements; use Microsoft’s export route for Power BI reports. ScreenshotNeo is useful when your automation needs to capture a normal web page: consent banners, newsletter popups, and chat widgets are removed before the shot, and bot checks, blank pages, and failed loads are not billed. AI agents can call its MCP server tools, including take_screenshot, get_page_info, and capture_pdf.
One-call cURL example, adapting the target URL for a page you are authorized to capture:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
See the ScreenshotNeo API documentation for request options. The Free plan includes 1,000 screenshots a month with no card; paid plans start at $5 for 3,000. Sign up for ScreenshotNeo free.
Frequently Asked Questions
Can Power BI automatically email a report screenshot every week?
Yes. Microsoft’s Power Automate walkthrough demonstrates a scheduled flow using “Export to File for Power BI Reports” and an email action. Multi-page PNG output is delivered as a ZIP attachment.
Does an automated Power BI screenshot include a user’s current slicer selections?
Not automatically. Power Automate exports saved default slicer values; use supported API report configuration for a deliberate alternate state.
Can the Power BI ExportTo API create a JPEG for a standard report?
The documented ordinary-report formats are PNG, PDF, and PPTX. JPEG and TIFF in the broader schema apply to paginated report IMAGE export, not ordinary report exports.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

