Skip to content
Start here

Get json.

POST/accounts/{account_id}/browser-rendering/json

Gets json from a webpage from a provided URL or HTML. Pass prompt or schema in the body. Control page loading with gotoOptions and waitFor* options.

Security
API Token

The preferred authorization scheme for interacting with the Cloudflare API. Create a token.

Example:Authorization: Bearer Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY
API Email + API Key

The previous authorization scheme for interacting with the Cloudflare API, used in conjunction with a Global API key.

Example:X-Auth-Email: user@example.com

The previous authorization scheme for interacting with the Cloudflare API. When possible, use API tokens instead of Global API keys.

Example:X-Auth-Key: 144c9defac04969c7bfad8efaa8ea194
Accepted Permissions (at least one required)
Browser Rendering Write
Path ParametersExpand Collapse
account_id: string

Account ID.

Query ParametersExpand Collapse
cacheTTL: optional number

Cache TTL default is 5s. Set to 0 to disable.

maximum86400
Body ParametersJSONExpand Collapse
body: object { html, actionTimeout, addScriptTag, 19 more } or object { url, actionTimeout, addScriptTag, 19 more }
One of the following:
object { html, actionTimeout, addScriptTag, 19 more }
html: string

Set the content of the page, eg: <h1>Hello World!!</h1>. Either html or url must be set.

minLength1
actionTimeout: optional number

The maximum duration allowed for the browser action to complete after the page has loaded (such as taking screenshots, extracting content, or generating PDFs). If this time limit is exceeded, the action stops and returns a timeout error.

maximum120000
addScriptTag: optional array of object { id, content, type, url }

Adds a <script> tag into the page with the desired URL or content.

id: optional string
content: optional string
type: optional string
url: optional string
addStyleTag: optional array of object { content, url }

Adds a <link rel="stylesheet"> tag into the page with the desired URL or a <style type="text/css"> tag with the content.

content: optional string
url: optional string
allowRequestPattern: optional array of string

Only allow requests that match the provided regex patterns, eg. '/^.*.(css)'.

allowResourceTypes: optional array of "document" or "stylesheet" or "image" or 15 more

Only allow requests that match the provided resource types, eg. 'image' or 'script'.

One of the following:
"document"
"stylesheet"
"image"
"media"
"font"
"script"
"texttrack"
"xhr"
"fetch"
"prefetch"
"eventsource"
"websocket"
"manifest"
"signedexchange"
"ping"
"cspviolationreport"
"preflight"
"other"
authenticate: optional object { password, username }

Provide credentials for HTTP authentication.

password: string
minLength1
username: string
minLength1
bestAttempt: optional boolean

Attempt to proceed when 'awaited' events fail or timeout.

cookies: optional array of object { name, value, domain, 11 more }

Check options.

name: string

Cookie name.

value: string
domain: optional string
expires: optional number
httpOnly: optional boolean
partitionKey: optional string
path: optional string
priority: optional "Low" or "Medium" or "High"
One of the following:
"Low"
"Medium"
"High"
sameParty: optional boolean
sameSite: optional "Strict" or "Lax" or "None"
One of the following:
"Strict"
"Lax"
"None"
secure: optional boolean
sourcePort: optional number
sourceScheme: optional "Unset" or "NonSecure" or "Secure"
One of the following:
"Unset"
"NonSecure"
"Secure"
url: optional string
custom_ai: optional array of object { authorization, model }

Optional list of custom AI models to use for the request. The models will be tried in the order provided, and in case a model returns an error, the next one will be used as fallback.

authorization: string

Authorization token for the AI model: Bearer <token>.

model: string

AI model to use for the request. Must be formed as <provider>/<model_name>, e.g. workers-ai/@cf/meta/llama-3.3-70b-instruct-fp8-fast.

emulateMediaType: optional string
gotoOptions: optional object { referer, referrerPolicy, timeout, waitUntil }

Check options.

referer: optional string
referrerPolicy: optional string
timeout: optional number
maximum60000
waitUntil: optional "load" or "domcontentloaded" or "networkidle0" or "networkidle2" or array of "load" or "domcontentloaded" or "networkidle0" or "networkidle2"
One of the following:
"load" or "domcontentloaded" or "networkidle0" or "networkidle2"
One of the following:
"load"
"domcontentloaded"
"networkidle0"
"networkidle2"
array of "load" or "domcontentloaded" or "networkidle0" or "networkidle2"
One of the following:
"load"
"domcontentloaded"
"networkidle0"
"networkidle2"
prompt: optional string
rejectRequestPattern: optional array of string

Block undesired requests that match the provided regex patterns, eg. '/^.*.(css)'.

rejectResourceTypes: optional array of "document" or "stylesheet" or "image" or 15 more

Block undesired requests that match the provided resource types, eg. 'image' or 'script'.

One of the following:
"document"
"stylesheet"
"image"
"media"
"font"
"script"
"texttrack"
"xhr"
"fetch"
"prefetch"
"eventsource"
"websocket"
"manifest"
"signedexchange"
"ping"
"cspviolationreport"
"preflight"
"other"
response_format: optional object { type, json_schema }
type: string
json_schema: optional map[string or number or boolean or 2 more]

Schema for the response format. More information here: https://developers.cloudflare.com/workers-ai/json-mode/.

One of the following:
string
number
boolean
unknown
array of string
setExtraHTTPHeaders: optional map[string]
setJavaScriptEnabled: optional boolean
userAgent: optional string
viewport: optional object { height, width, deviceScaleFactor, 3 more }

Check options.

height: number
width: number
deviceScaleFactor: optional number
hasTouch: optional boolean
isLandscape: optional boolean
isMobile: optional boolean
waitForSelector: optional object { selector, hidden, timeout, visible }

Wait for the selector to appear in page. Check options.

selector: string
hidden: optional true
timeout: optional number
maximum120000
visible: optional true
waitForTimeout: optional number

Waits for a specified timeout before continuing.

maximum120000
object { url, actionTimeout, addScriptTag, 19 more }
url: string

URL to navigate to, eg. https://example.com.

formaturi
actionTimeout: optional number

The maximum duration allowed for the browser action to complete after the page has loaded (such as taking screenshots, extracting content, or generating PDFs). If this time limit is exceeded, the action stops and returns a timeout error.

maximum120000
addScriptTag: optional array of object { id, content, type, url }

Adds a <script> tag into the page with the desired URL or content.

id: optional string
content: optional string
type: optional string
url: optional string
addStyleTag: optional array of object { content, url }

Adds a <link rel="stylesheet"> tag into the page with the desired URL or a <style type="text/css"> tag with the content.

content: optional string
url: optional string
allowRequestPattern: optional array of string

Only allow requests that match the provided regex patterns, eg. '/^.*.(css)'.

allowResourceTypes: optional array of "document" or "stylesheet" or "image" or 15 more

Only allow requests that match the provided resource types, eg. 'image' or 'script'.

One of the following:
"document"
"stylesheet"
"image"
"media"
"font"
"script"
"texttrack"
"xhr"
"fetch"
"prefetch"
"eventsource"
"websocket"
"manifest"
"signedexchange"
"ping"
"cspviolationreport"
"preflight"
"other"
authenticate: optional object { password, username }

Provide credentials for HTTP authentication.

password: string
minLength1
username: string
minLength1
bestAttempt: optional boolean

Attempt to proceed when 'awaited' events fail or timeout.

cookies: optional array of object { name, value, domain, 11 more }

Check options.

name: string

Cookie name.

value: string
domain: optional string
expires: optional number
httpOnly: optional boolean
partitionKey: optional string
path: optional string
priority: optional "Low" or "Medium" or "High"
One of the following:
"Low"
"Medium"
"High"
sameParty: optional boolean
sameSite: optional "Strict" or "Lax" or "None"
One of the following:
"Strict"
"Lax"
"None"
secure: optional boolean
sourcePort: optional number
sourceScheme: optional "Unset" or "NonSecure" or "Secure"
One of the following:
"Unset"
"NonSecure"
"Secure"
url: optional string
custom_ai: optional array of object { authorization, model }

Optional list of custom AI models to use for the request. The models will be tried in the order provided, and in case a model returns an error, the next one will be used as fallback.

authorization: string

Authorization token for the AI model: Bearer <token>.

model: string

AI model to use for the request. Must be formed as <provider>/<model_name>, e.g. workers-ai/@cf/meta/llama-3.3-70b-instruct-fp8-fast.

emulateMediaType: optional string
gotoOptions: optional object { referer, referrerPolicy, timeout, waitUntil }

Check options.

referer: optional string
referrerPolicy: optional string
timeout: optional number
maximum60000
waitUntil: optional "load" or "domcontentloaded" or "networkidle0" or "networkidle2" or array of "load" or "domcontentloaded" or "networkidle0" or "networkidle2"
One of the following:
"load" or "domcontentloaded" or "networkidle0" or "networkidle2"
One of the following:
"load"
"domcontentloaded"
"networkidle0"
"networkidle2"
array of "load" or "domcontentloaded" or "networkidle0" or "networkidle2"
One of the following:
"load"
"domcontentloaded"
"networkidle0"
"networkidle2"
prompt: optional string
rejectRequestPattern: optional array of string

Block undesired requests that match the provided regex patterns, eg. '/^.*.(css)'.

rejectResourceTypes: optional array of "document" or "stylesheet" or "image" or 15 more

Block undesired requests that match the provided resource types, eg. 'image' or 'script'.

One of the following:
"document"
"stylesheet"
"image"
"media"
"font"
"script"
"texttrack"
"xhr"
"fetch"
"prefetch"
"eventsource"
"websocket"
"manifest"
"signedexchange"
"ping"
"cspviolationreport"
"preflight"
"other"
response_format: optional object { type, json_schema }
type: string
json_schema: optional map[string or number or boolean or 2 more]

Schema for the response format. More information here: https://developers.cloudflare.com/workers-ai/json-mode/.

One of the following:
string
number
boolean
unknown
array of string
setExtraHTTPHeaders: optional map[string]
setJavaScriptEnabled: optional boolean
userAgent: optional string
viewport: optional object { height, width, deviceScaleFactor, 3 more }

Check options.

height: number
width: number
deviceScaleFactor: optional number
hasTouch: optional boolean
isLandscape: optional boolean
isMobile: optional boolean
waitForSelector: optional object { selector, hidden, timeout, visible }

Wait for the selector to appear in page. Check options.

selector: string
hidden: optional true
timeout: optional number
maximum120000
visible: optional true
waitForTimeout: optional number

Waits for a specified timeout before continuing.

maximum120000
ReturnsExpand Collapse
result: map[unknown]
success: boolean

Response status.

errors: optional array of object { code, message }
code: number

Error code.

message: string

Error message.

Get json.

curl https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/browser-rendering/json \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
    -d '{
          "html": "<h1>Hello World!</h1>"
        }'
{
  "result": {
    "foo": {}
  },
  "success": true,
  "errors": [
    {
      "code": 0,
      "message": "message"
    }
  ]
}
{
  "errors": [
    {
      "code": 2001,
      "message": "Rate limit exceeded"
    }
  ],
  "success": false
}
Returns Examples
{
  "result": {
    "foo": {}
  },
  "success": true,
  "errors": [
    {
      "code": 0,
      "message": "message"
    }
  ]
}
{
  "errors": [
    {
      "code": 2001,
      "message": "Rate limit exceeded"
    }
  ],
  "success": false
}