> ## Documentation Index
> Fetch the complete documentation index at: https://aisa.one/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> - Base URLs: models `https://api.aisa.one/v1` (Gemini GenerateContent: `https://api.aisa.one/v1beta`); data APIs `https://api.aisa.one/apis/v1`. The `servers` of each operation in https://aisa.one/openapi.yaml is authoritative.
> - Auth: `Authorization: Bearer $AISA_API_KEY`. Never print, log, or commit the key.
> - MCP (preferred for agents): `https://mcp.aisa.one/mcp`, signed in with OAuth, so there is no key to paste.
> - Agent Skill: `npx skills add AIsa-team/agent-skills --skill aisa`. Fallback with the AIsa CLI: `aisa skills install aisa`.
> - Spending: docs, https://aisa.one/models, https://aisa.one/api, `/v1/models`, and MCP `search`, `list_categories`, `get_details`, `batch_quote`, and the `account` operation are free. Quote the exact calls before running them (MCP `batch_quote`, CLI `aisa quote --json`). If the quote reports `auto_execute_eligible: true`, run it unless the user set a tighter limit or asked only for a quote. Otherwise, tell the user in one message the planned calls, the quoted price, and a total USD budget for the task, then wait for approval. Direct HTTP calls follow the stricter rule at https://aisa.one/docs/get-started/cli.md#direct-http-fallback. Do not make paid calls to test availability. Full rule: https://aisa.one/llms.txt

# Extract Structured Web Data

> <!-- aisa-pricing:start -->
Usage-based billing; Default request estimate: $0.0103 USD (not a fixed price). Declared unit rate: $0.000001 USD per provider_credit. Account-specific pricing and final settlement may differ.
<!-- aisa-pricing:end -->

## Request contract

* **Method and path:** POST /apis/v1/context-dev/extract-structured-web-data
* **Availability:** enabled
* **Request URL template:** `https://api.aisa.one/apis/v1/context-dev/extract-structured-web-data`
* **Runtime facts:** 3068b7678674e2539daed47d533143c7d5bf21072a81e6aac34d7bd71ed57eb3

[Complete OpenAPI definition](https://aisa.one/docs/reference-contracts/context-dev.json)

Effective request and pricing declaration (including authentication and referenced schemas):

```json theme={null}
{
  "operationId": "context-dev.extract-structured-web-data",
  "method": "POST",
  "path": "/apis/v1/context-dev/extract-structured-web-data",
  "servers": [
    {
      "url": "https://api.aisa.one"
    }
  ],
  "parameters": [],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "requestBody": {
    "required": true,
    "content": {
      "application/json": {
        "schema": {
          "type": "object",
          "required": [
            "url",
            "output_schema"
          ],
          "properties": {
            "url": {
              "type": "string",
              "format": "uri",
              "examples": [
                "https://example.com"
              ],
              "minLength": 1,
              "description": "Starting HTTP or HTTPS website URL to crawl."
            },
            "tags": {
              "type": "array",
              "items": {
                "type": "string",
                "maxLength": 50,
                "minLength": 1
              },
              "maxItems": 20,
              "description": "Usage-tracking tags. Provide at most 20 tags of 1-50 characters each."
            },
            "max_depth": {
              "type": "integer",
              "minimum": 0,
              "description": "Maximum link depth from the starting URL. Use 0 to analyze only the starting page; omit for no crawl-depth limit."
            },
            "max_pages": {
              "type": "integer",
              "default": 5,
              "maximum": 50,
              "minimum": 1,
              "description": "Maximum pages to analyze (1-50). Higher values increase the price."
            },
            "fact_check": {
              "type": "boolean",
              "default": false,
              "description": "Require every returned value to be grounded in page content. Unsupported fields are returned as null or empty instead of inferred."
            },
            "instructions": {
              "type": "string",
              "maxLength": 2000,
              "description": "Optional extraction guidance or field interpretation, up to 2000 characters."
            },
            "output_schema": {
              "type": "object",
              "examples": [
                {
                  "type": "object",
                  "required": [
                    "company_name"
                  ],
                  "properties": {
                    "company_name": {
                      "type": "string",
                      "description": "The company's public name."
                    }
                  }
                }
              ],
              "description": "JSON Schema describing the object to extract. Add descriptions to non-obvious properties so the extractor can interpret them correctly.",
              "additionalProperties": true
            },
            "stop_after_ms": {
              "type": "integer",
              "default": 80000,
              "maximum": 110000,
              "minimum": 10000,
              "description": "Soft crawl time budget in milliseconds (10000-110000)."
            },
            "follow_subdomains": {
              "type": "boolean",
              "default": false,
              "description": "Follow links on subdomains of the starting domain."
            }
          }
        }
      }
    }
  },
  "x-aisa-status": "enabled",
  "x-aisa-pricing": {
    "cost_contract": "response_units",
    "customer_multiplier": 1.0,
    "customer_pricing": "provider_cost_multiplier",
    "default_request_estimate_usd": 0.0103,
    "estimate_source": "profile_seed",
    "evidence_source": "response_body",
    "maximum_units": 10000000,
    "unit": "provider_credit",
    "unit_rate_usd": 1e-06
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "scheme": "bearer",
        "type": "http"
      }
    }
  }
}
```

## Cost and request rules

Usage-based billing; Default request estimate: \$0.0103 USD (not a fixed price). Declared unit rate: \$0.000001 USD per provider\_credit. Account-specific pricing and final settlement may differ.

Published reference values are not an account-specific quote or a settled charge. For endpoints supporting X-AISA-Cost-Mode: quote, obtain a free quote for your exact request before execution; reconcile the settled cost with response metadata and Usage Logs. USD amounts use 1,000,000 integer micro-USD per dollar.

* **Default request reference estimate (USD):** 0.0103
* **Declared unit rate (USD):** 1e-06
* **Billing unit:** provider\_credit
* **Cost contract:** response\_units
* **Published reference multiplier:** 1.0
* **Declared maximum count/units:** 10000000
* **Settlement evidence source:** response\_body


## OpenAPI

````yaml reference-contracts/context-dev.json POST /apis/v1/context-dev/extract-structured-web-data
openapi: 3.1.0
info:
  description: ''
  title: Context.dev
  version: '1'
  x-aisa-capabilities:
    idempotency: Idempotency-Key
    max_price: X-AISA-Max-Price-USD
    quote:
      header: X-AISA-Cost-Mode
      value: quote
  x-aisa-configured-paths:
    - /apis/v1/context-dev/extract-structured-web-data
    - /apis/v1/context-dev/get-brand
    - /apis/v1/context-dev/get-website-styleguide
    - /apis/v1/context-dev/search-brands
    - /apis/v1/context-dev/web-crawl
    - /apis/v1/context-dev/web-map
    - /apis/v1/context-dev/web-scrape
    - /apis/v1/context-dev/web-search
  x-aisa-document:
    facts_hash: 3068b7678674e2539daed47d533143c7d5bf21072a81e6aac34d7bd71ed57eb3
    generator_version: '3'
    protocol_version: '1'
    schema_version: '1'
    composer_version: '28'
    response_pending:
      - operation_id: context-dev.web-map
        path: /apis/v1/context-dev/web-map
        method: GET
        statuses:
          - '200'
        reason: public success response has no authoritative payload declaration
      - operation_id: context-dev.web-scrape
        path: /apis/v1/context-dev/web-scrape
        method: POST
        statuses:
          - '200'
        reason: public success response has no authoritative payload declaration
      - operation_id: context-dev.web-search
        path: /apis/v1/context-dev/web-search
        method: POST
        statuses:
          - '200'
        reason: public success response has no authoritative payload declaration
    document_hash: sha256:7e355df5f13590c3b7614e884779c7588201d481ec62bc5714c2f3403c0e9ae0
  x-aisa-plans:
    builder: 1
    display_plan: payg
    payg: 1
    similarweb_payg: 1
    team: 1
    version: e70a0959cd1b93b84ae16dffd7a538273ddb9c1d46277b82823c37ff1b6bc0fb
  x-aisa-provider: context-dev
  x-aisa-catalogs:
    context-dev:
      title: Context.dev
      description: ''
      x-aisa-document:
        facts_hash: 3068b7678674e2539daed47d533143c7d5bf21072a81e6aac34d7bd71ed57eb3
        generator_version: '3'
        protocol_version: '1'
        schema_version: '1'
      x-aisa-plans:
        builder: 1
        display_plan: payg
        payg: 1
        similarweb_payg: 1
        team: 1
        version: e70a0959cd1b93b84ae16dffd7a538273ddb9c1d46277b82823c37ff1b6bc0fb
      x-aisa-capabilities:
        idempotency: Idempotency-Key
        max_price: X-AISA-Max-Price-USD
        quote:
          header: X-AISA-Cost-Mode
          value: quote
servers:
  - url: https://api.aisa.one
security:
  - bearerAuth: []
paths:
  /apis/v1/context-dev/extract-structured-web-data:
    post:
      tags:
        - Context.dev
      summary: Extract Structured Web Data
      description: >-
        <!-- aisa-pricing:start -->

        Usage-based billing; Default request estimate: $0.0103 USD (not a fixed
        price). Declared unit rate: $0.000001 USD per provider_credit.
        Account-specific pricing and final settlement may differ.

        <!-- aisa-pricing:end -->
      operationId: context-dev.extract-structured-web-data
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - url
                - output_schema
              properties:
                url:
                  type: string
                  format: uri
                  examples:
                    - https://example.com
                  minLength: 1
                  description: Starting HTTP or HTTPS website URL to crawl.
                tags:
                  type: array
                  items:
                    type: string
                    maxLength: 50
                    minLength: 1
                  maxItems: 20
                  description: >-
                    Usage-tracking tags. Provide at most 20 tags of 1-50
                    characters each.
                max_depth:
                  type: integer
                  minimum: 0
                  description: >-
                    Maximum link depth from the starting URL. Use 0 to analyze
                    only the starting page; omit for no crawl-depth limit.
                max_pages:
                  type: integer
                  default: 5
                  maximum: 50
                  minimum: 1
                  description: >-
                    Maximum pages to analyze (1-50). Higher values increase the
                    price.
                fact_check:
                  type: boolean
                  default: false
                  description: >-
                    Require every returned value to be grounded in page content.
                    Unsupported fields are returned as null or empty instead of
                    inferred.
                instructions:
                  type: string
                  maxLength: 2000
                  description: >-
                    Optional extraction guidance or field interpretation, up to
                    2000 characters.
                output_schema:
                  type: object
                  examples:
                    - type: object
                      required:
                        - company_name
                      properties:
                        company_name:
                          type: string
                          description: The company's public name.
                  description: >-
                    JSON Schema describing the object to extract. Add
                    descriptions to non-obvious properties so the extractor can
                    interpret them correctly.
                  additionalProperties: true
                stop_after_ms:
                  type: integer
                  default: 80000
                  maximum: 110000
                  minimum: 10000
                  description: Soft crawl time budget in milliseconds (10000-110000).
                follow_subdomains:
                  type: boolean
                  default: false
                  description: Follow links on subdomains of the starting domain.
      responses:
        '200':
          description: Tool result data
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Response576A0Ea506F3_connect_CONTEXT_DEV_EXTRACT_STRUCTURED_WEB_DATA__output__public_data
        default:
          content:
            application/json:
              schema: {}
          description: >-
            Error response; upstream passthrough responses may use provider
            formats
components:
  schemas:
    Response576A0Ea506F3_connect_CONTEXT_DEV_EXTRACT_STRUCTURED_WEB_DATA__output__public_data:
      $ref: >-
        #/components/schemas/Response576A0Ea506F3_connect_CONTEXT_DEV_EXTRACT_STRUCTURED_WEB_DATA__output__a844009278edf83b
    Response576A0Ea506F3_connect_CONTEXT_DEV_EXTRACT_STRUCTURED_WEB_DATA__output__a844009278edf83b:
      type: object
      required:
        - url
        - data
        - metadata
      properties:
        url:
          type: string
        data:
          type: object
          additionalProperties: true
        metadata:
          $ref: >-
            #/components/schemas/Response576A0Ea506F3_connect_CONTEXT_DEV_EXTRACT_STRUCTURED_WEB_DATA__output__e17f115f2f0ccd16
        key_metadata:
          $ref: >-
            #/components/schemas/Response576A0Ea506F3_connect_CONTEXT_DEV_EXTRACT_STRUCTURED_WEB_DATA__output__54a748042674849e
        urls_analyzed:
          type: array
          items:
            type: string
    Response576A0Ea506F3_connect_CONTEXT_DEV_EXTRACT_STRUCTURED_WEB_DATA__output__e17f115f2f0ccd16:
      type: object
      required:
        - numUrls
        - maxCrawlDepth
        - numSucceeded
        - numFailed
        - numSkipped
        - numBlocked
      properties:
        numUrls:
          type: integer
          minimum: 0
        numFailed:
          type: integer
          minimum: 0
        numBlocked:
          type: integer
          minimum: 0
        numSkipped:
          type: integer
          minimum: 0
        numSucceeded:
          type: integer
          minimum: 0
        maxCrawlDepth:
          type: integer
          minimum: 0
    Response576A0Ea506F3_connect_CONTEXT_DEV_EXTRACT_STRUCTURED_WEB_DATA__output__54a748042674849e:
      type: object
      required:
        - credits_consumed
        - credits_remaining
      properties:
        credits_consumed:
          type: integer
          minimum: 0
        credits_remaining:
          type: integer
          minimum: 0
  securitySchemes:
    bearerAuth:
      scheme: bearer
      type: http

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.