# Dice.fm Events Scraper (`parsebird/dice-fm-events-scraper`) Actor

Scrape Dice.fm events from city, category, venue, artist, or event URLs. Get dates, venues, lineups, prices, ticket types, promoters, and descriptions. Export JSON, CSV, or Excel.

- **URL**: https://apify.com/parsebird/dice-fm-events-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.69 / 1,000 events

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### Dice.fm Events Scraper

Dice.fm Events Scraper extracts concerts, DJ sets, club nights, comedy and other events from [Dice.fm](https://dice.fm) city, category, venue, artist and event pages. Each event is saved as one structured record. You don't need a Dice account or an API key.

<table><tr>
<td style="border-left:4px solid #1C1917;padding:12px 16px;font-weight:600">
Get every upcoming event in a city, a category such as DJ or techno, a venue's full calendar or an artist's tour dates, with the lineup, venue address and coordinates, every ticket type with its price and sale status, the promoter, age limit and full description.
</td>
</tr></table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor or any other LLM to start using this Actor.

```
Use the Apify Actor "parsebird/dice-fm-events-scraper" (Dice.fm Events Scraper) to get event listings from Dice.fm. Call it with the apify-client package: Python `ApifyClient("<APIFY_TOKEN>").actor("parsebird/dice-fm-events-scraper").call(run_input={...})`, or JavaScript `new ApifyClient({ token }).actor('parsebird/dice-fm-events-scraper').call({...})`, then read items from the run's default dataset. Inputs (all optional): startUrls (array of dice.fm URLs: city browse pages like https://dice.fm/browse/london-54d8a23438fe5d27d500001c, category pages like .../music/dj or .../music/dj/techno, venue pages https://dice.fm/venue/<slug>, artist pages https://dice.fm/artist/<slug>, event pages https://dice.fm/event/<slug>; default New York browse page), maxItems (int, default 100, total events saved), maxPages (int, default 10, result pages of ~24 events per city/category URL), dateFrom and dateTo (YYYY-MM-DD, filter by event start date), proxyConfiguration (object, optional). Each item has event_id, event_name, status (on-sale, sold-out, off-sale), date, date_end, start_time, end_time, timezone, doors_open, venue_name, venue_address, venue_latitude, venue_longitude, venue_url, city, country, country_code, price_from, price_from_amount, currency, artists (array), presented_by, promoter_name, category, age_restriction, image_url, event_url, ticket_types (array of name, price, price_amount, status, secondary_status, price_tier, max_per_order), max_tickets, description, sale_start_date, sale_end_date, announcement_date. Pricing: pay per event saved. API docs: https://apify.com/parsebird/dice-fm-events-scraper/api. Get a token at https://console.apify.com/settings/integrations.
```

### What is Dice.fm Events Scraper?

**Dice.fm Events Scraper** turns [Dice.fm](https://dice.fm) event listings into clean JSON, CSV or Excel. Paste a Dice.fm URL and the Actor returns **every event on that page** with its **date and time, venue, lineup, ticket types and prices, sale status, promoter and description**.

It works as a **Dice.fm API alternative**. Dice doesn't offer a public API for event listings. This Actor gives you the same data the website shows, and you can run it on a schedule, call it from the [Apify API](https://docs.apify.com/api/v2), or download the results. To try it, open the Input tab and click **Start**. The prefilled New York page returns 20 events in a few seconds.

### What can Dice.fm Events Scraper do?

- 🏙️ **Scrape whole cities**: paste a city browse page and get its upcoming events in date order, page after page, not only the first screen the website shows.
- 🎧 **Filter by category and genre**: use category URLs such as Gigs, DJ, Party, Comedy, Film or Theatre, or genre URLs such as `/music/dj/techno`.
- 🏟️ **Get a venue's full calendar**: a venue URL returns all of its upcoming events in one go. In our tests that was 179 events for MOTH Club in London.
- 🎤 **Track artists**: an artist URL returns their upcoming Dice.fm dates in every city.
- 🎟️ **Look up one event**: an event URL returns that event's full record, including past events that are no longer on sale.
- 📅 **Filter by date**: set a start and end date, or paste a Dice.fm URL that already has `?from=` and `?until=` dates in it.
- 💷 **Ticket detail**: every ticket type with its price, release tier, on-sale, sold-out or waiting-list status, and the per-order limit.
- 🔀 **Mix URLs**: combine cities, venues, artists and events in one run. Events that appear more than once are saved only once.
- ⚙️ **Built for automation**: [schedule runs](https://docs.apify.com/platform/schedules) to monitor new events and sell-outs, call the Actor from the [API](https://apify.com/parsebird/dice-fm-events-scraper/api), connect it to [Make, Zapier, n8n, Google Sheets or Slack](https://apify.com/integrations), and export as JSON, CSV, Excel or HTML.

### What data can you extract from Dice.fm?

| Field | Description |
|-------|-------------|
| `event_name`, `event_id`, `event_url` | Event title, Dice.fm ID and link to the event page |
| `status` | `on-sale`, `sold-out` or `off-sale` |
| `date`, `date_end`, `start_time`, `end_time`, `timezone`, `doors_open` | Start and end date (YYYY-MM-DD), full local timestamps, and door time |
| `venue_name`, `venue_address`, `venue_latitude`, `venue_longitude`, `venue_url` | Venue name, full address, coordinates and Dice.fm venue page |
| `city`, `country`, `country_code` | Where the event takes place |
| `price_from`, `price_from_amount`, `currency` | Cheapest ticket as text (`£29.58`) and as a number, plus the currency code |
| `ticket_types` | Each ticket's name, price, status, waiting-list flag, release tier and per-order limit |
| `max_tickets` | Maximum tickets per order |
| `artists` | Names of the artists on the lineup |
| `presented_by`, `promoter_name` | Promoter credit and organizer name |
| `category`, `age_restriction` | Dice.fm category (Gigs, DJ, Party, Comedy…) and the age limit text |
| `description`, `image_url` | Full event description and the main event image |
| `sale_start_date`, `sale_end_date`, `announcement_date` | When tickets go on sale, stop selling and when the event was announced |

Fields that Dice.fm doesn't publish for an event come back as `null` or an empty list. For example, many club nights list no artists.

### How to scrape Dice.fm events

1. Open [Dice.fm Events Scraper](https://apify.com/parsebird/dice-fm-events-scraper) on Apify Store and click **Try for free**.
2. On [dice.fm](https://dice.fm), open the page you want: a city, a category inside a city, a venue, an artist or an event. Copy the URL from your browser.
3. Paste it into **Dice.fm URLs**. You can add as many URLs as you like.
4. Set **Max events** for the whole run and, for city and category URLs, **Max pages**. Each page holds about 24 events.
5. Optionally set **Events from** and **Events until** to keep only events in a date range.
6. Click **Start**. When the run finishes, download the dataset as JSON, CSV, Excel or HTML, or read it from the [dataset API](https://docs.apify.com/api/v2/dataset-items-get).

### Input parameters

Every field is optional. See the [Input tab](https://apify.com/parsebird/dice-fm-events-scraper/input-schema) for details.

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `startUrls` | array | No | New York browse page | Dice.fm city, category, venue, artist or event URLs |
| `maxItems` | integer | No | 100 | Maximum events saved across all URLs |
| `maxPages` | integer | No | 10 | Maximum result pages per city or category URL (about 24 events each) |
| `dateFrom` | string | No | — | Only save events starting on or after this date (YYYY-MM-DD) |
| `dateTo` | string | No | — | Only save events starting on or before this date (YYYY-MM-DD) |
| `proxyConfiguration` | object | No | No proxy | Optional Apify Proxy settings |

#### Supported URLs

| URL type | Example |
|----------|---------|
| City | `https://dice.fm/browse/london-54d8a23438fe5d27d500001c` or `https://dice.fm/browse/london` |
| Category | `https://dice.fm/browse/london-54d8a23438fe5d27d500001c/music/dj` |
| Genre | `https://dice.fm/browse/london-54d8a23438fe5d27d500001c/music/dj/techno` |
| City with dates | `https://dice.fm/browse/london-54d8a23438fe5d27d500001c/music/gig?from=2026-11-14&until=2026-11-15` |
| Venue | `https://dice.fm/venue/moth-club-43ox` |
| Artist | `https://dice.fm/artist/zack-fox-qbpp` |
| Event | `https://dice.fm/event/7d9kl9-joy-anonymous-24th-oct-hackney-church-london-tickets` |

URLs in other languages, such as `dice.fm/fr/browse/...`, are read as their English version.

#### Example inputs

All DJ events in London for one week:

```json
{
    "startUrls": ["https://dice.fm/browse/london-54d8a23438fe5d27d500001c/music/dj"],
    "dateFrom": "2026-11-01",
    "dateTo": "2026-11-07",
    "maxItems": 500,
    "maxPages": 30
}
```

A venue calendar, an artist and a single event in one run:

```json
{
    "startUrls": [
        "https://dice.fm/venue/moth-club-43ox",
        "https://dice.fm/artist/zack-fox-qbpp",
        "https://dice.fm/event/7d9kl9-joy-anonymous-24th-oct-hackney-church-london-tickets"
    ],
    "maxItems": 300
}
```

### Output example

Each event is one item. This is a real record from a London run. The Console shows an **Events** table and a **Tickets** table.

```json
{
    "event_id": "6ad742d4b9dfd00001661c74",
    "event_name": "JOY (Anonymous)",
    "status": "on-sale",
    "date": "2026-10-24",
    "date_end": "2026-10-24",
    "start_time": "2026-10-24T19:00:00+01:00",
    "end_time": "2026-10-24T22:30:00+01:00",
    "timezone": "Europe/London",
    "doors_open": "2026-10-24T19:00:00+01:00",
    "venue_name": "Hackney Church",
    "venue_space": null,
    "venue_address": "Lower Clapton Rd, London E5 0PD, UK",
    "venue_latitude": 51.5492822,
    "venue_longitude": -0.0533638,
    "venue_url": "https://dice.fm/venue/hackney-church-ww8g",
    "city": "London",
    "country": "United Kingdom",
    "country_code": "GB",
    "price_from": "£29.58",
    "price_from_amount": 29.58,
    "currency": "GBP",
    "artists": ["Joy Anonymous", "Estère"],
    "presented_by": "Presented by Columbo Music.",
    "promoter_name": "Columbo Music",
    "category": "Gigs",
    "age_restriction": "This is an 14+ event (Under 16s must be accompanied by an adult over 18)",
    "image_url": "https://dice-media.imgix.net/attachments/2026-08-26/13489ddf-5028-4522-88d1-dfcb633cc6af.jpg?rect=0%2C427%2C2132%2C1279",
    "event_url": "https://dice.fm/event/7d9kl9-joy-anonymous-24th-oct-hackney-church-london-tickets",
    "ticket_types": [
        {
            "name": "Unreserved Balcony Seating",
            "price": "£29.58",
            "price_amount": 29.58,
            "status": "on-sale",
            "secondary_status": null,
            "price_tier": null,
            "max_per_order": 6,
            "description": null
        },
        {
            "name": "Standing Tickets",
            "price": "£31.62",
            "price_amount": 31.62,
            "status": "sold-out",
            "secondary_status": "waiting-list",
            "price_tier": null,
            "max_per_order": 6,
            "description": null
        }
    ],
    "max_tickets": 6,
    "description": "Following their sold out Jazz Cafe residency at the start of this year, JOY (Anonymous) return to their home town this October to perform at one of London's most stunning venues...",
    "sale_start_date": "2026-10-20T00:15:00+01:00",
    "sale_end_date": "2026-10-24T21:00:00+01:00",
    "announcement_date": "2026-10-20T00:00:00+01:00",
    "is_multi_day": false,
    "source_url": "https://dice.fm/browse/london-54d8a23438fe5d27d500001c",
    "details_scraped": true,
    "scraped_at": "2026-10-24T07:18:16Z"
}
```

### Use Dice.fm Events Scraper from Python or JavaScript

Install the client with `pip install apify-client` or `npm install apify-client`, and get your API token from [Apify Console](https://console.apify.com/settings/integrations).

**Python**

```python
from apify_client import ApifyClient

client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("parsebird/dice-fm-events-scraper").call(run_input={
    "startUrls": ["https://dice.fm/browse/london-54d8a23438fe5d27d500001c/music/dj"],
    "maxItems": 100,
})

for event in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(event["date"], event["event_name"], event["venue_name"], event["price_from"])
```

**JavaScript**

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

const client = new ApifyClient({ token: '<APIFY_TOKEN>' });
const run = await client.actor('parsebird/dice-fm-events-scraper').call({
    startUrls: ['https://dice.fm/venue/moth-club-43ox'],
    maxItems: 200,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((e) => console.log(e.date, e.event_name, e.status));
```

### Use cases

- **Event discovery and listings sites**: fill a city guide or newsletter with upcoming gigs, club nights and comedy shows.
- **Promoter and venue research**: see which promoters and venues are most active in a city and how they price tickets.
- **Ticket price monitoring**: track ticket tiers, price changes and sell-outs over time with scheduled runs.
- **Artist tour tracking**: follow artists' upcoming dates across cities.
- **Music industry analytics**: compare event volume, genres and price levels between cities.
- **Lead generation**: build lists of venues and promoters that sell through Dice.

### How it works

1. The Actor reads each URL and works out whether it is a city, category, venue, artist or event page.
2. For city and category pages, it loads the results page by page, in date order, until it reaches **Max pages** or **Max events**.
3. For venue and artist pages, it loads all upcoming events from the profile.
4. For every event, it loads the full event details: ticket types, lineup, description, promoter and age limit.
5. Events are de-duplicated across URLs and saved to the dataset as they are collected.

### How much does it cost to scrape Dice.fm?

Dice.fm Events Scraper uses pay-per-event pricing. You pay for each event saved to the dataset. Platform usage (compute and proxy) is included in the event price, so it isn't billed separately.

| Event | Free | Bronze | Silver | Gold |
|-------|------|--------|--------|------|
| Event scraped | $0.89 / 1,000 | $0.79 / 1,000 | **$0.69 / 1,000** | **$0.69 / 1,000** |

One saved event with its full details is one charge. At Free plan prices, 100 events cost about $0.09 and 1,000 events cost $0.89. To control spending, use **Max events**. The run also stops when it reaches the maximum cost per run you set in Apify Console.

### Is it legal to scrape Dice.fm?

Dice.fm Events Scraper only collects event information that Dice.fm shows publicly to visitors who aren't logged in. It doesn't log in and doesn't collect data about ticket buyers or other users. You should still check that your use of the data complies with Dice's terms of service and the laws that apply to you, and consult a lawyer if you're unsure. For more background, read Apify's article [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

### Other event scrapers from ParseBird

| Actor | What it does |
|-------|--------------|
| [Resident Advisor Scraper](https://apify.com/parsebird/resident-advisor-scraper) | Club events, lineups and venues from Resident Advisor |
| [Luma Events Scraper](https://apify.com/parsebird/luma-events-scraper) | Luma (lu.ma) events by city, category, calendar or search |
| [Meetup Events Scraper](https://apify.com/parsebird/meetup-events-scraper) | Meetup events and groups |
| [StubHub Event Scraper](https://apify.com/parsebird/stubhub-event-scraper) | StubHub events and resale ticket listings |
| [TickPick Events Scraper](https://apify.com/parsebird/tickpick-events-scraper) | TickPick events and ticket prices |

### FAQ

**Do I need a Dice account or API key?**
No. The Actor reads the same public event data the Dice.fm website shows to logged-out visitors.

**Why does a city URL return more events than I see on the Dice.fm page?**
The main city page on Dice.fm shows a short, curated selection. For a city URL without a category, the Actor reads the city's upcoming events in date order instead, so you can go much deeper. Category and genre URLs follow the same order as the website.

**Where do I find a city or venue URL?**
Open [dice.fm](https://dice.fm), choose a city from the location menu, and copy the URL from your browser. A plain name such as `https://dice.fm/browse/london` also works. For a venue or artist, click their name on any event page and copy that URL.

**Why is `artists` empty for some events?**
Many club nights and parties on Dice.fm don't publish a lineup, so there are no artist names to return. The description often still names the performers.

**Why is `price_from` £0.00?**
The event has a free ticket type, for example free entry before a certain time. Check `ticket_types` for all the prices.

**Can I get past events?**
City, category, venue and artist pages only list upcoming events. You can still scrape a past event if you have its event URL.

**Do I need a proxy?**
Usually not. The Actor works without one and switches to Apify Proxy by itself if Dice.fm starts refusing requests. You can set a proxy in **Proxy configuration** to force one.

**Can I run it on a schedule or connect it to other tools?**
Yes. Use [Apify schedules](https://docs.apify.com/platform/schedules), call it from the [API](https://apify.com/parsebird/dice-fm-events-scraper/api), or connect it to Make, Zapier, n8n, Google Sheets, Slack or a webhook through [integrations](https://apify.com/integrations).

**Something is missing or wrong. What should I do?**
Open an issue in the [Issues tab](https://apify.com/parsebird/dice-fm-events-scraper/issues). We read every report.

# Changelog

This Actor's version history is a separate document: https://apify.com/parsebird/dice-fm-events-scraper/changelog.md

# Actor input Schema

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

Add Dice.fm URLs. Supported: city pages (dice.fm/browse/london-54d8a23438fe5d27d500001c), category pages (…/music/dj or …/music/dj/techno), venue pages (dice.fm/venue/…), artist pages (dice.fm/artist/…) and event pages (dice.fm/event/…). Leave empty to use the New York page.

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

Maximum number of events to save across all URLs.

## `maxPages` (type: `integer`):

Maximum result pages to read for each city or category URL. Each page holds about 24 events. Venue and artist URLs return all their upcoming events in one go.

## `dateFrom` (type: `string`):

Only save events starting on or after this date. Overrides any dates in the URL. Single event URLs are always saved.

## `dateTo` (type: `string`):

Only save events starting on or before this date.

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

Optional. The Actor works without a proxy and switches to Apify Proxy by itself if Dice.fm starts refusing requests. Set a proxy here to force one.

## Actor input object example

```json
{
  "startUrls": [
    "https://dice.fm/browse/new_york-5bbf4db0f06331478e9b2c59"
  ],
  "maxItems": 20,
  "maxPages": 3,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `dataset` (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 = {
    "startUrls": [
        "https://dice.fm/browse/new_york-5bbf4db0f06331478e9b2c59"
    ],
    "maxItems": 20,
    "maxPages": 3
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/dice-fm-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": ["https://dice.fm/browse/new_york-5bbf4db0f06331478e9b2c59"],
    "maxItems": 20,
    "maxPages": 3,
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/dice-fm-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": [
    "https://dice.fm/browse/new_york-5bbf4db0f06331478e9b2c59"
  ],
  "maxItems": 20,
  "maxPages": 3
}' |
apify call parsebird/dice-fm-events-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parsebird/dice-fm-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/QaxpHuot9mOvupLCV/builds/0mwuDDJn2oJBhb1Br/openapi.json
