Tools
HTML Question
Ask any question about an HTML Page.
Ask about a page's semantic structure, HTML elements, and technical aspects. Inquire about HTML tags, DOM structure, meta information, or how to access elements with CSS selectors. This agent can also extract and analyze structured data (e.g., JSON-LD, microdata, RDFa), understand semantic hierarchy, find specific attributes or values, and provide insights about a page's technical implementation.
Playground
Your organization, project and token stay in this browser's local storage and are sent straight to the API — this page never sees them.
Billing
Fixed cost per question asked. The rest follows the page: content read scales with how much of the page the question needs and the answer written with how long an answer you ask for, and nothing caps either. Point it at a page already in your SiteCrawler crawl and no fetch is billed; otherwise the page is fetched live. Leaving response_lang on auto adds one small extra model call to detect the page's language, and only for pages that do not declare it themselves.
These usage SKUs can be charged on a call, including SKUs from tools this one may call.
| SKU | Credits | Description | Used by |
|---|---|---|---|
| Tool call | 1 per request | Charged once per successful item, on top of any usage below. |
|
| Gemini 3 Flash (flex), input | 250 per million tokens | Tokens the model reads from the prompt you send. |
|
| Gemini 3 Flash (flex), output | 1,500 per million tokens | Tokens the model writes in its answer. |
|
| Gemini 3 Flash (flex), read from cache | 50 per million tokens | Tokens the model reads from a cached prompt. Cheaper than a fresh read. |
|
| Gemini 3 Flash (standard), input | 500 per million tokens | Tokens the model reads from the prompt you send. |
|
| Gemini 3 Flash (standard), output | 3,000 per million tokens | Tokens the model writes in its answer. |
|
| Gemini 3 Flash (standard), read from cache | 50 per million tokens | Tokens the model reads from a cached prompt. Cheaper than a fresh read. |
|
| Gemini 3.1 Flash Lite (flex), input | 125 per million tokens | Tokens the model reads from the prompt you send. |
|
| Gemini 3.1 Flash Lite (flex), output | 750 per million tokens | Tokens the model writes in its answer. |
|
| Gemini 3.1 Flash Lite (flex), read from cache | 12.5 per million tokens | Tokens the model reads from a cached prompt. Cheaper than a fresh read. |
|
| Gemini 3.1 Flash Lite (standard), input | 250 per million tokens | Tokens the model reads from the prompt you send. |
|
| Gemini 3.1 Flash Lite (standard), output | 1,500 per million tokens | Tokens the model writes in its answer. |
|
| Gemini 3.1 Flash Lite (standard), read from cache | 25 per million tokens | Tokens the model reads from a cached prompt. Cheaper than a fresh read. |
|
| Live page fetch | 495 per 1,000 page | Fetches a page from the live web as an ordinary visitor would. |
|
| Live page fetch, hard-blocked page | 7,425 per 1,000 page | A page that refused every gentler attempt. Charged on top of them, so a hard-blocked page costs the whole sequence. |
|
| Live page fetch, protected page | 2,475 per 1,000 page | A page that refused an ordinary fetch and had to be retried. Charged on top of the ordinary attempt, not instead of it. |
|
Schemas
item is what you send, config how the tool behaves,
and the response is what you get back.
Item
objecturl
string
required
Source URL to ask question about
question
string
required
Question to ask
{
"url": "string",
"question": "string"
}
Configuration
objecttone_of_voice
string
IA tone of voice
response_lang
string
Language of the response (must be a BCP47 lang code or 'auto' (default) to use the HTML page language)
country_code
string
Country code to use for real-time fetches (2 letters lowercase)
remove_tags
array
List of HTML tags to remove from the page before processing
only_text
boolean
If set to True, extract the text before the LLM
fallback_real_time_fetch
boolean
Fall back to real-time ScrapingBee fetch when URL not in SiteCrawler
{
"tone_of_voice": "",
"response_lang": "auto",
"country_code": "us",
"remove_tags": [
"string"
],
"only_text": true,
"fallback_real_time_fetch": true
}
Response
objecturl_found
boolean
required
Whether the URL was found and the HTML was fetched
answer
string | null
required
Answer to given question (if the URL was found)
confidence_score
integer | null
required
A score between 0 (lowest confidence) and 100 (best confidence) representing the confidence that the answer was accurately and completely extracted
url
string
required
Source URL used to answer the question
question
string
required
Question that was asked
iframe_allowed
boolean | null
Whether iframes are allowed in the answer
{
"url_found": true,
"answer": "string",
"confidence_score": 0,
"url": "string",
"question": "string",
"iframe_allowed": null
}
Endpoints
http://agents.botify.com/{organization}/{project}/html_question/process
http://agents.botify.com/{organization}/{project}/html_question/batch_process
http://agents.botify.com/{organization}/{project}/html_question/async_process
http://agents.botify.com/{organization}/{project}/html_question/async_batch_process
See running a long job in the background for the polling flow.
cURL
curl -X POST "http://agents.botify.com/{organization}/{project}/html_question/process" \
-H "Authorization: Bearer $BOTIFY_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"item": {
"url": "<url>",
"question": "<question>"
}
}'
Raw metadata
- GET /agents/html_question — this page as JSON.
- /agents/html_question/skill.md — Markdown for coding agents.