# District Event Scraper: Venue, Dates & Ticket Pricing (`getascraper/district-event-scraper`) Actor

Scrape every event on District.in straight from its own public sitemap: exact dates, venue, and full ticket-tier pricing. No browser or residential proxy needed.

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

## Pricing

from $13.20 / 1,000 events

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## 🎟️ District Event Scraper: Venue, Dates & Ticket Pricing

<table width="100%">
<tr>
<td style="padding:24px 28px;background:#FEF2F2;border:1px solid #FBD5D5;border-top:4px solid #D2371F;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">Every District.in event, with real ticket prices, no proxy tax</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Pull venue, dates and full ticket-tier pricing straight from District's own event index. No browser, no residential proxy, no per-city runs.</span>
</td>
</tr>
</table>

<table width="100%">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #FBD5D5;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#9A2C1A">🎫 Real ticket pricing</span><br>
<span style="font-size:12px;color:#57534E">Exact price range and every individual ticket tier, not one blurry "starting from" string.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #FBD5D5;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#9A2C1A">📍 Exact venue and dates</span><br>
<span style="font-size:12px;color:#57534E">Venue name, city, and precise start and end times, not a vague date range.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #FBD5D5;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#9A2C1A">🌍 Every city, one run</span><br>
<span style="font-size:12px;color:#57534E">No location picker to drive. Filter by city after the fact, or pull everything at once.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #FBD5D5;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#9A2C1A">💸 No proxy markup</span><br>
<span style="font-size:12px;color:#57534E">Runs on standard proxy. No paid-plan residential requirement passed on to you.</span>
</td>
</tr>
</table>

Extract every event on [District.in](https://www.district.in), Zomato's India ticketing platform, straight from District's own event index. Export to JSON, CSV or Excel, or connect straight into Google Sheets and your own pipeline via the API. Run it on demand or on a schedule. No coding required.

### ✨ Why use this Actor

**Built for anyone who needs India event data without the proxy bill.**

- 🎯 **Event and venue researchers**: pull every event nationwide in one run instead of picking a city and hoping the picker cooperates.
- 💰 **Pricing analysts**: get the real low-to-high price range and every ticket tier, not a single "starting from" string that hides the real spread.
- 📅 **Content and listings teams**: schedule a weekly run and always have current dates, venues and prices for "what's on" pages.

**Full pricing, not a placeholder.** Other District scrapers return one price string per event. This Actor returns the real price range, every individual ticket tier with its own price, and any active discount, because that data is what District itself publishes on every event page.

### ⚙️ How it works

<table width="100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#FEF2F2;border:1px solid #FBD5D5;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#D2371F;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Set your filters</span><br>
<span style="font-size:12px;color:#57534E">Pick cities to keep, or leave it blank for every city. Set how many events you want.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#FEF2F2;border:1px solid #FBD5D5;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#D2371F;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Run the Actor</span><br>
<span style="font-size:12px;color:#57534E">It reads District's own event index and pulls each event's real, live data.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#FEF2F2;border:1px solid #FBD5D5;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#D2371F;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Get your data</span><br>
<span style="font-size:12px;color:#57534E">Download as JSON, CSV or Excel, or connect straight into Google Sheets or your own pipeline via the API.</span>
</td>
</tr>
</table>

### 📥 Input

| Field | Type | Required | Description |
|---|---|---|---|
| `cities` | array of strings | No | Only keep events in these cities. Leave empty for every city. |
| `categories` | array of strings | No | Only keep events in these categories, e.g. "Art & Craft", "Music", "Comedy". Leave empty for every category. |
| `minPrice` | integer | No | Only keep events with a ticket priced at or above this amount, in INR. 0 means no minimum. |
| `maxPrice` | integer | No | Only keep events with at least one ticket priced at or below this amount, in INR. 0 means no maximum. |
| `includeEndedEvents` | boolean | No | Keep events District itself shows as ended, with no live price or booking link. Off by default. |
| `maxItems` | integer | No | Stop after collecting this many events. |
| `proxyConfiguration` | object | No | Proxy settings. Defaults to Apify's own proxy. |

### 📤 Output

Every result is one row in the dataset. A typical event looks like this:

```json
{
  "title": "Play Arena",
  "eventUrl": "https://www.district.in/events/play-arena-bengaluru-2025-buy-tickets",
  "venueName": "Play Arena",
  "venueCity": "Kasavanahalli",
  "category": "Outdoor Games",
  "startDate": "2026-08-31T04:30:00.000Z",
  "endDate": "2026-08-31T17:30:00.000Z",
  "lowPrice": 65,
  "highPrice": 1624,
  "priceCurrency": "INR",
  "strikePrice": 130,
  "ticketTiers": [
    { "name": "Laser Tag | 1 Game", "price": 225, "availabilityEnds": "2026-08-31T16:30:00.000Z" }
  ]
}
```

Download the dataset in JSON, CSV, Excel, HTML or XML from the Apify Console, or pull it through the API.

### 📊 Data table

| Field | Type | Description |
|---|---|---|
| `title` | string | Event name. |
| `eventUrl` | string | Link to the event's District page. |
| `venueName` / `venueCity` | string | Where the event is held. |
| `category` | string | District's own category for the event, e.g. "Art & Craft" or "Music". |
| `startDate` / `endDate` | string | ISO start and end time. |
| `lowPrice` / `highPrice` / `priceCurrency` | number/string | The real price range across every ticket tier. |
| `strikePrice` | number | The original price, when the event has an active discount. |
| `ticketTiers` | array | Every individual ticket type, with its own name, price and availability window. |

The Output tab also ships three pre-built views: events overview, an unwound ticket-pricing table, and a venue-focused table.

### 💰 Pricing

This Actor is pay per result: you only pay for the events you actually collect, and a run that returns nothing costs nothing. There is no subscription and no minimum spend.

### ⭐ Enjoying District Event Scraper?

<table width="100%">
<tr>
<td style="padding:20px 24px 14px;background:#FEF2F2;border:1px solid #FBD5D5;border-left:5px solid #D2371F;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">Saved you from driving a city picker by hand?</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other researchers and content teams find it. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#D2371F;border:1px solid #FBD5D5;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/district-event-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### 🛠️ Tips for better runs

- Leave `cities` empty for a nationwide sweep, or set it to a short list for a cheaper, faster run focused on your market.
- Combine `categories` with a price range to pull a very specific slice, like every music event under a set budget in one city.
- Raise `maxItems` gradually. District's event index runs to thousands of entries, so a first run with a modest limit is the fastest way to check the data shape before scaling up.
- Turn `includeEndedEvents` on only if you specifically need historical event records; most users want only live, bookable events.

### ❓ FAQ

**Why don't I need a residential proxy for this?**
District's event pages are public and unrestricted. The residential-proxy requirement some other scrapers describe applies only to driving District's own city-search interface, which this Actor doesn't use.

**Is it legal to scrape District.in?**
This Actor only collects data that is already publicly visible on District's own event pages. You are responsible for how you use the data and for complying with District's terms of service.

**Why do some events have no venue name?**
Not every event on District publishes a venue name at the time of listing. This Actor never invents one: if District doesn't publish it, the field is left out rather than filled with a placeholder.

**Can I get notified of new events automatically?**
Yes. Schedule this Actor to run daily or weekly from the Apify Console and pipe new results into Google Sheets, Slack, or your own database with no code.

Found a bug or need a custom version of this Actor? Open an issue from the Actor's Issues tab and it'll be looked at directly.

### 🔗 Other actors

- [BookMyShow Scraper: Movies, Showtimes & Concerts](https://apify.com/getascraper/bookmyshow-scraper) ↗ - India's other major ticketing platform, movies and live events.
- [Cashify Scraper: Used Phone Resale Prices India](https://apify.com/getascraper/cashify-scraper) ↗ - India consumer marketplace pricing data.
- [Carwale Used Cars Scraper: India Listings](https://apify.com/getascraper/carwale-used-cars-scraper) ↗ - India used-car listings and pricing.
- [Milanuncios Scraper: Spain Classifieds & Cars](https://apify.com/getascraper/milanuncios-scraper) ↗ - classifieds and marketplace data for a different regional market.

# Actor input Schema

## `cities` (type: `array`):

Only keep events in these cities, matched against the event's own venue city. Leave empty for all cities.

## `categories` (type: `array`):

Only keep events in these categories, matched against District's own category name (e.g. "Art & Craft", "Music", "Comedy"). Leave empty for all categories.

## `minPrice` (type: `integer`):

Only keep events with a ticket priced at or above this amount. 0 means no minimum.

## `maxPrice` (type: `integer`):

Only keep events with at least one ticket priced at or below this amount. 0 means no maximum.

## `includeEndedEvents` (type: `boolean`):

Keep events District itself shows as ended (no live price or booking link). Off by default since these rows have no usable price/date.

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

Stop after collecting this many events. Keep this low for a quick, cheap run; raise it once you know how many you need.

## `proxyConfiguration` (type: `object`):

Proxy settings. Datacenter proxy is enough, confirmed live against District's own event pages.

## Actor input object example

```json
{
  "cities": [],
  "categories": [],
  "minPrice": 0,
  "maxPrice": 0,
  "includeEndedEvents": false,
  "maxItems": 25,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# 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 = {
    "cities": [],
    "categories": [],
    "minPrice": 0,
    "maxPrice": 0,
    "includeEndedEvents": false,
    "maxItems": 25,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/district-event-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 = {
    "cities": [],
    "categories": [],
    "minPrice": 0,
    "maxPrice": 0,
    "includeEndedEvents": False,
    "maxItems": 25,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/district-event-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 '{
  "cities": [],
  "categories": [],
  "minPrice": 0,
  "maxPrice": 0,
  "includeEndedEvents": false,
  "maxItems": 25,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call getascraper/district-event-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/district-event-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/adLSWTmz4AY52gcim/builds/Zj8DU4JvomEsf9yEN/openapi.json
