curl --request POST \
--url https://api.context.dev/v1/web/extract \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"url": "<string>",
"schema": {
"type": "object",
"properties": {
"mission_statement": {
"type": "string",
"description": "The company's stated mission."
},
"case_studies": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"title",
"url"
],
"additionalProperties": false
}
}
},
"required": [
"mission_statement",
"case_studies"
],
"additionalProperties": false
},
"instructions": "<string>",
"factCheck": false,
"followSubdomains": false,
"maxPages": 5,
"maxDepth": 1,
"pdf": {
"shouldParse": true
},
"includeFrames": false,
"maxAgeMs": 604800000,
"waitForMs": 15000,
"settleAnimations": false,
"actions": [
{
"do": "wait",
"timeMs": 15000
}
],
"stopAfterMs": 80000,
"timeoutMS": 150500,
"tags": [
"production",
"team-alpha"
]
}
EOFimport requests
url = "https://api.context.dev/v1/web/extract"
payload = {
"url": "<string>",
"schema": {
"type": "object",
"properties": {
"mission_statement": {
"type": "string",
"description": "The company's stated mission."
},
"case_studies": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": { "type": "string" },
"url": { "type": "string" }
},
"required": ["title", "url"],
"additionalProperties": False
}
}
},
"required": ["mission_statement", "case_studies"],
"additionalProperties": False
},
"instructions": "<string>",
"factCheck": False,
"followSubdomains": False,
"maxPages": 5,
"maxDepth": 1,
"pdf": { "shouldParse": True },
"includeFrames": False,
"maxAgeMs": 604800000,
"waitForMs": 15000,
"settleAnimations": False,
"actions": [
{
"do": "wait",
"timeMs": 15000
}
],
"stopAfterMs": 80000,
"timeoutMS": 150500,
"tags": ["production", "team-alpha"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
url: '<string>',
schema: {
type: 'object',
properties: {
mission_statement: {type: 'string', description: 'The company\'s stated mission.'},
case_studies: {
type: 'array',
items: {
type: 'object',
properties: {title: {type: 'string'}, url: {type: 'string'}},
required: ['title', 'url'],
additionalProperties: false
}
}
},
required: ['mission_statement', 'case_studies'],
additionalProperties: false
},
instructions: '<string>',
factCheck: false,
followSubdomains: false,
maxPages: 5,
maxDepth: 1,
pdf: {shouldParse: true},
includeFrames: false,
maxAgeMs: 604800000,
waitForMs: 15000,
settleAnimations: false,
actions: [{do: 'wait', timeMs: 15000}],
stopAfterMs: 80000,
timeoutMS: 150500,
tags: ['production', 'team-alpha']
})
};
fetch('https://api.context.dev/v1/web/extract', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.context.dev/v1/web/extract",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'url' => '<string>',
'schema' => [
'type' => 'object',
'properties' => [
'mission_statement' => [
'type' => 'string',
'description' => 'The company\'s stated mission.'
],
'case_studies' => [
'type' => 'array',
'items' => [
'type' => 'object',
'properties' => [
'title' => [
'type' => 'string'
],
'url' => [
'type' => 'string'
]
],
'required' => [
'title',
'url'
],
'additionalProperties' => false
]
]
],
'required' => [
'mission_statement',
'case_studies'
],
'additionalProperties' => false
],
'instructions' => '<string>',
'factCheck' => false,
'followSubdomains' => false,
'maxPages' => 5,
'maxDepth' => 1,
'pdf' => [
'shouldParse' => true
],
'includeFrames' => false,
'maxAgeMs' => 604800000,
'waitForMs' => 15000,
'settleAnimations' => false,
'actions' => [
[
'do' => 'wait',
'timeMs' => 15000
]
],
'stopAfterMs' => 80000,
'timeoutMS' => 150500,
'tags' => [
'production',
'team-alpha'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.context.dev/v1/web/extract"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"mission_statement\": {\n \"type\": \"string\",\n \"description\": \"The company's stated mission.\"\n },\n \"case_studies\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"title\": {\n \"type\": \"string\"\n },\n \"url\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"title\",\n \"url\"\n ],\n \"additionalProperties\": false\n }\n }\n },\n \"required\": [\n \"mission_statement\",\n \"case_studies\"\n ],\n \"additionalProperties\": false\n },\n \"instructions\": \"<string>\",\n \"factCheck\": false,\n \"followSubdomains\": false,\n \"maxPages\": 5,\n \"maxDepth\": 1,\n \"pdf\": {\n \"shouldParse\": true\n },\n \"includeFrames\": false,\n \"maxAgeMs\": 604800000,\n \"waitForMs\": 15000,\n \"settleAnimations\": false,\n \"actions\": [\n {\n \"do\": \"wait\",\n \"timeMs\": 15000\n }\n ],\n \"stopAfterMs\": 80000,\n \"timeoutMS\": 150500,\n \"tags\": [\n \"production\",\n \"team-alpha\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.context.dev/v1/web/extract")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"mission_statement\": {\n \"type\": \"string\",\n \"description\": \"The company's stated mission.\"\n },\n \"case_studies\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"title\": {\n \"type\": \"string\"\n },\n \"url\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"title\",\n \"url\"\n ],\n \"additionalProperties\": false\n }\n }\n },\n \"required\": [\n \"mission_statement\",\n \"case_studies\"\n ],\n \"additionalProperties\": false\n },\n \"instructions\": \"<string>\",\n \"factCheck\": false,\n \"followSubdomains\": false,\n \"maxPages\": 5,\n \"maxDepth\": 1,\n \"pdf\": {\n \"shouldParse\": true\n },\n \"includeFrames\": false,\n \"maxAgeMs\": 604800000,\n \"waitForMs\": 15000,\n \"settleAnimations\": false,\n \"actions\": [\n {\n \"do\": \"wait\",\n \"timeMs\": 15000\n }\n ],\n \"stopAfterMs\": 80000,\n \"timeoutMS\": 150500,\n \"tags\": [\n \"production\",\n \"team-alpha\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.context.dev/v1/web/extract")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"url\": \"<string>\",\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"mission_statement\": {\n \"type\": \"string\",\n \"description\": \"The company's stated mission.\"\n },\n \"case_studies\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"title\": {\n \"type\": \"string\"\n },\n \"url\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"title\",\n \"url\"\n ],\n \"additionalProperties\": false\n }\n }\n },\n \"required\": [\n \"mission_statement\",\n \"case_studies\"\n ],\n \"additionalProperties\": false\n },\n \"instructions\": \"<string>\",\n \"factCheck\": false,\n \"followSubdomains\": false,\n \"maxPages\": 5,\n \"maxDepth\": 1,\n \"pdf\": {\n \"shouldParse\": true\n },\n \"includeFrames\": false,\n \"maxAgeMs\": 604800000,\n \"waitForMs\": 15000,\n \"settleAnimations\": false,\n \"actions\": [\n {\n \"do\": \"wait\",\n \"timeMs\": 15000\n }\n ],\n \"stopAfterMs\": 80000,\n \"timeoutMS\": 150500,\n \"tags\": [\n \"production\",\n \"team-alpha\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"status": "<string>",
"url": "<string>",
"urls_analyzed": [
"<string>"
],
"data": {},
"metadata": {
"numUrls": 123,
"maxCrawlDepth": 123,
"numSucceeded": 123,
"numFailed": 123,
"numSkipped": 123,
"numBlocked": 123,
"actionsApplied": [
{
"instruction": "<string>",
"status": "applied",
"method": "<string>",
"targetDescription": "<string>",
"completionEvidence": "<string>",
"error": "<string>",
"durationMs": 123
}
]
},
"request_id": "3f1c2a6e-8b4d-4c1e-9f0a-2d7b5e6c8a91",
"cache_metadata": {
"status": "hit",
"age_ms": 1
},
"key_metadata": {
"credits_consumed": 123,
"credits_remaining": 123
}
}{
"message": "<string>",
"error_code": "INPUT_VALIDATION_ERROR",
"request_id": "3f1c2a6e-8b4d-4c1e-9f0a-2d7b5e6c8a91",
"key_metadata": {
"credits_consumed": 123,
"credits_remaining": 123
}
}{
"request_id": "3f1c2a6e-8b4d-4c1e-9f0a-2d7b5e6c8a91",
"message": "<string>",
"error_code": "INTERNAL_ERROR",
"key_metadata": {
"credits_consumed": 123,
"credits_remaining": 123
}
}{
"request_id": "3f1c2a6e-8b4d-4c1e-9f0a-2d7b5e6c8a91",
"message": "<string>",
"error_code": "INTERNAL_ERROR",
"key_metadata": {
"credits_consumed": 123,
"credits_remaining": 123
}
}{
"request_id": "3f1c2a6e-8b4d-4c1e-9f0a-2d7b5e6c8a91",
"message": "<string>",
"error_code": "INTERNAL_ERROR",
"key_metadata": {
"credits_consumed": 123,
"credits_remaining": 123
}
}{
"message": "<string>",
"error_code": "RATE_LIMITED",
"request_id": "3f1c2a6e-8b4d-4c1e-9f0a-2d7b5e6c8a91",
"key_metadata": {
"credits_consumed": 123,
"credits_remaining": 123
}
}{
"request_id": "3f1c2a6e-8b4d-4c1e-9f0a-2d7b5e6c8a91",
"message": "<string>",
"error_code": "INTERNAL_ERROR",
"key_metadata": {
"credits_consumed": 123,
"credits_remaining": 123
}
}Extract Structured Data
Crawl a website and return schema-shaped data you can drop directly into products, agents, and workflows.
curl --request POST \
--url https://api.context.dev/v1/web/extract \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data @- <<EOF
{
"url": "<string>",
"schema": {
"type": "object",
"properties": {
"mission_statement": {
"type": "string",
"description": "The company's stated mission."
},
"case_studies": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"title",
"url"
],
"additionalProperties": false
}
}
},
"required": [
"mission_statement",
"case_studies"
],
"additionalProperties": false
},
"instructions": "<string>",
"factCheck": false,
"followSubdomains": false,
"maxPages": 5,
"maxDepth": 1,
"pdf": {
"shouldParse": true
},
"includeFrames": false,
"maxAgeMs": 604800000,
"waitForMs": 15000,
"settleAnimations": false,
"actions": [
{
"do": "wait",
"timeMs": 15000
}
],
"stopAfterMs": 80000,
"timeoutMS": 150500,
"tags": [
"production",
"team-alpha"
]
}
EOFimport requests
url = "https://api.context.dev/v1/web/extract"
payload = {
"url": "<string>",
"schema": {
"type": "object",
"properties": {
"mission_statement": {
"type": "string",
"description": "The company's stated mission."
},
"case_studies": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": { "type": "string" },
"url": { "type": "string" }
},
"required": ["title", "url"],
"additionalProperties": False
}
}
},
"required": ["mission_statement", "case_studies"],
"additionalProperties": False
},
"instructions": "<string>",
"factCheck": False,
"followSubdomains": False,
"maxPages": 5,
"maxDepth": 1,
"pdf": { "shouldParse": True },
"includeFrames": False,
"maxAgeMs": 604800000,
"waitForMs": 15000,
"settleAnimations": False,
"actions": [
{
"do": "wait",
"timeMs": 15000
}
],
"stopAfterMs": 80000,
"timeoutMS": 150500,
"tags": ["production", "team-alpha"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
url: '<string>',
schema: {
type: 'object',
properties: {
mission_statement: {type: 'string', description: 'The company\'s stated mission.'},
case_studies: {
type: 'array',
items: {
type: 'object',
properties: {title: {type: 'string'}, url: {type: 'string'}},
required: ['title', 'url'],
additionalProperties: false
}
}
},
required: ['mission_statement', 'case_studies'],
additionalProperties: false
},
instructions: '<string>',
factCheck: false,
followSubdomains: false,
maxPages: 5,
maxDepth: 1,
pdf: {shouldParse: true},
includeFrames: false,
maxAgeMs: 604800000,
waitForMs: 15000,
settleAnimations: false,
actions: [{do: 'wait', timeMs: 15000}],
stopAfterMs: 80000,
timeoutMS: 150500,
tags: ['production', 'team-alpha']
})
};
fetch('https://api.context.dev/v1/web/extract', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.context.dev/v1/web/extract",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'url' => '<string>',
'schema' => [
'type' => 'object',
'properties' => [
'mission_statement' => [
'type' => 'string',
'description' => 'The company\'s stated mission.'
],
'case_studies' => [
'type' => 'array',
'items' => [
'type' => 'object',
'properties' => [
'title' => [
'type' => 'string'
],
'url' => [
'type' => 'string'
]
],
'required' => [
'title',
'url'
],
'additionalProperties' => false
]
]
],
'required' => [
'mission_statement',
'case_studies'
],
'additionalProperties' => false
],
'instructions' => '<string>',
'factCheck' => false,
'followSubdomains' => false,
'maxPages' => 5,
'maxDepth' => 1,
'pdf' => [
'shouldParse' => true
],
'includeFrames' => false,
'maxAgeMs' => 604800000,
'waitForMs' => 15000,
'settleAnimations' => false,
'actions' => [
[
'do' => 'wait',
'timeMs' => 15000
]
],
'stopAfterMs' => 80000,
'timeoutMS' => 150500,
'tags' => [
'production',
'team-alpha'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.context.dev/v1/web/extract"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"mission_statement\": {\n \"type\": \"string\",\n \"description\": \"The company's stated mission.\"\n },\n \"case_studies\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"title\": {\n \"type\": \"string\"\n },\n \"url\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"title\",\n \"url\"\n ],\n \"additionalProperties\": false\n }\n }\n },\n \"required\": [\n \"mission_statement\",\n \"case_studies\"\n ],\n \"additionalProperties\": false\n },\n \"instructions\": \"<string>\",\n \"factCheck\": false,\n \"followSubdomains\": false,\n \"maxPages\": 5,\n \"maxDepth\": 1,\n \"pdf\": {\n \"shouldParse\": true\n },\n \"includeFrames\": false,\n \"maxAgeMs\": 604800000,\n \"waitForMs\": 15000,\n \"settleAnimations\": false,\n \"actions\": [\n {\n \"do\": \"wait\",\n \"timeMs\": 15000\n }\n ],\n \"stopAfterMs\": 80000,\n \"timeoutMS\": 150500,\n \"tags\": [\n \"production\",\n \"team-alpha\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.context.dev/v1/web/extract")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"mission_statement\": {\n \"type\": \"string\",\n \"description\": \"The company's stated mission.\"\n },\n \"case_studies\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"title\": {\n \"type\": \"string\"\n },\n \"url\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"title\",\n \"url\"\n ],\n \"additionalProperties\": false\n }\n }\n },\n \"required\": [\n \"mission_statement\",\n \"case_studies\"\n ],\n \"additionalProperties\": false\n },\n \"instructions\": \"<string>\",\n \"factCheck\": false,\n \"followSubdomains\": false,\n \"maxPages\": 5,\n \"maxDepth\": 1,\n \"pdf\": {\n \"shouldParse\": true\n },\n \"includeFrames\": false,\n \"maxAgeMs\": 604800000,\n \"waitForMs\": 15000,\n \"settleAnimations\": false,\n \"actions\": [\n {\n \"do\": \"wait\",\n \"timeMs\": 15000\n }\n ],\n \"stopAfterMs\": 80000,\n \"timeoutMS\": 150500,\n \"tags\": [\n \"production\",\n \"team-alpha\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.context.dev/v1/web/extract")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"url\": \"<string>\",\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"mission_statement\": {\n \"type\": \"string\",\n \"description\": \"The company's stated mission.\"\n },\n \"case_studies\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"title\": {\n \"type\": \"string\"\n },\n \"url\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"title\",\n \"url\"\n ],\n \"additionalProperties\": false\n }\n }\n },\n \"required\": [\n \"mission_statement\",\n \"case_studies\"\n ],\n \"additionalProperties\": false\n },\n \"instructions\": \"<string>\",\n \"factCheck\": false,\n \"followSubdomains\": false,\n \"maxPages\": 5,\n \"maxDepth\": 1,\n \"pdf\": {\n \"shouldParse\": true\n },\n \"includeFrames\": false,\n \"maxAgeMs\": 604800000,\n \"waitForMs\": 15000,\n \"settleAnimations\": false,\n \"actions\": [\n {\n \"do\": \"wait\",\n \"timeMs\": 15000\n }\n ],\n \"stopAfterMs\": 80000,\n \"timeoutMS\": 150500,\n \"tags\": [\n \"production\",\n \"team-alpha\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"status": "<string>",
"url": "<string>",
"urls_analyzed": [
"<string>"
],
"data": {},
"metadata": {
"numUrls": 123,
"maxCrawlDepth": 123,
"numSucceeded": 123,
"numFailed": 123,
"numSkipped": 123,
"numBlocked": 123,
"actionsApplied": [
{
"instruction": "<string>",
"status": "applied",
"method": "<string>",
"targetDescription": "<string>",
"completionEvidence": "<string>",
"error": "<string>",
"durationMs": 123
}
]
},
"request_id": "3f1c2a6e-8b4d-4c1e-9f0a-2d7b5e6c8a91",
"cache_metadata": {
"status": "hit",
"age_ms": 1
},
"key_metadata": {
"credits_consumed": 123,
"credits_remaining": 123
}
}{
"message": "<string>",
"error_code": "INPUT_VALIDATION_ERROR",
"request_id": "3f1c2a6e-8b4d-4c1e-9f0a-2d7b5e6c8a91",
"key_metadata": {
"credits_consumed": 123,
"credits_remaining": 123
}
}{
"request_id": "3f1c2a6e-8b4d-4c1e-9f0a-2d7b5e6c8a91",
"message": "<string>",
"error_code": "INTERNAL_ERROR",
"key_metadata": {
"credits_consumed": 123,
"credits_remaining": 123
}
}{
"request_id": "3f1c2a6e-8b4d-4c1e-9f0a-2d7b5e6c8a91",
"message": "<string>",
"error_code": "INTERNAL_ERROR",
"key_metadata": {
"credits_consumed": 123,
"credits_remaining": 123
}
}{
"request_id": "3f1c2a6e-8b4d-4c1e-9f0a-2d7b5e6c8a91",
"message": "<string>",
"error_code": "INTERNAL_ERROR",
"key_metadata": {
"credits_consumed": 123,
"credits_remaining": 123
}
}{
"message": "<string>",
"error_code": "RATE_LIMITED",
"request_id": "3f1c2a6e-8b4d-4c1e-9f0a-2d7b5e6c8a91",
"key_metadata": {
"credits_consumed": 123,
"credits_remaining": 123
}
}{
"request_id": "3f1c2a6e-8b4d-4c1e-9f0a-2d7b5e6c8a91",
"message": "<string>",
"error_code": "INTERNAL_ERROR",
"key_metadata": {
"credits_consumed": 123,
"credits_remaining": 123
}
}Authorizations
Bearer authentication header of the form Bearer <API_KEY>, where <API_KEY> is your api key.
Body
The starting website URL to crawl and extract from. Must include http:// or https://.
JSON Schema for the returned data object. Image fields such as image_urls or product_photos automatically make page image references available to extraction, so product data and photos can be returned in one call. TypeScript Zod users can pass a JSON Schema generated from a Zod object; Python users can pass the equivalent JSON Schema object.
{
"type": "object",
"properties": {
"mission_statement": {
"type": "string",
"description": "The company's stated mission."
},
"case_studies": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": { "type": "string" },
"url": { "type": "string" }
},
"required": ["title", "url"],
"additionalProperties": false
}
}
},
"required": ["mission_statement", "case_studies"],
"additionalProperties": false
}
Optional extraction guidance, such as which facts to prioritize or how to interpret fields in the schema.
2000When true, every returned value must be grounded in facts stated on the page; fields that cannot be supported by the page are returned as null/empty. When false (default), the model may make reasonable inferences and derivations from the page content (e.g. ideal customer, competitor analysis, recommendations) while keeping verifiable specifics (names, quotes, URLs, dates, metrics) faithful to the source.
When true, follow links on subdomains of the starting URL's domain.
Maximum number of pages to analyze for extraction. Hard cap: 50. Defaults to 5.
1 <= x <= 50Optional maximum link depth from the starting URL (0 = only the starting page). If omitted, there is no crawl depth limit.
x >= 0Show child attributes
Show child attributes
When true, iframe contents are included in Markdown before extraction.
Return cached scrape results if a prior scrape for the same parameters is younger than this many milliseconds. Defaults to 7 days (604800000 ms).
0 <= x <= 2592000000Optional browser wait time in milliseconds after initial page load for each crawled page.
0 <= x <= 30000When true, waits briefly for CSS and transition animations to settle before extracting each crawled page. Defaults to false. This adds a bit of latency in exchange for more stable output on animated pages.
Optional browser actions executed in order on the requested page after it loads, before links are discovered or additional pages are crawled. Requires a paid plan. When actions are provided and stopAfterMs is omitted, the crawl budget defaults to 110000 ms.
5Browser action discriminated by do. Each variant exposes only its applicable fields.
- Wait
- Perform
- Scroll
Show child attributes
Show child attributes
Soft time budget for the crawl in milliseconds. Min: 10000 (10s). Max: 110000 (110s). Defaults to 80000 (80s), or 110000 (110s) when browser actions are provided.
10000 <= x <= 110000Optional timeout in milliseconds for the request. If the request takes longer than this value, it will be aborted with a 408 status code. Maximum allowed value is 300000ms (5 minutes).
1000 <= x <= 300000Optional tags for tracking usage. Up to 20 tags, each 1 to 50 characters.
201 - 50["production", "team-alpha"]
Response
Successful response
Status of the response, e.g., 'ok'
The starting URL that was analyzed
List of URLs whose Markdown was used for extraction
Extracted data matching the request schema
Show child attributes
Show child attributes
Unique id of this API call, also sent in the X-Request-Id response header. Quote it when contacting support about a failed request.
"3f1c2a6e-8b4d-4c1e-9f0a-2d7b5e6c8a91"
Cache outcome for this response. Composite responses are hits only when every cache-controlled fetch contributing to the output was a hit; age_ms is the oldest contributing hit.
Show child attributes
Show child attributes
Credit usage, included whenever a valid API key is provided.
Show child attributes
Show child attributes
Was this page helpful?