# PuntoTicket Chile Events Scraper (`scraperschile/puntoticket`) Actor

Extrae el catálogo público de eventos de PuntoTicket Chile: nombre, categoría, fecha, recinto, comuna, imagen, URL y, opcionalmente, detalles públicos de ubicación y rango de precios.

- **URL**: https://apify.com/scraperschile/puntoticket.md
- **Developed by:** [Scrapers Chile](https://apify.com/scraperschile) (community)
- **Categories:** Automation, Lead generation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## PuntoTicket Chile Scraper - eventos, fechas, recintos y precios

Extrae el catálogo público de eventos de PuntoTicket Chile en un dataset estructurado. Obtén nombres, categorías, fechas publicadas, recintos, comunas, imágenes y enlaces. Opcionalmente, completa descripción, artistas, dirección, coordenadas y rango de precios cuando esos datos aparecen en la página pública del evento.

El resultado puede descargarse como JSON, CSV o Excel, o consumirse mediante la API de Apify para análisis de cartelera, planificación cultural, seguimiento de recintos, investigación de mercado y calendarios de eventos.

### Importante antes de publicar

Este Actor permanece **privado**. Las [condiciones vigentes de PuntoTicket](https://www.puntoticket.com/paginas/condiciones20marzo2026) señalan que el sitio se usa para fines personales y prohíben descargar, modificar o alterar sus contenidos. Por eso no debe monetizarse ni publicarse en Apify Store sin autorización escrita de PuntoTicket.

El código queda preparado para una eventual autorización, pero la visibilidad y los precios están desactivados. Una aceptación unilateral del usuario no reemplaza el permiso del titular del sitio.

### Alcance seguro

El Actor está limitado a información de catálogo y páginas públicas de eventos:

- No inicia sesión ni usa cuentas de clientes.
- No compra, reserva ni selecciona entradas.
- No abre páginas de pago, despacho, registro o datos personales.
- No consulta disponibilidad de asientos en tiempo real.
- No interactúa con Queue-it ni intenta evitar filas virtuales.
- Aplica límites pequeños, pausas entre detalles y reintentos acotados.

### Datos entregados

- Identificador y nombre del evento.
- Categoría, fecha publicada, recinto y comuna.
- Imagen y URL pública.
- Con `includeDetails`: fecha estructurada, descripción, artistas, dirección, coordenadas, moneda y rango de precios cuando existe JSON-LD público.
- Página fuente y fecha de extracción.

### Entrada de ejemplo

```json
{
  "category": "musica",
  "search": "rock",
  "includeDetails": false,
  "maxResults": 25
}
```

Las categorías permitidas son `all`, `musica`, `deportes`, `teatro`, `familia` y `especiales`.

### Resultado de ejemplo

```json
{
  "event_id": "BIZ001",
  "name": "Festival de ejemplo",
  "category": "Festival",
  "date_text": "10 de octubre 2026",
  "venue": "Parque de ejemplo",
  "commune": "Santiago Centro",
  "low_price": null,
  "high_price": null,
  "currency": null,
  "url": "https://www.puntoticket.com/festival-ejemplo",
  "source": "PuntoTicket Chile"
}
```

### Detalles y precios

Activa `includeDetails` solo si necesitas los campos ampliados. El Actor visita cada evento de forma secuencial y respeta una pausa mínima de un segundo. Los precios son informativos, pueden incluir o excluir cargos según la publicación del productor y deben verificarse antes de tomar decisiones.

### Precio del Actor

El archivo de eventos incluye `apify-actor-start` y `result` con precio cero como marcadores. Configura precios reales únicamente después de obtener autorización y medir ejecuciones en Apify. Apify calcula la utilidad PPE como `0,8 × ingresos − costos de plataforma`; debido a la comisión del 20%, un margen neto de 99,5% no es alcanzable incluso antes del costo de ejecución.

### Manejo de errores

- Si no hay coincidencias, la ejecución finaliza correctamente con `no_results` y dataset vacío.
- Si un detalle individual falla, conserva el registro del catálogo y agrega una advertencia al resumen.
- Si la página de catálogo no responde, la ejecución falla de forma clara sin generar filas falsas.
- Solo los eventos realmente guardados se consideran resultados cobrables cuando se habilite el precio.

# Actor input Schema

## `category` (type: `string`):

Sección pública del catálogo que se consultará.

## `search` (type: `string`):

Filtro opcional sobre nombre, categoría, recinto, comuna y fecha.

## `includeDetails` (type: `boolean`):

Visita páginas públicas individuales para completar descripción, ubicación y rango de precios. Aumenta tiempo y costo.

## `maxDetailPages` (type: `integer`):

Límite adicional de páginas individuales cuando includeDetails está activo.

## `maxResults` (type: `integer`):

Límite duro de resultados para mantener una ejecución predecible.

## `requestDelayMs` (type: `integer`):

Espera entre páginas individuales. El mínimo evita sobrecargar la fuente.

## `timeoutSecs` (type: `integer`):

Segundos máximos por solicitud.

## `retries` (type: `integer`):

Intentos ante errores transitorios.

## Actor input object example

```json
{
  "category": "all",
  "includeDetails": false,
  "maxDetailPages": 25,
  "maxResults": 25,
  "requestDelayMs": 1500,
  "timeoutSecs": 20,
  "retries": 2
}
```

# Actor output Schema

## `status` (type: `string`):

No description

## `events` (type: `string`):

No description

## `source` (type: `string`):

No description

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("scraperschile/puntoticket").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 = {}

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

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

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

```

## CLI example

```bash
echo '{}' |
apify call scraperschile/puntoticket --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scraperschile/puntoticket"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/l96zaPvDZPI9Mcx7t/builds/LzeGvobW6awKHCwvW/openapi.json
