{
  "url": "https://telipot.com/catalog/capabilities/web.page.text",
  "id": "web.page.text",
  "description": "The text of one web page at a URL",
  "platform": "web",
  "providers": [
    {
      "slug": "jina-reader",
      "name": "Jina Reader"
    },
    {
      "slug": "exa",
      "name": "Exa"
    },
    {
      "slug": "firecrawl",
      "name": "Firecrawl"
    }
  ],
  "tasks": 3,
  "taskPages": [
    {
      "id": "jina-reader.web.page.text",
      "name": "Page title and text by URL",
      "provider": {
        "slug": "jina-reader",
        "name": "Jina Reader"
      },
      "capability": "web.page.text",
      "platform": "web",
      "kind": "data",
      "tier": "core",
      "identity": "public",
      "identityLabel": "No account",
      "price": {
        "amount": "Free",
        "state": "free",
        "label": "Free",
        "detail": "Free · no account needed",
        "type": "free"
      },
      "providers": 3,
      "retention": "standard",
      "runsOn": "free",
      "live": true,
      "summary": "Converts a URL to LLM-friendly text",
      "method": "GET",
      "path": "/{url}",
      "host": "https://r.jina.ai",
      "docsUrl": "https://jina.ai/reader/",
      "auth": {
        "scheme": "public",
        "label": "public · no credential",
        "short": "public"
      },
      "requiredScopes": [],
      "verification": {
        "state": "verified",
        "label": "Verified on 2026-10-05",
        "detail": "We ran a real request and checked the answer. This is a spot check, not a success rate."
      },
      "input": [
        {
          "name": "url",
          "location": "pathParams",
          "type": "string",
          "required": true,
          "constraints": [],
          "note": "The page to read"
        },
        {
          "name": "Accept",
          "location": "headers",
          "type": "string",
          "required": true,
          "constraints": [
            "const \"application/json\""
          ],
          "note": "The answer is the JSON envelope; without it the page text comes back as plain markdown"
        }
      ],
      "sampleInput": {
        "url": "https://example.com",
        "Accept": "application/json"
      },
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The page to read",
            "examples": [
              "https://example.com"
            ]
          },
          "Accept": {
            "type": "string",
            "description": "The answer is the JSON envelope; without it the page text comes back as plain markdown",
            "const": "application/json"
          }
        },
        "required": [
          "url",
          "Accept"
        ],
        "additionalProperties": false
      },
      "output": [
        {
          "name": "code",
          "type": "number"
        },
        {
          "name": "status",
          "type": "number"
        },
        {
          "name": "data",
          "type": "object"
        }
      ],
      "outputSchema": {
        "type": "object",
        "required": [
          "code",
          "status"
        ],
        "properties": {
          "code": {
            "type": "number"
          },
          "status": {
            "type": "number"
          },
          "data": {
            "type": "object",
            "properties": {
              "title": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "url": {
                "type": "string"
              },
              "content": {
                "type": "string"
              },
              "publishedTime": {
                "type": "string"
              },
              "warning": {
                "type": "string"
              },
              "httpStatus": {
                "type": "number"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "tokens": {
                    "type": "number"
                  }
                }
              }
            }
          }
        }
      },
      "example": {
        "file": "examples/jina-reader.web.page.text.json",
        "json": {
          "code": 200,
          "status": 20000,
          "data": {
            "title": "Example Domain",
            "description": "",
            "url": "https://example.com/",
            "content": "This domain is for use in documentation examples without needing permission. This is not a service; avoid relying on it for testing and monitoring purposes.",
            "publishedTime": "Fri, 02 Oct 2026 16:11:02 GMT",
            "warning": "This is a cached snapshot of the original page, consider retry with caching opt-out.",
            "httpStatus": 200,
            "usage": {
              "tokens": 28
            }
          }
        }
      },
      "commands": {
        "mode": "run",
        "cli": "telipot run jina-reader.web.page.text \\\n  --input-json '{\"url\":\"https://example.com\",\"Accept\":\"application/json\"}'",
        "http": "curl https://api.telipot.com/v1/tasks/jina-reader.web.page.text/run \\\n  -H \"Authorization: Bearer $TELIPOT_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"url\":\"https://example.com\",\"Accept\":\"application/json\"}'",
        "quote": "telipot run jina-reader.web.page.text \\\n  --input-json '{\"url\":\"https://example.com\",\"Accept\":\"application/json\"}' \\\n  --quote"
      },
      "siblings": [
        {
          "id": "exa.web.page.text",
          "name": "Web page text and title from URLs, with fetch status",
          "provider": {
            "slug": "exa",
            "name": "Exa"
          },
          "capability": "web.page.text",
          "platform": "web",
          "kind": "data",
          "tier": "core",
          "identity": "key",
          "identityLabel": "Your plan",
          "price": {
            "type": "per_result",
            "confidence": "documented",
            "source": "docs",
            "sourceUrl": "https://exa.ai/docs/admin/pricing",
            "checked": "2026-10-05",
            "note": "$1 per 1,000 pages for each content type; a page returned with text and with highlights counts twice, and AI page summaries add $1 per 1,000 pages.",
            "settles": "The charge Exa reports in costDollars.total",
            "state": "paid",
            "label": "$0.001 / page",
            "amount": "$0.001",
            "unit": "page",
            "usdPerUnit": {
              "floor": 0.001,
              "ceiling": 0.001
            },
            "native": {
              "text": "$1 per 1,000 pages",
              "figure": "$1",
              "per": "1,000 pages",
              "currency": "USDs"
            },
            "detail": "Exa docs · 2026-10-05"
          },
          "providers": 3,
          "retention": "standard",
          "runsOn": "byoc",
          "live": true
        },
        {
          "id": "firecrawl.web.page.text",
          "name": "Page text as markdown with title and status code by URL",
          "provider": {
            "slug": "firecrawl",
            "name": "Firecrawl"
          },
          "capability": "web.page.text",
          "platform": "web",
          "kind": "data",
          "tier": "core",
          "identity": "key",
          "identityLabel": "Your plan",
          "price": {
            "type": "per_success",
            "confidence": "documented",
            "source": "docs",
            "sourceUrl": "https://docs.firecrawl.dev/billing",
            "checked": "2026-10-05",
            "note": "1 credit per page Firecrawl returns, including a page whose own status is 403 or 404; no document returned costs 0. A PDF costs 1 credit per PDF page. The JSON, question, highlights and other formats that add credits are not offered by this task.",
            "state": "paid",
            "label": "$0.0038 / page",
            "amount": "$0.0038",
            "unit": "page",
            "usdPerUnit": {
              "floor": 0.0038,
              "ceiling": 0.0038
            },
            "native": {
              "text": "1 credit per page",
              "figure": "1 credit",
              "per": "page",
              "currency": "credits"
            },
            "detail": "1 credit · docs"
          },
          "providers": 3,
          "retention": "standard",
          "runsOn": "byoc",
          "live": true
        }
      ]
    },
    {
      "id": "exa.web.page.text",
      "name": "Web page text and title from URLs, with fetch status",
      "provider": {
        "slug": "exa",
        "name": "Exa"
      },
      "capability": "web.page.text",
      "platform": "web",
      "kind": "data",
      "tier": "core",
      "identity": "key",
      "identityLabel": "Your plan",
      "price": {
        "type": "per_result",
        "confidence": "documented",
        "source": "docs",
        "sourceUrl": "https://exa.ai/docs/admin/pricing",
        "checked": "2026-10-05",
        "note": "$1 per 1,000 pages for each content type; a page returned with text and with highlights counts twice, and AI page summaries add $1 per 1,000 pages.",
        "settles": "The charge Exa reports in costDollars.total",
        "state": "paid",
        "label": "$0.001 / page",
        "amount": "$0.001",
        "unit": "page",
        "usdPerUnit": {
          "floor": 0.001,
          "ceiling": 0.001
        },
        "native": {
          "text": "$1 per 1,000 pages",
          "figure": "$1",
          "per": "1,000 pages",
          "currency": "USDs"
        },
        "detail": "Exa docs · 2026-10-05"
      },
      "providers": 3,
      "retention": "standard",
      "runsOn": "byoc",
      "live": true,
      "summary": "Get the full page contents, summaries, and metadata for a list of URLs.",
      "method": "POST",
      "path": "/contents",
      "host": "https://api.exa.ai",
      "docsUrl": "https://exa.ai/docs/reference/get-contents",
      "auth": {
        "scheme": "api_key",
        "label": "api_key · in header as x-api-key",
        "short": "api_key · x-api-key"
      },
      "scope": "any_account",
      "principal": "organization",
      "requiredScopes": [],
      "verification": {
        "state": "verified",
        "label": "Verified on 2026-10-05",
        "detail": "We ran a real request and checked the answer. This is a spot check, not a success rate."
      },
      "input": [
        {
          "name": "urls",
          "location": "body",
          "type": "array",
          "required": true,
          "constraints": [
            "1 to 100"
          ],
          "note": "URLs to crawl. Up to 100 per request."
        },
        {
          "name": "text",
          "location": "body",
          "type": "object",
          "required": true,
          "constraints": [],
          "note": "Options for the text returned for each URL, such as { maxCharacters: 2000 } to limit the text per page; includeHtmlTags, verbosity (compact, standard or full), includeSections and excludeSections are also accepted. The vendor's schema also accepts true for the default settings, which this typed field cannot express, so pass an options object. Text is billed at $1 per 1,000 pages."
        },
        {
          "name": "maxAgeHours",
          "location": "body",
          "type": "integer",
          "required": false,
          "constraints": [
            "-1 to 720"
          ],
          "note": "Maximum age of cached content in hours. Positive values use cached content if it is less than this many hours old; 0 fetches fresh content; -1 always uses the cache; omitted uses fallback fetching when cached content is unavailable."
        },
        {
          "name": "livecrawlTimeout",
          "location": "body",
          "type": "integer",
          "required": false,
          "constraints": [
            "1 to 90000",
            "default 10000"
          ],
          "note": "The timeout for livecrawling in milliseconds."
        }
      ],
      "sampleInput": {
        "urls": [
          "https://example.com"
        ],
        "text": {
          "maxCharacters": 1000
        }
      },
      "inputSchema": {
        "type": "object",
        "properties": {
          "urls": {
            "type": "array",
            "description": "URLs to crawl. Up to 100 per request.",
            "examples": [
              [
                "https://example.com"
              ]
            ],
            "minItems": 1,
            "maxItems": 100
          },
          "text": {
            "type": "object",
            "description": "Options for the text returned for each URL, such as { maxCharacters: 2000 } to limit the text per page; includeHtmlTags, verbosity (compact, standard or full), includeSections and excludeSections are also accepted. The vendor's schema also accepts true for the default settings, which this typed field cannot express, so pass an options object. Text is billed at $1 per 1,000 pages.",
            "examples": [
              {
                "maxCharacters": 2000
              }
            ]
          },
          "maxAgeHours": {
            "type": "integer",
            "description": "Maximum age of cached content in hours. Positive values use cached content if it is less than this many hours old; 0 fetches fresh content; -1 always uses the cache; omitted uses fallback fetching when cached content is unavailable.",
            "minimum": -1,
            "maximum": 720
          },
          "livecrawlTimeout": {
            "type": "integer",
            "description": "The timeout for livecrawling in milliseconds.",
            "default": 10000,
            "minimum": 1,
            "maximum": 90000
          }
        },
        "required": [
          "urls",
          "text"
        ],
        "additionalProperties": false
      },
      "output": [
        {
          "name": "requestId",
          "type": "string"
        },
        {
          "name": "results",
          "type": "object[]"
        },
        {
          "name": "statuses",
          "type": "object[]",
          "description": "One entry per requested URL; a URL that failed is reported here, in a 200 response"
        },
        {
          "name": "searchTime",
          "type": "number"
        },
        {
          "name": "costDollars",
          "type": "object",
          "description": "Estimated dollar cost of the completed request; billing is computed from usage counters, not from this object."
        }
      ],
      "outputSchema": {
        "type": "object",
        "properties": {
          "requestId": {
            "type": "string"
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "title",
                "url"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "id": {
                  "type": "string",
                  "description": "Temporary document id, accepted by the contents route"
                },
                "publishedDate": {
                  "type": "string",
                  "description": "Estimated creation date parsed from the page"
                },
                "author": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "image": {
                  "type": "string"
                },
                "favicon": {
                  "type": "string"
                },
                "text": {
                  "type": "string",
                  "description": "Full page text, present only when requested"
                },
                "highlights": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "summary": {
                  "type": "string"
                },
                "subpages": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                },
                "entities": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                },
                "extras": {
                  "type": "object"
                }
              }
            }
          },
          "statuses": {
            "type": "array",
            "description": "One entry per requested URL; a URL that failed is reported here, in a 200 response",
            "items": {
              "type": "object",
              "required": [
                "id",
                "status"
              ],
              "properties": {
                "id": {
                  "type": "string",
                  "description": "The URL or document id that was requested"
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "success",
                    "error"
                  ]
                },
                "source": {
                  "type": "string",
                  "enum": [
                    "cached",
                    "crawled"
                  ]
                },
                "error": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "tag": {
                          "type": "string",
                          "description": "Specific error type, such as CRAWL_NOT_FOUND"
                        },
                        "httpStatusCode": {
                          "type": [
                            "integer",
                            "null"
                          ],
                          "description": "The status the target page returned"
                        }
                      }
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              }
            }
          },
          "searchTime": {
            "type": "number"
          },
          "costDollars": {
            "type": "object",
            "description": "Estimated dollar cost of the completed request; billing is computed from usage counters, not from this object.",
            "properties": {
              "total": {
                "type": "number"
              },
              "search": {
                "type": "object",
                "properties": {
                  "neural": {
                    "type": "number"
                  },
                  "keyword": {
                    "type": "number"
                  }
                }
              },
              "summary": {
                "type": "number"
              },
              "contents": {
                "type": "object",
                "properties": {
                  "text": {
                    "type": "number"
                  },
                  "highlights": {
                    "type": "number"
                  },
                  "summary": {
                    "type": "number"
                  }
                }
              }
            }
          }
        }
      },
      "example": {
        "file": "examples/exa.web.page.text.json",
        "json": {
          "requestId": "ec0c917e43b5c249b30a1839ea761835",
          "results": [
            {
              "id": "https://example.com",
              "title": "Example Domain",
              "url": "https://example.com",
              "author": null,
              "text": "Example Domain\n\nThis domain is for use in documentation examples without needing permission. This is not a service; avoid relying on it for testing and monitoring purposes.\n\nهذا النطاق مُخصص للاستخدام…",
              "entities": [
                {}
              ]
            }
          ],
          "statuses": [
            {
              "id": "https://example.com",
              "status": "success",
              "source": "cached"
            }
          ],
          "costDollars": {
            "total": 0.001,
            "contents": {
              "text": 0.001
            }
          },
          "searchTime": 6.0309359999373555
        }
      },
      "commands": {
        "mode": "run",
        "cli": "telipot run exa.web.page.text \\\n  --input-json '{\"urls\":[\"https://example.com\"],\"text\":{\"maxCharacters\":1000}}'",
        "http": "curl https://api.telipot.com/v1/tasks/exa.web.page.text/run \\\n  -H \"Authorization: Bearer $TELIPOT_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"urls\":[\"https://example.com\"],\"text\":{\"maxCharacters\":1000}}'",
        "quote": "telipot run exa.web.page.text \\\n  --input-json '{\"urls\":[\"https://example.com\"],\"text\":{\"maxCharacters\":1000}}' \\\n  --quote"
      },
      "siblings": [
        {
          "id": "jina-reader.web.page.text",
          "name": "Page title and text by URL",
          "provider": {
            "slug": "jina-reader",
            "name": "Jina Reader"
          },
          "capability": "web.page.text",
          "platform": "web",
          "kind": "data",
          "tier": "core",
          "identity": "public",
          "identityLabel": "No account",
          "price": {
            "amount": "Free",
            "state": "free",
            "label": "Free",
            "detail": "Free · no account needed",
            "type": "free"
          },
          "providers": 3,
          "retention": "standard",
          "runsOn": "free",
          "live": true
        },
        {
          "id": "firecrawl.web.page.text",
          "name": "Page text as markdown with title and status code by URL",
          "provider": {
            "slug": "firecrawl",
            "name": "Firecrawl"
          },
          "capability": "web.page.text",
          "platform": "web",
          "kind": "data",
          "tier": "core",
          "identity": "key",
          "identityLabel": "Your plan",
          "price": {
            "type": "per_success",
            "confidence": "documented",
            "source": "docs",
            "sourceUrl": "https://docs.firecrawl.dev/billing",
            "checked": "2026-10-05",
            "note": "1 credit per page Firecrawl returns, including a page whose own status is 403 or 404; no document returned costs 0. A PDF costs 1 credit per PDF page. The JSON, question, highlights and other formats that add credits are not offered by this task.",
            "state": "paid",
            "label": "$0.0038 / page",
            "amount": "$0.0038",
            "unit": "page",
            "usdPerUnit": {
              "floor": 0.0038,
              "ceiling": 0.0038
            },
            "native": {
              "text": "1 credit per page",
              "figure": "1 credit",
              "per": "page",
              "currency": "credits"
            },
            "detail": "1 credit · docs"
          },
          "providers": 3,
          "retention": "standard",
          "runsOn": "byoc",
          "live": true
        }
      ]
    },
    {
      "id": "firecrawl.web.page.text",
      "name": "Page text as markdown with title and status code by URL",
      "provider": {
        "slug": "firecrawl",
        "name": "Firecrawl"
      },
      "capability": "web.page.text",
      "platform": "web",
      "kind": "data",
      "tier": "core",
      "identity": "key",
      "identityLabel": "Your plan",
      "price": {
        "type": "per_success",
        "confidence": "documented",
        "source": "docs",
        "sourceUrl": "https://docs.firecrawl.dev/billing",
        "checked": "2026-10-05",
        "note": "1 credit per page Firecrawl returns, including a page whose own status is 403 or 404; no document returned costs 0. A PDF costs 1 credit per PDF page. The JSON, question, highlights and other formats that add credits are not offered by this task.",
        "state": "paid",
        "label": "$0.0038 / page",
        "amount": "$0.0038",
        "unit": "page",
        "usdPerUnit": {
          "floor": 0.0038,
          "ceiling": 0.0038
        },
        "native": {
          "text": "1 credit per page",
          "figure": "1 credit",
          "per": "page",
          "currency": "credits"
        },
        "detail": "1 credit · docs"
      },
      "providers": 3,
      "retention": "standard",
      "runsOn": "byoc",
      "live": true,
      "summary": "Scrape a single URL and optionally extract information using an LLM",
      "method": "POST",
      "path": "/scrape",
      "host": "https://api.firecrawl.dev/v2",
      "docsUrl": "https://docs.firecrawl.dev/api-reference/endpoint/scrape",
      "auth": {
        "scheme": "bearer",
        "label": "bearer · Authorization: Bearer",
        "short": "bearer · Authorization"
      },
      "scope": "any_account",
      "principal": "organization",
      "requiredScopes": [],
      "verification": {
        "state": "none",
        "label": "Not verified yet",
        "detail": "Not checked yet. We test with a real request before we mark it."
      },
      "input": [
        {
          "name": "url",
          "location": "body",
          "type": "string",
          "required": true,
          "constraints": [],
          "note": "The URL to scrape"
        },
        {
          "name": "onlyMainContent",
          "location": "body",
          "type": "boolean",
          "required": false,
          "constraints": [
            "default true"
          ],
          "note": "Only return the main content of the page, excluding headers, navs and footers"
        },
        {
          "name": "waitFor",
          "location": "body",
          "type": "integer",
          "required": false,
          "constraints": [
            "default 0"
          ],
          "note": "Delay in milliseconds before fetching the content, in addition to Firecrawl's smart wait"
        },
        {
          "name": "maxAge",
          "location": "body",
          "type": "integer",
          "required": false,
          "constraints": [
            "default 172800000"
          ],
          "note": "Accept a cached copy younger than this many milliseconds (default 2 days); an older copy is scraped again"
        },
        {
          "name": "timeout",
          "location": "body",
          "type": "integer",
          "required": false,
          "constraints": [
            "1000 to 300000",
            "default 60000"
          ],
          "note": "Timeout in milliseconds"
        },
        {
          "name": "mobile",
          "location": "body",
          "type": "boolean",
          "required": false,
          "constraints": [
            "default false"
          ],
          "note": "Emulate scraping from a mobile device"
        },
        {
          "name": "proxy",
          "location": "body",
          "type": "string",
          "required": false,
          "constraints": [
            "one of \"basic\", \"enhanced\", \"auto\"",
            "default \"auto\""
          ],
          "note": "auto retries with enhanced proxies when basic fails; enhanced is billed like basic"
        }
      ],
      "sampleInput": {
        "url": "https://example.com"
      },
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The URL to scrape",
            "examples": [
              "https://example.com"
            ]
          },
          "onlyMainContent": {
            "type": "boolean",
            "description": "Only return the main content of the page, excluding headers, navs and footers",
            "default": true
          },
          "waitFor": {
            "type": "integer",
            "description": "Delay in milliseconds before fetching the content, in addition to Firecrawl's smart wait",
            "default": 0
          },
          "maxAge": {
            "type": "integer",
            "description": "Accept a cached copy younger than this many milliseconds (default 2 days); an older copy is scraped again",
            "default": 172800000
          },
          "timeout": {
            "type": "integer",
            "description": "Timeout in milliseconds",
            "default": 60000,
            "minimum": 1000,
            "maximum": 300000
          },
          "mobile": {
            "type": "boolean",
            "description": "Emulate scraping from a mobile device",
            "default": false
          },
          "proxy": {
            "type": "string",
            "description": "auto retries with enhanced proxies when basic fails; enhanced is billed like basic",
            "enum": [
              "basic",
              "enhanced",
              "auto"
            ],
            "default": "auto"
          }
        },
        "required": [
          "url"
        ],
        "additionalProperties": false
      },
      "output": [
        {
          "name": "success",
          "type": "boolean"
        },
        {
          "name": "data",
          "type": "object"
        }
      ],
      "outputSchema": {
        "type": "object",
        "required": [
          "success",
          "data"
        ],
        "properties": {
          "success": {
            "type": "boolean"
          },
          "data": {
            "type": "object",
            "properties": {
              "markdown": {
                "type": "string",
                "description": "The page as markdown"
              },
              "warning": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "metadata": {
                "type": "object",
                "properties": {
                  "title": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    ]
                  },
                  "description": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      }
                    ]
                  },
                  "language": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "sourceURL": {
                    "type": "string",
                    "description": "The URL that was requested"
                  },
                  "url": {
                    "type": "string",
                    "description": "The final URL after redirects"
                  },
                  "statusCode": {
                    "type": "integer",
                    "description": "The status code the page answered with"
                  },
                  "contentType": {
                    "type": "string"
                  },
                  "numPages": {
                    "type": "integer",
                    "description": "For a PDF, the pages parsed"
                  },
                  "totalPages": {
                    "type": "integer"
                  },
                  "error": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                }
              }
            }
          }
        }
      },
      "commands": {
        "mode": "run",
        "cli": "telipot run firecrawl.web.page.text \\\n  --input-json '{\"url\":\"https://example.com\"}'",
        "http": "curl https://api.telipot.com/v1/tasks/firecrawl.web.page.text/run \\\n  -H \"Authorization: Bearer $TELIPOT_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"url\":\"https://example.com\"}'",
        "quote": "telipot run firecrawl.web.page.text \\\n  --input-json '{\"url\":\"https://example.com\"}' \\\n  --quote"
      },
      "siblings": [
        {
          "id": "jina-reader.web.page.text",
          "name": "Page title and text by URL",
          "provider": {
            "slug": "jina-reader",
            "name": "Jina Reader"
          },
          "capability": "web.page.text",
          "platform": "web",
          "kind": "data",
          "tier": "core",
          "identity": "public",
          "identityLabel": "No account",
          "price": {
            "amount": "Free",
            "state": "free",
            "label": "Free",
            "detail": "Free · no account needed",
            "type": "free"
          },
          "providers": 3,
          "retention": "standard",
          "runsOn": "free",
          "live": true
        },
        {
          "id": "exa.web.page.text",
          "name": "Web page text and title from URLs, with fetch status",
          "provider": {
            "slug": "exa",
            "name": "Exa"
          },
          "capability": "web.page.text",
          "platform": "web",
          "kind": "data",
          "tier": "core",
          "identity": "key",
          "identityLabel": "Your plan",
          "price": {
            "type": "per_result",
            "confidence": "documented",
            "source": "docs",
            "sourceUrl": "https://exa.ai/docs/admin/pricing",
            "checked": "2026-10-05",
            "note": "$1 per 1,000 pages for each content type; a page returned with text and with highlights counts twice, and AI page summaries add $1 per 1,000 pages.",
            "settles": "The charge Exa reports in costDollars.total",
            "state": "paid",
            "label": "$0.001 / page",
            "amount": "$0.001",
            "unit": "page",
            "usdPerUnit": {
              "floor": 0.001,
              "ceiling": 0.001
            },
            "native": {
              "text": "$1 per 1,000 pages",
              "figure": "$1",
              "per": "1,000 pages",
              "currency": "USDs"
            },
            "detail": "Exa docs · 2026-10-05"
          },
          "providers": 3,
          "retention": "standard",
          "runsOn": "byoc",
          "live": true
        }
      ]
    }
  ]
}
