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.
Block Cookie Banners
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
- Page Modifications - Hide/remove elements
- Network Options - Custom headers and cookies
- Wait Options - Timing after blocking