{
  "openapi": "3.0.1",
  "info": {
    "title": "Luma Events Scraper & Monitor",
    "description": "Scrape Luma (lu.ma) events by city, calendar, category or search: date, venue, price, tickets, sold-out status and organizer. A city gives far more events than its short Luma page. On a schedule it can return only new, changed, sold-out and cancelled events.",
    "version": "0.1",
    "x-build-id": "8lUOhGdBP6fxOM4eX"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/zerolag~luma-events-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-zerolag-luma-events-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/zerolag~luma-events-scraper/runs": {
      "post": {
        "operationId": "runs-sync-zerolag-luma-events-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/zerolag~luma-events-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-zerolag-luma-events-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "sources": {
            "title": "Luma pages",
            "type": "array",
            "description": "City, calendar, category or event pages, one per line. Links and short forms both work: <code>https://luma.com/london</code>, <code>sf</code>, <code>San Francisco</code>, <code>https://luma.com/superteam</code>. For a place without a Luma city page use coordinates such as <code>54.6872,25.2797</code>. A city or coordinates return the events within about 70 km. A category page, or <code>https://luma.com/discover</code> for everything, is read across all Luma cities.",
            "items": {
              "type": "string"
            }
          },
          "searchQueries": {
            "title": "Search phrases",
            "type": "array",
            "description": "Phrases for Luma's own search, such as <code>AI hackathon</code>. Each phrase returns up to 50 best matches. Luma ranks them by the location of the server that runs this Actor, so use Luma pages and Keywords when you need one city.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "The run stops after saving this many rows, so this also caps your cost. With change tracking, anything not saved is reported in the next run.",
            "default": 1000
          },
          "maxItemsPerSource": {
            "title": "Maximum results per source",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Save at most this many rows from each city, calendar or search. A category or whole-Luma run counts each city separately. Use 0 for no limit.",
            "default": 0
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Only events in these Luma categories. Applies to cities, coordinates and whole-Luma runs. Calendars and single events are not filtered by category.",
            "items": {
              "type": "string",
              "enum": [
                "ai",
                "arts",
                "books",
                "climate",
                "crypto",
                "family",
                "fitness",
                "food",
                "games",
                "running",
                "tech",
                "wellness"
              ],
              "enumTitles": [
                "AI",
                "Arts & Culture",
                "Books",
                "Climate",
                "Crypto",
                "Family",
                "Fitness",
                "Food & Drink",
                "Games",
                "Running",
                "Tech",
                "Wellness"
              ]
            }
          },
          "dateFrom": {
            "title": "First day",
            "type": "string",
            "description": "Only events starting on or after this day, in the event's own time zone. Pick a date, or a length such as <code>7 days</code> to count forward from today."
          },
          "dateTo": {
            "title": "Last day",
            "type": "string",
            "description": "Only events starting on or before this day, in the event's own time zone. A length such as <code>30 days</code> gives a window that moves with a scheduled run."
          },
          "eventType": {
            "title": "Event type",
            "enum": [
              "all",
              "in-person",
              "online"
            ],
            "type": "string",
            "description": "In-person or online events. City feeds list in-person events, online events come from calendars and search.",
            "default": "all"
          },
          "pricing": {
            "title": "Price",
            "enum": [
              "all",
              "free",
              "paid"
            ],
            "type": "string",
            "description": "Free or paid events. Luma counts an event as free when it has a free ticket, even if paid tickets exist too.",
            "default": "all"
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Keep only events whose name or organizer contains one of these words. Case does not matter.",
            "items": {
              "type": "string"
            }
          },
          "excludeSoldOut": {
            "title": "Skip sold-out events",
            "type": "boolean",
            "description": "Leave out events that are sold out or only take a waitlist.",
            "default": false
          },
          "includeDetails": {
            "title": "Add description, ticket types and categories",
            "type": "boolean",
            "description": "Reads each saved event once more for its full description, ticket types, categories, registration questions and language, at no extra charge. Turn it off for a faster run with fewer fields.",
            "default": true
          },
          "includePastEvents": {
            "title": "Add past events of calendars",
            "type": "boolean",
            "description": "Also reads the past events of each calendar. Cities show upcoming events only. Ignored with change tracking.",
            "default": false
          },
          "changesOnly": {
            "title": "Only new, changed, sold-out and cancelled events",
            "type": "boolean",
            "description": "Compare each source with the previous run and return only the differences. The first run returns all matching events as new. The comparison is stored in a named key-value store in your own account.",
            "default": false
          },
          "monitorId": {
            "title": "Monitor name",
            "pattern": "^[a-z0-9][a-z0-9-]{0,39}$",
            "type": "string",
            "description": "Name of the stored comparison. Use a different name for each schedule that has different sources or filters. If you change the filters, use a new name.",
            "default": "default"
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}