Tresor Berlin Events Scraper avatar

Tresor Berlin Events Scraper

Pricing

from $1.79 / 1,000 results

Go to Apify Store
Tresor Berlin Events Scraper

Tresor Berlin Events Scraper

Scrape upcoming Tresor Berlin techno club events: date, title, floor-by-floor DJ lineups with set times, description, ticket link and image. Filter by date range, event URL or artist name, up to 100 events per run, sorted earliest first.

Pricing

from $1.79 / 1,000 results

Rating

0.0

(0)

Developer

Axiom Works

Axiom Works

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Categories

Share

Returns: one row per Tresor Berlin event with title, date, dayOfWeek, startTime, floors, artists, ticketUrl and image. Input: {"maxItems": 5} Best for: club-night calendars, tracking which artists play Tresor, newsletter and booking-database feeds.

{"id": "tresor-20261014-tresor-new-faces-hosted-by-push-network", "title": "Tresor New Faces hosted by Push Network", "date": "2026-10-14", "startTime": "23:00", "artistCount": 5, "ticketUrl": "https://ra.co/events/2523469", "sourceUrl": "https://tresorberlin.com/event/20261014-tresor-new-faces-hosted-by-push-network/"}

What does Tresor Berlin Events Scraper do?

Tresor Berlin Events Scraper collects public event information from the Tresor Berlin website and saves one clean record per event in an Apify dataset. It reads the site's public event sitemap, opens each event page and extracts the title, the date, the lineup for every floor with the listed set times, the description, the ticket link and the event image.

If an event page is not available and the website sends the visitor to its home page instead, the Actor reads the same event from the public events listing page (/club/events/). That page shows the title, the date and the artists on each floor, and for a few featured events an image. Set times, description and ticket link are only shown on event pages, so those fields are null in such records, and sourceUrl then points to the listing page. On 10 October 2026 event pages opened normally, so records came from the event pages with set times, description and ticket link; the listing page is only a fallback.

Records are sorted by event date, earliest first. You can restrict the date range, cap the number of events, or pass specific event page URLs. No login is needed, because the Actor only reads pages that anyone can open in a browser.

Use query to find an artist, floor or event series within the selected events. For example, {"query":"Preta","maxItems":1} returns the first matching event. Matching ignores case and accents and checks published artist names, floor names and titles. Nonmatching events are neither saved nor enriched. A query with no matches returns zero records with guidance to broaden it.

Use eventIds to revisit saved output ids or dated URL slugs without rebuilding URLs. For example, {"eventIds":["tresor-20261014-tresor-new-faces-hosted-by-push-network"]} selects that event. IDs and startUrls can be combined; duplicate events count once toward the shared limit. Dates are ignored for explicit targets, while query still applies. Past events may disappear from the site.

The Actor is an independent tool. It is not affiliated with, endorsed by or connected to Tresor Berlin.

What data can you get?

Every record contains the fields below. Fields that a page does not provide are returned as null, and floors is an empty list when no lineup is published.

FieldTypeDescription
idstringStable event identifier built from the URL slug, for example tresor-20260930-tresor-new-faces-hosted-by-tresor.
sourceUrlstringThe page the record was read from: the event page, or the events listing page when the event page is not available.
urlstringCanonical event URL.
titlestringEvent title.
datestringEvent date in YYYY-MM-DD format, taken from the event URL.
startTimestring or nullEarliest evening set time, for example 23:00. null when no set times are published or the record comes from the listing page.
floorsarrayFloors with their lineups. Each floor has floor (name) and lineup, a list of name, time and link (artist link or null).
descriptionstring or nullEvent information and ticket policy text. A section heading repeated as the following paragraph's label is included once. Shortened to a preview of about 200 characters when includeDescription is false.
ticketUrlstring or nullExternal ticket listing URL.
imagestring or nullEvent image URL. From the listing page, only featured events have one.
eventTypestring or nullEvent series classification. Filled only when the enrich input is true and the AI step succeeds, otherwise null.
artistsarrayFlat list of unique artist names across all floors, handy for filtering or counting without walking floors.
artistCountintegerNumber of unique artists in artists.
dayOfWeekstringEnglish weekday of date, for example Saturday.
venuestringAlways Tresor.
citystringAlways Berlin.

The site sometimes puts the set-duration note “All night long” in an artist-name element. The Actor excludes that exact note from lineups, artists and artistCount; it keeps the published artist names and their set times.

The Actor does not download ticket pages or artist pages. It returns the links to them, not their content.

How to use

  1. Open the Actor on Apify and go to the Input tab.
  2. Set Maximum events to the number of events you want. The value must be between 1 and 100.
  3. Optionally set From date and To date to limit the range, or paste event page URLs into Specific event URLs.
  4. Click Start. A run with five events takes well under a minute.
  5. Open the Output tab to view, filter or download the dataset as JSON, CSV, Excel or HTML.

Behaviour worth knowing

Only currently published events are available. Date ranges with no events return an empty dataset and guidance to widen the range. Missing explicit targets are skipped; all missing targets also return no records. The Actor never substitutes unrelated events for your filters.

Set times are normalised to HH:MM-HH:MM or HH:MM-END. Detail-page redirects trigger a lookup on the public listing page. Listing-only records lack set times, description and ticket links.

Transient failures and block pages retry up to twice with backoff. Configured proxy retries use fresh sessions. Invalid input fails validation; a valid target that remains blocked ends successfully with recovery guidance. Unknown input fields are ignored with a warning. Dates also accept DD.MM.YYYY; explicit URLs and ids ignore date filters.

Input

FieldTypeDescription
maxItemsintegerMaximum number of events to return, 1 to 100. Default 50.
fromDatestringEarliest event date, YYYY-MM-DD. Defaults to today in Berlin.
toDatestringLatest event date, YYYY-MM-DD. Must not be earlier than fromDate.
includeDescriptionbooleanReturn the full description and ticket policy text. When false, only a preview of about 200 characters. Default true.
enrichbooleanAdd an AI-generated event series label in eventType. Costs extra per labelled result. Default false.
startUrlsarray of stringsOptional Tresor event page URLs in the form https://tresorberlin.com/event/YYYYMMDD-slug/. When given, only these events are returned.
querystringOptional artist, floor or title substring, case and accent insensitive. Empty by default. Applies to all selected events before saving or enrichment.
eventIdsstring arrayUp to 100 dated URL slugs or saved output ids. Combines with startUrls, ignores dates, and uses the shared maxItems limit. Empty by default.
proxyConfigurationobjectOptional proxy settings. No proxy by default. Turn on Apify Proxy if your runs are blocked; every retry then uses a new proxy session.

Example input:

{
"maxItems": 5,
"fromDate": "2026-10-01",
"toDate": "2026-12-31",
"includeDescription": true
}

Example input with specific pages:

{
"startUrls": [
"https://tresorberlin.com/event/20261014-tresor-new-faces-hosted-by-push-network/"
]
}

Output

The dataset holds one item per event. The example below is a complete record from a local run on 13 October 2026, read from the event page:

{
"id": "tresor-20261014-tresor-new-faces-hosted-by-push-network",
"sourceUrl": "https://tresorberlin.com/event/20261014-tresor-new-faces-hosted-by-push-network/",
"url": "https://tresorberlin.com/event/20261014-tresor-new-faces-hosted-by-push-network/",
"title": "Tresor New Faces hosted by Push Network",
"date": "2026-10-14",
"startTime": "23:00",
"floors": [
{
"floor": "Tresor x Push Network",
"lineup": [
{
"name": "Vich Mind",
"time": "23:00-01:30",
"link": "https://soundcloud.com/vichmind"
},
{
"name": "MZA",
"time": "01:30-03:30",
"link": "https://soundcloud.com/mzaofficiel"
},
{
"name": "Preta",
"time": "03:30-05:30",
"link": "https://soundcloud.com/pretaaaa"
},
{
"name": "Mischa Beton",
"time": "05:30-END",
"link": "https://soundcloud.com/mischabeton"
}
]
},
{
"floor": "Aurora Bar",
"lineup": [
{
"name": "BERYLL b2b Freigeist",
"time": "23:00-05:00",
"link": null
}
]
}
],
"description": "Tresor New Faces hosted by Push Network With the aim to showcase and support FLINTA* talent, Push Network bridges the gap between Vienna and Berlin’s Techno communities whilst supporting artists from all corners of Europe. Guest Information: Self-service lockers are now installed for guests to store their belongings. It is recommended to download the DAYLOX app before arriving. Bring a charged phone. NFC capabilities must be switched on. Tresor staff are on site if you need support. Ticket Policy Tickets via RA A ticket does not guarantee entry. Tresor reserves the right to refuse admission to any guest in accordance with its house policy. All ticket purchases, resales, and refund requests are handled exclusively by Resident Advisor. For refund enquiries, please refer to RA’s support guidelines.",
"ticketUrl": "https://ra.co/events/2523469",
"image": "https://tresorberlin.com/wp-content/uploads/2026/08/4-1-1536x1536.jpg",
"eventType": null,
"artists": [
"Vich Mind",
"MZA",
"Preta",
"Mischa Beton",
"BERYLL b2b Freigeist"
],
"artistCount": 5,
"dayOfWeek": "Wednesday",
"venue": "Tresor",
"city": "Berlin"
}

When an event page is available, the same record also carries set times in time and startTime, artist links in link, the description and the ticketUrl (usually a Resident Advisor event link), and sourceUrl is the event page itself. Set times are normalised to HH:MM-HH:MM, and a value such as 05:00-END is possible when the page shows an open end. In the run above eventType is null because enrich was off.

You can download the dataset in JSON, CSV, Excel, XML or HTML format from the Output tab or through the API.

How much does it cost?

The Actor uses pay-per-event pricing, charged per result, meaning per event record saved to the dataset. The current price is shown on the Pricing tab of the Actor page, so check it there before you run large jobs. Use maxItems to control how many results you pay for. The Actor stops successfully when the maximum cost per run allows no more results, and its final status explains that stop. AI enrichment is off by default. If you switch on enrich, each event that receives a label is charged extra, as listed on the Pricing tab.

Use with AI agents (MCP)

You can call this Actor from any MCP-compatible AI assistant through the Apify MCP server. Add the Actor to the server's tool list with this configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=axiomworks/tresor-berlin-events-scraper"
}
}
}

Example prompts:

Integrations and API

You can start the Actor from code and read the results with the Apify API clients. Replace YOUR_API_TOKEN with your own Apify API token.

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("axiomworks/tresor-berlin-events-scraper").call(
run_input={"maxItems": 5}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["date"], item["title"])

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('axiomworks/tresor-berlin-events-scraper').call({ maxItems: 5 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
process.stdout.write(items.map((e) => `${e.date} ${e.title}`) + "\n");

cURL

curl -X POST "https://api.apify.com/v2/acts/axiomworks~tresor-berlin-events-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"maxItems": 5}'

You can also connect the Actor to Apify schedules, webhooks and integrations such as Make, Zapier or Google Sheets, to refresh your event list automatically.

FAQ

How many events can I get? Up to 100 per run. The number of events available depends on what the website has published, which is a limited window of upcoming events. The local check on 13 October 2026 found 23 event URLs in the sitemap.

Can I get past events? No. The website publishes upcoming events only. A date range in the past matches nothing, so the Actor returns an empty dataset.

Why is startTime null? The event page lists no set times, or the record comes from the events listing page, which does not show set times. Records are still returned with the other fields.

Why are description and ticketUrl null? Event pages opened normally on 10 October 2026. If the website sends event pages to its home page again, the Actor falls back to the events listing page, which shows titles, dates, floors and artists but no description or ticket link. The fields are filled again as soon as event pages open, without any change to your input.

Do I need a proxy? Usually not. The website answers normal requests. If your runs start failing with HTTP 403 or 429 errors, turn on Apify Proxy in proxyConfiguration; the Actor then retries each failed request on a new proxy session.

Why is eventType null? AI enrichment is optional and off by default. When you set enrich to true, the Actor classifies the event series into eventType. It sends the event title and a short part of the description to TypeSafe, a third-party AI processor. If enrichment is off or fails, the record is still returned with eventType: null. The same processor may also be asked to pick a title or artist name from text already on the page when the usual page structure is missing.

Why did I get no events? No listed event falls inside your date range, or none of your startUrls is still published. The Actor succeeds with an empty dataset. Clear or widen the dates, remove startUrls to discover upcoming events, or enable proxyConfiguration if requests are blocked.

How fast does it run? The Actor requests pages one by one at a modest rate, with retries and backoff on errors, to be polite to the website. Small runs finish in under a minute.

The run failed with an input error. What now? Read the error message in the log. It names the field and the reason, for example a URL that is not a Tresor event page.

The Actor reads only public pages that open without a login, and it does not bypass any access control. The data is event information such as titles, dates, lineups and links. Laws and website terms differ by country and by use, so you are responsible for checking that your use of the data complies with applicable law, including copyright and database rights, and with the site's terms. Images and text remain the property of their owners. This is not legal advice.

Feedback

If a field is missing, a page layout changes or you need another field, open an issue from the Actor's Issues tab on Apify. Include the input you used and the event URL involved so the problem can be reproduced.