# Resident Advisor Scraper (`parsebird/resident-advisor-scraper`) Actor

Scrape Resident Advisor (ra.co) electronic music events, artist profiles, and club/venue profiles. Filter events by city and date range. Export as JSON, CSV, or Excel.

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

## Pricing

from $2.20 / 1,000 record 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?

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

### Resident Advisor Scraper

Scrape electronic music events, artist profiles, and club/venue profiles from [Resident Advisor (ra.co)](https://ra.co) — the world's leading listings site for club and festival culture. Search events by city and date range, then export clean, structured data as JSON, CSV, or Excel.

<table><tr>
<td style="border-left:4px solid #111111;padding:12px 16px;font-weight:600">
Three modes in one Actor — list events for any of 35 countries by city and date, pull a full artist profile with biography and socials, or pull a club profile with capacity and recent events — every event enriched with the complete line-up: linked artists, plain-text names, and the raw line-up layout.
</td>
</tr></table>

##### Copy to your AI assistant

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

```
Actor: parsebird/resident-advisor-scraper (Apify). Scrapes ra.co (Resident Advisor). Call with ApifyClient.
Input: { "mode": "eventsByCity" | "artistProfile" | "venueProfile", "countryCode": "gb", "city": "london",
         "dateFrom": "2026-07-01", "dateTo": "2026-07-31", "artistName": "aphex-twin", "venueSlug": "fabric",
         "maxItems": 20 }
mode=eventsByCity  -> needs countryCode (gb,de,us,nl,fr,au,jp,be,it,es,pt,se,dk,no,fi,br,mx,ca,za,in,sg,at,ch,ie,pl,cz,hu,gr,ro,ar,co,cl,nz,kr,th) + city (RA slug, e.g. new-york). dateFrom defaults to today; dateTo optional. maxItems caps events (1-200).
mode=artistProfile -> needs artistName (RA slug like "aphextwin" OR plain name "Aphex Twin"; both tried). One record. maxItems caps upcomingEvents.
mode=venueProfile  -> needs venueSlug ("fabric", "berghain", partial names OK). One record. maxItems caps recentEvents.
Event output: eventId, title, eventUrl, date, startTime, endTime, venue, venueUrl, city, country, artists[], unlinkedArtists[], allArtists[], lineupText, genres[], promoters[], isTicketed, ticketUrl, cost, flyerUrl, recordType, scrapedAt.
Artist output: artistId, name, artistUrl, imageUrl, biography, country, region, facebook/instagram/twitter/soundcloud/discogs/bandcamp/website, followerCount, upcomingEventsCount, upcomingEvents[], recordType, scrapedAt.
Venue output: venueId, name, venueUrl, address, phone, website, description, capacity, city, country, followerCount, recentEvents[], recordType, scrapedAt.
Fields are omitted when RA has no data for them — no nulls or empty values. Pricing: pay-per-result.
```

### What does Resident Advisor Scraper do?

Resident Advisor holds the most complete public database of club nights, festivals, DJs, and venues. This Actor turns any of it into structured records.

- 🗓️ **Events by city** — every listed event for a city between two dates, sorted by date.
- 🧑‍🎤 **Artist profiles** — biography, home country and region, follower count, every social link the artist has published, and their upcoming shows.
- 🏟️ **Venue / club profiles** — address, capacity, phone, website, description, follower count, and recent/upcoming events.
- 🎧 **Complete line-ups** — RA stores two kinds of artist reference; this Actor returns all four views so you never lose an act (see below).
- 🌍 **35 countries** — the most active RA markets, selected with a simple country code.
- 🧼 **Clean records** — a field is only present when RA actually has a value for it. No `null`, no `""`, no empty arrays to filter out.

#### The four line-up fields

| Field | What it contains |
|-------|------------------|
| `artists` | Acts that have a linked Resident Advisor profile page. |
| `unlinkedArtists` | Acts named in the line-up as plain text, with no RA profile. |
| `allArtists` | The complete bill, in order — linked and unlinked merged. **Use this for most automations.** |
| `lineupText` | The raw line-up block as plain text, one slot per line, layout preserved. Parse it yourself if you need stage or set-time splits. |

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| mode | string | No | `eventsByCity` | `eventsByCity`, `artistProfile`, or `venueProfile`. |
| countryCode | string | eventsByCity | `gb` | RA country code — see list below. |
| city | string | eventsByCity | `london` | City name or RA slug. Multi-word: `new-york`, `los-angeles`, `sao-paulo`. |
| dateFrom | string | No | today | `YYYY-MM-DD`. Events from this date onward. |
| dateTo | string | No | — | `YYYY-MM-DD`. Events up to this date. Leave empty for no upper bound. |
| artistName | string | artistProfile | — | RA slug (`aphextwin`) or plain name (`Aphex Twin`). Both variants are tried. |
| venueSlug | string | venueProfile | — | Venue common name, partial name, or RA club URL. Best match is used. |
| maxItems | integer | No | 20 | 1–200. Caps events (eventsByCity) or the embedded events list (artist/venue). |
| proxyConfiguration | object | No | Apify Proxy | Proxy settings. The default is recommended and sufficient. |

**Supported countries** (`countryCode`): United Kingdom `gb` · Germany `de` · United States `us` · Netherlands `nl` · France `fr` · Australia `au` · Japan `jp` · Belgium `be` · Italy `it` · Spain `es` · Portugal `pt` · Sweden `se` · Denmark `dk` · Norway `no` · Finland `fi` · Brazil `br` · Mexico `mx` · Canada `ca` · South Africa `za` · India `in` · Singapore `sg` · Austria `at` · Switzerland `ch` · Ireland `ie` · Poland `pl` · Czech Republic `cz` · Hungary `hu` · Greece `gr` · Romania `ro` · Argentina `ar` · Colombia `co` · Chile `cl` · New Zealand `nz` · South Korea `kr` · Thailand `th`

#### Input examples

**Events by city**

```json
{ "mode": "eventsByCity", "countryCode": "gb", "city": "london", "dateFrom": "2026-07-01", "dateTo": "2026-07-31", "maxItems": 50 }
```

**Artist profile**

```json
{ "mode": "artistProfile", "artistName": "bicep", "maxItems": 10 }
```

**Venue profile**

```json
{ "mode": "venueProfile", "venueSlug": "fabric", "maxItems": 10 }
```

### Output examples

**Event**

```json
{
  "eventId": "2182764",
  "title": "GALA'26",
  "eventUrl": "https://ra.co/events/2182764",
  "date": "2026-05-22",
  "startTime": "14:00",
  "endTime": "22:30",
  "venue": "Peckham Rye Park",
  "venueUrl": "https://ra.co/clubs/143848",
  "city": "London",
  "country": "United Kingdom",
  "artists": ["Objekt", "Or:la", "Pariah"],
  "unlinkedArtists": ["Clipz", "Darren Jay", "MC Rage"],
  "allArtists": ["Objekt", "Or:la", "Clipz", "Darren Jay", "Pariah", "MC Rage"],
  "lineupText": "Objekt\nOr:la\nClipz\nDarren Jay\nPariah\nMC Rage",
  "genres": ["Techno", "House"],
  "promoters": ["GALA Festival"],
  "isTicketed": true,
  "ticketUrl": "https://tickets.ra.co/events/2182764",
  "cost": "£25",
  "flyerUrl": "https://images.ra.co/....jpg",
  "recordType": "event",
  "scrapedAt": "2026-06-14T10:00:00+00:00"
}
```

**Artist**

```json
{
  "artistId": "13606",
  "name": "Bicep",
  "artistUrl": "https://ra.co/dj/bicep",
  "imageUrl": "https://static.ra.co/images/profiles/square/bicep.jpg",
  "biography": "Belfast-born, London-based duo Bicep (Matt McBriar and Andy Ferguson)...",
  "country": "United Kingdom",
  "region": "London",
  "facebook": "https://www.facebook.com/feelmybicep",
  "instagram": "https://www.instagram.com/feelmybicep",
  "soundcloud": "https://www.soundcloud.com/feelmybicep",
  "discogs": "https://www.discogs.com/artist/bicep",
  "bandcamp": "https://bicep.bandcamp.com",
  "website": "http://www.feelmybicep.com",
  "followerCount": 129972,
  "upcomingEventsCount": 3,
  "upcomingEvents": [
    {
      "eventId": "2395557",
      "title": "Making Time ∞",
      "date": "2026-09-18",
      "startTime": "13:00",
      "eventUrl": "https://ra.co/events/2395557",
      "venue": "Fort Mifflin",
      "genres": ["Techno", "Electronica"]
    }
  ],
  "recordType": "artist",
  "scrapedAt": "2026-06-14T10:00:00+00:00"
}
```

**Venue**

```json
{
  "venueId": "237",
  "name": "fabric",
  "venueUrl": "https://ra.co/clubs/237",
  "address": "77a Charterhouse St, Clerkenwell, London EC1M 6HJ, United Kingdom",
  "phone": "020 7336 8898",
  "website": "http://www.fabriclondon.com",
  "description": "fabric is one of London's premier venues for electronic music...",
  "capacity": "1600",
  "city": "London",
  "country": "United Kingdom",
  "followerCount": 39685,
  "recentEvents": [
    { "eventId": "2413816", "title": "Field Day Afterparty", "date": "2026-05-23", "startTime": "23:00", "eventUrl": "https://ra.co/events/2413816", "artists": ["Duskus", "Eliza Rose"], "genres": ["House"] }
  ],
  "recordType": "venue",
  "scrapedAt": "2026-06-14T10:00:00+00:00"
}
```

### Use cases

- **Event discovery & aggregation** — feed a local listings site, newsletter, or Discord bot with fresh club nights.
- **Artist booking research** — see where an artist is playing, how big their following is, and how to reach them.
- **Promoter & venue intelligence** — track which artists a venue books and how often it runs events.
- **Music trend analysis** — aggregate genres, line-ups, and cities over time.
- **CRM & outreach** — pull promoter and venue contact details into Airtable, Make.com, or Zapier.
- **Personal calendars** — build a "who's playing near me this month" feed.

### How it works

1. You pick a mode and provide its inputs.
2. **eventsByCity**: the Actor resolves the city to an RA area, then pages through RA's event listings for your date range, up to `maxItems`.
3. **artistProfile**: the Actor resolves the artist from the slug or name (trying both, then RA search), then pulls the profile and upcoming shows.
4. **venueProfile**: the Actor searches RA's club index for your term, takes the best match, and pulls the profile and recent events.
5. For every event it reconstructs the four line-up fields from RA's structured artist links and plain-text line-up block.
6. Each record is trimmed of empty fields and pushed to the dataset. Export as JSON, CSV, Excel, XML, or RSS.

### Using the Actor via API

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")

run = client.actor("parsebird/resident-advisor-scraper").call(run_input={
    "mode": "eventsByCity",
    "countryCode": "de",
    "city": "berlin",
    "dateFrom": "2026-09-01",
    "dateTo": "2026-09-07",
    "maxItems": 100,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["date"], item["title"], "—", item.get("allArtists"))
```

#### JavaScript

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

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });

const run = await client.actor('parsebird/resident-advisor-scraper').call({
    mode: 'artistProfile',
    artistName: 'Peggy Gou',
    maxItems: 10,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);
```

The Actor runs on the [Apify platform](https://apify.com): schedule it, call it over the REST API, trigger webhooks, or wire it into Make, Zapier, Google Sheets, and Slack. Results export as JSON, CSV, Excel, XML, or RSS.

### Pricing

This Actor uses the **pay-per-result** pricing model — you are charged per record, regardless of compute time.

| Plan | Price per record | Price per 1,000 records |
|------|------------------|-------------------------|
| Free | $0.0025 | **$2.50** |
| Bronze | $0.0024 | **$2.40** |
| Silver | $0.0023 | **$2.30** |
| Gold | $0.0022 | **$2.20** |

In `eventsByCity` mode a record is one event. In `artistProfile` / `venueProfile` mode a run produces a single record. Scraping 1,000 events on the Free plan costs about $2.50.

### FAQ

**How do I find the right city slug?**
Open ra.co, choose your city, and read the URL — `ra.co/events/gb/london` means `city: "london"`, `countryCode: "gb"`. Multi-word cities use hyphens: `new-york`, `los-angeles`, `sao-paulo`. You can also just type the plain city name and the Actor will resolve it.

**What formats does `artistName` accept?**
Both the hyphen-free slug from the RA URL (`aphextwin` from `ra.co/dj/aphextwin`) and the plain name (`Aphex Twin`). The Actor tries slug variants and then RA's search index.

**What formats does `venueSlug` accept?**
The venue's common name (`fabric`, `berghain`), a partial name (`fabric london`), the full name, or an RA club URL. The best match from RA's venue index is used.

**Why are there four artist fields?**
RA stores two kinds of line-up reference — profile links and plain-text names. `artists` alone misses any act without an RA profile. Use `allArtists` for the complete bill, `unlinkedArtists` for just the plain-text names, and `lineupText` to parse the raw layout yourself.

**Why do some events have no `artists` or `genres`?**
RA only has that data for some listings. Events with no confirmed line-up have neither `artists` nor `allArtists`; events with every act linked have no `unlinkedArtists`.

**Can I filter events by date range?**
Yes. Set `dateFrom`, `dateTo`, or both. `dateFrom` alone returns everything from that date onward; `dateTo` alone returns everything up to that date.

**How many events can I get per run?**
Up to 200 via `maxItems`. For more, run again with a different date range or city.

**What if a city returns no results?**
Check the slug format (`new-york`, not `newyork`). Smaller markets may have few upcoming events — widen the date range or try a larger nearby city.

**Can I schedule recurring runs?**
Yes. Use Apify's [scheduler](https://docs.apify.com/platform/schedules) to run daily or weekly and route new events to a webhook or integration.

### Related Actors

- [Hiring.cafe Scraper](https://apify.com/parsebird/hiring-cafe-scraper) — aggregated job listings with 20+ filters.
- [GetYourGuide Scraper](https://apify.com/parsebird/getyourguide-scraper) — tours and activities.
- [Product Hunt Scraper](https://apify.com/parsebird/product-hunt-scraper) — daily product launches.
- Browse the full [ParseBird publisher page](https://apify.com/parsebird) for more scrapers.

### Legal and compliance

This Actor collects only publicly available listings and profile information from Resident Advisor — data any visitor can view without logging in. It does not access private data or bypass authentication. You are responsible for using the output in line with Resident Advisor's terms and applicable laws, including data-protection rules (GDPR, CCPA) where personal data such as artist social links or promoter details is involved. Do not use the data to spam artists, promoters, or venues. Seek legal advice before large-scale or commercial redistribution.

# Actor input Schema

## `mode` (type: `string`):

What to scrape. `eventsByCity` lists events for a city and date range. `artistProfile` returns one artist. `venueProfile` returns one club/venue.

## `countryCode` (type: `string`):

Country for the event search (mode = eventsByCity). Matches RA's URL scheme, e.g. ra.co/events/gb/london.

## `city` (type: `string`):

City name or RA slug (mode = eventsByCity). Multi-word cities use hyphens: `new-york`, `los-angeles`, `sao-paulo`.

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

Fetch events from this date, `YYYY-MM-DD`. Defaults to today.

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

Fetch events up to this date, `YYYY-MM-DD`. Leave empty for no upper bound.

## `artistName` (type: `string`):

Required for mode = artistProfile. Accepts the RA slug (`aphextwin`) or the plain name (`Aphex Twin`) — both variants are tried automatically.

## `venueSlug` (type: `string`):

Required for mode = venueProfile. The venue's common name (`fabric`, `berghain`), a partial name (`fabric london`), or an RA club URL. The best match from RA's venue index is used.

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

Maximum records to return (1–200). For eventsByCity this caps the number of events. For artistProfile / venueProfile it caps the embedded upcoming/recent events list.

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

Proxy used for ra.co requests. Apify Proxy (automatic) is recommended and sufficient.

## Actor input object example

```json
{
  "mode": "eventsByCity",
  "countryCode": "gb",
  "city": "london",
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "mode": "eventsByCity",
    "countryCode": "gb",
    "city": "london",
    "dateFrom": "",
    "dateTo": "",
    "artistName": "",
    "venueSlug": "",
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/resident-advisor-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 = {
    "mode": "eventsByCity",
    "countryCode": "gb",
    "city": "london",
    "dateFrom": "",
    "dateTo": "",
    "artistName": "",
    "venueSlug": "",
    "maxItems": 20,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/resident-advisor-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 '{
  "mode": "eventsByCity",
  "countryCode": "gb",
  "city": "london",
  "dateFrom": "",
  "dateTo": "",
  "artistName": "",
  "venueSlug": "",
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call parsebird/resident-advisor-scraper --silent --output-dataset

```

## MCP server setup

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