# Ads-free website screenshot creator (`data_alchemist/ads-free-screenshotter`) Actor

Capture clean, full-page screenshots of any website — free of cookie consent banners, ads, and pop-ups. Get regional versions of pages by selecting the browser language and the country of the exit IP address.

- **URL**: https://apify.com/data\_alchemist/ads-free-screenshotter.md
- **Developed by:** [Dennis](https://apify.com/data_alchemist) (community)
- **Categories:** Automation, Integrations
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## Ads-free Website Screenshotter

Capture clean, full-page screenshots of any website — free of cookie consent banners, ads, and pop-ups. Get regional versions of pages by selecting the browser language and the country of the exit IP address.

### Features

- **Clean screenshots** — the browser runs through a residential proxy network with ad-blocking, so cookie consent dialogs and advertising banners do not appear in the output
- **Full-page capture** — scrolls the entire page before taking the screenshot so lazy-loaded images and content are fully rendered
- **Regional targeting** — set a two-letter country code (`country`) to route traffic through a residential IP in that country, and set `acceptLanguage` to match the local language; together they produce authentic regional versions of any page
- **Static thumbnail** — always generated alongside the full screenshot; a small PNG cropped from the top of the page
- **Animated thumbnail** — optional animated GIF that scrolls through the entire page, giving a compact visual preview of the full content

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `url` | string | — | **Required.** URL of the page to screenshot |
| `country` | string | `DE` | Two-letter country code for the proxy exit IP (e.g. `US`, `GB`, `FR`) |
| `acceptLanguage` | string | `en-US,en;q=0.9` | Value of the `Accept-Language` header sent to the page |
| `viewportWidth` | integer | `1920` | Browser viewport width in pixels (800–3000) |
| `viewportHeight` | integer | `1080` | Browser viewport height in pixels (800–3000) |
| `fullPage` | boolean | `true` | Capture the entire scrollable page; disable for viewport-only |
| `thumbWidth` | integer | `256` | Thumbnail width in pixels (32–512). If only one dimension is given, the other is calculated from the viewport ratio |
| `thumbHeight` | integer | `256` | Thumbnail height in pixels (32–512) |
| `animatedThumbnail` | boolean | `false` | Generate an animated GIF thumbnail that scrolls through the full page |

### Output

Each run produces one dataset record and three files in the key-value store:

```json
{
  "url": "https://example.com",
  "screenshotUrl": "https://api.apify.com/...",
  "thumbnailUrl": "https://api.apify.com/...",
  "animatedThumbnailUrl": "https://api.apify.com/...",
  "capturedAt": "2024-01-15T12:00:00.000Z"
}
```

| Key | Format | Description |
|---|---|---|
| `screenshot` | PNG | Full-page or viewport screenshot |
| `thumbnail` | PNG | Static thumbnail cropped from the top of the page |
| `thumbnail_animated` | GIF | Animated scrolling thumbnail (only when `animatedThumbnail` is enabled) |

### Regional screenshots example

To get a German version of a page:

```json
{
  "url": "https://example.com",
  "country": "DE",
  "acceptLanguage": "de-DE,de;q=0.9"
}
```

To get a French version:

```json
{
  "url": "https://example.com",
  "country": "FR",
  "acceptLanguage": "fr-FR,fr;q=0.9"
}
```

### Animated thumbnail

When `animatedThumbnail` is enabled, the actor generates a looping GIF that scrolls vertically through the entire page. The animation pauses at the top, at each viewport-height interval, and at the bottom — making it easy to skim long pages at a glance.

The GIF dimensions match the static thumbnail dimensions (`thumbWidth` × `thumbHeight`).

# Actor input Schema

## `url` (type: `string`):

Website URL to screenshot.

## `viewportWidth` (type: `integer`):

Browser viewport width in pixels.

## `viewportHeight` (type: `integer`):

Browser viewport height in pixels.

## `fullPage` (type: `boolean`):

Capture the entire scrollable page. When disabled, only the visible viewport is captured.

## `acceptLanguage` (type: `string`):

Value of the Accept-Language header sent to the browser.

## `animatedThumbnail` (type: `boolean`):

Generate an animated GIF thumbnail that scrolls through the full page.

## `thumbWidth` (type: `integer`):

Thumbnail width in pixels (32–512).

## `thumbHeight` (type: `integer`):

Thumbnail height in pixels (32–512).

## `country` (type: `string`):

Two-letter country code for the proxy (e.g. US, DE, FR).

## Actor input object example

```json
{
  "url": "https://example.com",
  "viewportWidth": 1920,
  "viewportHeight": 1080,
  "fullPage": true,
  "acceptLanguage": "en-US,en;q=0.9",
  "animatedThumbnail": false,
  "thumbWidth": 256,
  "thumbHeight": 256,
  "country": "DE"
}
```

# 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 = {
    "url": "https://example.com"
};

// Run the Actor and wait for it to finish
const run = await client.actor("data_alchemist/ads-free-screenshotter").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 = { "url": "https://example.com" }

# Run the Actor and wait for it to finish
run = client.actor("data_alchemist/ads-free-screenshotter").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 '{
  "url": "https://example.com"
}' |
apify call data_alchemist/ads-free-screenshotter --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=data_alchemist/ads-free-screenshotter",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/EKpoHD2RBvPhGZUDr/builds/7ecicxa6DGTQ5jlwM/openapi.json
