# SDK 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)

Oferecemos um SDK JavaScript para interagir perfeitamente com [Oxylabs AI Studio API](https://aistudio.oxylabs.io/) serviços, incluindo AI-Scraper, AI-Crawler, AI-Browser-Agent e outras ferramentas de extração de dados.

## Instalação

Instale o SDK:

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

Ou adicione `OXYLABS_AI_STUDIO_API_URL` e `OXYLABS_AI_STUDIO_API_KEY` valores ao `.env` arquivo, ou como suas variáveis de ambiente:

```sh
export OXYLABS_AI_STUDIO_API_KEY=your_api_key_here
```

## <sup>Uso</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('Testando geração de esquema...');
    const schema = await sdk.aiScraper.generateSchema({
      user_prompt: 'Extraia o título da página'
    });
    console.log('Esquema:', schema);
  } catch (error) {
    console.error('Erro na geração do 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('Testando scraping síncrono com saída JSON...');
    
    const options = {
      url: 'https://www.freelancer.com',
      user_prompt: 'Extraia todos os links',
      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 do scraping síncrono:', results);
  } catch (error) {
    console.error('Erro no scraping síncrono:', error.message);
  }
}

testScrapeOutputJson();
```

#### Parâmetros de entrada

* `url` (*string*): A URL de destino a ser processada.
* `user_prompt` (*string*): Instruções sobre quais dados extrair. Isso é usado para gerar automaticamente o `openapi_schema` ao usar o `scrapeWithAutoSchema` método.
* `output_format` (*string*): O formato desejado para a saída. Pode ser `markdown` ou `json`. Padrão: `markdown`.
* `render_html` (*boolean*): Especifica se deve renderizar JavaScript na página antes da extração. Padrão: `false`.
* `openapi_schema` (*Record\<string, any>*): Um objeto JSON Schema que define a estrutura dos dados de saída. Isso é obrigatório quando `output_format` está definido como `json`.
* `geo_location` (*string*): Especifica a localização geográfica (formato ISO2) a partir da qual a requisição deve ser simulada.

### 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('Testando crawling com saída JSON...');
    
    const options = {
      url: 'https://www.freelancer.com',
      output_format: OutputFormat.JSON,
      user_prompt: 'Obtenha páginas de anúncios de emprego',
      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 do crawling:', JSON.stringify(results, null, 2));      
  } catch (error) {
    console.error('Erro no crawling:', error.message);
  }
}

testCrawlOutputJson();
```

#### Parâmetros de entrada

* `url` (*string*): A URL inicial para o crawl.
* `crawl_prompt` (*string*): Instruções que definem os tipos de páginas a serem encontradas e rastreadas.
* `parse_prompt` (*string*): Instruções sobre quais dados extrair das páginas rastreadas. Isso é usado para gerar automaticamente o `openapi_schema` ao usar o `crawlWithAutoSchema` método.
* `output_format` (*string*): O formato desejado para a saída. Pode ser `markdown` ou `json`. Padrão: `markdown`.
* `max_pages` (*integer*): O número máximo de páginas ou fontes a retornar. Padrão: `25`.
* `render_html` (*boolean*): Especifica se deve renderizar JavaScript nas páginas antes da extração. Padrão: `false`.
* `openapi_schema` (*Record\<string, any>*): Um objeto JSON Schema que define a estrutura dos dados de saída. Isso é obrigatório quando `output_format` está definido como `json`.
* `geo_location` (*string*): Especifica a localização geográfica (formato ISO2) a partir da qual a requisição deve ser simulada.

### 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('Testando navegação síncrona com saída JSON...');
    
    const options = {
      url: 'https://www.freelancer.com',
      output_format: OutputFormat.JSON,
      user_prompt: 'Navegue até o primeiro anúncio de emprego que encontrar.',
      geo_location: "US",
      schema: {
        type: 'object',
        properties: {
          job_title: { type: 'string' }
        }
      }
    };
    
    const results = await sdk.browserAgent.browse(options);
    console.log('Resultados da navegação síncrona:', JSON.stringify(results, null, 2));
  } catch (error) {
    console.error('Erro na navegação síncrona:', error.message);
  }
}

testBrowseOutputJson();
```

#### Parâmetros de entrada

* `url` (*string*): A URL de destino onde o browser agent deve iniciar.
* `browse_prompt` (*string*): Instruções que definem as ações que o browser agent deve executar.
* `parse_prompt` (*string*): Instruções sobre quais dados extrair após executar as ações do navegador. Isso é usado para gerar automaticamente o `openapi_schema` ao usar o `browseWithAutoSchema` método.
* `output_format` (*string*): O formato desejado para a saída. Pode ser `markdown`, `html`, `json`, ou `screenshot`. Padrão: `markdown`.
* `render_html` (*boolean*): Especifica se deve renderizar JavaScript na página. Embora este seja um browser agent, essa flag pode influenciar certos comportamentos. Padrão: `false`.
* `openapi_schema` (*Record\<string, any>*): Um objeto JSON Schema que define a estrutura dos dados de saída. Isso é obrigatório quando `output_format` está definido como `json`.
* `geo_location` (*string*): Especifica a localização geográfica (formato ISO2) a partir da qual a requisição deve ser simulada.

### 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('Testando busca...');

    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 da busca:', JSON.stringify(results, null, 2));
  } catch (error) {
    console.error('Erro na busca:', error.message);
  }
}

testSearch();
```

#### Parâmetros de entrada

* `query` (*string*): A query de busca.
* `limit` (*integer*): O número máximo de resultados de busca a retornar. Máximo: 50.
* `render_javascript` (*boolean*): Se deve renderizar JavaScript na página. Padrão: `false`.
* `return_content` (*boolean*): Se deve retornar o conteúdo em markdown de cada resultado de busca. Padrão: `true`.
* `geo_location` (*string*): Especifica a localização geográfica (formato ISO2) a partir da qual a requisição deve ser simulada.

### 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('Testando map...');
    
    const options = {
      url: 'https://www.freelancer.com/jobs',
      user_prompt: 'Extraia anúncios de emprego na área de tecnologia',
      return_sources_limit: 10,
      geo_location: 'US',
      render_javascript: false
    };
    
    const results = await sdk.aiMap.map(options);
    console.log('Resultados do map:', JSON.stringify(results, null, 2));
  } catch (error) {
    console.error('Erro no map:', error.message);
  }
}

testMap();
```

#### Parâmetros de entrada

* `url` (*string*): A URL de destino para mapear e extrair dados.
* `user_prompt` (*string*): Instruções sobre quais dados extrair das páginas mapeadas.
* `return_sources_limit` (*integer*): O número máximo de fontes/páginas a retornar do processo de mapeamento.
* `geo_location` (*string*): A localização geográfica a ser usada na requisição de mapeamento (ex.: 'US', 'UK').
* `render_javascript` (*boolean*): Especifica se deve renderizar JavaScript nas páginas antes do mapeamento. Padrão: `false`.

### Exemplos de uso

Você pode encontrar mais exemplos de cada aplicação aqui:

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