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

# TypeScript SDK

Browser automation helpers for TypeScript/JavaScript, built on [Playwright](https://playwright.dev/). This package provides utilities for common automation tasks—AI-powered data extraction, navigation with retries, pagination handling, and more.

## Installation

```bash theme={null}
npm install @intuned/browser
```

<Note>
  When using [Intuned](https://app.intuned.io), this package is pre-installed in
  every TypeScript project.
</Note>

## Quick example

```typescript theme={null}
import { Page, BrowserContext } from "playwright";
import { extractStructuredData, isPageLoaded } from "@intuned/browser/ai";
import { goToUrl } from "@intuned/browser";

interface Params {}

export default async function automation(
  params: Params,
  page: Page,
  context: BrowserContext
) {
  await goToUrl({ page, url: "https://books.toscrape.com" });

  const loaded = await isPageLoaded({ page });
  if (!loaded) {
    throw new Error("Page is not loaded, cannot extract data");
  }

  // Extract all book listings from the page
  const books = await extractStructuredData({
    source: page,
    dataSchema: {
      type: "object",
      properties: {
        products: {
          type: "array",
          items: {
            type: "object",
            properties: {
              title: { type: "string" },
              price: { type: "string" },
            },
          },
        },
      },
    },
    prompt: "Extract all book listings with their titles and prices",
    strategy: "HTML",
    model: "claude-haiku-4-5-20251001",
  });

  return books;
}
```

## AI module

AI-powered utilities for data extraction and page analysis. These functions use AI and incur costs.

| Function                                                        | Description                                                                    |
| --------------------------------------------------------------- | ------------------------------------------------------------------------------ |
| [`extractStructuredData`](./ai/functions/extractStructuredData) | Extract structured data from pages using AI with JSON Schema or Zod validation |
| [`isPageLoaded`](./ai/functions/isPageLoaded)                   | Detect when a page has finished loading                                        |

<Tip>AI functions support caching and matching to reduce costs.</Tip>

## Helpers module

| Function                                                                 | Description                                        |
| ------------------------------------------------------------------------ | -------------------------------------------------- |
| [`goToUrl`](./helpers/functions/goToUrl)                                 | Navigate with automatic retries and error handling |
| [`withNetworkSettledWait`](./helpers/functions/withNetworkSettledWait)   | Wait for network requests to complete              |
| [`waitForDomSettled`](./helpers/functions/waitForDomSettled)             | Wait for DOM mutations to finish                   |
| [`scrollToLoadContent`](./helpers/functions/scrollToLoadContent)         | Load infinite-scroll content                       |
| [`clickUntilExhausted`](./helpers/functions/clickUntilExhausted)         | Click "Load More" buttons until all content loads  |
| [`extractMarkdown`](./helpers/functions/extractMarkdown)                 | Convert pages to markdown                          |
| [`downloadFile`](./helpers/functions/downloadFile)                       | Download files with different triggers             |
| [`saveFileToS3`](./helpers/functions/saveFileToS3)                       | Download and upload files to S3                    |
| [`uploadFileToS3`](./helpers/functions/uploadFileToS3)                   | Upload files with custom S3 configurations         |
| [`filterEmptyValues`](./helpers/functions/filterEmptyValues)             | Remove empty values from data                      |
| [`validateDataUsingSchema`](./helpers/functions/validateDataUsingSchema) | Validate data against schemas                      |
| [`processDate`](./helpers/functions/processDate)                         | Parse and normalize dates                          |
| [`sanitizeHtml`](./helpers/functions/sanitizeHtml)                       | Clean and sanitize HTML                            |
| [`resolveUrl`](./helpers/functions/resolveUrl)                           | Resolve relative URLs to absolute paths            |

## Requirements

* Node.js 18+
* Playwright (`npm install playwright && npx playwright install`)
* For AI functions: API key for your AI provider (set via environment variable or function parameter)
