# Resident Advisor Events Scraper (`tidyharvest/resident-advisor-events-scraper`) Actor

Resident Advisor (RA.co) events by city, club, promoter, DJ or URL: date and times, venue address and coordinates, lineup, genres, cost, RA ticket prices, attending count, promoters, flyers. $1.80 per 1,000 events.

- **URL**: https://apify.com/tidyharvest/resident-advisor-events-scraper.md
- **Developed by:** [TidyHarvest](https://apify.com/tidyharvest) (community)
- **Categories:** Travel, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.30 / 1,000 event scrapeds

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

## Resident Advisor Events Scraper: RA Club Nights, Lineups & Tickets

Get **Resident Advisor (RA.co) events** for any **city, club, promoter or DJ**: date, start and end time, **venue name, address and coordinates**, full **lineup with artist links**, **genres**, door **cost**, **RA ticket tiers and prices**, sold-out flag, **attending count**, promoters, flyer images and the event description. One clean row per event, **$1.80 per 1,000 events** (less on paid plans). No login, no API key, no proxy needed.

Results match what ra.co shows on its own event pages.

### What you can do with it

- **City event calendars:** every club night, festival and concert in London, Berlin, New York, Amsterdam, Paris, Tokyo or any of RA's ~1,000 areas, for any date range.
- **Venue and promoter monitoring:** upcoming (and past) events of specific clubs like fabric, Berghain or Nowadays, or of a promoter you track.
- **Artist tour dates:** every upcoming gig of a DJ or live act, with the venue and city.
- **Booking and A\&R research:** who plays where, which genres are growing in a city, which events draw the biggest crowds (`attending`), ticket price levels.
- **Feeds for apps, newsletters, maps and AI agents:** flat JSON with coordinates, times and ticket links, ready for Sheets, a database or an LLM.

### How to use it

1. Add one or more **cities** (`London`, `Berlin`, `New York City`, or an RA URL like `https://ra.co/events/uk/london`), and/or **clubs**, **promoters**, **artists** or any **ra.co URLs**.
2. Optionally set a **date range** (default: the next 30 days for cities, all upcoming events for clubs/promoters/artists), **genres**, **popularity sort**, **ticketed only** or **min attending**.
3. Click **Start**. Download JSON, CSV or Excel, or connect to Sheets, Zapier, Make or the API.

### Input

| Field | What it does |
|---|---|
| `areas` | Cities/areas by name (`London`), RA URL (`https://ra.co/events/de/berlin`), `country/area` (`us/newyorkcity`) or RA area id (`13`). |
| `venues` | Clubs by RA URL (`https://ra.co/clubs/237`), id or name (`fabric`: exact name, or one containing every word; URLs are exact). |
| `promoters` | Promoters by RA URL (`https://ra.co/promoters/110204`), id or name. |
| `artists` | DJs/artists by RA URL (`https://ra.co/dj/benufo`), slug or name (`Ben UFO`). |
| `startUrls` | Any mix of ra.co event, area, club, promoter and DJ URLs, routed automatically. |
| `dateFrom` / `dateTo` | Date window (YYYY-MM-DD). Past dates work: past events of clubs, promoters and artists are fetched year by year. |
| `genres` | Keep events tagged with any of these RA genres (`Techno`, `House`, `Deep House`, `Drum & Bass`, `Amapiano`...). |
| `sortBy` | City listings by `date` (default) or `popular` (most attending first). |
| `ticketedOnly` | Only events selling tickets on RA. |
| `minAttending` | Skip events with fewer people marked attending. |
| `includeDescription` | Include the full description text (default on). |
| `maxItems` | Cap on events per run (default 100), shared fairly across inputs. Also caps your cost. |

Examples:

```json
{ "areas": ["London", "Berlin"], "dateFrom": "2026-10-17", "dateTo": "2026-10-18", "maxItems": 500 }
```

```json
{ "areas": ["https://ra.co/events/us/newyorkcity"], "genres": ["Techno"], "sortBy": "popular", "maxItems": 20 }
```

```json
{ "venues": ["https://ra.co/clubs/237"], "artists": ["Ben UFO"], "startUrls": ["https://ra.co/events/2476959"] }
```

### Output

One item per event (deduplicated across inputs):

```json
{
  "eventId": "2443600",
  "url": "https://ra.co/events/2443600",
  "title": "Cirque Du Rave Is Coming To London",
  "date": "2026-10-17",
  "startTime": "2026-10-17T16:00:00",
  "endTime": "2026-10-17T21:00:00",
  "timeZone": "Europe/London",
  "venueId": "100941",
  "venueName": "The Steel Yard",
  "venueAddress": "13-16 Allhallows Lane, London, EC4R 3UL",
  "venueUrl": "https://ra.co/clubs/100941",
  "venueCapacity": "1000",
  "latitude": 51.510068, "longitude": -0.090338,
  "areaId": "13", "areaName": "London", "country": "United Kingdom", "countryCode": "GBR",
  "artistNames": ["Craig Richards", "Ricardo Villalobos"],
  "artists": [{"id": "90", "name": "Craig Richards", "url": "https://ra.co/dj/craigrichards"}],
  "lineupText": "Craig Richards\nRicardo Villalobos\n...",
  "genres": ["Techno", "House"],
  "promoterNames": ["Like It Love It"],
  "promoters": [{"id": "110204", "name": "Like It Love It", "url": "https://ra.co/promoters/110204"}],
  "cost": "22.50",
  "isTicketed": true,
  "ticketUrl": "https://ra.co/events/2443600",
  "ticketPriceMin": 25.9, "ticketPriceMax": 28.8, "ticketCurrency": "GBP",
  "soldOut": false,
  "tickets": [{"name": "2nd release", "price": 25.9, "currency": "GBP", "status": "VALID", "onSaleFrom": "2026-05-14T16:00:00.000Z"}],
  "attending": 29, "interestedCount": 29,
  "minimumAge": 18, "isFestival": false, "isRaPick": false, "raPickBlurb": null,
  "flyerUrl": "https://images.ra.co/8bfd....jpg",
  "images": ["https://images.ra.co/8bfd....jpg"],
  "promotionalLinks": [{"title": "Like It Love It", "url": "https://likeit-loveit.com/uk/events/..."}],
  "description": "Cirque Du Rave Is Coming To London! ...",
  "datePosted": "2026-05-14T16:17:02.067Z",
  "source": "area:London",
  "scrapedAt": "2026-10-15T22:00:00Z"
}
```

- `startTime` / `endTime` are local time at the venue (see `timeZone`). `cost` is the promoter's door/price text as shown on RA.
- `tickets` lists RA's own ticket tiers with prices; `status` is `VALID` (on sale) or e.g. `SOLDOUT`. Events not ticketed on RA usually have the promoter's own ticket link in `ticketUrl` / `promotionalLinks`.
- `countryCode` is ISO 3166 alpha-3 (`GBR`, `DEU`, `USA`).

### Compared with chalkandcheese/ra-events-scraper (the most-used RA actor)

| | This actor | chalkandcheese/ra-events-scraper |
|---|---|---|
| Price per 1,000 events | **$1.80 Free plan, $1.30 Gold** | from $2.40 |
| Inputs | city **names**, RA URLs, club/promoter/artist **names**, genres, popularity sort, ticketed-only, min attending | RA URLs only, date range |
| Answers per input | an honest error for a name RA doesn't have (with the closest names) | invalid URLs logged |
| `maxItems` | exact, shared fairly across inputs | soft by default |
| Fields | lineup, set times, ticket tiers, sold-out, attending, RA Pick, secret-venue and resale flags, mixes (player links), child events of festivals | similar event fields |

**Where they still win:** event-ID range URLs (`/events/2000000-2000100`) and an error budget (`maxErrors`).

### Pricing

Pay per event, with lower prices on paid Apify plans:

| Event | Free plan | Bronze | Silver | Gold and up |
|---|---|---|---|---|
| Event (`event-scraped`) | $1.80 / 1,000 | $1.60 / 1,000 | $1.50 / 1,000 | $1.30 / 1,000 |

Filters, deduplication and `maxItems` apply before you are charged. Ticket tiers, lineups, images and descriptions are included at no extra cost. A run that finds nothing fails instead of silently returning an empty dataset.

### Limits and notes

- Requests go to ra.co one at a time, at most one per second, so a busy city month (London: ~2,000 events) takes a minute or two.
- City listings cover the date range you set (default 30 days from `dateFrom` or today). Club/promoter/artist lookups return all upcoming events, plus past years when `dateFrom` is in the past.
- Name lookups (`fabric`, `Ben UFO`) take the exact name on RA, or one containing every word you typed; otherwise that input fails and the run log lists the closest names (never a guess). RA URLs are always exact.
- `attending` / `interestedCount` are RA's public counters and change over time; each row has `scrapedAt`.

Data source: Resident Advisor (ra.co). Each row links back to its event page. This actor is not affiliated with or endorsed by Resident Advisor.

# Actor input Schema

## `areas` (type: `array`):

Events listed in these RA areas: a city name (`London`, `Berlin`, `New York City`, `Amsterdam`), an RA events URL (`https://ra.co/events/uk/london`), `country/area` (`de/berlin`), or an RA area id (`13`). One per line.

## `venues` (type: `array`):

Events at these clubs: RA club URL (`https://ra.co/clubs/237`), club id (`237`) or name (`fabric`: the exact name, or one containing every word you typed; never a guess).

## `promoters` (type: `array`):

Events by these promoters: RA promoter URL (`https://ra.co/promoters/110204`), id or name.

## `artists` (type: `array`):

Gigs of these artists: RA DJ URL (`https://ra.co/dj/benufo`), slug (`benufo`) or name (`Ben UFO`).

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

Any mix of event (`/events/2476959`), area (`/events/uk/london`), club (`/clubs/237`), promoter (`/promoters/110204`) and DJ (`/dj/benufo`) URLs. Each is routed automatically.

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

Only events on or after this date (YYYY-MM-DD). Default: today. A past date works too: past events of clubs, promoters and artists are fetched year by year; area listings go back as far as RA keeps them.

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

Only events on or before this date (YYYY-MM-DD). Default for areas: From date + 30 days. Default for clubs/promoters/artists: all upcoming events.

## `genres` (type: `array`):

Keep only events tagged with one of these RA genres: `Techno`, `House`, `Deep House`, `Drum & Bass`, `Ambient`, `Disco`, `Amapiano`, `Hard Drum`... Names or slugs. Empty = all genres.

## `sortBy` (type: `string`):

Order for city/area listings. With `popular` and a small Max events you get the biggest events in the date range.

## `ticketedOnly` (type: `boolean`):

Keep only events that sell tickets on RA (ticket tiers and prices are included).

## `minAttending` (type: `integer`):

Skip events with fewer people marked as attending on RA.

## `includeDescription` (type: `boolean`):

Include the full event description text (turn off for smaller rows).

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

Hard cap on events for the whole run (also caps your cost), shared fairly across inputs.

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

Not needed: RA answers direct requests. If RA ever refuses Apify's IPs, the actor switches to Apify datacenter proxy by itself. Set a proxy here only to force one.

## Actor input object example

```json
{
  "areas": [
    "London"
  ],
  "sortBy": "date",
  "ticketedOnly": false,
  "includeDescription": true,
  "maxItems": 100
}
```

# Actor output Schema

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

Resident Advisor events with date, times, venue and address, lineup, genres, ticket prices, attending count, promoters and flyer, one item per event.

# 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 = {
    "areas": [
        "London"
    ],
    "maxItems": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("tidyharvest/resident-advisor-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 = {
    "areas": ["London"],
    "maxItems": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("tidyharvest/resident-advisor-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 '{
  "areas": [
    "London"
  ],
  "maxItems": 100
}' |
apify call tidyharvest/resident-advisor-events-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tidyharvest/resident-advisor-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/CAZkgD44RDpP3kLqH/builds/tM1d8pfHTv1mDFg0e/openapi.json
