# Privacy Scraper (`ultramarine_freezer/tele123`) Actor

Descarga imágenes y videos de perfiles de Privacy.com.br con opción de descarga masiva en ZIP

- **URL**: https://apify.com/ultramarine\_freezer/tele123.md
- **Developed by:** [JIGSAW](https://apify.com/ultramarine_freezer) (community)
- **Categories:** Social media, Automation, Other
- **Stats:** 535 total users, 10 monthly users, 0.6% runs succeeded, 1 bookmarks
- **User rating**: 2.85 out of 5 stars

## Pricing

from $10.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## 🎯 Privacy.com.br Scraper

El único y más completo scraper de contenido de Privacy.com.br. Descarga todo el contenido multimedia, incluyendo videos e imágenes. Empaquetado ZIP automatizado para descargar con un click.

---

### ✨ Características Principales

#### 🚀 Descarga Masiva
* **Descarga en ZIP:** Todos los archivos organizados en paquetes descargables.
* **Imágenes y Videos:** Soporte completo para ambos formatos.
* **Contenido Ilimitado:** Descarga perfiles completos sin límites.
* **Optimización Adaptativa:** Se ajusta automáticamente según la memoria disponible y tamaño del perfil.

#### 🛡️ Seguro y Confiable
* **Login Seguro:** Autenticación con token temporal.
* **Sesiones Persistente:** Usa tu sesión activa de Privacy.
* **Contenido Protegido:** Respeta contenido de pago bloqueado.
* **Protección OOM:** Sistema inteligente que previene errores de memoria.

#### ⚡ Fácil de Usar
* **Interfaz Intuitiva:** Configuración en minutos.
* **Resultados Organizados:** Dataset con vistas filtradas.
* **Descarga Directa:** Links de descarga con un clic.
* **Configuración Automática:** El scraper detecta y optimiza según tus recursos.

---

### 💾 Requisitos de Memoria

#### ⚠️ Memoria Mínima Requerida: 8 GB

Este actor requiere **al menos 8 GB de RAM** para funcionar correctamente. Si intentas ejecutarlo con menos memoria, **fallará inmediatamente** con un mensaje de error trilingüe explicando el problema.

#### 📊 Recomendaciones por Tamaño de Perfil

| Tamaño del perfil | RAM mínima | RAM recomendada | Velocidad esperada | Notas |
|-------------------|------------|-----------------|-------------------|-------|
| **Hasta 200 archivos** | 8 GB | 16 GB | ⚡ Normal | Perfecto con 8 GB |
| **200-500 archivos** | 16 GB | 32 GB | 🐢 Reducida con 8-16 GB | El actor reduce paralelismo automáticamente |
| **Más de 500 archivos** | 32 GB | 32 GB+ | 🐌 Un poco lenta | Se recomienda dividir en múltiples descargas |

#### ⚙️ Optimización Automática Inteligente

El actor incluye un **sistema de protección anti-OOM** que detecta automáticamente:

1. **Tu memoria disponible** (8 GB, 16 GB, 32 GB, etc.)
2. **El tamaño del perfil** (cantidad de archivos a descargar)

Y ajusta el **paralelismo dinámicamente** para prevenir errores:

##### 🛡️ Reglas de Protección Automática:

* **Perfil grande (>200 archivos) + RAM baja (<16 GB)**
  * ⚠️ Paralelismo ZIP reducido a **2**
  * 💡 Advertencia visible en logs
  
* **Perfil enorme (>400 archivos) + RAM baja (<32 GB)**
  * 🔴 Paralelismo ZIP reducido a **1** (máxima estabilidad)
  * 💡 Advertencia visible en logs

Cuando esto suceda, verás mensajes claros explicando:
* Por qué se redujo la velocidad
* Cómo puedes mejorarla (aumentar RAM o dividir descarga)

#### 💡 Consejos Prácticos:

✅ **Perfiles pequeños (<100 archivos)**: 8 GB es perfecto

✅ **Perfiles medianos (100-300 archivos)**: Usa 16 GB para mejor velocidad

✅ **Perfiles grandes (>300 archivos)**: Usa 32 GB

#### ⚠️ Nota sobre OOM (Out of Memory)

Aunque el actor está optimizado con protecciones anti-OOM, en **casos extremos** (perfiles con cientos de videos muy pesados de 500+ MB cada uno), puede ocurrir OOM incluso con 8 GB.

**Si esto te sucede:**

1. ✅ Aumenta la RAM a 16 GB o 32 GB
2. ✅ Divide la descarga en múltiples ejecuciones más pequeñas
3. ✅ Contacta soporte si el problema persiste con 32 GB

---

### 🎯 Cómo Empezar (¡Método Fácil!)

Este scraper ahora usa un método de **login directo**. Ya no necesitas generar un archivo `storageState.json` manualmente.

#### 🚀 Paso 1: Configurar el Actor
Ve a la pestaña **Input** y rellena los siguientes campos:

##### Inputs Obligatorios:
* **`profile_url`**: La URL completa del perfil que quieres descargar.
    * *Ejemplo:* `https://privacy.com.br/profile/nombredeusuario`
    * **¡Error Común!** NO uses una URL de `checkout`.

* **`email`**: Tu email de inicio de sesión en Privacy.com.br.

* **`password`**: Tu contraseña de Privacy.com.br.
    * *(Tu contraseña se maneja como un secreto y se encripta. El desarrollador no puede verla).*

##### Inputs Opcionales:
* **`download_images`**: Descargar imágenes (default: ✅).
* **`download_videos`**: Descargar videos (default: ✅).
* **`lote_descarga_videos`**: Videos a descargar simultáneamente.
    * **🤖 AUTOMÁTICO (Recomendado):** Deja este campo **vacío** y el scraper se adaptará automáticamente:
        * **8 GB de RAM:** 4 videos paralelos (modo conservador)
        * **16 GB de RAM:** 6 videos paralelos (modo balanceado)
        * **32 GB de RAM:** 7 videos paralelos (modo optimizado)
    * **⚙️ MANUAL (Avanzado):** Si deseas un control específico, ingresa un número entre 1-10:
        * `1-2`: Muy lento pero máxima estabilidad
        * `3-5`: Balance entre velocidad y estabilidad
        * `6+`: Rápido pero puede causar errores en perfiles muy grandes

---

#### 📥 Paso 2: Ejecutar y Descargar

1.  Haz clic en **Start**.
2.  El actor detectará automáticamente tu memoria disponible y optimizará la configuración.
3.  **Si tu perfil es grande**, verás advertencias indicando que se redujo el paralelismo para evitar errores.
4.  Iniciará sesión, raspará el perfil y descargará todo.
5.  Cuando termine (**Status: Succeeded**), ve a la pestaña **Storage** de la ejecución.
6.  En **Key-Value Store**, encontrarás:
    * **`DOWNLOAD_LINKS_[perfil].html`**: Página HTML con todos los enlaces de descarga organizados (ejemplo: `DOWNLOAD_LINKS_cristianoronaldo.html`) ✨
    * `ZIP_IMAGES_[perfil]_part1.zip`, `part2.zip`, etc.: ZIPs con las imágenes
    * `ZIP_VIDEOS_[perfil]_part1.zip`, `part2.zip`, etc.: ZIPs con los videos

---

### 🧠 Sistema de Optimización Adaptativa

El scraper incluye detección inteligente de memoria que optimiza automáticamente el rendimiento:

#### 📊 Tiers de Memoria

| Memoria Disponible | Tier | Videos Paralelos | ZIPs Paralelos | Tamaño ZIP | Tiempo Estimado* |
|-------------------|------|------------------|----------------|------------|------------------|
| **8 GB** | LOW | 4 | 4 | 400 MB | ~23-25 min |
| **16 GB** | MEDIUM | 6 | 6 | 550 MB | ~18-20 min |
| **32 GB** | HIGH | 7 | 9 | 700 MB | ~15-16 min |

*Para un perfil con ~15 GB de contenido (116 videos + 45 imágenes)

#### 🎯 Ventajas del Sistema Adaptativo
* **Sin configuración manual:** Funciona perfectamente "out of the box"
* **Máximo rendimiento:** Usa los recursos disponibles de forma óptima
* **Protección anti-OOM:** Configuraciones conservadoras que evitan errores de memoria
* **Ajuste dinámico:** Reduce paralelismo automáticamente en perfiles grandes
* **Flexible:** Puedes sobrescribir manualmente si lo deseas

---

### 🔐 Método Avanzado (Plan B): Usar Storage State

Si el login directo falla puedes usar el método manual.

1.  Deja los campos `email` y `password` **vacíos**.
2.  Ejecuta el script generador (ver abajo) en tu PC para crear un `storageState.json`.
3.  Pega el contenido de ese archivo en el campo **"🔑 Storage State (Avanzado - Opcional)"**.
4.  **Importante:** Si usas este método y también quieres descargar videos, **aún debes** proporcionar tu `email` y `password` en los campos normales.

**📋 Requisitos Previos (Solo la primera vez):**

1.  **Python Instalado:** Descárgalo desde [python.org](https://www.python.org/downloads/) (marca "Add Python to PATH").
2.  **Abrir Terminal/cmd:**
3.  **Instalar Bibliotecas:** Ejecuta estos dos comandos:
    ```
    pip install playwright asyncio
    ```
    ```
    playwright install chromium
    ```

**▶️ Ejecutando el Script Generador:**

1.  **Guarda el Código:** Copia el siguiente código y guárdalo como `generar_sesion.py`.
    ```
    import asyncio
    import json
    import os
    from playwright.async_api import async_playwright

    async def generate_storage_state():
        print("""
        🎯 PRIVACY.COM.BR - GENERADOR DE SESIÓN (MODO AVANZADO)
        ======================================================
        INSTRUCCIONES:
        1. Se abrirá un navegador.
        2. Inicia sesión MANUALMENTE en privacy.com.br.
        3. Resuelve cualquier CAPTCHA o 2FA.
        4. Cuando estés logueado, regresa aquí y presiona Enter.
        """)
        
        input(">>> Presiona Enter para abrir el navegador...")
        
        async with async_playwright() as p:
            browser = await p.chromium.launch(headless=False)
            context = await browser.new_context()
            page = await context.new_page()
            
            print("🌐 Abriendo privacy.com.br...")
            await page.goto('https://privacy.com.br', wait_until='networkidle')
            
            print("\n🔐 Inicia sesión MANUALMENTE en el navegador...")
            input("\n>>> ✅ Cuando hayas iniciado sesión, regresa AQUÍ y presiona Enter...")
            
            print("\n💾 Guardando estado de la sesión...")
            storage_state = await context.storage_state()
            
            file_path = 'storageState.json'
            with open(file_path, 'w', encoding='utf-8') as f:
                json.dump(storage_state, f, indent=2, ensure_ascii=False)
            
            print(f"\n🎉 ¡Archivo '{os.path.abspath(file_path)}' GENERADO!")
            print("1. Abre este archivo con un editor de texto (Bloc de Notas).")
            print("2. Copia TODO el contenido (Ctrl+A, Ctrl+C).")
            print("3. Pégalo en el campo 'Storage State (Avanzado)' de Apify.")
            
            await browser.close()

    if __name__ == "__main__":
        asyncio.run(generate_storage_state())
    ```
2.  **Ejecuta el Script:**
    ```
    python generar_sesion.py
    ```
    ![Terminal Ejecutando Script](https://raw.githubusercontent.com/axel845845/Privacy.com.br-Downloader-Scraper-Mass-Download-Images-and-Videos/main/Sin%20t%C3%ADtulo.png)
3.  **Sigue las instrucciones:** Inicia sesión en el navegador que se abre y luego presiona Enter en la terminal.
    ![Terminal Confirmando Creación](https://raw.githubusercontent.com/axel845845/Privacy.com.br-Downloader-Scraper-Mass-Download-Images-and-Videos/main/t1.png)
    ![Explorador Mostrando Archivo](https://raw.githubusercontent.com/axel845845/Privacy.com.br-Downloader-Scraper-Mass-Download-Images-and-Videos/main/storage%20state%20creado.png)

4.  **Copia y Pega:**
    Abre el `storageState.json`, selecciona **TODO** (Ctrl+A) y cópialo (Ctrl+C).
    
    ![Mostrando Archivo 1](https://raw.githubusercontent.com/axel845845/Privacy.com.br-Downloader-Scraper-Mass-Download-Images-and-Videos/main/storage%20copiado%201.png)
    
    Pégalo en el campo `Storage State (Avanzado - Opcional)` en Apify.
    
    ![Insertar Storage State](https://raw.githubusercontent.com/axel845845/Privacy.com.br-Downloader-Scraper-Mass-Download-Images-and-Videos/main/insertar%20storage%20state.png)

---

### 📊 Resultados y Salida

#### 🗂️ Estructura de Resultados

##### 🌐 Página de Descargas HTML
En **Storage → Key-Value Store**, encontrarás:
* **`DOWNLOAD_LINKS_[perfil].html`**: Abre este archivo para ver una página web elegante con:
    * Estadísticas de la descarga
    * Enlaces de descarga directa organizados por tipo (imágenes/videos)
    * Información de cada ZIP (tamaño, cantidad de archivos)
    * **Botones de descarga con un clic** - ¡Funcionan directamente!

##### 📦 Archivos ZIP (En Key-Value Store):
* **Para Imágenes:**
    * `ZIP_IMAGES_[perfil]_[timestamp]_part1.zip`
    * Generalmente 1 solo ZIP (las imágenes son más pequeñas)

* **Para Videos:**
    * `ZIP_VIDEOS_[perfil]_[timestamp]_part1.zip`
    * `ZIP_VIDEOS_[perfil]_[timestamp]_part2.zip`
    * ... (divididos en partes de 400-700 MB según tu memoria disponible)

##### 📊 Dataset Organizado (En Storage → Dataset):
* **Vista "Default"**: Lista completa de cada archivo descargado con sus metadatos.
* Cada archivo (imagen/video) se guarda también **individualmente** en el Key-Value Store con su propia URL de descarga directa.

#### 📋 Campos del Dataset (por cada archivo descargado)

| Campo             | Descripción                                          | Ejemplo                     |
| :---------------- | :--------------------------------------------------- | :-------------------------- |
| **`type`** | Tipo de archivo                                      | `image` / `video`           |
| **`filename`** | Nombre del archivo generado                          | `0015_imagen_abc123.jpg`    |
| **`profile`** | Nombre del perfil descargado                         | `denybarbie`                |
| **`mediaId`** | ID único del medio en Privacy                        | `abc123def-4567-...`        |
| **`originalIndex`** | Posición original en la lista de medios              | `15`                        |
| **`fileSizeKB`** / **`fileSizeMB`** | Tamaño en KB o MB                   | `154.2` / `25.5`            |
| **`kvStoreKey`** | Clave para encontrar el archivo en Key-Value Store   | `IMAGES_denybarbie_abc123`   |
| **`timestamp`** | Momento de la descarga (Unix timestamp)              | `1761xxxxxx.xxx`            |

---

### 💡 Consejos y Mejores Prácticas

#### 🚀 Para Mejor Rendimiento
* **Deja el campo de paralelismo vacío** para que el sistema se adapte automáticamente - es la opción más confiable.
* Si tienes **32 GB de RAM**, el scraper tardará ~15-16 minutos para un perfil de 15 GB.
* Si tienes **8 GB de RAM**, el scraper tardará ~23-25 minutos pero será 100% estable.
* **Para perfiles grandes (>200 archivos)**, considera usar **16 GB o más** para evitar reducciones de velocidad.
* **Actualiza tu `storage_state` regularmente** (cada pocos días o si empieza a fallar) si usas el método avanzado.
* Usa el archivo **`DOWNLOAD_LINKS.html`** para acceder fácilmente a todos tus ZIPs.

#### 🔒 Seguridad
* **NUNCA compartas tu `storage_state`**. Contiene tu sesión.
* Introduce tu `email` y `password` directamente en los campos de Apify (marcados como secretos). No los pongas en texto plano en otros lugares.

---

### ❌ Solución de Problemas Comunes

#### Error: `MEMORIA INSUFICIENTE` (Trilingüe ES/PT/EN)
* **Causa:** Intentaste ejecutar el actor con menos de 8 GB de RAM.
* **Solución:** Ve a la configuración del Actor y aumenta la memoria a **al menos 8 GB (8192 MB)**.
* **Nota:** Verás un mensaje detallado en 3 idiomas explicando por qué necesitas 8 GB mínimo.

#### Error: `Login directo falló...`
* **Causa:** Tus credenciales de `email` o `password` son incorrectas.
* **Solución:** Verifica tu email y contraseña. Si estás 100% seguro de que son correctos, tu cuenta podría tener 2FA (Autenticación de Dos Factores) o estar bloqueada por un CAPTCHA.
* **Solución Avanzada:** Usa el **Método Avanzado (Plan B)** de arriba para generar un `storageState` manualmente.

#### Error: `ERROR CRÍTICO: ACCESO DENEGADO` (Trilingüe ES/PT/EN)
* **Causa:** No estás **suscrito** al perfil que intentas descargar, o el perfil es privado/no existe.
* **Solución:** 
    1. Verifica que estás suscrito al perfil en Privacy.com.br
    2. Verifica que el perfil existe y tiene contenido
    3. Usa las credenciales correctas
* **Nota:** Este error NO se solucionará reintentando. El actor usa **exit code 2** para evitar reintentos automáticos innecesarios.

#### Error: `La URL del perfil proporcionada (...) no es válida...`
* **Causa:** La URL no tiene el formato correcto (`https://privacy.com.br/profile/nombredeusuario`). Probablemente pegaste una URL de `checkout`.
* **Solución:** Copia la URL directamente desde la barra de direcciones del navegador cuando estés viendo el perfil deseado.

#### Advertencia: `Paralelismo reducido por perfil grande + RAM limitada`
* **Causa:** Tienes un perfil con >200 o >400 archivos y RAM limitada (<16 GB o <32 GB).
* **Efecto:** El actor redujo automáticamente el paralelismo a 2 o 1 para **prevenir OOM**.
* **Solución para más velocidad:**
    1. Aumenta la RAM a 16 GB o 32 GB, o
    2. Divide la descarga en múltiples ejecuciones más pequeñas
* **Nota:** Esto es **normal y esperado** - el sistema te está protegiendo de errores.

#### Error: El Actor falla con OOM (Out of Memory) incluso con 8 GB
* **Causa:** Perfil extremadamente grande (>400 archivos) con videos muy pesados.
* **Solución:**
    1. Aumenta a **16 GB o 32 GB** de RAM
    2. Divide la descarga en múltiples ejecuciones
    3. Contacta soporte si persiste con 32 GB

#### Error: `storageState JSON inválido...` o `El Storage State... no contiene cookies...`
* **Causa:** Estás usando el **Método Avanzado** y pegaste un JSON vacío, incompleto o generado antes de iniciar sesión.
* **Solución:** Repite los pasos del **Método Avanzado** con mucho cuidado. Asegúrate de iniciar sesión en el navegador *antes* de presionar Enter en la terminal. Asegúrate de copiar **TODO** el contenido del archivo.

#### El scraper está usando menos memoria de la esperada
* **Esto es normal y bueno.** El sistema adaptativo es conservador para evitar errores de OOM.
* Con 32 GB disponibles, el scraper usará ~5-7 GB en promedio, dejando mucho margen de seguridad.
* El rendimiento sigue siendo óptimo incluso sin usar el 100% de la RAM.

---
### 📞 Soporte y Contacto
* **Email:** `Axel845890@proton.me`
* **Problemas Técnicos:** Usa la pestaña **Issues** en la página del Actor en Apify para reportar bugs o hacer preguntas técnicas.

---

### 💰 Precios y Planes

#### 🎯 Plan Único
* **Precio:** $25/mes (Suscripción recurrente)
* **Incluye:**
    * Descargas ilimitadas durante el mes.
    * Soporte prioritario via email/Issues.
    * Acceso a todas las features (ZIPs, Dataset, Optimización Adaptativa, Protección anti-OOM).
    * _(Nota: El costo de uso de la plataforma Apify se cobra aparte según tu plan de Apify)_

#### 🆓 Prueba Gratuita
* La prueba gratuita ya no está disponible debido a uso indebido.
* Si necesitas evaluar el actor antes de suscribirte, puedes contactarme para una demo limitada.

---

### 🔄 Changelog

#### (Noviembre 2025) - Protección Anti-OOM & Enlaces de Descarga Directos
* 🛡️ **Nuevo:** Validación de 8 GB mínimo con mensajes trilingües (ES/PT/EN)
* 🧠 **Nuevo:** Sistema de protección anti-OOM con ajuste dinámico de paralelismo
* 📊 **Nuevo:** Detección automática de perfiles grandes (>200, >400 archivos)
* 🔴 **Nuevo:** Exit code 2 para errores críticos (evita auto-restarts innecesarios)
* 🌐 **Mejora:** Página HTML con botones de descarga directa funcionales
* ⏱️ **Mejora:** Timeout reducido de 20s a 10s para detección más rápida de errores
* 💬 **Mejora:** Advertencias claras cuando se reduce paralelismo por memoria limitada
* 📋 **Mejora:** Mensajes trilingües para error "no suscrito al perfil"

#### (Noviembre 2025) - Optimización Adaptativa
* ✨ **Nuevo:** Sistema de detección automática de memoria con 3 tiers (LOW/MEDIUM/HIGH)
* ⚡ **Mejora:** Configuración de paralelismo automática según recursos disponibles
* 📦 **Mejora:** Tamaños de ZIP optimizados por tier (400MB/550MB/700MB)
* 🎯 **Mejora:** Reducción de tiempo de 28 min a 15-16 min en configuración HIGH (32 GB)
* 🛡️ **Mejora:** Mejor protección contra errores OOM en configuraciones LOW (8 GB)
* 🌐 **Mejora:** Página HTML de descargas más informativa con tier de memoria detectado

---

### ⚖️ Términos de Uso

#### ✅ Permitido
* Descargar contenido al que tengas **acceso legítimo** a través de tu propia cuenta y suscripciones activas en Privacy.com.br.
* Uso **personal** para archivo o backup.
* Cumplir con los Términos de Servicio de Privacy.com.br.

#### ❌ No Permitido
* Redistribuir comercialmente el contenido descargado.
* Compartir el contenido descargado públicamente.
* Descargar contenido al que no tengas derecho de acceso.
* Usar el scraper para cualquier actividad ilegal o que viole los términos de Privacy.
* Realizar descargas masivas excesivas que puedan sobrecargar los servidores de Privacy.

### 🔒 Privacidad
* Tu `storageState`, `email` y `password` se tratan como secretos en Apify y se encriptan.
* El scraper no almacena tus credenciales después de la ejecución.
* Los datos descargados (imágenes/videos) se almacenan temporalmente en tu cuenta de Apify hasta que los elimines.

### 🔞 Advertencia de Contenido
Este scraper está diseñado para interactuar con Privacy.com.br, una plataforma que puede alojar contenido para adultos. Al utilizar esta herramienta, confirmas que:
* Tienes la edad legal requerida (18+ o la mayoría de edad en tu jurisdicción) para ver dicho contenido.
* Comprendes la naturaleza del contenido al que podrías acceder.
* Utilizarás esta herramienta de forma responsable, ética y legal.
* Solo descargarás contenido al que tengas **acceso legítimo** mediante tu cuenta y suscripciones.

---
**Descargo de responsabilidad:** Este scraper se proporciona "tal cual", sin garantías. El usuario es el único responsable de asegurar que su uso cumpla con todas las leyes aplicables y los términos de servicio de Privacy.com.br. El desarrollador no se hace responsable del mal uso de esta herramienta ni del contenido descargado. Úsalo bajo tu propio riesgo y responsabilidad.

# Actor input Schema

## `profile_url` (type: `string`):

La URL completa del perfil que quieres descargar. Ejemplo: https://privacy.com.br/profile/nombredeusuario
## `email` (type: `string`):

Tu email de inicio de sesión en Privacy.com.br.
## `password` (type: `string`):

Tu contraseña de Privacy.com.br. Se guarda de forma segura.
## `proxy_config` (type: `string`):

Tipo de proxy a usar para evitar bloqueos de Privacy. Recomendado: 'auto' o 'residential'. Opciones: 'auto' (autoselección), 'residential' (residencial), 'datacenter' (datacenter), 'none' (sin proxy).
## `download_images` (type: `boolean`):

Descargar todas las imágenes accesibles del perfil.
## `download_videos` (type: `boolean`):

Descargar todos los videos accesibles del perfil.
## `lote_descarga_videos` (type: `integer`):

AUTOMÁTICO: Deja vacío para que se adapte según tu memoria (8GB=4, 16GB=6, 32GB=7). MANUAL: Ingresa un número (1-10) para forzar ese valor. Valores altos pueden causar errores en perfiles grandes.
## `create_zip_files` (type: `boolean`):

¿Crear archivos ZIP con el contenido descargado? Si desactivas esto, solo recibirás enlaces directos a cada archivo. Desactivar ZIPs es MUCHO más rápido (3-5x) y usa menos RAM (~70% menos), ideal para perfiles grandes (>500 archivos) o RAM limitada (8GB).
## `storage_state` (type: `string`):

OPCIONAL: Pega tu storageState.json personalizado. Si se proporciona, se usará en lugar del login con email/contraseña.

## Actor input object example

```json
{
  "profile_url": "https://privacy.com.br/profile/",
  "proxy_config": "auto",
  "download_images": true,
  "download_videos": true,
  "create_zip_files": true
}
````

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "profile_url": "https://privacy.com.br/profile/"
};

// Run the Actor and wait for it to finish
const run = await client.actor("ultramarine_freezer/tele123").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "profile_url": "https://privacy.com.br/profile/" }

# Run the Actor and wait for it to finish
run = client.actor("ultramarine_freezer/tele123").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "profile_url": "https://privacy.com.br/profile/"
}' |
apify call ultramarine_freezer/tele123 --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=ultramarine_freezer/tele123",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Privacy Scraper",
        "description": "Descarga imágenes y videos de perfiles de Privacy.com.br con opción de descarga masiva en ZIP",
        "version": "0.0",
        "x-build-id": "nBcNV6FOD6NmPAuQS"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/ultramarine_freezer~tele123/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-ultramarine_freezer-tele123",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/ultramarine_freezer~tele123/runs": {
            "post": {
                "operationId": "runs-sync-ultramarine_freezer-tele123",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/ultramarine_freezer~tele123/run-sync": {
            "post": {
                "operationId": "run-sync-ultramarine_freezer-tele123",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "profile_url",
                    "email",
                    "password"
                ],
                "properties": {
                    "profile_url": {
                        "title": "🎯 URL del Perfil (OBLIGATORIO)",
                        "pattern": "^https://privacy\\.com\\.br/profile/[^/]+/?$",
                        "type": "string",
                        "description": "La URL completa del perfil que quieres descargar. Ejemplo: https://privacy.com.br/profile/nombredeusuario"
                    },
                    "email": {
                        "title": "📧 Email de Privacy (OBLIGATORIO)",
                        "type": "string",
                        "description": "Tu email de inicio de sesión en Privacy.com.br."
                    },
                    "password": {
                        "title": "🔒 Contraseña de Privacy (OBLIGATORIO)",
                        "type": "string",
                        "description": "Tu contraseña de Privacy.com.br. Se guarda de forma segura."
                    },
                    "proxy_config": {
                        "title": "🌐 Configuración de Proxy",
                        "enum": [
                            "auto",
                            "residential",
                            "datacenter",
                            "none"
                        ],
                        "type": "string",
                        "description": "Tipo de proxy a usar para evitar bloqueos de Privacy. Recomendado: 'auto' o 'residential'. Opciones: 'auto' (autoselección), 'residential' (residencial), 'datacenter' (datacenter), 'none' (sin proxy).",
                        "default": "auto"
                    },
                    "download_images": {
                        "title": "🖼️ Descargar Imágenes",
                        "type": "boolean",
                        "description": "Descargar todas las imágenes accesibles del perfil.",
                        "default": true
                    },
                    "download_videos": {
                        "title": "🎬 Descargar Videos",
                        "type": "boolean",
                        "description": "Descargar todos los videos accesibles del perfil.",
                        "default": true
                    },
                    "lote_descarga_videos": {
                        "title": "📦 Videos Paralelos (Automático)",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "AUTOMÁTICO: Deja vacío para que se adapte según tu memoria (8GB=4, 16GB=6, 32GB=7). MANUAL: Ingresa un número (1-10) para forzar ese valor. Valores altos pueden causar errores en perfiles grandes."
                    },
                    "create_zip_files": {
                        "title": "📦 Crear archivos ZIP",
                        "type": "boolean",
                        "description": "¿Crear archivos ZIP con el contenido descargado? Si desactivas esto, solo recibirás enlaces directos a cada archivo. Desactivar ZIPs es MUCHO más rápido (3-5x) y usa menos RAM (~70% menos), ideal para perfiles grandes (>500 archivos) o RAM limitada (8GB).",
                        "default": true
                    },
                    "storage_state": {
                        "title": "🔑 Storage State (Avanzado - Opcional)",
                        "type": "string",
                        "description": "OPCIONAL: Pega tu storageState.json personalizado. Si se proporciona, se usará en lugar del login con email/contraseña."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
