# Showpass Event Scraper (`hypebridge/showpass-event-scraper`) Actor

Extracts public event listings, ticket pricing, venue profiles, and organizer information from Showpass

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

## Pricing

from $0.006 / basic event

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 Showpass Event Scraper do?

**Showpass Event Scraper** extracts public event listings, ticket pricing, venue profiles, and organizer information from [Showpass](https://www.showpass.com) without needing an official API or an account. Give it the Showpass homepage, a featured-city page, an organizer page, or a single event link, and it returns clean, structured event records you can drop straight into a spreadsheet, database, or app.

It scrapes only publicly visible event data. It does not access attendee lists, order history, seller dashboards, or anything behind a Showpass login.

### Why scrape Showpass?

- **Event discovery and aggregation**: keep a live calendar of concerts, festivals, comedy nights, markets, and community events across Canadian and US cities.
- **Ticket price monitoring**: track base prices and the real all-in checkout price including service charges and taxes, tier by tier, as tickets sell.
- **Competitive and market research**: see which organizers run the most events, how they price, how their venues are rated, and how fast inventory moves.
- **Lead generation for event services**: build lists of active organizers with their public websites and social profiles.
- **Travel, tourism, and local media**: fill "what's on this weekend" pages for Calgary, Vancouver, Toronto, Seattle, New York, and more.

### What data can Showpass Event Scraper extract?

| Field | Type | Description |
|-------|------|-------------|
| `name` | String | Event name |
| `url` | String | Canonical Showpass event URL |
| `startsOn` / `endsOn` | String | Start and end time in UTC |
| `localStartsOn` | String | Start time in the venue's local timezone |
| `venue` | Object | Organizer profile: name, city, website, social links, rating |
| `location` | Object | Venue name, street address, city, province, country, latitude, longitude |
| `minBasePrice` / `maxBasePrice` | Number | Cheapest and most expensive ticket tier before fees |
| `minAllInPrice` / `maxAllInPrice` | Number | Real checkout price including fees and taxes (full details only) |
| `ticketTypes` | Array | Every ticket tier with price, inventory, sale window, and fee breakdown |
| `tags` / `categories` | Array | Event tags and Showpass discovery categories |
| `soldOut` / `inventory` | Boolean / Number | Sold-out state and remaining inventory |
| `descriptionHtml` / `descriptionText` | String | Full event description |
| `images` | Object | Main image, banner, and thumbnail URLs |

The **Output** tab lists all 45+ fields, including recurring-event grouping, ratings, refund policy, and waitlist state.

### How to scrape Showpass

1. [Create a free Apify account](https://apify.com) if you don't have one.
2. Open **Showpass Event Scraper** and click **Try for free**.
3. Paste one or more Showpass URLs into **Start URLs**. Supported shapes:
   - `https://www.showpass.com/` — browse everything on Showpass
   - `https://www.showpass.com/discover/calgary/` — a featured city page
   - `https://www.showpass.com/o/globalfest/` — everything from one organizer
   - `https://www.showpass.com/some-event-slug/` — one specific event
4. Set **Maximum events** to cap the run.
5. Optionally turn on **Get full event details** for tags, ratings, and all-in pricing.
6. Click **Start**, then download results from the **Dataset** tab as JSON, CSV, Excel, or HTML.

#### Filtering without a URL

Start from the homepage URL and use the **Advanced options** to narrow the results:

- **Search query** — matches event and venue names (not descriptions).
- **Featured city** — a geographic radius around one of Showpass's 16 curated cities.
- **Exact city** — an exact city match such as `Halifax`, for cities that have no featured page.
- **Include past events** — adds archived events to homepage and organizer runs.

### How much will it cost?

Pay-per-event pricing — you are charged per event record delivered, never per compute unit.

| Event | Price | When it applies |
|-------|-------|-----------------|
| Basic event | $0.009 | An event returned from a listing, without the extra detail lookup |
| Detailed event | $0.009 | An event enriched with tags, ratings, and all-in fee pricing |
| Actor start | $0.01 | Once per run, per GB of memory |

Both event types cost the same, so turning on **Get full event details** does not cost extra per event — it only makes the run slower, because each event needs one more lookup. Subscription plans discount these rates down to $0.006 per event.

Duplicate events across several start URLs are delivered once and billed once. Events skipped for invalid input, and detail lookups that fail outright on a direct event URL, are not billed at all.

**Example costs at the no-discount rate:**

- 100 events: ~$0.91
- 1,000 events: ~$9.01
- 10,000 events: ~$90.01

### Input

See the **Input** tab for the full schema. Key fields:

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `startUrls` | Array | required | Showpass homepage, city, organizer, or event URLs (max 100) |
| `maxEvents` | Integer | 100 | Total unique events across all start URLs (max 50,000) |
| `getEventDetails` | Boolean | true | Fetch tags, ratings, and all-in fee pricing |
| `searchQuery` | String | — | Keyword filter for homepage runs |
| `featuredCity` | String | none | Featured-city radius filter for homepage runs |
| `exactCity` | String | — | Exact city filter for homepage runs |
| `includePastEvents` | Boolean | true | Include archived events |
| `maxConcurrency` | Integer | 5 | Simultaneous detail requests (1–10) |
| `proxyConfiguration` | Object | no proxy | Optional proxy settings |
| `debugMode` | Boolean | false | Verbose logs and failure artifacts |

#### Example input

```json
{
  "startUrls": [{ "url": "https://www.showpass.com/o/globalfest/" }],
  "maxEvents": 100,
  "getEventDetails": true
}
```

Browse a city instead:

```json
{
  "startUrls": [{ "url": "https://www.showpass.com/" }],
  "featuredCity": "vancouver",
  "maxEvents": 500,
  "getEventDetails": false
}
```

### Output

Results are saved to the **Dataset** tab and can be downloaded as JSON, CSV, Excel, or HTML.

Each record includes:

- **Event**: name, subtitle, description, start/end times, timezone, status, duration
- **Pricing**: currency, base price range, all-in price range, and every ticket tier
- **Venue and organizer**: name, address, coordinates, website, social links, rating
- **Availability**: sold-out state, inventory, waitlist and low-inventory signals
- **Classification**: tags, categories, artists, featured and recurring flags
- **Metadata**: canonical URL, whether the record was enriched with full details, `scrapedAt`

#### Sample output

```json
{
  "id": 1534196,
  "slug": "example-festival-4-day-pass",
  "url": "https://www.showpass.com/example-festival-4-day-pass/",
  "isDetailed": true,
  "name": "Example Festival 4 Day Pass",
  "startsOn": "2026-08-27T23:00:00Z",
  "endsOn": "2026-08-31T05:00:00Z",
  "timezone": "America/Edmonton",
  "currency": "CAD",
  "minBasePrice": 59,
  "maxBasePrice": 239,
  "minAllInPrice": 68.79,
  "maxAllInPrice": 278.67,
  "venue": { "name": "Example Organizer", "city": "Calgary", "rating": { "averageRating": 3.5, "totalRatings": 226 } },
  "location": { "name": "Example Park", "city": "Calgary", "province": "Alberta", "latitude": 50.8885742, "longitude": -114.0983034 },
  "soldOut": false,
  "tags": ["festival", "family"],
  "scrapedAt": "2026-08-30T12:00:00.000Z"
}
```

### Tips

- Start with a small **Maximum events** value to preview the shape of the data before committing to a large run.
- A bare Showpass path like `showpass.com/calgary/` is an **event**, not a city page. City browse pages live at `showpass.com/discover/calgary/`.
- **Search query** matches event and venue names only, so a keyword that appears only in a description will not match. Use **Featured city** or **Exact city** for broader coverage.
- Only enriched records carry `tags`, event ratings, and all-in pricing. On basic records those fields are `null` rather than guessed at.
- Recurring events appear as individual occurrences. Group them with `parentEventId`.
- `countryRaw` keeps whatever Showpass returned (`CA`, `Canada`, `Switzerland`, …); `countryCode` is a normalized two-letter code when the value is recognizable.

### FAQ

#### Do I need a Showpass account or API key?

No. The scraper only reads publicly available event pages.

#### Can I get the real price a buyer pays?

Yes. Turn on **Get full event details** and read `minAllInPrice` / `maxAllInPrice`, or `ticketTypes[].fees` for the per-tier breakdown of service charges, taxes, and custom fees such as GST.

#### Why are some fields empty?

Showpass populates different fields on different kinds of events. Free events have no fee breakdown, non-recurring events have no parent, and many events carry no tags or artists. Empty means "Showpass did not provide it", never a silent failure.

#### Can I scrape past events?

Yes, turn on **Include past events** for homepage and organizer runs. Featured-city browsing stays upcoming-only because that is how Showpass exposes it.

#### Is scraping Showpass legal?

Showpass Event Scraper only extracts publicly available event information. Always check the site's Terms of Service and make sure you have a legitimate purpose for the data you collect.

### Support

- Bugs / feature requests → **Issues** tab
- Programmatic access → **API** tab

> **Disclaimer**: Our Actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our Actors, when used for ethical purposes by Apify users, are safe. However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

# Actor input Schema

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

Showpass homepage, event, organizer (/o/{slug}), or featured-city (/discover/{city}) URLs.

## `maxEvents` (type: `integer`):

Global maximum number of unique event records returned across all start URLs.

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

Fetch tags, event ratings, recurring-event data, sold-out messaging, and all-in fee/tax pricing for every collection event. Direct event URLs are always detailed.

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

Applied only to homepage inputs. Showpass matches event and venue names, not descriptions.

## `featuredCity` (type: `string`):

Geo-radius city filter for homepage inputs. Overrides Exact city.

## `exactCity` (type: `string`):

Exact location city filter for homepage inputs, such as Halifax. Ignored when Featured city is selected.

## `includePastEvents` (type: `boolean`):

For homepage and organizer collections, include archived events. Featured-city discovery remains upcoming-oriented because that is how Showpass exposes it.

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

Maximum simultaneous detail API requests.

## `proxyConfiguration` (type: `object`):

Optional proxy settings. Direct requests are recommended unless Showpass begins rate limiting.

## `debugMode` (type: `boolean`):

Enable verbose routing/filter logs and bounded failed-response artifacts.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.showpass.com/"
    }
  ],
  "maxEvents": 500,
  "getEventDetails": true,
  "featuredCity": "none",
  "includePastEvents": true,
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "debugMode": false
}
```

# Actor output Schema

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

Dataset containing every scraped Showpass event record

# 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.showpass.com/"
        }
    ],
    "maxEvents": 500
};

// Run the Actor and wait for it to finish
const run = await client.actor("hypebridge/showpass-event-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.showpass.com/" }],
    "maxEvents": 500,
}

# Run the Actor and wait for it to finish
run = client.actor("hypebridge/showpass-event-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.showpass.com/"
    }
  ],
  "maxEvents": 500
}' |
apify call hypebridge/showpass-event-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,hypebridge/showpass-event-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/iPe2FRxtDIOuFJQUC/builds/3E3zKZnTRMcr0ZlhK/openapi.json
