> ## 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.

# extractObjectFromLocator

<Warning> **Deprecated:** This function is deprecated and will be removed in the future. </Warning>

Extracts a structured object from a locator.

```typescript theme={null}
export declare function extractObjectFromLocator(
  locator: Locator,
  options: {
    label: string;
    entityName: string;
    entitySchema: SimpleObjectSchema;
    strategy?: ImageStrategy | HtmlStrategy;
    prompt?: string;
    optionalPropertiesInvalidator?: (
      result: Record<string, string | null> | null
    ) => string[];
    variantKey?: string;
    apiKey?: string;
  }
): Promise<Record<string, string | null> | null>;
```

## Examples

<CodeGroup>
  ```typescript extractObjectFromLocator theme={null}
  import { extractObjectFromLocator } from "@intuned/browser/optimized-extractors";

  await page.goto(
    "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html"
  );
  const book = await extractObjectFromLocator(page.locator(".page_inner"), {
    entityName: "book",
    label: "book-extraction",
    entitySchema: {
      type: "object",
      required: ["name", "price", "reviews"],
      properties: {
        name: {
          type: "string",
          description: "book name",
        },
        price: {
          type: "string",
          description: "book price",
        },
        reviews: {
          type: "string",
          description: "Number of reviews",
        },
      },
    },
  });

  console.log(book);

  // output:
  // { name: 'A Light in the Attic', price: '£51.77', reviews: '0' }
  ```
</CodeGroup>

## Arguments

<ResponseField name="locator" type="any" required>
  The Playwright Locator object from which to extract the data.
</ResponseField>

<ResponseField name="options" type="object" required>
  <Expandable title="properties" defaultOpen>
    <ResponseField name="options.label" type="any" required>
      A label for this extraction process, used for billing and monitoring.
    </ResponseField>

    <ResponseField name="options.entityName" type="any" required>
      The name of the entity being extracted. Must be 1–50 characters long and can only contain letters, digits, periods, underscores, and hyphens.
    </ResponseField>

    <ResponseField name="options.entitySchema" type="any" required>
      The schema of the entity being extracted.
    </ResponseField>

    <ResponseField name="options.strategy" type="any" required>
      Optional. The strategy to use for extraction, if not provided, the html strategy with claude haiku will be used.
    </ResponseField>

    <ResponseField name="options.prompt" type="any" required>
      Optional. A prompt to guide the extraction process.
    </ResponseField>

    <ResponseField name="options.optionalPropertiesInvalidator" type="any" required>
      Optional. A function to invalidate optional properties.
    </ResponseField>

    <ResponseField name="options.variantKey" type="any" required>
      Optional. A variant key for the extraction process.
    </ResponseField>

    <ResponseField name="options.apiKey" type="any" required>
      Optional. An API key for AI extraction. Extractions made with your API key won't be billed to your account.
    </ResponseField>
  </Expandable>
</ResponseField>

## Returns: `any`

A promise that resolves to the extracted object.
