# SDK de Python

<figure><img src="https://github.com/oxylabs/oxylabs-ai-studio-py/raw/main/Ai-Studio2.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 Python sencillo 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.

## Requisitos

* python 3.10 o superior
* clave de API de AI Studio

## Instalación

```
pip install oxylabs-ai-studio
```

## Usage

### Rastrear (`AiCrawler.crawl`)

```python
from oxylabs_ai_studio.apps.ai_crawler import AiCrawler

crawler = AiCrawler(api_key="<API_KEY>")

url = "https://oxylabs.io"
result = crawler.crawl(
    url=url,
    user_prompt="Encuentra todas las páginas con precios de productos proxy",
    output_format="markdown",
    render_javascript=False,
    return_sources_limit=3,
    geo_location="US",
)
print("Resultados:")
for item in result.data:
    print(item, "\n")
```

#### **Parámetros de entrada**

* `url` (str): URL inicial para rastrear (**obligatorio**)
* `user_prompt` (str): Prompt en lenguaje natural para guiar la extracción (**obligatorio**)
* `output_format` (Literal\["json", "markdown"]): Formato de salida (predeterminado: "markdown")
* `schema` (dict | None): Esquema OpenAPI para extracción estructurada (requerido si output\_format es "json")
* `render_javascript` (bool): Renderizar JavaScript (predeterminado: False)
* `return_sources_limit` (int): Número máximo de fuentes a devolver (predeterminado: 25)
* `geo_location` (str): ubicación del proxy en formato ISO2.

### Extraer (`AiScraper.scrape`)

```python
from oxylabs_ai_studio.apps.ai_scraper import AiScraper

scraper = AiScraper(api_key="<API_KEY>")

schema = scraper.generate_schema(prompt="quiero analizar developer, platform, type, price game title, genre (array) and description")
print(f"Esquema generado: {schema}")

url = "https://sandbox.oxylabs.io/products/3"
result = scraper.scrape(
    url=url,
    output_format="json",
    schema=schema,
    render_javascript=False,
)
print(result)
```

#### **Parámetros de entrada**

* `url` (str): URL objetivo para extraer (**obligatorio**)
* `output_format` (Literal\["json", "markdown"]): Formato de salida (predeterminado: "markdown")
* `schema` (dict | None): Esquema OpenAPI para extracción estructurada (requerido si output\_format es "json")
* `render_javascript` (bool): Renderizar JavaScript (predeterminado: False)
* `geo_location` (str): ubicación del proxy en formato ISO2.

### Agente del navegador (`BrowserAgent.run`)

```python
from oxylabs_ai_studio.apps.browser_agent import BrowserAgent

browser_agent = BrowserAgent(api_key="<API_KEY>")

schema = browser_agent.generate_schema(
    prompt="nombre del juego, plataforma, estrellas de reseña y precio"
)
print("esquema: ", schema)

prompt = "Busca si existe el juego 'super mario odyssey' en la tienda. Si existe, encuentra el precio. Usa la barra de búsqueda para encontrar el juego."
url = "https://sandbox.oxylabs.io/"
result = browser_agent.run(
    url=url,
    user_prompt=prompt,
    output_format="json",
    schema=schema,
)
print(result.data)
```

#### **Parámetros de entrada**

* `url` (str): URL inicial para navegar (**obligatorio**)
* `user_prompt` (str): Prompt en lenguaje natural para la extracción (**obligatorio**)
* `output_format` (Literal\["json", "markdown", "html", "screenshot"]): Formato de salida (predeterminado: "markdown")
* `schema` (dict | None): Esquema OpenAPI para extracción estructurada (requerido si output\_format es "json")
* `geo_location` (str): ubicación del proxy en formato ISO2.

### Buscar (`AiSearch.search`)

```python
from oxylabs_ai_studio.apps.ai_search import AiSearch


search = AiSearch(api_key="<API_KEY>")

query = "lasagna recipe"
result = search.search(
    query=query,
    limit=5,
    render_javascript=False,
    return_content=True,
)
print(result.data)
```

#### **Parámetros de entrada**

* `query` (str): Qué buscar (**obligatorio**)
* `limit` (int): Número máximo de resultados a devolver (predeterminado: 10, máximo: 50)
* `render_javascript` (bool): Renderizar JavaScript (predeterminado: False)
* `return_content` (bool): Si devolver contenido en markdown en los resultados (predeterminado: True)
* `geo_location` (str): ubicación proxy de búsqueda en formato ISO2.

#### Mapa (`AiMap.map`)

```python
from oxylabs_ai_studio.apps.ai_map import AiMap


ai_map = AiMap(api_key="<API_KEY>")
payload = {
    "url": "https://career.oxylabs.io",
    "user_prompt": "páginas de ofertas de empleo",
    "return_sources_limit": 10,
    "geo_location": None,
    "render_javascript": False,
}
result = ai_map.map(**payload)
print(result.data)
```

#### **Parámetros de entrada**

* `url` (str): URL inicial para rastrear (**obligatorio**)
* `user_prompt` (str): Prompt en lenguaje natural para guiar la extracción (**obligatorio**)
* `render_javascript` (bool): Renderizar JavaScript (predeterminado: False)
* `return_sources_limit` (int): Número máximo de fuentes a devolver (predeterminado: 25)
* `geo_location` (str): ubicación del proxy en formato ISO2.

### Ejemplos de uso

Consulta el [ejemplos](https://github.com/oxylabs/oxylabs-ai-studio-py/tree/main/examples) carpeta para ejemplos de uso de cada método.&#x20;

Cada método tiene una versión async correspondiente.
