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 or event URL, up to 100 events per run. If no event matches the dates, the earliest upcoming events are returned.

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

9 hours ago

Last modified

Categories

Share

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.

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.

Typical uses:

  • Building a calendar or listing of upcoming Tresor nights.
  • Tracking which artists are booked on which floor.
  • Feeding event data into a newsletter, a spreadsheet or a booking database.
  • Monitoring new announcements by running the Actor on a schedule.

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 event page the record was read from.
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 the page lists no set times.
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. Shortened to a preview of about 200 characters when includeDescription is false.
ticketUrlstring or nullExternal ticket listing URL.
imagestring or nullEvent image URL.
eventTypestring or nullEvent series classification. Filled only when the enrich input is true and the AI step succeeds, otherwise null.

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

How to use Tresor Berlin Events Scraper

  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

  • The website only publishes upcoming events. If the date range you choose matches no listed event, the Actor returns an empty dataset, logs a warning with the first and last date the site lists, and charges nothing.
  • If you provide event URLs and none of them is still published, the Actor also returns no records. URLs that are no longer published are skipped when at least one other URL works.
  • Set times are normalised to HH:MM-HH:MM or HH:MM-END.
  • When fromDate is empty, it defaults to today's date in Berlin.
  • fromDate and toDate do not filter URLs you pass in startUrls. Those pages are scraped as given.
  • Invalid input stops the run at once with a clear error message. Examples are a URL that is not a Tresor event page, an impossible calendar date, a toDate earlier than fromDate, a maxItems outside 1 to 100, or a value of the wrong type.

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 pages are scraped.

Example input:

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

Example input with specific pages:

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

Output

The dataset holds one item per event. The example below comes from a local run of the Actor (the description is shortened here for readability):

{
"id": "tresor-20260930-tresor-new-faces-hosted-by-tresor",
"sourceUrl": "https://tresorberlin.com/event/20260930-tresor-new-faces-hosted-by-tresor/",
"url": "https://tresorberlin.com/event/20260930-tresor-new-faces-hosted-by-tresor/",
"title": "Tresor New Faces hosted by Tresor",
"date": "2026-09-30",
"startTime": "23:00",
"floors": [
{
"floor": "Tresor",
"lineup": [
{ "name": "Auryn", "time": "23:00-02:00", "link": "https://soundcloud.com/auryn303" },
{ "name": "INDACID LIVE", "time": "02:00-03:00", "link": "https://on.soundcloud.com/7ZGObYR960dE9jRlLS" },
{ "name": "MIHEMI", "time": "03:00-05:00", "link": "https://on.soundcloud.com/9eQwsyeAvkXq3sWdou" },
{ "name": "PAREKA", "time": "05:00-END", "link": "http://www.soundcloud.com/pareka" }
]
},
{
"floor": "Aurora Bar",
"lineup": [
{ "name": "Miss Italia", "time": "23:00-05:00", "link": null }
]
}
],
"description": "In the week where we celebrate 35 years of Tresor Records, the club takes this opportunity to look at the future of techno with an in-house New Faces curation. ...",
"ticketUrl": "https://ra.co/events/2499879",
"image": "https://tresorberlin.com/wp-content/uploads/2026/07/10-1521x1536.jpg",
"eventType": null
}

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. Because a run is capped at 100 events and the Actor reads a small number of pages, the cost of a single run stays small. Use maxItems to control how many results you pay for. 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 the 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();
console.log(items.map((e) => `${e.date} ${e.title}`));

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.

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:

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. A recent local run found 15 event pages 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. Records are still returned with the other fields.

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 then returns an empty dataset and logs the first and last date the site lists.

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.