# AI Screenshot Change Analyzer - DiffShot (`westerly_palisade/diffshot-by-dravara`) Actor

Compare screenshots for QA and visual regression review. Detect and explain meaningful text, number, price, control, and layout changes; return structured findings, a pixel-change ratio, and an annotated side-by-side PNG.

- **URL**: https://apify.com/westerly\_palisade/diffshot-by-dravara.md
- **Developed by:** [Dravara LLC](https://apify.com/westerly_palisade) (community)
- **Categories:** AI, Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.40 / image pair compared

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## DiffShot

**Review meaningful differences between two image versions.**

DiffShot compares a before screenshot with an after screenshot and reports what
changed in human terms. It is not another website-change monitor: its job is to
separate substantive changes from pixel or formatting noise.

### Changes it can explain

- Added, removed, or revised text
- Changed numbers, dates, and prices
- Added, removed, or changed controls
- Changed obligations or policy language visible in the images
- Moved elements
- Formatting-only changes when explicitly requested

The result includes structured before/after regions, severity, an explanation,
a local pixel-change ratio, and a side-by-side annotated PNG.

### Supported input

Exactly two PNG, JPEG, or WebP images per run; each at most 12 MB, 8,192 pixels
per side, and 20 megapixels. Console uploads are read inside this limited Actor
with its scoped storage access. Direct inline data URLs should stay at or below
6 MB of raw image bytes each because Apify run-input requests have a smaller
limit than uploaded or remote files. Image order is always before, then after.
Identical normalized images skip model analysis and return an exact no-change result.

### Billing

A successful run costs $0.40005: the $0.00005 `apify-actor-start` event plus
$0.40 for `image-pair-compared`. The result event is captured only after the
comparison artifact and dataset item exist. Validation or provider failures
skip the result charge, but the Actor-start charge can still apply. The
synthetic sample input is billed like any other run.

### Privacy

Both images and optional context are processed by Dravara, LLC's private
service and the OpenAI API using `store: false`; applicable provider
abuse-monitoring retention may still apply. Apify retains normal run storage
under the runner's settings. Remove credentials and unrelated personal or
regulated information before upload.

Support: <support@dravarahq.com>

# Actor input Schema

## `before_image` (type: `string`):

Console upload/HTTPS up to 12 MB; inline data URL up to 6 MB raw. Maximum 20 megapixels.

## `after_image` (type: `string`):

Console upload/HTTPS up to 12 MB; inline data URL up to 6 MB raw. Maximum 20 megapixels.

## `context` (type: `string`):

Explain what changed or what reviewers should pay particular attention to.

## `include_formatting` (type: `boolean`):

Include changes that appear to affect only layout, spacing, typography, color, or other formatting.

## Actor input object example

```json
{
  "before_image": "data:image/webp;base64,UklGRnQEAABXRUJQVlA4TGgEAAAvf8JZAAfmsG0bSXLfW/lzMbHIXA8O27aRJGP77/feiAjatk24nj+Dr55/AkmbBHePcb9+IAEYBCAgAEAyAOZmBQbpDQBEwAACASzp9z/zPwaIVVk+31qBtEOgDQmggIC0aewABI2502YTpmkEQNpAxIDf75sbQwA0NMRoaH7/06bN4TUgIHOHBGBZKDSCr+0/27KszZ1Gc7S2aWgaYEBvNp4YZ24DMkibM3yPuJ4H1K5tOx5XZ/O2Gc/Utm3btm17bBtvktq222eQpN36b+/zjD7t9WzcEf2HxEaSIsnLHMt8t/T60/oNxH/iP/Gf+E/8J/4T/4n/xH9/I2D9BuI/8Z/4T1T1l30Z/CedRbmSIv4T/4n/rJuw23BjImE3cH8Gm+/dvrexlRiUbuvPPhBpAJSVomD8XW11jxfc6E73G3PNGFPxmc2gQjMtFr55unyvnQJMrTFjDPG1owpAzQ5YLHNqPQvy3scCse/NGMPyfdzzowjMslTCbqBkMGH35ve+mrh3Zowh9eGdj/NQzAxarBmg4MDBmqnAtCozRufcggUXUNAw23KZUDj/Rgrdb8xpy/RLEP/UMz1kucS/8G25f/veJloRvnHjxumzq4DAGAXURezf7d7iP/Gf+E/8J/4T//2vtYOWT/LRX0dioHtqIwypckv7aK76OnIkUZZJ2Y7GQxcgtEtBzRzmXPLEXKLdlH3yLVHFb4e+KPjq4DzzLFwNqGsvt2W+2kPf8mB5X9SJwKPlHPu92it4vNwiyctt6QngqVvOSuU5nwJEJw/8Y9KgD2RtYEMm4T0MfaPVRfYw8o1F4t/126eVhiFFDXu/aIsAhB2iPhTvY4h5T7Q7NHr0Aqu0MjXuteGwnxE3gLF7AZQx64OmySzRCywS16+6PzcULuPEDuDAqNZlrWNdFkrX5ENZJisCv0JzDcNv3L7oA67Quv4VwYp+prJS26Sdh+HF9u9+P/Gf+E/8J/4T/4n//oeb6lCGasO8V657vD0mbWzrVVRYLBu20SkDZWEYLymhZ6Fb3RsFSqvpUxJKVfTIrA1OYteD+/PhwFIz9UwoOAR1fbf+ihSMOj382O/VXqVdYbykhLS1bL7UCjLWsSzKlckMfMiXpNHpcP7yjZJhnsga1hcRWWC8IgWl15nhWqVlEe0Ojbzz46SYmngbQ9cW3rqu+9xJLZoHnNvBinpP2E/MJ5p9xitSUEadGe5VWhZNgOJjTCsZdI/yOQZ/mI+x+KbD9MLrMNjB+eppdoh5jYIPOr3ODNcqbcvcmuLVbD3peTuOHRGKVrMmQv5aFlWkBLolfIbspUzVxqJLWJ+KwnxFCnqdEd7Uw6u0Moa5gZLu3D3E8icNpxVDgsFTigEVgbqh7L/3YCeMuOFWanOr1GBJLxTGK1Iw6ozwslKv0nLd7q1ofeD8aNft3lZNTpb9u99P/Cf+E/+J/8R/4j/xn/hP/Cf+E/+J/8R/4r//vLN/v7uf/wizfgPxn/hP/Cf+E/+JygA=",
  "after_image": "data:image/webp;base64,UklGRnoEAABXRUJQVlA4TG4EAAAvf8JZAPflsG0bSXLD1z/2iYm9TBEM2jaSVP4Il8neM1MjaNs24c/1DL56/gkkbXgB9xjX/YEEIBCAgAAASQCYnRUIJGgBgAgIsxPAit45M0cABYC0E0g+31qB1AQEZieAAgLSzidZAAQts6edbZgOgQBIOwDw/t+7Z7WgU7TMnHbe+Q6uAAF55wQgOVNbAgFaVtCOZFGbOh3Y1F3LzAEBugMEAiKcsS2Q8I88/PvD7zygv23b8Ua6JuwwY9u2bdu2WdtuNLbtmbdIsv7j8r1vmv62x7t4IvrvCJIkRcl94YU7HPL60/oN8Z/4T/wn/hP/if/Ef+I/8d/fCFi/If4T/4n/RFV/2Zfxn3QW5UqK+E/8J/6zbmLBpugkYsHQg1lsu3/7/pYUMSjdjl/6QbwJUFaKggl3tdU9WRTtSc/ofDPGVH5+G6jIbIuF745OPxqmAtPqzRhDl4bRxUlzQxbLvAbHosIPGUDGBzPGsPIQ930oQnMslVgwVDGMWPDmj/6azu/NGEPmozufFiTNDlusGaDgyNH6acD0WjNG574Fiy6hoGmu5TKxZGE0QM/ovPbMvAJdnjtmRiyXLi9d2x/cvr+VFGLRaPTshTVAaKwCGuP273Zv8Z/4T/wn/hP/if/+19pRy6fHiV+P+2F75NFCx5K45pqrI0cSZZlU7W4+dok+IdeY50D3Wy0O/xXSpuyT791Ul12MWUPXr8DltcqxeC2grr/amft6P/2rw9X9UadCj1dy8vc6p+DJSouksKCtNwBbrsGMUjQXA0BiypA/Jg/9SN5mNucS28+It6Agvp9Rby0S397fPq8GRj7tg//OQN01gJibhAvFBz/+DyR6QrNDL7BKK1Pj30C3e1Ngw7Ng8PdsGHcQQBmzPmpazBK9wCIJ+lTPF3QqXp/iig0cGZ1a3kY25qF0LS6UZbIq9GtkPttag8HKFK6S2sCacM0AU1WlbZLmYXiZ/bvfT/wn/hP/if/Ef+K//+GmOpSh2tMzsxkCZdGyQDomb2lvWirslMheBecOcPAMHR/KqjAmKaF3SbCuLwqUVtOvIpKp6JXbEJ7M3ocPFgL9SXo6kEFPtODzkfBw1I19+nQpGI16/snf65xWW8KYpISs9Wy7kgI5G1mR4OoUhjzia/cx2WbkNxeur474OjaVEl9kTJeC0hvNfK3Vmkj0hGbe+3AHTC288+Np410wGHzhzixdQBpiPvyfaXUZ06WgjEYz32m1JloAxSd/igx6JvjixxfjUwaumTCz5IajnRmtbvxvUPBRpzea+VqrPZlbU76WHacd78azO07pWtbFKVrP0ppAyNv1i8ZYyllHYjmbMpPM6VLQG438ll5Oq2UxMhiq6MndY6x81nRWMTwcPqMYXBNqHMHh+w/36FKukcoMV/RJMqZLwWg08qsqnVbLdbu3IvVw/0zrdm+rJj/P/t3vJ/4T/4n/xH/iP/Gf+E/8J/4T/4n/xH/iP/Hff9jZv//dz3+EWb8h/hP/if/Ef+I/URk=",
  "context": "Compare customer-visible plan changes.",
  "include_formatting": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `files` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "before_image": "data:image/webp;base64,UklGRnQEAABXRUJQVlA4TGgEAAAvf8JZAAfmsG0bSXLfW/lzMbHIXA8O27aRJGP77/feiAjatk24nj+Dr55/AkmbBHePcb9+IAEYBCAgAEAyAOZmBQbpDQBEwAACASzp9z/zPwaIVVk+31qBtEOgDQmggIC0aewABI2502YTpmkEQNpAxIDf75sbQwA0NMRoaH7/06bN4TUgIHOHBGBZKDSCr+0/27KszZ1Gc7S2aWgaYEBvNp4YZ24DMkibM3yPuJ4H1K5tOx5XZ/O2Gc/Utm3btm17bBtvktq222eQpN36b+/zjD7t9WzcEf2HxEaSIsnLHMt8t/T60/oNxH/iP/Gf+E/8J/4T/4n/xH9/I2D9BuI/8Z/4T1T1l30Z/CedRbmSIv4T/4n/rJuw23BjImE3cH8Gm+/dvrexlRiUbuvPPhBpAJSVomD8XW11jxfc6E73G3PNGFPxmc2gQjMtFr55unyvnQJMrTFjDPG1owpAzQ5YLHNqPQvy3scCse/NGMPyfdzzowjMslTCbqBkMGH35ve+mrh3Zowh9eGdj/NQzAxarBmg4MDBmqnAtCozRufcggUXUNAw23KZUDj/Rgrdb8xpy/RLEP/UMz1kucS/8G25f/veJloRvnHjxumzq4DAGAXURezf7d7iP/Gf+E/8J/4T//2vtYOWT/LRX0dioHtqIwypckv7aK76OnIkUZZJ2Y7GQxcgtEtBzRzmXPLEXKLdlH3yLVHFb4e+KPjq4DzzLFwNqGsvt2W+2kPf8mB5X9SJwKPlHPu92it4vNwiyctt6QngqVvOSuU5nwJEJw/8Y9KgD2RtYEMm4T0MfaPVRfYw8o1F4t/126eVhiFFDXu/aIsAhB2iPhTvY4h5T7Q7NHr0Aqu0MjXuteGwnxE3gLF7AZQx64OmySzRCywS16+6PzcULuPEDuDAqNZlrWNdFkrX5ENZJisCv0JzDcNv3L7oA67Quv4VwYp+prJS26Sdh+HF9u9+P/Gf+E/8J/4T/4n//oeb6lCGasO8V657vD0mbWzrVVRYLBu20SkDZWEYLymhZ6Fb3RsFSqvpUxJKVfTIrA1OYteD+/PhwFIz9UwoOAR1fbf+ihSMOj382O/VXqVdYbykhLS1bL7UCjLWsSzKlckMfMiXpNHpcP7yjZJhnsga1hcRWWC8IgWl15nhWqVlEe0Ojbzz46SYmngbQ9cW3rqu+9xJLZoHnNvBinpP2E/MJ5p9xitSUEadGe5VWhZNgOJjTCsZdI/yOQZ/mI+x+KbD9MLrMNjB+eppdoh5jYIPOr3ODNcqbcvcmuLVbD3peTuOHRGKVrMmQv5aFlWkBLolfIbspUzVxqJLWJ+KwnxFCnqdEd7Uw6u0Moa5gZLu3D3E8icNpxVDgsFTigEVgbqh7L/3YCeMuOFWanOr1GBJLxTGK1Iw6ozwslKv0nLd7q1ofeD8aNft3lZNTpb9u99P/Cf+E/+J/8R/4j/xn/hP/Cf+E/+J/8R/4r//vLN/v7uf/wizfgPxn/hP/Cf+E/+JygA=",
    "after_image": "data:image/webp;base64,UklGRnoEAABXRUJQVlA4TG4EAAAvf8JZAPflsG0bSXLD1z/2iYm9TBEM2jaSVP4Il8neM1MjaNs24c/1DL56/gkkbXgB9xjX/YEEIBCAgAAASQCYnRUIJGgBgAgIsxPAit45M0cABYC0E0g+31qB1AQEZieAAgLSzidZAAQts6edbZgOgQBIOwDw/t+7Z7WgU7TMnHbe+Q6uAAF55wQgOVNbAgFaVtCOZFGbOh3Y1F3LzAEBugMEAiKcsS2Q8I88/PvD7zygv23b8Ua6JuwwY9u2bdu2WdtuNLbtmbdIsv7j8r1vmv62x7t4IvrvCJIkRcl94YU7HPL60/oN8Z/4T/wn/hP/if/Ef+I/8d/fCFi/If4T/4n/RFV/2Zfxn3QW5UqK+E/8J/6zbmLBpugkYsHQg1lsu3/7/pYUMSjdjl/6QbwJUFaKggl3tdU9WRTtSc/ofDPGVH5+G6jIbIuF745OPxqmAtPqzRhDl4bRxUlzQxbLvAbHosIPGUDGBzPGsPIQ930oQnMslVgwVDGMWPDmj/6azu/NGEPmozufFiTNDlusGaDgyNH6acD0WjNG574Fiy6hoGmu5TKxZGE0QM/ovPbMvAJdnjtmRiyXLi9d2x/cvr+VFGLRaPTshTVAaKwCGuP273Zv8Z/4T/wn/hP/if/+19pRy6fHiV+P+2F75NFCx5K45pqrI0cSZZlU7W4+dok+IdeY50D3Wy0O/xXSpuyT791Ul12MWUPXr8DltcqxeC2grr/amft6P/2rw9X9UadCj1dy8vc6p+DJSouksKCtNwBbrsGMUjQXA0BiypA/Jg/9SN5mNucS28+It6Agvp9Rby0S397fPq8GRj7tg//OQN01gJibhAvFBz/+DyR6QrNDL7BKK1Pj30C3e1Ngw7Ng8PdsGHcQQBmzPmpazBK9wCIJ+lTPF3QqXp/iig0cGZ1a3kY25qF0LS6UZbIq9GtkPttag8HKFK6S2sCacM0AU1WlbZLmYXiZ/bvfT/wn/hP/if/Ef+K//+GmOpSh2tMzsxkCZdGyQDomb2lvWirslMheBecOcPAMHR/KqjAmKaF3SbCuLwqUVtOvIpKp6JXbEJ7M3ocPFgL9SXo6kEFPtODzkfBw1I19+nQpGI16/snf65xWW8KYpISs9Wy7kgI5G1mR4OoUhjzia/cx2WbkNxeur474OjaVEl9kTJeC0hvNfK3Vmkj0hGbe+3AHTC288+Np410wGHzhzixdQBpiPvyfaXUZ06WgjEYz32m1JloAxSd/igx6JvjixxfjUwaumTCz5IajnRmtbvxvUPBRpzea+VqrPZlbU76WHacd78azO07pWtbFKVrP0ppAyNv1i8ZYyllHYjmbMpPM6VLQG438ll5Oq2UxMhiq6MndY6x81nRWMTwcPqMYXBNqHMHh+w/36FKukcoMV/RJMqZLwWg08qsqnVbLdbu3IvVw/0zrdm+rJj/P/t3vJ/4T/4n/xH/iP/Gf+E/8J/4T/4n/xH/iP/Hff9jZv//dz3+EWb8h/hP/if/Ef+I/URk=",
    "context": "Compare customer-visible plan changes."
};

// Run the Actor and wait for it to finish
const run = await client.actor("westerly_palisade/diffshot-by-dravara").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "before_image": "data:image/webp;base64,UklGRnQEAABXRUJQVlA4TGgEAAAvf8JZAAfmsG0bSXLfW/lzMbHIXA8O27aRJGP77/feiAjatk24nj+Dr55/AkmbBHePcb9+IAEYBCAgAEAyAOZmBQbpDQBEwAACASzp9z/zPwaIVVk+31qBtEOgDQmggIC0aewABI2502YTpmkEQNpAxIDf75sbQwA0NMRoaH7/06bN4TUgIHOHBGBZKDSCr+0/27KszZ1Gc7S2aWgaYEBvNp4YZ24DMkibM3yPuJ4H1K5tOx5XZ/O2Gc/Utm3btm17bBtvktq222eQpN36b+/zjD7t9WzcEf2HxEaSIsnLHMt8t/T60/oNxH/iP/Gf+E/8J/4T/4n/xH9/I2D9BuI/8Z/4T1T1l30Z/CedRbmSIv4T/4n/rJuw23BjImE3cH8Gm+/dvrexlRiUbuvPPhBpAJSVomD8XW11jxfc6E73G3PNGFPxmc2gQjMtFr55unyvnQJMrTFjDPG1owpAzQ5YLHNqPQvy3scCse/NGMPyfdzzowjMslTCbqBkMGH35ve+mrh3Zowh9eGdj/NQzAxarBmg4MDBmqnAtCozRufcggUXUNAw23KZUDj/Rgrdb8xpy/RLEP/UMz1kucS/8G25f/veJloRvnHjxumzq4DAGAXURezf7d7iP/Gf+E/8J/4T//2vtYOWT/LRX0dioHtqIwypckv7aK76OnIkUZZJ2Y7GQxcgtEtBzRzmXPLEXKLdlH3yLVHFb4e+KPjq4DzzLFwNqGsvt2W+2kPf8mB5X9SJwKPlHPu92it4vNwiyctt6QngqVvOSuU5nwJEJw/8Y9KgD2RtYEMm4T0MfaPVRfYw8o1F4t/126eVhiFFDXu/aIsAhB2iPhTvY4h5T7Q7NHr0Aqu0MjXuteGwnxE3gLF7AZQx64OmySzRCywS16+6PzcULuPEDuDAqNZlrWNdFkrX5ENZJisCv0JzDcNv3L7oA67Quv4VwYp+prJS26Sdh+HF9u9+P/Gf+E/8J/4T/4n//oeb6lCGasO8V657vD0mbWzrVVRYLBu20SkDZWEYLymhZ6Fb3RsFSqvpUxJKVfTIrA1OYteD+/PhwFIz9UwoOAR1fbf+ihSMOj382O/VXqVdYbykhLS1bL7UCjLWsSzKlckMfMiXpNHpcP7yjZJhnsga1hcRWWC8IgWl15nhWqVlEe0Ojbzz46SYmngbQ9cW3rqu+9xJLZoHnNvBinpP2E/MJ5p9xitSUEadGe5VWhZNgOJjTCsZdI/yOQZ/mI+x+KbD9MLrMNjB+eppdoh5jYIPOr3ODNcqbcvcmuLVbD3peTuOHRGKVrMmQv5aFlWkBLolfIbspUzVxqJLWJ+KwnxFCnqdEd7Uw6u0Moa5gZLu3D3E8icNpxVDgsFTigEVgbqh7L/3YCeMuOFWanOr1GBJLxTGK1Iw6ozwslKv0nLd7q1ofeD8aNft3lZNTpb9u99P/Cf+E/+J/8R/4j/xn/hP/Cf+E/+J/8R/4r//vLN/v7uf/wizfgPxn/hP/Cf+E/+JygA=",
    "after_image": "data:image/webp;base64,UklGRnoEAABXRUJQVlA4TG4EAAAvf8JZAPflsG0bSXLD1z/2iYm9TBEM2jaSVP4Il8neM1MjaNs24c/1DL56/gkkbXgB9xjX/YEEIBCAgAAASQCYnRUIJGgBgAgIsxPAit45M0cABYC0E0g+31qB1AQEZieAAgLSzidZAAQts6edbZgOgQBIOwDw/t+7Z7WgU7TMnHbe+Q6uAAF55wQgOVNbAgFaVtCOZFGbOh3Y1F3LzAEBugMEAiKcsS2Q8I88/PvD7zygv23b8Ua6JuwwY9u2bdu2WdtuNLbtmbdIsv7j8r1vmv62x7t4IvrvCJIkRcl94YU7HPL60/oN8Z/4T/wn/hP/if/Ef+I/8d/fCFi/If4T/4n/RFV/2Zfxn3QW5UqK+E/8J/6zbmLBpugkYsHQg1lsu3/7/pYUMSjdjl/6QbwJUFaKggl3tdU9WRTtSc/ofDPGVH5+G6jIbIuF745OPxqmAtPqzRhDl4bRxUlzQxbLvAbHosIPGUDGBzPGsPIQ930oQnMslVgwVDGMWPDmj/6azu/NGEPmozufFiTNDlusGaDgyNH6acD0WjNG574Fiy6hoGmu5TKxZGE0QM/ovPbMvAJdnjtmRiyXLi9d2x/cvr+VFGLRaPTshTVAaKwCGuP273Zv8Z/4T/wn/hP/if/+19pRy6fHiV+P+2F75NFCx5K45pqrI0cSZZlU7W4+dok+IdeY50D3Wy0O/xXSpuyT791Ul12MWUPXr8DltcqxeC2grr/amft6P/2rw9X9UadCj1dy8vc6p+DJSouksKCtNwBbrsGMUjQXA0BiypA/Jg/9SN5mNucS28+It6Agvp9Rby0S397fPq8GRj7tg//OQN01gJibhAvFBz/+DyR6QrNDL7BKK1Pj30C3e1Ngw7Ng8PdsGHcQQBmzPmpazBK9wCIJ+lTPF3QqXp/iig0cGZ1a3kY25qF0LS6UZbIq9GtkPttag8HKFK6S2sCacM0AU1WlbZLmYXiZ/bvfT/wn/hP/if/Ef+K//+GmOpSh2tMzsxkCZdGyQDomb2lvWirslMheBecOcPAMHR/KqjAmKaF3SbCuLwqUVtOvIpKp6JXbEJ7M3ocPFgL9SXo6kEFPtODzkfBw1I19+nQpGI16/snf65xWW8KYpISs9Wy7kgI5G1mR4OoUhjzia/cx2WbkNxeur474OjaVEl9kTJeC0hvNfK3Vmkj0hGbe+3AHTC288+Np410wGHzhzixdQBpiPvyfaXUZ06WgjEYz32m1JloAxSd/igx6JvjixxfjUwaumTCz5IajnRmtbvxvUPBRpzea+VqrPZlbU76WHacd78azO07pWtbFKVrP0ppAyNv1i8ZYyllHYjmbMpPM6VLQG438ll5Oq2UxMhiq6MndY6x81nRWMTwcPqMYXBNqHMHh+w/36FKukcoMV/RJMqZLwWg08qsqnVbLdbu3IvVw/0zrdm+rJj/P/t3vJ/4T/4n/xH/iP/Gf+E/8J/4T/4n/xH/iP/Hff9jZv//dz3+EWb8h/hP/if/Ef+I/URk=",
    "context": "Compare customer-visible plan changes.",
}

# Run the Actor and wait for it to finish
run = client.actor("westerly_palisade/diffshot-by-dravara").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "before_image": "data:image/webp;base64,UklGRnQEAABXRUJQVlA4TGgEAAAvf8JZAAfmsG0bSXLfW/lzMbHIXA8O27aRJGP77/feiAjatk24nj+Dr55/AkmbBHePcb9+IAEYBCAgAEAyAOZmBQbpDQBEwAACASzp9z/zPwaIVVk+31qBtEOgDQmggIC0aewABI2502YTpmkEQNpAxIDf75sbQwA0NMRoaH7/06bN4TUgIHOHBGBZKDSCr+0/27KszZ1Gc7S2aWgaYEBvNp4YZ24DMkibM3yPuJ4H1K5tOx5XZ/O2Gc/Utm3btm17bBtvktq222eQpN36b+/zjD7t9WzcEf2HxEaSIsnLHMt8t/T60/oNxH/iP/Gf+E/8J/4T/4n/xH9/I2D9BuI/8Z/4T1T1l30Z/CedRbmSIv4T/4n/rJuw23BjImE3cH8Gm+/dvrexlRiUbuvPPhBpAJSVomD8XW11jxfc6E73G3PNGFPxmc2gQjMtFr55unyvnQJMrTFjDPG1owpAzQ5YLHNqPQvy3scCse/NGMPyfdzzowjMslTCbqBkMGH35ve+mrh3Zowh9eGdj/NQzAxarBmg4MDBmqnAtCozRufcggUXUNAw23KZUDj/Rgrdb8xpy/RLEP/UMz1kucS/8G25f/veJloRvnHjxumzq4DAGAXURezf7d7iP/Gf+E/8J/4T//2vtYOWT/LRX0dioHtqIwypckv7aK76OnIkUZZJ2Y7GQxcgtEtBzRzmXPLEXKLdlH3yLVHFb4e+KPjq4DzzLFwNqGsvt2W+2kPf8mB5X9SJwKPlHPu92it4vNwiyctt6QngqVvOSuU5nwJEJw/8Y9KgD2RtYEMm4T0MfaPVRfYw8o1F4t/126eVhiFFDXu/aIsAhB2iPhTvY4h5T7Q7NHr0Aqu0MjXuteGwnxE3gLF7AZQx64OmySzRCywS16+6PzcULuPEDuDAqNZlrWNdFkrX5ENZJisCv0JzDcNv3L7oA67Quv4VwYp+prJS26Sdh+HF9u9+P/Gf+E/8J/4T/4n//oeb6lCGasO8V657vD0mbWzrVVRYLBu20SkDZWEYLymhZ6Fb3RsFSqvpUxJKVfTIrA1OYteD+/PhwFIz9UwoOAR1fbf+ihSMOj382O/VXqVdYbykhLS1bL7UCjLWsSzKlckMfMiXpNHpcP7yjZJhnsga1hcRWWC8IgWl15nhWqVlEe0Ojbzz46SYmngbQ9cW3rqu+9xJLZoHnNvBinpP2E/MJ5p9xitSUEadGe5VWhZNgOJjTCsZdI/yOQZ/mI+x+KbD9MLrMNjB+eppdoh5jYIPOr3ODNcqbcvcmuLVbD3peTuOHRGKVrMmQv5aFlWkBLolfIbspUzVxqJLWJ+KwnxFCnqdEd7Uw6u0Moa5gZLu3D3E8icNpxVDgsFTigEVgbqh7L/3YCeMuOFWanOr1GBJLxTGK1Iw6ozwslKv0nLd7q1ofeD8aNft3lZNTpb9u99P/Cf+E/+J/8R/4j/xn/hP/Cf+E/+J/8R/4r//vLN/v7uf/wizfgPxn/hP/Cf+E/+JygA=",
  "after_image": "data:image/webp;base64,UklGRnoEAABXRUJQVlA4TG4EAAAvf8JZAPflsG0bSXLD1z/2iYm9TBEM2jaSVP4Il8neM1MjaNs24c/1DL56/gkkbXgB9xjX/YEEIBCAgAAASQCYnRUIJGgBgAgIsxPAit45M0cABYC0E0g+31qB1AQEZieAAgLSzidZAAQts6edbZgOgQBIOwDw/t+7Z7WgU7TMnHbe+Q6uAAF55wQgOVNbAgFaVtCOZFGbOh3Y1F3LzAEBugMEAiKcsS2Q8I88/PvD7zygv23b8Ua6JuwwY9u2bdu2WdtuNLbtmbdIsv7j8r1vmv62x7t4IvrvCJIkRcl94YU7HPL60/oN8Z/4T/wn/hP/if/Ef+I/8d/fCFi/If4T/4n/RFV/2Zfxn3QW5UqK+E/8J/6zbmLBpugkYsHQg1lsu3/7/pYUMSjdjl/6QbwJUFaKggl3tdU9WRTtSc/ofDPGVH5+G6jIbIuF745OPxqmAtPqzRhDl4bRxUlzQxbLvAbHosIPGUDGBzPGsPIQ930oQnMslVgwVDGMWPDmj/6azu/NGEPmozufFiTNDlusGaDgyNH6acD0WjNG574Fiy6hoGmu5TKxZGE0QM/ovPbMvAJdnjtmRiyXLi9d2x/cvr+VFGLRaPTshTVAaKwCGuP273Zv8Z/4T/wn/hP/if/+19pRy6fHiV+P+2F75NFCx5K45pqrI0cSZZlU7W4+dok+IdeY50D3Wy0O/xXSpuyT791Ul12MWUPXr8DltcqxeC2grr/amft6P/2rw9X9UadCj1dy8vc6p+DJSouksKCtNwBbrsGMUjQXA0BiypA/Jg/9SN5mNucS28+It6Agvp9Rby0S397fPq8GRj7tg//OQN01gJibhAvFBz/+DyR6QrNDL7BKK1Pj30C3e1Ngw7Ng8PdsGHcQQBmzPmpazBK9wCIJ+lTPF3QqXp/iig0cGZ1a3kY25qF0LS6UZbIq9GtkPttag8HKFK6S2sCacM0AU1WlbZLmYXiZ/bvfT/wn/hP/if/Ef+K//+GmOpSh2tMzsxkCZdGyQDomb2lvWirslMheBecOcPAMHR/KqjAmKaF3SbCuLwqUVtOvIpKp6JXbEJ7M3ocPFgL9SXo6kEFPtODzkfBw1I19+nQpGI16/snf65xWW8KYpISs9Wy7kgI5G1mR4OoUhjzia/cx2WbkNxeur474OjaVEl9kTJeC0hvNfK3Vmkj0hGbe+3AHTC288+Np410wGHzhzixdQBpiPvyfaXUZ06WgjEYz32m1JloAxSd/igx6JvjixxfjUwaumTCz5IajnRmtbvxvUPBRpzea+VqrPZlbU76WHacd78azO07pWtbFKVrP0ppAyNv1i8ZYyllHYjmbMpPM6VLQG438ll5Oq2UxMhiq6MndY6x81nRWMTwcPqMYXBNqHMHh+w/36FKukcoMV/RJMqZLwWg08qsqnVbLdbu3IvVw/0zrdm+rJj/P/t3vJ/4T/4n/xH/iP/Gf+E/8J/4T/4n/xH/iP/Hff9jZv//dz3+EWb8h/hP/if/Ef+I/URk=",
  "context": "Compare customer-visible plan changes."
}' |
apify call westerly_palisade/diffshot-by-dravara --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=westerly_palisade/diffshot-by-dravara",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/RaxntnhGehDqnQBqx/builds/I5b25wJI5eZmUrEIg/openapi.json
