# Sympla Events & Tickets Scraper (`hypebridge/sympla-events-scraper`) Actor

Collects public event discovery and ticketing data from Sympla and Sympla Bileto. It supports city and category directories, keyword searches, producer pages, standard event URLs, online events, and reserved-seating Bileto events.

- **URL**: https://apify.com/hypebridge/sympla-events-scraper.md
- **Developed by:** [Hypebridge](https://apify.com/hypebridge) (community)
- **Categories:** Automation, E-commerce, Travel
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.003 / basic event listing

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

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

### What does Sympla Events & Tickets Scraper do?

**Sympla Events & Tickets Scraper** collects public event discovery and ticketing data from [Sympla](https://www.sympla.com.br) and Sympla Bileto. It supports city and category directories, keyword searches, producer pages, standard event URLs, online events, and reserved-seating Bileto events.

Use fast listing mode for market research and lead discovery, or enable full details to collect descriptions, ticket tiers, fees, payment options, availability, installments, sessions, venue sectors, and seating capacity. Direct event URLs are always enriched, even when the global detail option is off.

### Why scrape Sympla events?

- **Event discovery**: Build calendars and searchable event feeds across Brazilian cities and states.
- **Market intelligence**: Compare categories, formats, pricing, availability, and public sales indicators.
- **Organizer research**: Find public organizer profiles and contact information supplied with event listings.
- **Ticket monitoring**: Track prices, ticket inventory, Bileto sessions, sectors, and remaining capacity.
- **Audience planning**: Analyze attractions, event tags, venues, dates, and geographic coverage.

### What data can it extract?

| Field | Description |
|---|---|
| `name`, `url`, `id` | Event identity and canonical URL |
| `startDate`, `endDate`, `timezone` | Event schedule |
| `venue`, `location` | Address and coordinates |
| `organizer` | Public organizer name, email, image, and URL |
| `ticketSummary` | Minimum/maximum price, inventory, free and sold-out status |
| `gmv` | Public gross merchandise value indicator when available |
| `category`, `format`, `tags` | Classification and attractions |
| `detail` | Description, policies, payment options, and standard ticket tiers |
| `biletoDetail` | Presentations, sectors, capacity, SKUs, and convenience fees |
| `sourceUrl`, `scrapedAt` | Traceability metadata |

### How to scrape Sympla

1. Open the Actor and add one or more Sympla URLs, or use the advanced search filters.
2. Set **Max items** to control the maximum dataset size and cost.
3. Enable **Get full event details** when ticket-level enrichment is needed.
4. Start the run and download the Dataset as JSON, CSV, Excel, XML, RSS, or HTML.

Supported URLs include:

- `https://www.sympla.com.br/eventos`
- `https://www.sympla.com.br/eventos/sao-paulo-sp`
- `https://www.sympla.com.br/eventos/show-musica-festa`
- `https://www.sympla.com.br/eventos?q=tecnologia`
- `https://www.sympla.com.br/evento/{slug}/{id}`
- `https://www.sympla.com.br/evento-online/{slug}/{id}`
- `https://bileto.sympla.com.br/event/{id}`
- `https://www.sympla.com.br/produtor/{slug}`

### Input

| Parameter | Type | Default | Description |
|---|---|---:|---|
| `startUrls` | Array | `[]` | Sympla directories, events, or producer profiles |
| `maxItems` | Integer | `200` | Hard cap across all returned events |
| `getEventDetails` | Boolean | `false` | Fetch complete event and ticket data |
| `searchQuery` | String | — | Keyword search |
| `stateFilter` | String | `ALL` | Brazilian state abbreviation |
| `cityFilter` | String | — | Lowercase city slug |
| `categoryFilter` | String | `ALL` | Event category |
| `eventTypeFilter` | String | `ALL` | `NORMAL`, `ONLINE`, or `ONDEMAND` |
| `maxConcurrency` | Integer | `10` | Parallel requests, capped at 25 |

#### Example: city listings

```json
{
  "startUrls": [{ "url": "https://www.sympla.com.br/eventos/sao-paulo-sp" }],
  "maxItems": 100,
  "getEventDetails": false
}
```

#### Example: enriched keyword results

```json
{
  "searchQuery": "tecnologia",
  "stateFilter": "SP",
  "maxItems": 25,
  "getEventDetails": true
}
```

#### Example: direct Bileto event

```json
{
  "startUrls": [{ "url": "https://bileto.sympla.com.br/event/77759" }],
  "maxItems": 1
}
```

### Output

Each event is saved as one Dataset item. Listing records use `sourceType: "listing"`; enriched records use `sourceType: "detail"`. Standard Sympla enrichment is stored under `detail`, while reserved-seating data is stored under `biletoDetail`.

```json
{
  "id": "1234567",
  "url": "https://www.sympla.com.br/evento/example-event/1234567",
  "productChannel": "DIY",
  "name": "Example Technology Conference",
  "type": "NORMAL",
  "startDate": "2026-10-24T11:30:00-03:00",
  "venue": { "name": "Example Center", "city": "São Paulo", "state": "SP" },
  "organizer": { "name": "Example Events", "email": "contact@example.org" },
  "sourceType": "listing",
  "scrapedAt": "2026-09-03T18:00:00.000Z"
}
```

### Pricing

The Actor uses pay-per-event charging with separate events for basic and detailed results. A `basic-event` is charged for each listing record and a `detailed-event` for each fully enriched record. Runs stop gracefully if the account's charge limit is reached. Check the Actor pricing tab for the current per-event prices before starting a large run.

### Tips and limits

- Start with a small `maxItems` while validating your filters.
- Nationwide discovery is automatically partitioned by state and continues until the result cap is reached.
- Keyword results beyond the source search ceiling automatically continue through directory discovery.
- Deleted, private, and temporarily unavailable direct events return a useful fallback record instead of failing the whole run.
- Empty or unsupported inputs finish successfully with zero records and a warning.

### Is scraping Sympla legal?

This Actor extracts publicly available information. You are responsible for following Sympla's terms and applicable laws, including Brazil's LGPD and other privacy rules. Public organizer contact data can still be personal data; only collect and use it when you have a legitimate purpose.

### Support

Use the **Issues** tab for bugs or feature requests and the **API** tab for programmatic access.

# Actor input Schema

## `startUrls` (type: `array`):

Sympla event directories, city or category pages, individual standard or Bileto events, and producer profiles. Leave empty when using the advanced search filters.

## `maxItems` (type: `integer`):

Maximum number of event records saved across all inputs.

## `getEventDetails` (type: `boolean`):

Fetch descriptions, policies, payment options, ticket tiers, live inventory, installments, sessions, and Bileto seating. Direct event URLs are always enriched.

## `searchQuery` (type: `string`):

Search event titles and metadata, for example tecnologia, rock, or startup.

## `stateFilter` (type: `string`):

Brazilian state abbreviation. Nationwide runs are partitioned by state to avoid source result ceilings.

## `cityFilter` (type: `string`):

Sympla city slug such as sao-paulo, rio-de-janeiro, or belo-horizonte.

## `categoryFilter` (type: `string`):

Event category used by Sympla discovery.

## `eventTypeFilter` (type: `string`):

Limit discovery to in-person, online, or on-demand events.

## `maxConcurrency` (type: `integer`):

Maximum simultaneous HTTP requests. Ten is the tested default.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.sympla.com.br/eventos/sao-paulo-sp"
    }
  ],
  "maxItems": 200,
  "getEventDetails": true,
  "stateFilter": "ALL",
  "categoryFilter": "ALL",
  "eventTypeFilter": "ALL",
  "maxConcurrency": 10
}
```

# Actor output Schema

## `dataset` (type: `string`):

All basic and detailed records from this run.

## `overview` (type: `string`):

A compact event discovery view.

# 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 = {
    "startUrls": [
        {
            "url": "https://www.sympla.com.br/eventos/sao-paulo-sp"
        }
    ],
    "maxItems": 200
};

// Run the Actor and wait for it to finish
const run = await client.actor("hypebridge/sympla-events-scraper").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 = {
    "startUrls": [{ "url": "https://www.sympla.com.br/eventos/sao-paulo-sp" }],
    "maxItems": 200,
}

# Run the Actor and wait for it to finish
run = client.actor("hypebridge/sympla-events-scraper").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 '{
  "startUrls": [
    {
      "url": "https://www.sympla.com.br/eventos/sao-paulo-sp"
    }
  ],
  "maxItems": 200
}' |
apify call hypebridge/sympla-events-scraper --silent --output-dataset

```

## MCP server setup

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

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/AUvquCIU6GMq59Rpj/builds/20zL7IvpYLkU0p6aj/openapi.json
