Blocking Options

Block unwanted content like ads, trackers, cookie banners, and chat widgets for cleaner screenshots.

Full Configuration

{
  "block": {
    "ads": true,
    "trackers": true,
    "cookie_banners": true,
    "chat_widgets": true,
    "requests": ["*google-analytics*", "*.doubleclick.net"],
    "resources": ["font", "media"]
  }
}

Parameters

Parameter Type Default Description
ads boolean false Block known ad networks
trackers boolean false Block analytics/tracking scripts
cookie_banners boolean false Auto-dismiss cookie consent notices
chat_widgets boolean false Block Intercom, Drift, Zendesk, etc.
requests array URL patterns to block (glob syntax)
resources array Resource types to block

Block Ads

Block requests to known advertising networks:

{
  "block": {
    "ads": true
  }
}

Blocks networks including Google Ads, Facebook Ads, Amazon Ads, and hundreds more.

Block Trackers

Block analytics and tracking scripts:

{
  "block": {
    "trackers": true
  }
}

Blocks Google Analytics, Mixpanel, Segment, Hotjar, and similar services.

Automatically dismiss cookie consent dialogs:

{
  "block": {
    "cookie_banners": true
  }
}

Uses a combination of auto-clicking consent buttons and hiding common cookie banner elements.

Block Chat Widgets

Block live chat and support widgets:

{
  "block": {
    "chat_widgets": true
  }
}

Blocks Intercom, Drift, Zendesk, Crisp, and other chat platforms.

Block by URL Pattern

Block specific URLs using glob patterns:

{
  "block": {
    "requests": [
      "*google-analytics*",
      "*.doubleclick.net",
      "*facebook.com/tr*",
      "*/ads/*"
    ]
  }
}

Glob Pattern Syntax

Pattern Matches
* Any characters within a path segment
** Any characters across path segments
? Single character

Examples: - *analytics* — URLs containing "analytics" - *.example.com — Any subdomain of example.com - */tracking/* — URLs with "/tracking/" in path

Block Resource Types

Block specific types of resources:

{
  "block": {
    "resources": ["font", "media"]
  }
}

Available Resource Types

Type Description
image Images (PNG, JPEG, GIF, etc.)
font Web fonts
media Video and audio
script JavaScript files
stylesheet CSS files

Note: Blocking script or stylesheet may break page rendering.

GET Request Parameters

Query Param Maps to
block_ads block.ads
block_cookies block.cookie_banners
GET /v1/screenshot?url=https://example.com&block_ads=true&block_cookies=true

Common Patterns

Clean Marketing Screenshot

{
  "url": "https://example.com",
  "block": {
    "ads": true,
    "trackers": true,
    "cookie_banners": true,
    "chat_widgets": true
  }
}

Faster Loading (No Media)

{
  "url": "https://example.com",
  "block": {
    "resources": ["media", "font"]
  }
}

Block Specific Third-Party Services

{
  "url": "https://example.com",
  "block": {
    "requests": [
      "*hotjar*",
      "*fullstory*",
      "*mouseflow*"
    ]
  }
}

Examples

Clean E-commerce Screenshot

curl

curl -X POST https://api.renderscreenshot.com/v1/screenshot \
  -H "Authorization: Bearer rs_live_xxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://store.example.com/product",
    "block": {
      "ads": true,
      "cookie_banners": true,
      "chat_widgets": true
    }
  }' \
  --output product.png

Java

import com.renderscreenshot.sdk.Client;
import com.renderscreenshot.sdk.TakeOptions;

Client client = new Client("rs_live_xxxxx");

byte[] image = client.take(
    TakeOptions.url("https://store.example.com/product")
        .blockAds()
        .blockCookieBanners()
        .blockChatWidgets()
);

Node.js

import { Client, TakeOptions } from 'renderscreenshot';

const client = new Client('rs_live_xxxxx');

const image = await client.take(
  TakeOptions.url('https://store.example.com/product')
    .blockAds()
    .blockCookieBanners()
    .blockChatWidgets()
);

PHP

use RenderScreenshot\Client;
use RenderScreenshot\TakeOptions;

$client = new Client('rs_live_xxxxx');

$image = $client->take(
    TakeOptions::url('https://store.example.com/product')
        ->blockAds()
        ->blockCookieBanners()
        ->blockChatWidgets()
);

Python

from renderscreenshot import Client, TakeOptions

client = Client('rs_live_xxxxx')

image = client.take(
    TakeOptions.url('https://store.example.com/product')
    .block_ads()
    .block_cookie_banners()
    .block_chat_widgets()
)

Ruby

require 'net/http'
require 'json'

uri = URI('https://api.renderscreenshot.com/v1/screenshot')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Post.new(uri)
request['Authorization'] = 'Bearer rs_live_xxxxx'
request['Content-Type'] = 'application/json'
request.body = {
  url: 'https://store.example.com/product',
  block: {
    ads: true,
    cookie_banners: true,
    chat_widgets: true
  }
}.to_json

response = http.request(request)
File.binwrite('product.png', response.body)

Documentation Screenshot

curl

curl -X POST https://api.renderscreenshot.com/v1/screenshot \
  -H "Authorization: Bearer rs_live_xxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://docs.example.com",
    "block": {
      "requests": ["*feedback-widget*", "*announcement-banner*"]
    }
  }' \
  --output docs.png

Java

import com.renderscreenshot.sdk.Client;
import com.renderscreenshot.sdk.TakeOptions;
import java.util.Arrays;

Client client = new Client("rs_live_xxxxx");

byte[] image = client.take(
    TakeOptions.url("https://docs.example.com")
        .blockUrls(Arrays.asList("*feedback-widget*", "*announcement-banner*"))
);

Node.js

import { Client, TakeOptions } from 'renderscreenshot';

const client = new Client('rs_live_xxxxx');

const image = await client.take(
  TakeOptions.url('https://docs.example.com')
    .blockUrls(['*feedback-widget*', '*announcement-banner*'])
);

PHP

use RenderScreenshot\Client;
use RenderScreenshot\TakeOptions;

$client = new Client('rs_live_xxxxx');

$image = $client->take(
    TakeOptions::url('https://docs.example.com')
        ->blockUrls(['*feedback-widget*', '*announcement-banner*'])
);

Python

from renderscreenshot import Client, TakeOptions

client = Client('rs_live_xxxxx')

image = client.take(
    TakeOptions.url('https://docs.example.com')
    .block_urls(['*feedback-widget*', '*announcement-banner*'])
)

Ruby

require 'net/http'
require 'json'

uri = URI('https://api.renderscreenshot.com/v1/screenshot')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Post.new(uri)
request['Authorization'] = 'Bearer rs_live_xxxxx'
request['Content-Type'] = 'application/json'
request.body = {
  url: 'https://docs.example.com',
  block: {
    requests: ['*feedback-widget*', '*announcement-banner*']
  }
}.to_json

response = http.request(request)
File.binwrite('docs.png', response.body)

Combining with Page Modifications

For more control, combine blocking with page modifications:

{
  "url": "https://example.com",
  "block": {
    "ads": true,
    "trackers": true
  },
  "page": {
    "remove": [".custom-popup", ".newsletter-modal"]
  }
}

See Also

Was this page helpful?