# Events Scraper – Eventbrite, Meetup & Luma (`anxuanng/events-scraper`) Actor

Scrape upcoming events in any city from Eventbrite, Meetup and Luma in one schema: start time in UTC, venue, address, online or in person, organizer, price and attendance. Keyword and date filters, duplicates removed, only-new mode for weekly digests.

- **URL**: https://apify.com/anxuanng/events-scraper.md
- **Developed by:** [Xuan An Nguyen](https://apify.com/anxuanng) (community)
- **Categories:** Lead generation, Travel
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 event scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Events Scraper – Eventbrite, Meetup & Luma

Upcoming events in a city, from Eventbrite, Meetup and Luma, in one table. Each row has the start time in UTC
(plus the event's own time zone), venue and address, whether it's in person, online or hybrid, the organizer, and
price and attendance where the site shows them. Events posted on more than one site appear once.

### What data can I get?

| Field | Example |
|---|---|
| `title`, `url` | `AI Builders Night`, link to the event page |
| `startAt`, `endAt`, `timezone` | `2026-09-15T22:00:00.000Z`, `America/New_York` |
| `attendance` | `in-person`, `online` or `hybrid` |
| `venueName`, `address`, `city`, `region`, `country` | `Elsewhere - The Rooftop`, …, `Brooklyn`, `NY`, `US` |
| `latitude`, `longitude` | venue coordinates when the site has them |
| `organizer`, `organizerUrl` | the group, company or calendar running it |
| `isFree`, `price`, `currency` | `false`, `30`, `SGD` (Luma) |
| `attendees`, `spotsRemaining` | `399`, `21` (Luma) |
| `category`, `tags` | `Business & Professional` (Eventbrite) |
| `source`, `sourceName`, `description`, `imageUrl` | |

Price and attendance come from Luma. Eventbrite's search results don't include ticket prices, so those stay empty
for Eventbrite rows.

### How much does it cost?

**$2 per 1,000 events.** You pay only for events delivered. A weekly digest of 200 events in one city costs $0.40.

### How do I use it?

1. Type a city: `London`, `New York`, `Singapore`, `Berlin, Germany`, or `online`.
2. Add keywords if you want a topic (`ai`, `startup`, `design`), and a window like "starts within 14 days".
3. Run, then download JSON, CSV or Excel, or call the API. Events come soonest first.

```json
{ "location": "London", "keywords": ["ai", "founders"], "startsWithinDays": 14, "maxItems": 300 }
```

### How do I get a weekly events digest?

Turn on **Only new events** and schedule the Actor weekly. Each run returns only events you haven't received
before, so you pay once per event.

### How does the city lookup work?

The city is looked up once per run on OpenStreetMap to get its country, US state and coordinates. Meetup needs
the country (and the state for US cities) to search the right place, and Luma lists events for its own city pages,
so the Actor picks the nearest one within 80 km. If Luma has no page near your city, the run uses Eventbrite and
Meetup only.

### FAQ

**Is personal data included?** No. Luma shows individual hosts on each event; only the organizing calendar is kept.
Meetup organizers are groups, Eventbrite organizers are businesses.

**Why does Meetup return fewer events?** Its search page lists about 20–30 events per keyword. Add more keywords to
cover more topics.

**Do I need a proxy?** No. It runs at 256 MB without one.

### More scrapers by the same developer

- [ATS Jobs Scraper](https://apify.com/anxuanng/ats-jobs-scraper): Job postings straight from company career boards on Greenhouse, Lever, Ashby, Workday, Workable, Recruitee and SmartRecruiters in one schema, with salary ranges and an only-new mode.
- [Chotot Scraper](https://apify.com/anxuanng/chotot-scraper): Scrape Chợ Tốt (chotot.com), Vietnam's largest classifieds site: cars, motorbikes, real estate, phones, laptops and more, with prices in VND, location and all item attributes. Pay per listing.
- [EU Company Registry Scraper](https://apify.com/anxuanng/company-registry-scraper): Companies from the official open registries of France (SIRENE), Norway (Brønnøysund) and Finland (PRH): legal form, status, activity code, address, workforce and French revenue. New-registration monitoring.
- [Hacker News Scraper](https://apify.com/anxuanng/hacker-news-scraper): Hacker News front page feeds, keyword search over stories and comments, and Who Is Hiring job posts parsed into company, role, location, remote, salary and stack. Only-new mode for alerts.
- [Prediction Markets Scraper](https://apify.com/anxuanng/prediction-markets-scraper): Kalshi and Polymarket markets in one schema: yes/no probabilities, bid/ask, volume, liquidity, close time and results, with keyword and category filters and an only-changed mode for monitoring.
- [Remote Jobs Scraper](https://apify.com/anxuanng/remote-jobs-scraper): Remote job listings from Himalayas, Remote OK, We Work Remotely, Jobicy and Arbeitnow in one schema, deduplicated across boards, with salaries and an only-new mode.
- [SEEK, JobStreet & JobsDB Jobs Scraper](https://apify.com/anxuanng/seek-jobs-scraper): Job listings from SEEK (Australia, New Zealand), JobStreet (Malaysia, Singapore, Philippines, Indonesia) and JobsDB (Hong Kong, Thailand) in one schema, with salary, work type, classification and an only-new mode.
- [Substack Scraper](https://apify.com/anxuanng/substack-scraper): Posts from any Substack newsletter with likes, comments, word count, free or paid flag and the full text of free posts. Search publications by keyword; only-new mode for monitoring.
- [Telegram Channel Scraper](https://apify.com/anxuanng/telegram-channel-scraper): Scrape public Telegram channels: posts, views, reactions, media, links, forwards, plus channel stats. Incremental mode for daily monitoring. Pay per post.
- [Vietnam Jobs Scraper](https://apify.com/anxuanng/vietnam-jobs-scraper): Scrape job postings from VietnamWorks, TopCV and ITviec in one unified schema. Extract title, company, salary in VND/USD, location, level, skills, deadline and full description. Pay per job, JSON/CSV export, API and MCP access.

# Actor input Schema

## `location` (type: `string`):

A city like 'London', 'New York', 'Singapore' or 'Berlin, Germany'. Use 'online' for virtual events.

## `keywords` (type: `array`):

Topics to search for, e.g. 'ai', 'startup', 'design'. Eventbrite and Meetup search each keyword; Luma events are matched on title, organizer and description. Empty returns all upcoming events.

## `sources` (type: `array`):

Which sites to read. Leave empty for all three.

## `startsWithinDays` (type: `integer`):

Only events starting in the next N days. Past events are always left out.

## `includeDescription` (type: `boolean`):

Add the event description as plain text.

## `onlyNewEvents` (type: `boolean`):

Return only events you have not received in earlier runs of this Actor. Turn on for a scheduled weekly digest so you never pay twice for the same event.

## `maxItems` (type: `integer`):

Stop after this many events across all sites, soonest first. You are only charged per event delivered.

## Actor input object example

```json
{
  "location": "New York",
  "keywords": [
    "ai"
  ],
  "sources": [],
  "includeDescription": true,
  "onlyNewEvents": false,
  "maxItems": 300
}
```

# Actor output Schema

## `listings` (type: `string`):

All event rows as JSON; append ?format=csv for CSV or ?format=xlsx for Excel.

## `runSummary` (type: `string`):

Counts of pushed/skipped/failed rows and whether the budget limit was hit.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "location": "New York",
    "keywords": [
        "ai"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("anxuanng/events-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "location": "New York",
    "keywords": ["ai"],
}

# Run the Actor and wait for it to finish
run = client.actor("anxuanng/events-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "location": "New York",
  "keywords": [
    "ai"
  ]
}' |
apify call anxuanng/events-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,anxuanng/events-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/8tcrykXwGsuV9ek5D/builds/l6F5ZXULrqDgnNgEf/openapi.json
