MyPleasure APItickets.mypleasure.es ↗
Fetch event details, venue coordinates, ticket pricing, and promoter listings from tickets.mypleasure.es via two structured JSON endpoints.
What is the MyPleasure API?
The MyPleasure Tickets API exposes 2 endpoints covering event data from tickets.mypleasure.es, a Spanish adult-event ticketing platform. The get_event endpoint returns full event detail — including venue coordinates, ticket classes with pricing and fees, promoter name, and session flags — identified by a URL slug. The list_events endpoint returns paginated summaries with price ranges and sale status for the promoter's upcoming or past events.
curl -X GET 'https://api.parse.bot/scraper/6c29fe8c-baff-4635-b822-3e4b4affaa26/get_event?slug=hallokink-all-parties' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace tickets-mypleasure-es-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: MyPleasure Tickets SDK — browse events, drill into details."""
from parse_apis.tickets_mypleasure_es_api import MyPleasure, EventNotFound
client = MyPleasure()
# List upcoming events (paginated, capped at 5 total items).
for summary in client.event_summaries.list(limit=5):
print(summary.name, summary.venue, f"from €{summary.start_price_eur}")
# Drill down: take the first event summary and fetch full details.
first = client.event_summaries.list(limit=1).first()
if first is not None:
event = first.details()
print(event.name, event.promoter)
print("Venue:", event.venue.name, event.venue.address)
# Walk ticket classes on the detail.
for ticket in event.tickets:
status = "SOLD OUT" if ticket.sold_out else "available"
print(f" {ticket.name} ({ticket.ticket_type}): €{ticket.price_eur} + €{ticket.management_cost_eur} fee — {status}")
# Related events are typed summaries; navigate to one's full detail.
if event.related_events:
related = event.related_events[0].details()
print("Related:", related.name, related.start_datetime)
# Point lookup by slug, with error handling for unknown slugs.
try:
event = client.events.get(slug="hallokink-opening-ball")
print(event.name, event.start_datetime, "→", event.end_datetime)
except EventNotFound:
print("Event not found")
print("exercised: event_summaries.list / details / events.get / tickets / related_events")
Returns the full public detail of one event identified by its URL slug (the last path segment of https://tickets.mypleasure.es/evento/<slug>): name, promoter, start/end datetimes (UTC ISO 8601), venue with address and coordinates, description (raw HTML and plain text), ticket conditions, sale window, and every ticket class with its currently active price, management fee, price history, age limit, per-order limits and sold-out flags. Prices are euros as numbers. Also returns related_events (summaries whose slug can be passed back into this endpoint). One upstream request. An unknown slug yields a stale_input / input_not_found error; general_conditions_text and minors_policy_text are null when the organiser has not published them.
| Param | Type | Description |
|---|---|---|
| slugrequired | string | Event slug as shown in the event page URL, also emitted by list_events.events[*].slug (e.g. hallokink-opening-ball). Lowercase letters, digits and hyphens. |
{
"type": "object",
"fields": {
"id": "numeric event id",
"name": "event title",
"slug": "event slug (input echo from the site record)",
"venue": "object: id, name, address, locality, lat, lon",
"tickets": "array of ticket classes: id, name, ticket_type, description, price_eur (active price), management_cost_eur (fee on top), price_history_eur (all price tiers with is_active), min_age, min/max_tickets_per_sale, sale_is_active, sold_out, temporarily_sold_out, hidden, start/end_sale_datetime",
"promoter": "organiser legal name",
"image_url": "absolute poster image URL",
"event_type": "site category label (Spanish)",
"end_datetime": "event end, ISO 8601 UTC",
"has_sessions": "boolean, event has multiple sessions",
"end_price_eur": "highest ticket price in euros",
"related_events": "array of event summaries (same shape as list_events.events items)",
"sale_is_active": "boolean, ticket sale currently open",
"start_datetime": "event start, ISO 8601 UTC",
"start_price_eur": "lowest ticket price in euros",
"description_html": "organiser description as raw HTML",
"description_text": "same description with HTML stripped",
"waitlist_enabled": "boolean",
"end_sale_datetime": "sale closing datetime or null",
"minors_policy_text": "minors policy, HTML stripped, or null",
"start_sale_datetime": "sale opening datetime or null",
"seat_selection_enabled": "boolean",
"ticket_conditions_text": "admission conditions, HTML stripped, or null",
"general_conditions_text": "general conditions, HTML stripped, or null"
},
"sample": {
"data": {
"id": 61,
"name": "HALLOKINK - OPENING BALL",
"slug": "hallokink-opening-ball",
"venue": {
"id": 26,
"lat": 40.4217163,
"lon": -3.7201867,
"name": "ART",
"address": "P.º de la Florida, 2, Moncloa - Aravaca, 28008 Madrid, España",
"locality": "Madrid"
},
"tickets": [
{
"id": 189,
"name": "OPENING BALL",
"hidden": false,
"min_age": 18,
"sold_out": false,
"price_eur": 40,
"description": "Dos bebidas incluidas durante las dos primeras horas.",
"ticket_type": "Normal",
"sale_is_active": true,
"end_sale_datetime": null,
"price_history_eur": [
{
"is_active": false,
"price_eur": 30,
"management_cost_eur": 3
},
{
"is_active": true,
"price_eur": 40,
"management_cost_eur": 3
}
],
"management_cost_eur": 3,
"start_sale_datetime": null,
"max_tickets_per_sale": 5,
"min_tickets_per_sale": 1,
"temporarily_sold_out": false
}
],
"promoter": "PRODUCCIONES CHATUCHAK, S.L",
"image_url": "https://api.klapper.pro/storage/images/promoters/events/7d684bf8-d0c1-4763-b9c7-78b23425397b.png",
"event_type": "Discotecas y pubs",
"end_datetime": "2026-11-01T05:00:00.000000Z",
"has_sessions": false,
"end_price_eur": 40,
"related_events": [
{
"id": 60,
"name": "HALLOKINK - ALL PARTIES",
"slug": "hallokink-all-parties",
"venue": "Different times and locations., Madrid",
"locality": "Madrid",
"image_url": "https://api.klapper.pro/storage/images/promoters/events/093db1c4-5173-4f4c-9fd6-ab555ec9d4c1.png",
"event_type": "Discotecas y pubs",
"end_datetime": "2026-11-02T07:00:00+00:00",
"end_price_eur": 50,
"sale_is_active": true,
"start_datetime": "2026-10-31T21:00:00+00:00",
"start_price_eur": 50
}
],
"sale_is_active": true,
"start_datetime": "2026-10-31T21:01:00.000000Z",
"start_price_eur": 30,
"description_html": "<p>Dos bebidas incluidas durante las dos primeras horas.</p>",
"description_text": "Dos bebidas incluidas durante las dos primeras horas. Two drinks included within the first two hours.",
"waitlist_enabled": false,
"end_sale_datetime": "2026-10-31T20:00:00.000000Z",
"minors_policy_text": null,
"start_sale_datetime": null,
"seat_selection_enabled": false,
"ticket_conditions_text": "Edad : Solamente se permite el acceso a mayores de 18 años.",
"general_conditions_text": null
},
"status": "success"
}
}About the MyPleasure API
Event Detail via get_event
The get_event endpoint accepts a single required slug parameter — the last path segment of any tickets.mypleasure.es/evento/<slug> URL. It returns a structured record with the event name, promoter, event_type (site category label in Spanish), image_url, and ISO 8601 UTC start_datetime / end_datetime. The venue object includes id, name, address, locality, lat, and lon, giving enough data to plot the event on a map without a secondary geocoding call. The has_sessions boolean signals whether the event is divided into multiple sessions.
Ticket Classes and Pricing
The tickets array in get_event contains one object per ticket class. Each entry includes id, name, ticket_type, description, price_eur (the active selling price), management_cost_eur (the booking fee added on top), and price_his (historical price data). This makes it straightforward to display the full cost to the buyer — base price plus fee — or to track price changes over time using the historical field.
Paginated Event Listings via list_events
The list_events endpoint returns summaries for the promoter's events. It supports page (1-based), page_size (capped at 100), and include_past (boolean). The response includes total, has_more, last_page, and page_size to support standard pagination loops. Each summary carries id, slug, name, start_datetime, end_datetime, venue (formatted as name, city), locality, start_price_eur, end_price_eur, the event category, sale status, and a poster URL. Slugs returned here can be passed directly to get_event for full detail.
Coverage Scope
The API covers public event data under the MyPleasure promoter's account on tickets.mypleasure.es. It returns data that is publicly visible on the site without authentication, including all ticket classes listed on each event page. Data requiring login — such as purchase history, attendee records, or private draft events — is not in scope.
The MyPleasure API is a managed, monitored endpoint for tickets.mypleasure.es — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when tickets.mypleasure.es changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official tickets.mypleasure.es API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Display ticket price ranges for upcoming MyPleasure events on a nightlife aggregator using
start_price_eurandend_price_eurfromlist_events. - Geocode event venues by reading
latandlonfrom thevenueobject returned byget_event. - Monitor active ticket classes and their management fees using
price_eurandmanagement_cost_eurfrom theticketsarray. - Enumerate all past events for a promoter by setting
include_past=trueinlist_events. - Render event descriptions in a custom UI using the
descriptionfield's raw HTML or plain-text variant fromget_event. - Build a calendar feed from
start_datetimeandend_datetimefields across paginatedlist_eventsresults. - Check whether an event has multiple sessions before displaying a session-picker UI, using the
has_sessionsboolean fromget_event.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does tickets.mypleasure.es have an official developer API?+
What does get_event return for ticket pricing, and does it include booking fees?+
tickets array returned by get_event includes both price_eur (the base ticket price) and management_cost_eur (the booking fee charged on top). Both are returned per ticket class, so you can display the total cost to the buyer or break down the fee separately.Does list_events return events from all promoters on the platform, or only one?+
list_events endpoint covers events listed under the MyPleasure promoter account on tickets.mypleasure.es. Events from other promoters on the same platform are not currently returned. You can fork this API on Parse and revise it to target a different promoter's listing.Is attendee or order data available through this API?+
How does pagination work in list_events, and is there a limit on page size?+
list_events endpoint uses 1-based page numbering. The page_size parameter controls how many events are returned per page, but values above 100 are clamped to 100. The response always includes total, has_more, and last_page so you can iterate through all results programmatically.