The most comprehensive historical archive of DJ performances at Berlin's legendary Berghain nightclub
Use This Database • Get Involved • API Docs • Support
| Artists | Events | Performances | Years |
Coverage Period: November 2009 - February 2026 (ongoing monthly updates)
This project preserves the history of one of the world's most influential Techno institutions by cataloging every DJ performance at Berghain and Panorama Bar.
This database provides a free public REST API — no authentication required. Whether you're building an app, conducting research, or exploring data, here's how different users can benefit:
Build applications powered by 16+ years of Berghain performance data:
# Get top performers of all time
curl "https://berghain.ravers.workers.dev/api/artists/ranking?limit=20"
# Search for any artist
curl "https://berghain.ravers.workers.dev/api/artists?search=ellen+allien"
# Get an artist's complete performance history
curl "https://berghain.ravers.workers.dev/api/artists/16/performances"
# Fetch current active residents
curl "https://berghain.ravers.workers.dev/api/residents/current"Example Projects:
- DJ performance analytics dashboards
- Artist career trajectory visualizations
- Booking frequency analysis tools
- Historical trends explorer
- Techno scene network graphs
Study one of the world's most documented club venues:
| Research Area | Relevant Endpoints |
|---|---|
| Venue programming patterns | /api/stats/monthly, /api/shows |
| Artist career analysis | /api/artists/:id/stats, /api/artists/:id/performances |
| Resident DJ dynamics | /api/residents/current |
| Historical trends | /api/years, /api/period, /api/artists/ranking/year/:year |
Academic Use Cases:
- Club culture and nightlife studies
- Electronic music history documentation
- Social network analysis of DJ communities
- Urban cultural institution research
- Gender and diversity analysis in DJ bookings
Simply visit the web front end and explore the complete Berghain archive:
- Discover which DJs have played the most sets
- Track your favorite artists' performance history
- Compare Berghain vs Panorama Bar bookings
- Find when artists first/last played
- Explore monthly and yearly programming patterns
This database is maintained by the community, for the community. Your contributions help preserve Techno history.
| Contribution | Description |
|---|---|
| 🔍 Data Corrections | Found a wrong date, misspelled artist, or incorrect venue? Let us know! |
| ➕ Missing Performances | Know about a performance that's not in the database? Report it with source |
| 💡 Feature Ideas | Have an idea for a new API endpoint or analysis? We'd love to hear it |
| ⭐ Star & Share | Help others discover this project |
See CONTRIBUTING.md for detailed guidelines on submitting corrections with proper sources.
This database is a labor of love, maintained for the global Techno community. If you find it useful:
Bitcoin (BTC)![]() bc1qp4lg5mw0c9nv3ygjnnx5gg95wk7h6flpw5pvfq
|
Solana (SOL)![]() 8oj2PMky2Zx9qznjK5eG7AUdqRab8GnrFJ7UamfEKRu
|
Other Ways ⭐ Star this repo 🐦 Share on social 📝 Report issues 🔗 Link to us |
Base URL: https://berghain.ravers.workers.dev
| Endpoint | Description |
|---|---|
GET /api/stats |
Database statistics & venue breakdown |
GET /api/artists/ranking |
Top artists by performance count |
GET /api/artists?search= |
Search artists by name |
GET /api/artists/:id |
Get artist details |
GET /api/artists/:id/stats |
Detailed artist statistics |
GET /api/artists/:id/performances |
Artist's performance history |
GET /api/shows |
Browse all events |
GET /api/residents/current |
Current active residents |
GET /api/years |
Available years in database |
GET /api/period |
Data coverage period |
GET /api/stats/monthly?year= |
Monthly statistics by year |
GET /api/stats — Database Statistics
Returns overall database statistics including total counts and venue breakdown.
Response:
{
"total_artists": 2099,
"total_events": 748,
"total_performances": 10466,
"venue_breakdown": [
{ "venue": "Berghain", "count": 5581 },
{ "venue": "Panorama Bar", "count": 4885 }
]
}GET /api/artists/ranking — Artist Rankings
Returns artists ranked by total performance count.
Query Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
limit |
integer | 50 | Number of results (max 500) |
Response:
[
{
"id": 14,
"name": "Norman Nodge",
"total_performances": 149,
"berghain_performances": 142,
"panorama_performances": 7
}
]GET /api/artists — Search Artists
Search and browse all artists with pagination.
Query Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
search |
string | — | Search term (supports special chars: Ø, ø, À-ÿ) |
page |
integer | 1 | Page number |
limit |
integer | 20 | Results per page |
Example:
curl "https://berghain.ravers.workers.dev/api/artists?search=rødhåd"GET /api/artists/:id/stats — Artist Statistics
Get detailed statistics for an artist including career span.
Response:
{
"name": "Ben Klock",
"total_performances": 138,
"berghain_performances": 130,
"panorama_performances": 8,
"first_performance": "2009-12-12",
"last_performance": "2026-01-04",
"active_years": 17,
"recent_performances_2years": 22
}GET /api/artists/:id/performances — Performance History
Get all performances for a specific artist.
Response:
[
{
"title": "Klubnacht",
"date": "04.01.2026",
"iso_date": "2026-01-04",
"url": "https://www.berghain.berlin/de/event/79420/",
"venue": "Berghain",
"artist_name": "Ben Klock"
}
]GET /api/residents/current — Current Residents
Returns current active residents based on 3-year rolling performance analysis.
Response:
[
{
"id": 36,
"name": "Steffi",
"total_performances_3y": 32,
"recent_performances_1y": 10,
"last_performance": "2026-02-28",
"total_performances": 125,
"berghain_performances": 58,
"panorama_performances": 67
}
]GET /api/shows — Browse Events
Browse all Klubnacht events.
Query Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
limit |
integer | 20 | Number of results |
Response:
[
{
"id": 912,
"event_id": 79500,
"title": "Klubnacht",
"date": "28.02.2026",
"iso_date": "2026-02-28",
"year": 2026,
"month": 2,
"url": "https://www.berghain.berlin/de/event/79500/",
"total_artists": 14
}
]GET /api/stats/monthly — Monthly Statistics
Get monthly performance statistics aggregated by year.
Query Parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
year |
integer | current | Specific year to analyze |
Response:
[
{
"month": 1,
"event_count": 62,
"total_artists": 758,
"avg_artists_per_event": 12.23
}
]| Endpoint | Description |
|---|---|
GET /api/artists/by-name/:name |
Find artist by exact name (URL-encoded) |
GET /api/artists/ranking/year/:year |
Rankings for a specific year |
GET /sitemap.xml |
XML sitemap for search engines |
GET /feed.xml |
RSS feed of recent events |
GET /health |
API health check |
- CORS enabled — Works from any origin
- No authentication — Completely free and open
- Generous rate limits — Fair use policy
- Fast responses — <100ms average (95%+ cache hit rate)
- ISO dates — Machine-readable date formats
- Special character support — Handles Ø, ø, À-ÿ, etc.
SQLite database (Cloudflare D1) with three core tables:
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ artists │ │ performances │ │ events │
├─────────────────┤ ├──────────────────┤ ├─────────────────┤
│ id (PK) │◄──────│ artist_id (FK) │ │ id (PK) │
│ name │ │ event_id (FK) │──────►│ event_id │
│ normalized_name │ │ venue │ │ title │
│ total_perfs │ └──────────────────┘ │ date / iso_date │
│ berghain_perfs │ │ year / month │
│ panorama_perfs │ │ url │
└─────────────────┘ │ total_artists │
└─────────────────┘
View detailed schema
| Column | Type | Description |
|---|---|---|
id |
INTEGER | Primary key (auto-increment) |
name |
TEXT | Unique artist name |
normalized_name |
TEXT | Lowercase, hyphen-separated for search |
total_performances |
INTEGER | Total appearance count |
berghain_performances |
INTEGER | Main floor appearances |
panorama_performances |
INTEGER | Panorama Bar appearances |
| Column | Type | Description |
|---|---|---|
id |
INTEGER | Primary key (auto-increment) |
event_id |
INTEGER | Original Berghain event ID (unique) |
title |
TEXT | Event title (usually "Klubnacht") |
date |
TEXT | Display format (DD.MM.YYYY) |
iso_date |
TEXT | ISO format (YYYY-MM-DD) |
year |
INTEGER | Event year |
month |
INTEGER | Event month |
url |
TEXT | Original event URL |
total_artists |
INTEGER | Number of artists |
| Column | Type | Description |
|---|---|---|
id |
INTEGER | Primary key (auto-increment) |
event_id |
INTEGER | References events(id) |
artist_id |
INTEGER | References artists(id) |
venue |
TEXT | "Berghain" or "Panorama Bar" |
View technical architecture
Built on Cloudflare's global edge network for maximum performance and reliability.
┌─────────────────────────────────────────────────────────────────┐
│ Client Request │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ Cloudflare Edge Network │
│ (300+ global PoPs) │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ Workers Runtime │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Hono Framework │ │
│ │ (TypeScript, Edge-native) │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌─────────────┴─────────────┐ │
│ ▼ ▼ │
│ ┌───────────────────────────┐ ┌───────────────────────────┐ │
│ │ 3-Tier Cache System │ │ R2 Storage │ │
│ │ │ │ (Static Assets) │ │
│ │ L1: In-Memory (2-24h) │ └───────────────────────────┘ │
│ │ L2: KV Storage (7-30d) │ │
│ │ L3: D1 Database │ │
│ └───────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
The API implements an advanced caching strategy that reduces database reads by ~95%:
| Layer | Storage | Scope | TTL |
|---|---|---|---|
| L1 | In-Memory Map | Per-instance | 2-24h |
| L2 | Workers KV | Global | 7-30 days |
| L3 | D1 Database | Global | Permanent |
| Component | Technology |
|---|---|
| Runtime | Cloudflare Workers |
| Framework | Hono (TypeScript) |
| Database | Cloudflare D1 (SQLite) |
| Cache | Workers KV |
| Storage | Cloudflare R2 |
| Metric | Value |
|---|---|
| Average Response Time | <100ms |
| Cache Hit Rate | >95% |
| Global Availability | 99.9%+ |
| Edge Locations | 300+ cities |
MIT License — see LICENSE for details.
- Berghain & Panorama Bar — For being an incomparable cultural institution
- The Artists — Who created the music that defined a generation
- The Community — For preserving and celebrating Techno culture
Note: This is an unofficial community project. Not affiliated with Berghain or Ostgut Ton.
Built with ❤️ for the global Techno community

