ZenRows Universal Scraper API
ZenRows Universal Scraper API capability. 2 operations against api.zenrows.com/v1 covering GET and POST scrape calls with anti-bot bypass, residential proxies, JS rendering, CSS/AI extraction, screenshots, and markdown/PDF/JSON output. Self-contained Naftiko capability covering the ZenRows core scrape surface.
ZenRows Universal Scraper API is a Naftiko capability published by ZenRows on the APIs.io network. It bundles 2 operations across the GET and POST methods rooted at /v1/scrape.
The capability includes 1 read-only operation and 1 state-changing operation. Lead operation: Scrape a URL via the ZenRows Universal Scraper API. Can be deployed as a REST endpoint, MCP tool, or Agent Skill via Naftiko.
Tagged areas include ZenRows, Web Scraping, Anti-Bot, and Proxies.
What You Can Do
MCP Tools
scrape-url
Scrape a URL via the ZenRows Universal Scraper API.
scrape-url-post
Scrape a URL with a POST body via the ZenRows Universal Scraper API.
Capability Spec
naftiko: 1.0.0-alpha2
info:
label: ZenRows Universal Scraper API
description: 'ZenRows Universal Scraper API capability. 2 operations against api.zenrows.com/v1
covering GET and POST scrape calls with anti-bot bypass, residential proxies, JS rendering,
CSS/AI extraction, screenshots, and markdown/PDF/JSON output. Self-contained Naftiko capability
covering the ZenRows core scrape surface.'
tags:
- ZenRows
- Web Scraping
- Anti-Bot
- Proxies
created: '2026-05-25'
modified: '2026-05-25'
binds:
- namespace: env
keys:
ZENROWS_API_KEY: ZENROWS_API_KEY
capability:
consumes:
- type: http
namespace: universal-scraper
baseUri: https://api.zenrows.com/v1
description: ZenRows Universal Scraper API. Self-contained, no shared references.
resources:
- name: scrape
path: /
operations:
- name: scrapeurl
method: GET
description: Scrape a URL
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: apikey
in: query
type: string
description: ZenRows API key
required: true
- name: url
in: query
type: string
description: Target URL to scrape
required: true
- name: mode
in: query
type: string
description: Set to auto for Adaptive Stealth Mode
- name: js_render
in: query
type: boolean
description: Render the page in a real browser
- name: premium_proxy
in: query
type: boolean
description: Route the request through the residential proxy pool
- name: proxy_country
in: query
type: string
description: ISO 3166-1 alpha-2 country code for proxy geolocation
- name: custom_headers
in: query
type: boolean
description: Forward custom HTTP headers
- name: session_id
in: query
type: integer
description: Pin the same proxy IP across requests for up to 10 minutes
- name: js_instructions
in: query
type: string
description: Base64-encoded list of browser instructions
- name: wait
in: query
type: integer
description: Fixed delay in milliseconds after page load
- name: wait_for
in: query
type: string
description: CSS selector to wait for before returning the response
- name: block_resources
in: query
type: string
description: Comma-separated resource types to block
- name: css_extractor
in: query
type: string
description: URL-encoded JSON object mapping fields to CSS selectors
- name: autoparse
in: query
type: boolean
description: Auto-parse the page into structured JSON
- name: json_response
in: query
type: boolean
description: Return the response wrapped in JSON with network capture
- name: response_type
in: query
type: string
description: Convert output to markdown, plaintext, or pdf
- name: screenshot
in: query
type: boolean
description: Capture an above-the-fold screenshot
- name: screenshot_fullpage
in: query
type: boolean
description: Capture a full-page screenshot
- name: screenshot_selector
in: query
type: string
description: CSS selector to scope the screenshot
- name: screenshot_format
in: query
type: string
description: Screenshot format (png or jpeg)
- name: screenshot_quality
in: query
type: integer
description: JPEG screenshot quality 1-100
- name: outputs
in: query
type: string
description: Comma-separated structured outputs (emails, phone_numbers, links, images)
- name: original_status
in: query
type: boolean
description: Return target site's original HTTP status code
- name: allowed_status_codes
in: query
type: string
description: Status codes for which content should still be returned
- name: scrapeurlpost
method: POST
description: Scrape a URL With a POST Body
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: apikey
in: query
type: string
description: ZenRows API key
required: true
- name: url
in: query
type: string
description: Target URL to scrape
required: true
- name: js_render
in: query
type: boolean
description: Render the page in a real browser
- name: premium_proxy
in: query
type: boolean
description: Route the request through the residential proxy pool
- name: body
in: body
type: object
description: Request body forwarded to the target URL
required: true
authentication:
type: apikey
key: apikey
value: '{{env.ZENROWS_API_KEY}}'
placement: query
exposes:
- type: rest
namespace: universal-scraper-rest
port: 8080
description: REST adapter for the ZenRows Universal Scraper API. One Spectral-compliant resource per consumed operation, prefixed with /v1.
resources:
- path: /v1/scrape
name: scrape
description: REST surface for ZenRows scrape.
operations:
- method: GET
name: scrapeurl
description: Scrape a URL
call: universal-scraper.scrapeurl
with:
apikey: rest.apikey
url: rest.url
mode: rest.mode
js_render: rest.js_render
premium_proxy: rest.premium_proxy
proxy_country: rest.proxy_country
custom_headers: rest.custom_headers
session_id: rest.session_id
js_instructions: rest.js_instructions
wait: rest.wait
wait_for: rest.wait_for
block_resources: rest.block_resources
css_extractor: rest.css_extractor
autoparse: rest.autoparse
json_response: rest.json_response
response_type: rest.response_type
screenshot: rest.screenshot
screenshot_fullpage: rest.screenshot_fullpage
screenshot_selector: rest.screenshot_selector
screenshot_format: rest.screenshot_format
screenshot_quality: rest.screenshot_quality
outputs: rest.outputs
original_status: rest.original_status
allowed_status_codes: rest.allowed_status_codes
outputParameters:
- type: object
mapping: $.
- method: POST
name: scrapeurlpost
description: Scrape a URL With a POST Body
call: universal-scraper.scrapeurlpost
with:
apikey: rest.apikey
url: rest.url
js_render: rest.js_render
premium_proxy: rest.premium_proxy
body: rest.body
outputParameters:
- type: object
mapping: $.
- type: mcp
namespace: universal-scraper-mcp
port: 9090
transport: http
description: MCP adapter for the ZenRows Universal Scraper API. One tool per consumed operation, routed inline through this capability's consumes block.
tools:
- name: scrape-url
description: Scrape a URL via the ZenRows Universal Scraper API.
hints:
readOnly: true
destructive: false
idempotent: true
call: universal-scraper.scrapeurl
with:
apikey: tools.apikey
url: tools.url
mode: tools.mode
js_render: tools.js_render
premium_proxy: tools.premium_proxy
proxy_country: tools.proxy_country
custom_headers: tools.custom_headers
session_id: tools.session_id
js_instructions: tools.js_instructions
wait: tools.wait
wait_for: tools.wait_for
block_resources: tools.block_resources
css_extractor: tools.css_extractor
autoparse: tools.autoparse
json_response: tools.json_response
response_type: tools.response_type
screenshot: tools.screenshot
screenshot_fullpage: tools.screenshot_fullpage
screenshot_selector: tools.screenshot_selector
screenshot_format: tools.screenshot_format
screenshot_quality: tools.screenshot_quality
outputs: tools.outputs
original_status: tools.original_status
allowed_status_codes: tools.allowed_status_codes
outputParameters:
- type: object
mapping: $.
- name: scrape-url-post
description: Scrape a URL with a POST body via the ZenRows Universal Scraper API.
hints:
readOnly: false
destructive: false
idempotent: false
call: universal-scraper.scrapeurlpost
with:
apikey: tools.apikey
url: tools.url
js_render: tools.js_render
premium_proxy: tools.premium_proxy
body: tools.body
outputParameters:
- type: object
mapping: $.