Discover/MyPleasure API
live

MyPleasure APItickets.mypleasure.es ↗

Fetch event details, venue coordinates, ticket pricing, and promoter listings from tickets.mypleasure.es via two structured JSON endpoints.

Endpoint health
verified 2h ago
list_events
get_event
2/2 passing latest checkself-healing
Endpoints
2
Updated
2h ago

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.

This call costs1 credit / call— charged only on success
Try it
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.
→ api.parse.bot/scraper/6c29fe8c-baff-4635-b822-3e4b4affaa26/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
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'
Python SDK · recommended

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")
All endpoints · 2 totalmissing one? ·

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.

Input
ParamTypeDescription
slugrequiredstringEvent 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.
Response
{
  "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.

Reliability & maintenanceVerified

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.

Last verified
2h ago
Latest check
2/2 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Display ticket price ranges for upcoming MyPleasure events on a nightlife aggregator using start_price_eur and end_price_eur from list_events.
  • Geocode event venues by reading lat and lon from the venue object returned by get_event.
  • Monitor active ticket classes and their management fees using price_eur and management_cost_eur from the tickets array.
  • Enumerate all past events for a promoter by setting include_past=true in list_events.
  • Render event descriptions in a custom UI using the description field's raw HTML or plain-text variant from get_event.
  • Build a calendar feed from start_datetime and end_datetime fields across paginated list_events results.
  • Check whether an event has multiple sessions before displaying a session-picker UI, using the has_sessions boolean from get_event.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 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.

Frequently asked questions
Does tickets.mypleasure.es have an official developer API?+
No official public developer API or documented REST API is published by tickets.mypleasure.es for third-party use. This Parse API provides structured access to the public event data available on the site.
What does get_event return for ticket pricing, and does it include booking fees?+
The 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?+
The 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?+
No. The API covers public event information — details, venue, ticket classes, and pricing. Order history, attendee lists, and purchase records are not publicly accessible and are not included in any endpoint. You can fork this API on Parse and revise it to add any public endpoints that may become available.
How does pagination work in list_events, and is there a limit on page size?+
The 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.
Page content last updated . Spec covers 2 endpoints from tickets.mypleasure.es.
Related APIs in EntertainmentSee all →