District Event
Pricing
from $0.20 / actor start
District Event
Extract comprehensive event listings from District.in, including titles, dates, venues, prices, and direct URLs for any city. This actor handles dynamic content and infinite scrolling to deliver clean, structured data in JSON, CSV, or Excel formats, perfect for event aggregation and market research.
Pricing
from $0.20 / actor start
Rating
5.0
(2)
Developer
Techforce Global
Maintained by CommunityActor stats
0
Bookmarked
20
Total users
2
Monthly active users
7 days ago
Last modified
Categories
Share
District.in Event Scraper & MCP Connector
Pull every live event listing for any city on District.in — titles, dates, venues, prices, and direct links — without ever opening a browser, clicking through city dropdowns, or scrolling an infinite feed by hand.
Built for event aggregators, local marketers, community organizers, and researchers who need a city's full event calendar as clean, structured data — in minutes, not hours of manual browsing.
Type a city name → get every event's details → deliver it straight into Notion, Slack, Airtable, or your CRM.
⭐ Why This Actor?
- ✅ Just type a city name — "Mumbai", "Delhi", "Bengaluru", "Dubai" — no login, API key, or session tokens required.
- ✅ Handles the messy parts for you — smart city-search and dropdown selection, infinite-scroll loading, and JSON-LD-first parsing (with CSS-selector fallback) so nothing gets missed.
- ✅ Fast by default — event detail pages are processed through a pool of parallel browser pages, so a city with hundreds of events finishes in a fraction of the time a sequential scraper would take.
- ✅ Never silently stalls — the scroll loop detects when no new events are loading and stops automatically instead of hanging.
- ✅ Set exactly how many events you want — cap results with
maxItems, from a quick sample to the full listing. - ✅ Anti-bot resilient — runs through Apify Proxy to reduce blocks on repeated requests.
- ✅ Deliver anywhere via MCP connectors — push scraped events straight into Notion, Slack, Airtable, Google Sheets, Jira, and more.
- ✅ Export-ready — JSON, CSV, Excel, or direct API integration for your own pipeline.
📝 Use Cases & ROI
| Use Case | Time Saved | What You Get |
|---|---|---|
| Event aggregation | 2–4 hrs/city | A structured feed of every event in a city, ready to publish or sync into your own listings site |
| Market & pricing research | 1–3 hrs/batch | Ticket pricing and venue patterns across cities, without manually opening each listing |
| Local marketing & lead gen | 2–5 hrs/city | A live directory of venues and organizers running events, ready for outreach |
| Social & community planning | 1–2 hrs/city | A quick, current list of workshops, parties, and gatherings worth attending or promoting |
| Competitor & venue tracking | 2–4 hrs/batch | Visibility into what's being listed, where, and at what price, across multiple cities |
🚀 How to Use
- Open the Actor on Apify.
- Enter the Location you want to scrape events from (e.g.
Mumbai,Delhi,Bengaluru,Dubai). - Set Max Items — the number of events to scrape (default:
50). - (Optional) Adjust Proxy Configuration if you hit bot checks — Apify Proxy is enabled by default.
- (Optional) Pick an MCP connector to deliver scraped events into Notion, Slack, Airtable, etc.
- Click Run — results stream into the dataset as each event is processed.
- Download as CSV, Excel, or JSON — or let the connector push them into your tools automatically.
🌐 Proxy: requests run through Apify Proxy by default to reduce blocks from repeated automated access. You normally don't need to change this.
💡 First time with a connector? Run once with a connector selected — the run log prints the connector's available tool names, so you know what to put in Connector tool name.
🆓 Free plan note: on the free plan, results are capped at 5 events per run regardless of
maxItems— a taste of what a full run returns. Upgrade for the complete listing.
🧩 Input Configuration
| Field | Type | Required | Description |
|---|---|---|---|
location | String | ✔️ Yes | City name to scrape events from (e.g. Mumbai, Delhi, Bengaluru, Dubai). Default: Mumbai. |
maxItems | Integer | Optional | Maximum number of events to scrape (1–200). Default: 50. |
proxyConfiguration | Object | Optional | Proxy settings for anti-bot protection. Apify Proxy is used by default. |
mcpConnector | Connector | Optional | Deliver scraped events into a connector you've authorized (Notion, Slack, Airtable, Google Sheets, …). |
deliveryMode | Enum | Optional | perEvent (one call per scraped event), summary (one call listing all events together), chunked (split many events across a few calls/pages), or none. Default: perEvent. |
mcpTool | String | Optional | Tool to call on the connector (e.g. create_page, send_message, append_row). |
mcpArguments | Object | Optional | Arguments for the tool; string values support {placeholders}. |
mcpMessageTemplate | String | Optional | Template rendered per event/batch, exposed as the {message} placeholder. |
Example — Scrape events for a city
{"location": "Bengaluru","maxItems": 100}
Example — Scrape and post each event to Slack
{"location": "Mumbai","maxItems": 50,"mcpConnector": "<your-slack-connector>","deliveryMode": "perEvent","mcpTool": "send_message","mcpArguments": { "channel": "#events", "text": "{message}" },"mcpMessageTemplate": "*{title}*\n{date} @ {venue} — {price}\n{event_url}"}
Example — Scrape and create a Notion page listing all events (chunked for large cities)
{"location": "Delhi","maxItems": 200,"mcpConnector": "<your-notion-connector>","deliveryMode": "chunked","mcpTool": "create_page","mcpArguments": {"parent": { "page_id": "<your-page-id>" },"pages": [{"properties": { "title": "Delhi events (part {part}/{partCount})" },"content": "{events}"}]}}
Placeholders available in arguments / template
perEvent mode: {title} · {date} · {venue} · {price} · {event_url} · {city} · {message}
summary mode: {city} · {eventCount} · {events} (all events formatted as text) · {message}
chunked mode adds: {part} · {partCount}
📦 Output Fields
The Actor stores results in the default dataset. Each item contains:
| Field | Description |
|---|---|
title | The name/title of the event |
date | The date or date string of the event (e.g. "Sat, 15 Feb onwards") |
venue | The venue where the event is held |
price | The ticket price or range (if available) |
event_url | Direct link to the event page on district.in |
city | The city for which the event was scraped |
Example Output
[{"title": "Sunburn Union Presents: Local Artists Collective","date": "Sat, 15 Feb onwards","venue": "Sunburn Union: Bangalore","price": "₹ 499 onwards","event_url": "https://www.district.in/events/sunburn-union-presents-local-artists-collective-feb15-2025","city": "Bengaluru"}]
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
🔌 Integrations & Delivery
Deliver scraped events into any MCP connector you've authorized in Apify — no glue code, no webhooks:
- Notion — create a page per event, or one page listing the whole city (use
chunkedmode for large cities so Notion never times out) - Slack / Discord — post new events to a channel as they're found
- Airtable / Google Sheets — append a structured row per event
- Jira / Linear / GitHub — open a task per event you want to follow up on
- …or any other MCP-compatible connector
Credentials stay private — delivery runs through the Apify MCP Proxy, so the Actor never sees your connector tokens. You can also consume the dataset directly via the Apify API, or wire it into n8n, Zapier, and Make.
⚙️ Delivery modes:
perEventsends one call per scraped event,summarysends one call listing every event, andchunkedsplits a large event list across a few calls/pages. MCP delivery runs after the dataset is saved and never affects what's stored there.
🛠️ How It Works
src/main.py launches a headless Chromium browser via Playwright and, for each run:
- Opens District.in's events page and uses a smart city selector — searching, then falling back to scrolling a location dropdown — to select the requested city.
- Scrolls the page repeatedly, detecting when no new events load, to surface the full list of event cards.
- Filters out non-event utility links (submit/edit/manage-event pages) to keep only real listings.
- Processes event detail pages in parallel through a pool of 5 browser pages, parsing each page's JSON-LD event data first and falling back to CSS selectors for title, date, venue, and price.
- Pushes each event to the dataset as it's scraped, respecting
maxItemsand the free-plan cap. - If a connector is configured, delivers the scraped events via MCP once scraping completes — without affecting the saved dataset.
Built with: Apify SDK for Python · Playwright · BeautifulSoup · MCP
🆘 Support
For issues, custom scraping requests, or feature suggestions:
Email: bhavin.shah@techforceglobal.com
Need a Custom Pipeline?
Want multi-city batch runs, scheduled refreshes, deeper enrichment, or a full data-warehouse integration?
📅 Book a Free 15-min Consultation
This Actor can be integrated into a fully automated n8n workflow — no manual steps, just end-to-end automation.
Made with ❤️ by Techforce
Specialists in High-Performance Web Scrapers and AI Automation.
Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by District.in or its parent company. All trademarks are the property of their respective owners. The Actor collects only publicly available event listing information and does not log into, or scrape behind the authentication of, any platform. Use the data responsibly and in compliance with applicable laws (including GDPR/CCPA) and the terms of the platforms you operate on.