Skip to content

kami4ka/eventbrite-scraper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Eventbrite Scraper

A Python scraper for extracting event listings from Eventbrite.com using the ScrapingAnt web scraping API.

Features

  • Scrapes event listings from Eventbrite.com across multiple locations
  • Extracts comprehensive event details:
    • Event ID and title
    • Date and time
    • Location and venue name
    • Ticket price
    • Event status (Sales end soon, Almost full, Going fast)
    • Promoted event indicator
    • Event URL
    • Image URL
  • Supports 20+ locations worldwide (US and International)
  • Handles URL-based pagination
  • Exports data to CSV and JSON formats
  • Deduplicates events automatically
  • Uses CSS selectors for reliable extraction

Prerequisites

Note: The ScrapingAnt free plan has a concurrency limit of 1 thread. For higher throughput, consider upgrading to a paid plan.

Installation

  1. Clone this repository:
git clone https://github.com/kami4ka/eventbrite-scraper.git
cd eventbrite-scraper
  1. Create and activate a virtual environment:
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
  1. Install dependencies:
pip install -r requirements.txt
  1. Set your ScrapingAnt API key:
export SCRAPINGANT_API_KEY="your_api_key_here"

Usage

Basic Usage

Scrape events from New York and Los Angeles (default):

python main.py

Command Line Options

python main.py [OPTIONS]

Options:
  --location TEXT          Scrape a specific location only
  --locations TEXT...      Scrape multiple specific locations
  --all-locations          Scrape all available locations
  --pages N                Number of pages to scrape per location (default: 2)
  -o, --output PATH        Output CSV file path (default: output/eventbrite_events.csv)
  --json                   Also export to JSON format
  -v, --verbose            Enable verbose output
  --api-key TEXT           ScrapingAnt API key (or set SCRAPINGANT_API_KEY env var)
  --list-locations         List available locations and exit

Examples

Scrape with verbose output:

python main.py --verbose

Scrape a specific location:

python main.py --location ny--new-york --verbose

Scrape multiple locations:

python main.py --locations ny--new-york ca--los-angeles il--chicago --verbose

Scrape all available locations:

python main.py --all-locations --verbose

Scrape 3 pages per location:

python main.py --pages 3 --verbose

Export to both CSV and JSON:

python main.py --json -o output/events.csv

List available locations:

python main.py --list-locations

Available Locations

US Locations

  • ny--new-york - New York
  • ca--los-angeles - Los Angeles
  • il--chicago - Chicago
  • fl--miami - Miami
  • ca--san-francisco - San Francisco
  • ma--boston - Boston
  • dc--washington - Washington DC
  • nv--las-vegas - Las Vegas
  • tx--austin - Austin
  • wa--seattle - Seattle
  • co--denver - Denver
  • ga--atlanta - Atlanta
  • tx--houston - Houston
  • tx--dallas - Dallas
  • pa--philadelphia - Philadelphia

International Locations

  • united-kingdom--london - London
  • canada--toronto - Toronto
  • australia--sydney - Sydney
  • australia--melbourne - Melbourne
  • ireland--dublin - Dublin

Output Format

CSV Fields

Field Description Example
event_id Unique event identifier 1978410657534
title Event name/title Back In The 2000s at Polygon
date_time Event date and time Saturday - 11:00 PM
location Neighborhood/area Brooklyn
venue Venue name Polygon Brooklyn
price Ticket price From $15.00
status Event status Almost full
is_promoted Whether event is promoted False
event_url Direct link to event https://www.eventbrite.com/e/1978410657534
image_url Event image URL https://...
city City name New York
scraped_at Timestamp of scraping 2026-01-08T10:30:00Z

Sample Output

event_id,title,date_time,location,venue,price,status,is_promoted,event_url,image_url,city,scraped_at
1978410657534,Back In The 2000s at Polygon,Saturday - 11:00 PM,Brooklyn,Polygon Brooklyn,Free,Sales end soon,False,https://www.eventbrite.com/e/1978410657534,...,New York,2026-01-08T10:30:00Z

Project Structure

EventbriteScraper/
├── config.py          # Configuration settings and selectors
├── models.py          # Event and EventCollection data classes
├── utils.py           # Utility functions for parsing
├── scraper.py         # Main scraper class
├── main.py            # CLI entry point
├── requirements.txt   # Python dependencies
├── .gitignore         # Git ignore patterns
├── output/            # Output directory for scraped data
│   └── .gitkeep
└── README.md          # This file

How It Works

The scraper fetches event listing pages from Eventbrite.com using ScrapingAnt's browser rendering capability.

Each event card contains:

  • Event image and title
  • Date and time
  • Venue location
  • Ticket price
  • Event status badges
  • Direct event URL

The scraper:

  1. Navigates to the location's all-events page
  2. Parses the HTML to extract event data using CSS selectors
  3. Handles pagination via URL parameters (?page=N)
  4. Deduplicates events by event ID across multiple pages/locations
  5. Exports to CSV/JSON format

Each page typically loads 20 events. Use the --pages option to scrape multiple pages per location.

License

MIT License

Disclaimer

This scraper is for educational purposes only. Please respect Eventbrite.com's terms of service and rate limits when using this tool. Always ensure your scraping activities comply with applicable laws and website policies.

About

Python scraper for Eventbrite.com events using ScrapingAnt API

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages