{
  "openapi": "3.0.1",
  "info": {
    "title": "Luma Scraper — Events, Hosts, Socials & Tickets (lu.ma)",
    "description": "Luma (lu.ma / luma.com) events scraper: every upcoming event in any city or country, categories, keyword search, calendars with past events, hosts. Dates, venue, coordinates, prices, ticket types, guest counts, organiser and host socials (X, LinkedIn, Instagram, website). No login.",
    "version": "1.0",
    "x-build-id": "Z7ePzgW73POVYAmLj"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/logiover~luma-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-logiover-luma-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/logiover~luma-scraper/runs": {
      "post": {
        "operationId": "runs-sync-logiover-luma-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/logiover~luma-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-logiover-luma-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": {
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "Every upcoming in-person event Luma lists in these places. Use one of Luma's cities (\"San Francisco\", \"New York\", \"London\", \"Berlin\", \"Singapore\" … — the circle set in \"Radius\" around the city), any other city, region or country (\"Austin\", \"Bavaria\", \"Germany\", \"Brazil\" — the boundary from OpenStreetMap), \"latitude, longitude\" (a circle) or \"south, west, north, east\" (a box). \"everywhere\" reads Luma's whole map. Combine with categories or search terms to narrow down.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "radiusKm": {
            "title": "Radius around cities and points (km)",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Size of the circle around a city or a \"latitude, longitude\" point. 50 km is the radius luma.com itself searches around a city (San Francisco with Oakland, Palo Alto and Mountain View). Regions and countries always use their own boundary.",
            "default": 50
          },
          "categories": {
            "title": "Categories",
            "uniqueItems": true,
            "type": "array",
            "description": "Luma's own event categories. Alone they cover the whole map (e.g. every AI event worldwide); with locations, only those places.",
            "items": {
              "type": "string",
              "enum": [
                "ai",
                "tech",
                "crypto",
                "arts",
                "climate",
                "fitness",
                "wellness",
                "food",
                "books",
                "games",
                "running",
                "family"
              ],
              "enumTitles": [
                "AI",
                "Tech",
                "Crypto",
                "Arts & Culture",
                "Climate",
                "Fitness",
                "Wellness",
                "Food & Drink",
                "Books",
                "Games",
                "Running",
                "Family"
              ]
            },
            "default": []
          },
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "Keywords, as you would type them into Luma's search: \"AI agents\", \"founders\", \"hackathon\", \"yoga\", \"web3\". Searched in every location (or everywhere when no location is given); Luma answers 50 events per search, so the map is split until every part has been read.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "calendars": {
            "title": "Calendars (organisers)",
            "type": "array",
            "description": "Luma calendars — the pages communities, companies and organisers publish their events on: https://luma.com/ls, lu.ma/genai-sf, a slug like \"ls\" or a calendar id (cal-…). Online and in-person events; set \"Upcoming or past\" to include the calendar's past events.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "hosts": {
            "title": "Hosts (people and organisations)",
            "type": "array",
            "description": "Luma profiles: https://luma.com/user/lmsys, a username or a user id (usr-…). Returns the events they host.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "urls": {
            "title": "Luma links",
            "type": "array",
            "description": "Any luma.com or lu.ma link — event pages (luma.com/abc123xy), calendars, Luma city pages (luma.com/sf), category pages (luma.com/ai), profiles (luma.com/user/…) — or event ids (evt-…). Each is recognised automatically.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "when": {
            "title": "Upcoming or past (calendars and hosts)",
            "enum": [
              "upcoming",
              "past",
              "all"
            ],
            "type": "string",
            "description": "Calendars and hosts have a history: read their upcoming events, their past events, or both. Luma's map (locations, categories, search terms) lists upcoming events only.",
            "default": "upcoming"
          },
          "startDate": {
            "title": "Starting on or after",
            "type": "string",
            "description": "Optional. Only events that start on or after this date (events already running on that day are kept)."
          },
          "endDate": {
            "title": "Starting on or before",
            "type": "string",
            "description": "Optional. Only events that start on or before this date (e.g. the next 30 days)."
          },
          "eventType": {
            "title": "In person or online",
            "enum": [
              "all",
              "in-person",
              "online"
            ],
            "type": "string",
            "description": "Keep all events, in-person events only, or online events only (Zoom, Google Meet, YouTube and other streams).",
            "default": "all"
          },
          "price": {
            "title": "Price",
            "enum": [
              "all",
              "free",
              "paid"
            ],
            "type": "string",
            "description": "Keep all events, free events only, or paid (ticketed) events only.",
            "default": "all"
          },
          "featuredOnly": {
            "title": "Luma's featured picks only",
            "type": "boolean",
            "description": "Instead of every event around a Luma city, return only the events Luma's editors feature on that city's page (typically 5–80 per city). With \"everywhere\", the featured events of all of Luma's cities.",
            "default": false
          },
          "maxItems": {
            "title": "Max events",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stop after this many unique events across all sources. 0 = no limit (Luma's whole map holds about 20,000 upcoming in-person events). Big runs need a big enough \"Maximum cost per run\".",
            "default": 1000
          },
          "includeDetails": {
            "title": "Include full event details",
            "type": "boolean",
            "description": "Reads each event's own page data: the full description (with its links and sponsor mentions), Luma categories, every ticket type with price and capacity, registration questions, refund policy and where Luma features it. Included in the price; turn off only for the fastest export of the list data.",
            "default": true
          },
          "includeHostProfiles": {
            "title": "Add host profile numbers",
            "type": "boolean",
            "description": "For every host, adds how many events they have hosted and attended on Luma and when they joined — a quick way to rank organisers. One extra request per unique host.",
            "default": false
          },
          "includeExternalEvents": {
            "title": "Include calendar events hosted elsewhere",
            "type": "boolean",
            "description": "Calendars can also list events that live on other sites (a conference's own page). Those rows have name, time, place and the outside link only (platform = \"external\").",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Used only as a fallback. The scraper talks to Luma over a direct connection first; when Luma asks it to slow down it continues through Apify datacenter proxies (a new address per request), or through the proxy chosen here.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}