# SDK de JavaScript

<figure><img src="https://raw.githubusercontent.com/oxylabs/oxylabs-ai-studio-js/refs/heads/main/images/Github-AI-Studio-1262x525px%20new.png" alt=""><figcaption></figcaption></figure>

[![](https://camo.githubusercontent.com/ec456302fbdba5490012a0bc8d2739619d0e57dd8840197d06b33b9ea3b35bda/68747470733a2f2f646362616467652e6c696d65732e70696e6b2f6170692f7365727665722f5064733367426d4b4d483f7374796c653d666f722d7468652d6261646765267468656d653d646973636f7264)](https://discord.gg/Pds3gBmKMH) [![YouTube](https://camo.githubusercontent.com/1b748ffea39adfb777030373ce78d8bc07d3625a9039b324bcbc708a91f376c1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f596f75547562652d4f78796c6162732d7265643f7374796c653d666f722d7468652d6261646765266c6f676f3d796f7574756265266c6f676f436f6c6f723d7768697465)](https://www.youtube.com/@oxylabs)

Ofrecemos un SDK de JavaScript para interactuar sin problemas con [Oxylabs AI Studio API](https://aistudio.oxylabs.io/) servicios, incluyendo AI-Scraper, AI-Crawler, AI-Browser-Agent y otras herramientas de extracción de datos.

## Instalación

Instala el SDK:

```sh
npm install oxylabs-ai-studio
```

Añade cualquiera de `OXYLABS_AI_STUDIO_API_URL` y `OXYLABS_AI_STUDIO_API_KEY` valores al `.env` archivo, o como tus variables de entorno:

```sh
export OXYLABS_AI_STUDIO_API_KEY=your_api_key_here
```

## <sup>Usage</sup>

### AI-Scraper

```javascript
import { 
  OxylabsAIStudioSDK
} from 'oxylabs-ai-studio';

const sdk = new OxylabsAIStudioSDK({
  apiKey: 'your_api_key_here',
  timeout: 120000,
  retryAttempts: 3,
});

async function testGenerateSchema() {
  try {
    console.log('Probando generación de esquema...');
    const schema = await sdk.aiScraper.generateSchema({
      user_prompt: 'Extrae el título de la página'
    });
    console.log('Esquema:', schema);
  } catch (error) {
    console.error('Error en la generación del esquema:', error.message);
  }
}

testGenerateSchema();
```

#### Uso básico

```javascript
import { 
  OxylabsAIStudioSDK, 
  OutputFormat
} from 'oxylabs-ai-studio';

const sdk = new OxylabsAIStudioSDK({
  apiKey: 'your_api_key_here',
  timeout: 120000,
  retryAttempts: 3,
});

async function testScrapeOutputJson() {
  try {
    console.log('Probando scraping sincrónico con salida JSON...');
    
    const options = {
      url: 'https://www.freelancer.com',
      user_prompt: 'Extrae todos los enlaces',
      output_format: OutputFormat.JSON,
      geo_location: "US",
      schema: {
        type: 'object',
        properties: {
          links: { type: 'array', items: { type: 'string' } }
        }
      }
    };
    
    const results = await sdk.aiScraper.scrape(options);
    console.log('Resultados de scraping sincrónico:', results);
  } catch (error) {
    console.error('Error en scraping sincrónico:', error.message);
  }
}

testScrapeOutputJson();
```

#### Parámetros de entrada

* `url` (*string*): La URL objetivo a procesar.
* `user_prompt` (*string*): Instrucciones sobre qué datos extraer. Esto se usa para generar automáticamente el `openapi_schema` al usar el `scrapeWithAutoSchema` método.
* `output_format` (*string*): El formato deseado para la salida. Puede ser `markdown` o `json`. Por defecto es `markdown`.
* `render_html` (*booleano*): Especifica si renderizar JavaScript en la página antes de la extracción. Por defecto es `false`.
* `openapi_schema` (*Record\<string, any>*): Un objeto JSON Schema que define la estructura de los datos de salida. Esto es obligatorio cuando `output_format` está configurado a `json`.
* `geo_location` (*string*): Especifica la ubicación geográfica (formato ISO2) desde la cual se debe simular la solicitud.

### AI-Crawler

#### Uso básico

```javascript
import { 
  OxylabsAIStudioSDK, 
  OutputFormat
} from 'oxylabs-ai-studio';

const sdk = new OxylabsAIStudioSDK({
  apiKey: 'your_api_key_here',
  timeout: 120000,
  retryAttempts: 3,
});

async function testCrawlOutputJson() {
  try {
    console.log('Probando crawling con salida JSON...');
    
    const options = {
      url: 'https://www.freelancer.com',
      output_format: OutputFormat.JSON,
      user_prompt: 'Obtener páginas de anuncios de empleo',
      return_sources_limit: 3,
      geo_location: "DE",
      schema: {
        type: "object",
        properties: {
          jobAd: {
            type: "object",
            properties: {
              position_title: {
                type: "string"
              },
              salary: {
                type: "string"
              }
            }
          }
        }
      }
    };
    
    const results = await sdk.aiCrawler.crawl(options);
    console.log('Resultados de crawling:', JSON.stringify(results, null, 2));      
  } catch (error) {
    console.error('Error en crawling:', error.message);
  }
}

testCrawlOutputJson();
```

#### Parámetros de entrada

* `url` (*string*): La URL de inicio para el crawling.
* `crawl_prompt` (*string*): Instrucciones que definen los tipos de páginas a encontrar y rastrear.
* `parse_prompt` (*string*): Instrucciones sobre qué datos extraer de las páginas rastreadas. Esto se usa para generar automáticamente el `openapi_schema` al usar el `crawlWithAutoSchema` método.
* `output_format` (*string*): El formato deseado para la salida. Puede ser `markdown` o `json`. Por defecto es `markdown`.
* `max_pages` (*integer*): El número máximo de páginas o fuentes a devolver. Por defecto es `25`.
* `render_html` (*booleano*): Especifica si renderizar JavaScript en las páginas antes de la extracción. Por defecto es `false`.
* `openapi_schema` (*Record\<string, any>*): Un objeto JSON Schema que define la estructura de los datos de salida. Esto es obligatorio cuando `output_format` está configurado a `json`.
* `geo_location` (*string*): Especifica la ubicación geográfica (formato ISO2) desde la cual se debe simular la solicitud.

### Browser-Agent

#### Uso básico

```javascript
import { 
  OxylabsAIStudioSDK, 
  OutputFormat
} from 'oxylabs-ai-studio';

const sdk = new OxylabsAIStudioSDK({
  apiKey: 'your_api_key_here',
  timeout: 120000,
  retryAttempts: 3,
});

async function testBrowseOutputJson() {
  try {
    console.log('Probando navegación sincrónica con salida JSON...');
    
    const options = {
      url: 'https://www.freelancer.com',
      output_format: OutputFormat.JSON,
      user_prompt: 'Navega hasta el primer anuncio de empleo que encuentres.',
      geo_location: "US",
      schema: {
        type: 'object',
        properties: {
          job_title: { type: 'string' }
        }
      }
    };
    
    const results = await sdk.browserAgent.browse(options);
    console.log('Resultados de navegación sincrónica:', JSON.stringify(results, null, 2));
  } catch (error) {
    console.error('Error en navegación sincrónica:', error.message);
  }
}

testBrowseOutputJson();
```

#### Parámetros de entrada

* `url` (*string*): La URL objetivo donde el agente del navegador debe comenzar.
* `browse_prompt` (*string*): Instrucciones que definen las acciones que debe realizar el agente del navegador.
* `parse_prompt` (*string*): Instrucciones sobre qué datos extraer después de realizar las acciones del navegador. Esto se usa para generar automáticamente el `openapi_schema` al usar el `browseWithAutoSchema` método.
* `output_format` (*string*): El formato deseado para la salida. Puede ser `markdown`, `html`, `json`, o `screenshot`. Por defecto es `markdown`.
* `render_html` (*booleano*): Especifica si renderizar JavaScript en la página. Aunque este es un agente de navegador, este indicador puede influir en ciertos comportamientos. Por defecto es `false`.
* `openapi_schema` (*Record\<string, any>*): Un objeto JSON Schema que define la estructura de los datos de salida. Esto es obligatorio cuando `output_format` está configurado a `json`.
* `geo_location` (*string*): Especifica la ubicación geográfica (formato ISO2) desde la cual se debe simular la solicitud.

### AI-Search

#### Uso básico

```javascript
import {
  OxylabsAIStudioSDK,
} from 'oxylabs-ai-studio';

const sdk = new OxylabsAIStudioSDK({
  apiKey: 'your_api_key_here',
  timeout: 120000,
  retryAttempts: 3,
});

async function testSearch() {
  try {
    console.log('Probando búsqueda...');

    const options = {
      query: 'weather in London',
      limit: 3,
      return_content: true,
      render_javascript: false,
      geo_location: "IT",
    };

    const results = await sdk.aiSearch.search(options);
    console.log('Resultados de búsqueda:', JSON.stringify(results, null, 2));
  } catch (error) {
    console.error('Error en búsqueda:', error.message);
  }
}

testSearch();
```

#### Parámetros de entrada

* `query` (*string*): La consulta de búsqueda.
* `limit` (*integer*): El número máximo de resultados de búsqueda a devolver. Máximo: 50.
* `render_javascript` (*booleano*): Si renderizar JavaScript en la página. Por defecto es `false`.
* `return_content` (*booleano*): Si devolver el contenido en markdown de cada resultado de búsqueda. Por defecto es `true`.
* `geo_location` (*string*): Especifica la ubicación geográfica (formato ISO2) desde la cual se debe simular la solicitud.

### AI-Map

#### Uso básico

```javascript
import { 
  OxylabsAIStudioSDK
} from 'oxylabs-ai-studio';

const sdk = new OxylabsAIStudioSDK({
  apiKey: 'your_api_key_here',
  timeout: 120000,
  retryAttempts: 3,
});

async function testMap() {
  try {
    console.log('Probando map...');
    
    const options = {
      url: 'https://www.freelancer.com/jobs',
      user_prompt: 'Extrae anuncios de empleo tecnológicos',
      return_sources_limit: 10,
      geo_location: 'US',
      render_javascript: false
    };
    
    const results = await sdk.aiMap.map(options);
    console.log('Resultados de map:', JSON.stringify(results, null, 2));
  } catch (error) {
    console.error('Error en map:', error.message);
  }
}

testMap();
```

#### Parámetros de entrada

* `url` (*string*): La URL objetivo para mapear y extraer datos.
* `user_prompt` (*string*): Instrucciones sobre qué datos extraer de las páginas mapeadas.
* `return_sources_limit` (*integer*): El número máximo de fuentes/páginas a devolver del proceso de mapeo.
* `geo_location` (*string*): La ubicación geográfica a usar para la solicitud de mapeo (p. ej., 'US', 'UK').
* `render_javascript` (*booleano*): Especifica si renderizar JavaScript en las páginas antes del mapeo. Por defecto es `false`.

### Ejemplos de uso

Puedes encontrar más ejemplos de cada aplicación aquí:

* [Ejemplo de Browser-agent](https://github.com/oxylabs/oxylabs-ai-studio-js/blob/main/examples/browser-agent.js)
* [Ejemplo de AI-Crawler](https://github.com/oxylabs/oxylabs-ai-studio-js/blob/main/examples/ai-crawler.js)
* [Ejemplo de AI-Scraper](https://github.com/oxylabs/oxylabs-ai-studio-js/blob/main/examples/ai-scraper.js)
* [Ejemplo de AI-Search](https://github.com/oxylabs/oxylabs-ai-studio-js/blob/main/examples/ai-search.js)
* [Ejemplo de AI-Map](https://github.com/oxylabs/oxylabs-ai-studio-js/blob/main/examples/ai-map.js)
