# District Events Scraper: India & UAE Events, Ticket Prices (`yugenox/district-events-scraper`) Actor

Events, concerts, comedy, nightlife, workshops and activities from District by Zomato (formerly Paytm Insider) in India and the UAE: every show date, ticket tier price and sold-out status, venue with GPS, organizer rating, lineup. By city, category, keyword, full catalog or links. No login.

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

## Pricing

$5.00 / 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.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## District Events Scraper: India & UAE Events, Shows and Ticket Prices

Scrape events from **District by Zomato** (the platform formerly known as Paytm Insider) in **India and the UAE**: concerts, comedy, nightlife, theatre, festivals, workshops, game zones, theme parks and more. You get **every upcoming show date, every ticket tier with its price and sold-out status**, the venue with GPS coordinates, the organizer and their rating, the lineup, the description and the event guide (language, duration, age limit, layout).

No login, no cookies, no account. It covers **district.in and district.ae in one actor**.

### What you can scrape

| Mode | You give | You get |
|---|---|---|
| **Events in cities** | cities like "Mumbai", "Delhi NCR", "Bengaluru", "Dubai" (optionally categories like Comedy or Nightlife) | the events District lists for each city, in District's own order. Big cities have well over 1,000. |
| **Search** | artists, shows, festivals or venues ("sunburn", "stand up comedy", "coldplay") | matching live events, from District's search plus a match against the whole catalog |
| **Whole catalog** | nothing, or cities / a link filter | every live event page District publishes (about 7,300 in India and the UAE) |
| **Event links** | district.in / district.ae event links | full details for each one, including ended and cancelled events, which makes it useful for monitoring |

Activities (workshops, game zones, theme and water parks, museums, adventure, kids' play) come from the same actor: set **Events or activities** to *Activities* or *Both*.

### What each event row contains

- **Event:** name, link, status (`upcoming`, `sold_out`, `cancelled`, `ended`), category and subcategories, event or activity, online or in-person
- **Dates:** next show and last show (local time with offset), District's date text, timezone
- **Shows:** each upcoming show with start/end time and, for each ticket tier: price, strike price, available or sold out, min and max per order, when sales close, convenience fee % and taxes/fees (GST in India, VAT and booking charges in the UAE)
- **Price summary:** price text, min and max price, currency (INR or AED), number of tiers, sold-out tiers, available tiers, all sold out yes/no
- **Venue:** name, full address, locality, city, latitude/longitude, Google place id and a Google Maps link
- **Organizer:** name, NPS score, number of reviews and likes, events hosted
- **Extras:** lineup (artists), event guide (language, duration, age limits, layout, seating, kid and pet friendly), things to know, description, poster, horizontal banner, video, gallery, rating and review count, attendee count, popularity score, offers
- **Source:** which city, category or search term the row came from

### Input examples

Top events in Mumbai right now:

```json
{ "cities": ["Mumbai"], "maxItems": 100 }
```

Comedy and nightlife in Delhi NCR and Bengaluru, this week only:

```json
{
  "cities": ["Delhi NCR", "Bengaluru"],
  "categories": ["Comedy", "Nightlife"],
  "dateFrom": "today",
  "dateTo": "7 days",
  "maxItemsPerCity": 100
}
```

Everything on in Dubai, events and activities, prices in AED:

```json
{ "cities": ["Dubai"], "section": "both", "maxItemsPerCity": 300, "maxItems": 600 }
```

Every live Sunburn and stand-up comedy event in India:

```json
{ "mode": "search", "keywords": ["sunburn", "stand up comedy"], "country": "IN", "maxItems": 300 }
```

The whole UAE catalog:

```json
{ "mode": "catalog", "country": "AE", "maxItems": 0 }
```

Track specific events (run on a schedule to catch price changes and tiers selling out):

```json
{
  "mode": "urls",
  "eventUrls": [
    "https://www.district.in/events/the-philosophy-of-resonance-satinder-sartaaj-live-in-mumbai-2027-buy-tickets",
    "https://www.district.ae/events/atif-aslam-live-in-dubai-buy-tickets"
  ]
}
```

A fast, listing-only sweep (no show or tier details):

```json
{ "cities": ["Mumbai", "Pune", "Hyderabad"], "includeDetails": false, "maxItemsPerCity": 500 }
```

### Sample output (trimmed)

```json
{
  "eventId": "6981c3b1d1b86441c5a1c82e",
  "name": "Atif Aslam Live in Dubai",
  "url": "https://www.district.ae/events/atif-aslam-live-in-dubai-buy-tickets",
  "status": "upcoming",
  "category": "Music",
  "subcategories": ["Concerts", "Bollywood"],
  "startTime": "2026-11-27T19:00:00+04:00",
  "endTime": "2026-11-27T22:00:00+04:00",
  "city": "Dubai",
  "venueName": "Coca-Cola Arena",
  "latitude": 25.2043102,
  "longitude": 55.26538219999999,
  "priceText": "AED150",
  "minPrice": 150,
  "maxPrice": 5000,
  "currency": "AED",
  "showCount": 1,
  "ticketTiers": 152,
  "soldOutTiers": 124,
  "allSoldOut": false,
  "shows": [
    {
      "showId": "6981c3b1d1b86441c5a1c82f",
      "startTime": "2026-11-27T19:00:00+04:00",
      "endTime": "2026-11-27T22:00:00+04:00",
      "soldOut": false,
      "tiers": [
        {
          "name": "Bronze - 106",
          "price": 150,
          "strikePrice": null,
          "status": "sold_out",
          "isAvailable": false,
          "maxPerOrder": 10,
          "availableUntil": "2026-11-27T18:25:00.000Z",
          "convenienceFeePercent": 5,
          "taxesAndFees": [
            { "name": "Booking Charge", "type": "charge", "percent": 1.575 },
            { "name": "VAT", "type": "tax", "percent": 5 }
          ]
        }
      ]
    }
  ],
  "organizer": { "name": "DUBAI ARENA OPERATIONS L.L.C", "npsScore": 0.922, "totalReviews": 115, "eventsHosted": 39 },
  "lineup": [{ "name": "Atif Aslam", "role": "Artist", "subtitle": "Singer, songwriter" }],
  "guide": { "language": "Hindi, Urdu", "entryAllowedFor": "All ages", "layout": "Indoor", "seating": "Seated & Standing" },
  "source": { "type": "url", "input": "https://www.district.ae/events/atif-aslam-live-in-dubai-buy-tickets" }
}
```

### Use cases

- **Event promoters and venues:** see what competitors put on sale, at what prices, and how fast tiers sell out.
- **Ticket and price monitoring:** schedule the actor on a list of event links and compare runs to catch price drops, new shows and sold-out tiers.
- **City guides, newsletters and apps:** a clean, deduplicated feed of what's on in each city, with posters, dates, venues and coordinates.
- **Market research:** categories, price bands and organizer ratings across India's and the UAE's live-entertainment market.
- **Lead generation:** organizers and venues that actively sell tickets, with their track record.

### Good to know

- **Metro areas:** a city returns what District shows for it, which includes neighbouring cities (Delhi NCR includes Gurugram and Noida; Mumbai includes Thane and Navi Mumbai; Dubai includes Sharjah and Abu Dhabi). Each row has its own `city`. Turn on **Only this exact city** to drop the neighbours.
- **Search depth:** District's search box returns at most 20 events per term and place. Leave **Search the whole catalog too** on to find the rest.
- **Live events only by default:** ended and cancelled events are skipped in city, search and catalog modes (switches to include them are in *Filters*). Links you give are always returned, with their status.
- **Recurring activities** can have hundreds of time slots. `showCount` and the price and sold-out summary cover all of them; the `shows` list holds the next 20 by default (**Max shows per event**).
- **Times** are local to the event with their UTC offset (`+05:30` India, `+04:00` UAE). `availableUntil` (when a tier's sales close) is in UTC.
- **Fees:** `convenienceFeePercent` and `taxesAndFees[].percent` are percentages (7 means 7%).
- **Links or search terms win:** if you fill in *Event links* or *Search terms* but leave the mode on *Events in cities*, the actor scrapes your links / runs your search (it says so in the log). Several links, cities or terms can also be pasted into one line, separated by commas.
- **Very large events** (hundreds of shows with 150+ seat blocks each) are trimmed to fit Apify's 9 MB item limit: fewer listed `shows`, while `showCount`, prices and sold-out counts still cover every show.

### FAQ

**Do I need a District account?** No. Nothing is needed besides the input.

**How fast is it?** With full details: 20 events in about 10 seconds, 1,000 events across four cities in about 75 seconds, 1,500 catalog events in about 95 seconds. Listing-only runs are faster still.

**Which proxies does it use?** Apify's automatic (datacenter) proxy by default, which is the cheapest. If District ever starts blocking, the actor switches to residential proxies in India or the UAE on its own, if your Apify plan includes them. If it doesn't, the actor slows down and keeps retrying on new IPs for several minutes instead of giving up, and if District keeps refusing, the run's status message tells you what to change. If a proxy you configured yourself refuses connections, the run moves to Apify's automatic proxy instead of stopping.

**What happens if something goes wrong mid-run?** The actor retries on fresh IPs, saves what it has collected, and finishes before your run's timeout. It does not end in failure because of a slow page.

**Can I get only listing data, faster?** Yes: turn off **Full event details**. You still get the name, link, dates, price text, venue, city, coordinates, rating and poster. The price per event is the same.

**How much does it cost?** $5 per 1,000 events ($0.005 per event saved to your dataset), with no start fee. You pay only for events actually delivered: duplicates, events removed by your filters, links that are not found, failed requests and anything past your spending limit are never charged. For example, 100 Mumbai events cost $0.50 and the whole UAE catalog (about 190 events) costs about $0.95.

**Is it legal to scrape District?** This actor collects only public information that District shows to every visitor without logging in: event names, dates, venues, ticket prices and availability, organizer ratings and the event descriptions. Rows can include the names of performers and organizers as they appear on public event pages. Scraping publicly available data is generally legal, but you are responsible for how you use the results: follow the laws that apply to you (for example India's DPDP Act, GDPR, PIPEDA or CCPA) and District's terms, and check with a lawyer if you are unsure. Apify's guide is a good starting point: [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

**Does it access any private data?** No. It needs no District account, login, cookie or phone number. It reads only what District's public website serves to any visitor: event listings, event pages, search results and the public event sitemap. It never sees anyone's bookings, tickets, payment details or profile, and ratings come as totals only, with no reviewer names.

# Actor input Schema

## `mode` (type: `string`):

<b>Events in cities</b>: what District shows for each city, in District's own order, optionally only some categories.<br><b>Search</b>: events matching an artist, show, festival or venue name.<br><b>Whole catalog</b>: every event page District publishes (about 7,300 in India and the UAE), optionally only some cities.<br><b>Event links</b>: specific District event pages, for example to track prices and sold-out tiers.

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

Cities in India or the UAE, e.g. "Mumbai", "Delhi NCR", "Bengaluru", "Pune", "Dubai", "Abu Dhabi", or "latitude, longitude". The site (district.in or district.ae) is picked automatically. A city includes its metro area (Delhi NCR also returns Gurugram and Noida; Dubai also returns Sharjah) unless <i>Only this exact city</i> is on. Used by <i>Events in cities</i>, as the search location in <i>Search</i>, and as a filter in <i>Whole catalog</i>.

## `section` (type: `string`):

<i>Events in cities</i> only. <b>Events</b>: concerts, comedy, nightlife, theatre, festivals and more. <b>Activities</b>: workshops, game zones, theme and water parks, museums, adventure, kids' play. <b>Both</b>: one list for each.

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

<i>Events in cities</i> only (replaces the section above). District's categories, e.g. Music, Comedy, Nightlife, Food & Drinks, Social Mixers, Performances, Theatre, Screenings, Conferences & Talks, Sports, Fests & Fairs, Art Exhibitions, Open Mics, Workshops, Game Zones, Theme Parks, Water Parks, Museums, Adventure, Kids Play. Leave empty for everything.

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

For <i>Search</i>: artists, shows, festivals or venues, e.g. "sunburn", "coldplay", "stand up comedy", "navratri".

## `searchCatalog` (type: `boolean`):

District's own search returns at most 20 events per term and place. With this on, the term is also matched against every event page in District's catalog, which finds many more. Only live events are kept.

## `eventUrls` (type: `array`):

For <i>Event links</i>: district.in or district.ae event pages (https://www.district.in/events/…-buy-tickets), insider.in event links, or bare event slugs. Ended and cancelled events are still returned for links you give, with their status.

## `country` (type: `string`):

For <i>Whole catalog</i> (which catalog to read) and for <i>Search</i> when no city is given (then Mumbai and/or Dubai).

## `urlContains` (type: `string`):

<i>Whole catalog</i> only: keep event links containing this text, e.g. "comedy", "mumbai", "2026".

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

Stop after this many events in total. 0 = no limit.

## `maxItemsPerCity` (type: `integer`):

<i>Events in cities</i>: at most this many events per city and list (events, activities, or each category). Big cities have well over 1,000 events. 0 = no limit.

## `dateFrom` (type: `string`):

Only events with a show on or after this date: YYYY-MM-DD, "today", "tomorrow" or "7 days". Show lists are trimmed to the dates too.

## `dateTo` (type: `string`):

Only events with a show on or before this date: YYYY-MM-DD, "today", "tomorrow", "7 days" or "2 weeks".

## `strictCity` (type: `boolean`):

Drop events in neighbouring cities of the metro area (e.g. keep Delhi, drop Gurugram and Noida).

## `includePast` (type: `boolean`):

The catalog still lists events whose last show is over. Off = skip them (links you give are always returned).

## `includeCancelled` (type: `boolean`):

Off = skip cancelled events (links you give are always returned).

## `includeDetails` (type: `boolean`):

Open every event for its shows, ticket tiers, venue address, organizer, lineup, description and guide. Off = listing data only (name, date, price text, venue, city, coordinates, rating), much faster. Always on for catalog and links.

## `includeTicketTiers` (type: `boolean`):

Every tier of every show: price, strike price, available / sold out, max per order, sales end, fees and taxes. Off = show dates only (the price range and sold-out counts are still filled in).

## `maxShowsPerEvent` (type: `integer`):

Recurring events and activities can have hundreds of time slots. List at most this many upcoming shows per event (the summary fields still cover all of them). 0 = all.

## `includeDescriptionHtml` (type: `boolean`):

Add the original HTML description next to the plain-text one.

## `maxConcurrency` (type: `integer`):

Event pages fetched in parallel.

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

Apify Proxy's automatic (datacenter) group works and is the cheapest. The actor switches to residential proxies in India or the UAE on its own if it gets blocked and your Apify plan includes them.

## `_noResidential` (type: `boolean`):

Internal (canaries): behave exactly like an account without the RESIDENTIAL proxy group.

## Actor input object example

```json
{
  "mode": "city",
  "cities": [
    "Mumbai"
  ],
  "section": "events",
  "searchCatalog": true,
  "country": "both",
  "maxItems": 20,
  "maxItemsPerCity": 200,
  "strictCity": false,
  "includePast": false,
  "includeCancelled": false,
  "includeDetails": true,
  "includeTicketTiers": true,
  "maxShowsPerEvent": 20,
  "includeDescriptionHtml": false,
  "maxConcurrency": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "_noResidential": false
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped events.

## `run` (type: `string`):

Status and statistics for this run.

# 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 = {
    "mode": "city",
    "cities": [
        "Mumbai"
    ],
    "maxItems": 20,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("yugenox/district-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 = {
    "mode": "city",
    "cities": ["Mumbai"],
    "maxItems": 20,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("yugenox/district-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 '{
  "mode": "city",
  "cities": [
    "Mumbai"
  ],
  "maxItems": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call yugenox/district-events-scraper --silent --output-dataset

```

## MCP server setup

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