curl --request POST \
--url https://api.cloud.gomry.com/v1/scrape \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "https://example.com/events/summer-fest",
"prompt": "Extract the event",
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"startDate": {
"type": "string"
},
"venue": {
"type": "string"
}
}
}
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
url: 'https://example.com/events/summer-fest',
prompt: 'Extract the event',
schema: {
type: 'object',
properties: {name: {type: 'string'}, startDate: {type: 'string'}, venue: {type: 'string'}}
}
})
};
fetch('https://api.cloud.gomry.com/v1/scrape', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.cloud.gomry.com/v1/scrape"
payload = {
"url": "https://example.com/events/summer-fest",
"prompt": "Extract the event",
"schema": {
"type": "object",
"properties": {
"name": { "type": "string" },
"startDate": { "type": "string" },
"venue": { "type": "string" }
}
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Fetch a page and extract structured data from it against a JSON schema.
Fetch a page and extract structured data from it against a JSON schema.
Requires the scrape:run scope, and the project must have Scrape enabled.
Billed on success. The response reports pages — the quantity metered for this call. Rates: https://docs.cloud.gomry.com/pricing.
Full reference: https://docs.cloud.gomry.com/services/scrape
curl --request POST \
--url https://api.cloud.gomry.com/v1/scrape \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "https://example.com/events/summer-fest",
"prompt": "Extract the event",
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"startDate": {
"type": "string"
},
"venue": {
"type": "string"
}
}
}
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
url: 'https://example.com/events/summer-fest',
prompt: 'Extract the event',
schema: {
type: 'object',
properties: {name: {type: 'string'}, startDate: {type: 'string'}, venue: {type: 'string'}}
}
})
};
fetch('https://api.cloud.gomry.com/v1/scrape', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.cloud.gomry.com/v1/scrape"
payload = {
"url": "https://example.com/events/summer-fest",
"prompt": "Extract the event",
"schema": {
"type": "object",
"properties": {
"name": { "type": "string" },
"startDate": { "type": "string" },
"venue": { "type": "string" }
}
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Authorizations
An API key minted in the console, sent as Authorization: Bearer <key>. Keys are project-scoped and carry per-operation scopes. A gck_test_… key runs the full request path — including the real upstream call — and bills nothing.
Every scope is enumerated in x-scopes below and in the RFC 9728 protected-resource metadata at https://cloud.gomry.com/.well-known/oauth-protected-resource, which is also what a 401 points at through its WWW-Authenticate: Bearer resource_metadata="…" header.
Body
Required. The page to scrape. Max 2048 characters. Private addresses and internal hostnames are refused.
Required for /v1/scrape. A JSON Schema object describing the shape you want back. Returned in data.
Required for /v1/scrape. 1–2000 characters of instruction for the extraction, e.g. "Extract the event".
Milliseconds to wait after load before reading the page, for content that arrives late. 0–15000.
Milliseconds before the vendor call is abandoned. 1000–90000. The whole request is capped at 120s server-side, so budget for two calls if you use retry.
Strip navigation, footers and boilerplate before extraction. Defaults to true; set false when the data you want lives in the chrome.
Also return the page's raw HTML in rawHtml. Use when you parse JSON-LD or embedded blobs yourself.
{ requiredField, waitFor }. If the first pass returns without that field, the page is fetched once more with the longer wait. Bills both calls, and only when each returned a page.
Response
Success. pages reports what was metered.
The response is of type object.

